~ Мотивация ~

«Если на Землю ударит астероид, игра окончена. Для цивилизации это Ctrl-Alt-Delete », - Билл Най, ученый

Вдохновением для этого проекта послужил конкурс Kaggle по предсказанию диаметра астероида. Вы можете найти ссылку и дополнительную информацию здесь.

Были проведены обширные исследования по прогнозированию диаметров астероидов из-за потенциального ущерба, который они наносят, если эти объекты столкнутся с Землей. Тем не менее, отсутствие достаточных данных, невозможность приблизиться к реальным астероидам и отсутствие четкой формулы для предсказания их размера в лучшем случае оставляют область предсказания размера астероидов в зачаточном состоянии.

Уникальный подход к предсказанию диаметра астероида с помощью машинного обучения был предложен Виктором Басу из государственного инженерного колледжа Джалпайгури, Западная Бенгалия, Индия. Он создал сообщение Kaggle, о котором я упоминал ранее, и направил меня на веб-сайт NASA / JPL Solar System Dynamics, чтобы найти некоторые полезные данные об астероидах (что на удивление трудно найти). Запрос NASA / JPL SSD помог мне создать набор данных для этого проекта.

Конечная цель этого проекта - создать мощную модель машинного обучения, которая точно предсказывает диаметр астероидов на основе характеристик орбиты и наблюдений. Эта модель будет использоваться для развертывания приложения Plotly Dash. Приложение позволит пользователям визуально сравнивать и сравнивать прогнозы модели с истинными диаметрами конкретных астероидов. Некоторые функции, используемые в данных, не являются интуитивно понятными для среднего Джо (единицы измерения переменных варьируются от астрономических единиц [au], градусов / день [deg / d], градусов [º] и т. Д.), Поэтому один из ключевых атрибутов приложения будет форма ввода ползунка. Это добавит импульс UX за счет исключения предположений, связанных с этими внешними характеристиками, без ущерба для модели прогнозирования. Ссылку на приложение можно найти здесь. Приложение позволяет пользователям поиграть с некоторыми аспектами астероида и посмотреть, как он влияет на диаметр астероида!

~ Процесс ~

Во-первых, это был кошмар очистки данных. Набор данных был чрезвычайно большим (›850 000 строк), поэтому мне пришлось выполнить серьезное сжатие данных, чтобы загрузить мои файлы в Github (см. Раздел« Заключение », чтобы получить дополнительную информацию о том, как обойти ограничение Github на загрузку 25 МБ) и использовать их в Google Colab. . Создание отчета о профилировании панд дало мне ценную информацию о том, как уменьшить размер, но также заняло 18 часов 🙃. Я начал с отбрасывания повторяющихся / сильно коррелированных столбцов, отбрасывания конкретных данных о кометах (да, есть разница), устранения выбросов в сильно искаженных столбцах, таких как переменная «диаметр» цели, и отбрасывания категориальных столбцов с высокой мощностью.

Мне удалось сократить до 23 столбцов, при этом я даже добавил две дополнительные переменные, связанные со временем. Ниже представлена ​​таблица важности функций, созданная с помощью библиотеки Eli5.

«Есть тысячи астероидов, орбита которых в Солнечной системе пересекает орбиту Земли. И у нас есть небольшой акроним для них - ОСЗ: объекты, сближающиеся с Землей. И наша самая большая цель - попытаться каталогизировать их, чтобы мы знали заранее, не подвергнет ли нас риск ». - Нил де Грасс Тайсон

~ Анализ и результаты ~

После того, как данные были очищены, я перешел к анализу и созданию модели. Я начал с базовой модели, содержащей нулевые функции, затем создал модель линейной регрессии, затем модель регрессора дерева решений на модель регрессора случайного леса и, наконец, закончил моделью XGBRegressor. Результаты вместе с соответствующими баллами показаны ниже в таблице.

После запуска HyperParameter Optimization для регрессора дерева решений, регрессора случайного леса и XGBRegressor лучшей моделью фактически оказался регрессор случайного леса. Значение R² является самым высоким как для обучающего набора, так и для набора проверки, а также для наименьших значений ошибок во всех моделях. Следует отметить, что модель случайного леса использовала оптимальные параметры из 386-минутного RandomizedSearchCV. (да ладно, почти 6,5 часов ��)

Приведенный ниже фрагмент кода - это то, что я использовал для достижения моей модели регрессии случайного леса:

