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

Исследование данных

Данные содержат характеристики, значения которых рассчитываются с помощью датчиков. В наборе данных представлены следующие функции: ориентация, линейное ускорение, угловая скорость, идентификатор серии и номер измерения. Ключевой момент, на который следует обратить внимание, заключается в том, что ориентация задается по четырем измерениям (т.е. x, y, z, w), также известным как кватернион.

В папке данных было три файла: train.csv, test.csv и y_train.csv (включая вывод зависимой переменной)

Набор поездов и тест имели идентификаторы серий 3810 и 3816 соответственно, а также 128 значений измерений для каждого идентификатора серии.

Проблема заключалась в проблеме множественной классификации с 9 классами в качестве возможных выходов.

Далее я нанес на график значения каждой функции для 0-й серии.

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

Разработка функций

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

Построение модели

  1. Я закодировал каждый из классов с помощью функций train_cats () и proc_df () fastai v 0.7.
  2. Я построил случайный лес с первоначально 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.

Полный код можно найти на

  1. Https://www.kaggle.com/rijboy/help-robot-navigate-random-forest-fastai
  2. Https://github.com/rijulvohra/Help-Robots-Navigate

использованная литература

  1. Https://www.kaggle.com/prashantkikani/help-humanity-by-helping-robots

2. https://www.kaggle.com/artgor/where-do-the-robots-drive