При решении задач машинного обучения разработчики довольно часто сталкиваются с проблемой пропущенных значений в датасете. Также помимо пропущенных значений могут быть некорректные данные, возникшие в результате ошибок при заполнении. К примеру, при заполнении таблицы баллов человек заполнил отрицательное значение в колонку с результатами исследования. Но результаты исследования должно быть строго положительными. И что подразумевал человек при заполнении неизвестно.
Что же делать с некорректными ячейками в таблице?
Рассмотрим несколько простых способов обработки пропусков.
Способы, основанные на удалении:
Способы, основанные на удалении:
1. Удаление строки или объекта.
2. Удаление столбца. Столбец удаляется в случае, если большая часть ячеек данного признака заполнена некорректно, либо пропущена.
Данный способ подходит в случае, когда пустых ячеек достаточно мало по отношению к исходным размерам датафрейма. Иначе можно получить датафрейм маленьких размеров, изучение которого не приведет к значительным результатам.
Данный способ подходит в случае, когда пустых ячеек достаточно мало по отношению к исходным размерам датафрейма. Иначе можно получить датафрейм маленьких размеров, изучение которого не приведет к значительным результатам.
Также существуют способы изменения ячеек:
Замена значения или пропуска ячейки средним или медианным значением столбца признака. Но такой способ подходит только в случае вещественных признаков.
Замена значения или пропуска ячейки средним или медианным значением столбца признака. Но такой способ подходит только в случае вещественных признаков.
А что же делать с категориальными признаками?
1. Замена пропущенного значения наиболее встречающимся значением признака.
2. Генерация случайного признака из присутствующих с учетом вероятности.
К примеру, есть признак "Промежуток возраста" со строковыми значениями '10-18' и '18-30'. Зная, количество значений в признаке, можно определить их вероятности. Затем сгенерировать значение, учитывая вероятность.
Если из 5 заполненных ячеек 2 из них равны '10-18', а остальные '18-30', то при генерации 2/5 пропущенных ячеек заполняются значениями '10-18', остальные '18-30'.
К примеру, есть признак "Промежуток возраста" со строковыми значениями '10-18' и '18-30'. Зная, количество значений в признаке, можно определить их вероятности. Затем сгенерировать значение, учитывая вероятность.
Если из 5 заполненных ячеек 2 из них равны '10-18', а остальные '18-30', то при генерации 2/5 пропущенных ячеек заполняются значениями '10-18', остальные '18-30'.
3. Если значений достаточно мало, и их можно соотнести с числовым значением, то можно применить к нему методы соотвествующие числовым признакам. К примеру, признак "Cостояние голода" со значениями 'сыт', 'голоден', 'переел' можно свести к 0, 1, 2 и восстановить их с помощью медианного значения. Но стоит быть аккуратными, т.к. можно получить вещественное значение 0.7, а данное значение не соотносится ни с одним из 0, 1 и 2.
Метрики
Существуют более сложные методы восстановления данных. Такие методы используют понятие метрики - близости объектов друг к другу. Для этого надо знать, как вычислить метрику близости объектов. Идея заключается в следующем:
Можно найти объект наиболее похожий к текущему на основе корректных значений признаков. С помощью значения близкого признака восстановить каким-то методом значение пропущенного признака исходного объекта.
Можно найти объект наиболее похожий к текущему на основе корректных значений признаков. С помощью значения близкого признака восстановить каким-то методом значение пропущенного признака исходного объекта.
Метрика - это расстояние между объектами.
Рассмотрим 3 вида метрик.
1. Евклидова метрика. Данная метрика основана на геометрическом понятии расстояния.
1. Евклидова метрика. Данная метрика основана на геометрическом понятии расстояния.
Данная метрика названа из-за особенностей постройек Манхеттена. Улицы и переулки расположены строго параллельно и перпендикулярно по отношению друг к другу. Ходить по диагонали сквозь зданий нельзя. Можно ходить только по улицам и переулкам.
3. Max-метрика.
Также можно использовать и другие метрики для анализа данных и их достаточно много.
Основная идея при использовании подхода с метриками:
Для начала рассчитывается расстояние от объекта A до всех остальных объектов датасета. Затем находятся наиболее близко расположенные объекты и значение пропущенного признака вычисляется на основе значений признака ближащих объектов.
От выбора метрики зависит значение признака, а ,значит, и качество обучения.
В результате, можно сказать, что существуют много методов для восстановления значений признаков: как простых, так и сложных. И стоит учесть, что от выбранного способа зависит качество обучения модели. Для каких-то признаков может подойти простой способ обработки значений, для каких-то сложный.