import category_encoders as ce
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScalar
from sklearn.ensemble import RandomForestRegressor
from sklearn.metricsimport r2_score
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
features = ['orbit_id', 'e', 'a', 'i', 'om', 'w', 'ma', 'n', 'tp', 'moid', 'moid_jup', 'class', 'producer', 'data_arc', 'n_obs_used', 'rms', 'albedo', 'diameter_sigma', 'diameter', 'first_year_obs', 'first_month_obs', 'last_obs_year', 'las_obs_month']
target = 'diameter'
# Arrange data into X features matrix and y target vector
X_train = train[features]
y_train = train[target]
X_val = val[features]
y_val = val[target]
X_test = test[features]
X_train = train.drop(columns=target)
X_val = val.drop(columns=target)
X_test = test.drop(columns=target)
pipeline = make_pipeline(ce.OneHotEncoder(use_cat_names=True, cols=['class', 'producer']), ce.OrdinalEncoder(cols=['orbit_id']), StandardScaler(), RandomForestRegressor(n_estimators=450, max_depth=None, max_features=.77, min_samples_leaf=3, min_samples_split=3, n_jobs=-1, random_state=43)
pipeline.fit(X_train, y_train)

При сравнении оптимизированного регрессора случайного леса с тестовым набором я получил следующие результаты:

Результаты набора тестов показывают очень хорошие результаты по сравнению с наборами проверки. MAE и MSE тестирования были ниже, чем ошибки набора для проверки, и Testing R² также фактически улучшился. Это помогает доказать, что модель случайной регрессии леса успешно предсказывала диаметр астероида.

~ Визуализации и понимание ~

График частичной зависимости одной переменной

График PDP выше показывает взаимосвязь между n_obs_used и диаметром. По мере увеличения наблюдений диаметр увеличивается, что интересно отметить. Это могло быть связано с тем, что чем крупнее астероид, тем больше раз его можно наблюдать и задокументировать.

Графики частичной зависимости с двумя переменными

Этот двухмерный график PDP показывает взаимосвязь между количеством наблюдений, использованных при регистрации астероида, и альбедо. Это две наиболее важные особенности набора данных, которые показывают очень четкую взаимосвязь на графике. Альбедо определяется как «количество света, отраженного от небесного тела». Это значение от 0 до 1, где 0 представляет полное поглощение, а 1 представляет полное отражение. Эти характеристики идут рука об руку, потому что чем крупнее астероид, тем больше записано наблюдений, а также больше поглощается свет. Чем больше астероид пропускает свет, тем меньше он в диаметре и, следовательно, его труднее наблюдать.

Сюжеты Шепли

Я создал графики Шепли, чтобы помочь описать влияние важных особенностей на увеличение или уменьшение прогнозируемого диаметра в км. Ниже приведен пример созданного графика.

Эти графики чрезвычайно полезны и полезны для понимания того, как модель регрессора случайного леса предсказывает значение. Красные столбцы показывают особенности, которые увеличили прогнозируемый диаметр, тогда как синие столбцы показывают переменные, которые привели к ухудшению прогноза.

КРАТКИЙ СЮЖЕТ ШЭПЛИ

Графики Shapely очень полезны и являются отличным наглядным пособием для понимания того, как модель делает прогнозы. Сводный график в библиотеке Shapely дает обзор наиболее важных функций выходных данных модели.

Красный цвет снова связан с увеличением прогнозов модели, в отличие от синего цвета, который снижает прогноз модели.

~ Заключение ~

Заключительные аналитические выводы

Важность предсказания астероидов может заключаться в разнице между жизнью и смертью. Конечно, в этом утверждении есть намек на преувеличение, но, учитывая достаточно большой объект, ускоряющийся к поверхности Земли под действием силы тяжести (9,8 [м / с²]), может быть нанесен серьезный ущерб. Область предсказания астероидов, основанная на наблюдательных характеристиках, все еще находится на младенческой стадии и только растет. Благодаря постоянно развивающимся методам сбора данных в сочетании с мощными инновациями в моделях машинного обучения прогнозирование диаметров астероидов может только улучшиться. Влияние машинного обучения поистине безгранично, и этот проект является подтверждением полезности моделей машинного обучения для прогнозирования диаметров астероидов. В целом проект можно рассматривать как успешный, поскольку он смог предсказать точные и убедительные результаты с помощью модели машинного обучения.

Препятствия / уроки жизни

При использовании пробного приложения убедитесь и сделайте то, что вам нужно, до того, как срок его действия истечет или превысит ваш бесплатный лимит ...

Изначально я не мог сохранить свой набор данных в Github (›25 МБ), поэтому мне пришлось использовать этот веб-сайт , чтобы обойти проблему загрузки такого большого набора данных, уменьшения размера и экспорта в файл CSV меньшего размера. Git lfs позволяет загружать большие файлы локально и возвращает указатели на значения, так что можно работать с большими наборами данных и по-прежнему использовать ссылки в Github! Однако, когда я попытался загрузить в Git lfs, я сделал несколько ошибок и несколько раз перезапустил процесс. Из-за этих ошибок и нескольких запусков я превысил лимит бесплатного трафика. Затем мои файлы были удалены из Git lfs, прежде чем я смог сжать набор данных. Это отбросило меня примерно на две недели назад, так что совет, НЕ ПРОКРАСТИНИРУЙТЕ !!!

Это мой первый проект машинного обучения, в котором я нашел данные и провел собственный анализ. Я очень доволен своими результатами и призываю всех попробовать улучшить мою модель или найти что-то получше.

P.S. Если вы хотите получить доступ к записным книжкам, в которых я написал код для этого анализа, загляните здесь. Спасибо за чтение!