~ Мотивация ~
«Если на Землю ударит астероид, игра окончена. Для цивилизации это 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. Если вы хотите получить доступ к записным книжкам, в которых я написал код для этого анализа, загляните здесь. Спасибо за чтение!