Это был конкурс Kaggle. Хотя я не мог участвовать в соревнованиях, пока они проводились, но я решил проблему позже. Проблема заключается в задаче множественной классификации, в которой мы должны предсказать поверхность, на которой стоит робот.
Исследование данных
Данные содержат характеристики, значения которых рассчитываются с помощью датчиков. В наборе данных представлены следующие функции: ориентация, линейное ускорение, угловая скорость, идентификатор серии и номер измерения. Ключевой момент, на который следует обратить внимание, заключается в том, что ориентация задается по четырем измерениям (т.е. x, y, z, w), также известным как кватернион.
В папке данных было три файла: train.csv, test.csv и y_train.csv (включая вывод зависимой переменной)
Набор поездов и тест имели идентификаторы серий 3810 и 3816 соответственно, а также 128 значений измерений для каждого идентификатора серии.
Проблема заключалась в проблеме множественной классификации с 9 классами в качестве возможных выходов.
Далее я нанес на график значения каждой функции для 0-й серии.
Вывод, сделанный из этого графика, заключался в том, что на графиках угловой скорости и линейного ускорения много шума. Этот шум можно уменьшить, применив быстрое преобразование Фурье для этих функций, как это было сделано многими ядрами Kaggle для этой проблемы.
Разработка функций
Я использовал статистику для разработки новой функции в наборе данных для тестирования и обучения. Поэтому я создал такие функции, как среднее значение, медиана, максимум, минимум, среднее абсолютное отклонение, скользящее среднее и многие другие.
Построение модели
- Я закодировал каждый из классов с помощью функций train_cats () и proc_df () fastai v 0.7.
- Я построил случайный лес с первоначально 120 оценщиками, min_samples_leaf установлен на 5, а max_features установлен на 0,5.
После этого я определил важные функции, используя график важности функций, и сохранил только те функции, для которых значение важности превышало 0,005. Таким образом, количество функций сократилось до 55.
Удаление избыточных функций
Я нарисовал дендрограмму, чтобы определить повторяющиеся функции, отбросил каждую из них и проверил результат, прежде чем окончательно удалить их из набора данных.
Выявив избыточные функции, я по отдельности отбросил каждую из избыточных функций и проверил oob_score. Оценка не сильно изменилась при удалении каждой из этих функций по одной из набора данных. Поэтому я решил навсегда отказаться от:
['orientation_Z_mean','orientation_Z_median','orientation_Y_mean','orientation_Y_median','orientation_X_mean','orientation_X_median','orientation_W_mean','orientation_W_median']
Перекрестная проверка
Общая производительность может быть улучшена за счет уменьшения шума некоторых шумных функций с помощью БПФ. Можно даже преобразовать ось кватерниона в угол Эйлера. Также возможно улучшение оценок при построении других моделей классификаторов, таких как LightGBM.
Полный код можно найти на
- Https://www.kaggle.com/rijboy/help-robot-navigate-random-forest-fastai
- Https://github.com/rijulvohra/Help-Robots-Navigate