Работа с пропусками в наборе данных — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Как кодируются пропуски?)
м (rollbackEdits.php mass rollback)
 
(не показано 6 промежуточных версий 2 участников)
Строка 2: Строка 2:
  
 
= Откуда берутся пропуски? =
 
= Откуда берутся пропуски? =
[[File:Пропуски1.png|300px|thumb|рис1]]
+
[[File:Пропуски1.png|300px|thumb|рис.1 Объединение 2 наборов данных]]
 
*Решаем задачу поиска аномалий для столбцов. Когда находим аномальное значение в столбце. Можно сказать, что это не аномалия, а ошибка и его можно пометить как пропуск
 
*Решаем задачу поиска аномалий для столбцов. Когда находим аномальное значение в столбце. Можно сказать, что это не аномалия, а ошибка и его можно пометить как пропуск
*Объединяем 2 набора данных (см. рис1). Из-за того, что эти наборы данных немного разные(в разных наборах данных были разные признаки) после объединения получатся пропуски.
+
*Объединяем 2 набора данных (см. рис.1). Из-за того, что эти наборы данных немного разные(в разных наборах данных были разные признаки) после объединения получатся пропуски.
*Подали разреженный набор данных. Недостающие значения - пропуски.
+
*Подали разреженный набор данных. Недостающие значения <tex>-</tex> пропуски.
  
 
= Как кодируются пропуски? =
 
= Как кодируются пропуски? =
Строка 22: Строка 22:
  
 
== Удаление ==
 
== Удаление ==
Если в столбце есть пропуск - берём и удаляем его из рассмотрения.
+
Если в столбце есть пропуск <tex>-</tex> берём и удаляем его из рассмотрения.
  
 
Можно удалять строки(объекты), '''НО''' могут возникнуть проблемы: если в столбце были пропуски в тренировочном наборе данных, то скорее всего в этом столбце пропуски будут и в тестовом наборе.
 
Можно удалять строки(объекты), '''НО''' могут возникнуть проблемы: если в столбце были пропуски в тренировочном наборе данных, то скорее всего в этом столбце пропуски будут и в тестовом наборе.
Строка 29: Строка 29:
 
Выделяют 3 подхода:
 
Выделяют 3 подхода:
 
=== Общий подход: ===
 
=== Общий подход: ===
[[File:Пропуски2.png|300px|thumb|рис2]]
+
[[File:Пропуски2.png|300px|thumb|рис.2 Пример реализации '''общего''' подхода замены пропусков]]
 
Обучить модель, которая умеет учитывать пропуски, предсказывать значения текущего столбца.
 
Обучить модель, которая умеет учитывать пропуски, предсказывать значения текущего столбца.
  
На примере с рис2. Предполагаем, что второй объект ближе всего к четвёртому, поэтому скорость заполняем 160,  
+
На примере с рис.2 предполагаем, что второй объект ближе всего к четвёртому, поэтому скорость заполняем 160,  
а первый ближе к пятому, поэтому цвет заполняем "красный"
+
а первый ближе к пятому, поэтому цвет заполняем «красный»
  
 
=== Частный случай: ===  
 
=== Частный случай: ===  
[[File:Пропуски3.png|300px|thumb|рис3]]
+
[[File:Пропуски3.png|300px|thumb|рис.3 Пример реализации '''частного''' подхода замены пропусков]]
 
Заполнение средним арифметическим / модой
 
Заполнение средним арифметическим / модой
  
Строка 47: Строка 47:
  
 
== Добавление ==
 
== Добавление ==
[[File:Пропуски4.png|300px|thumb|рис4]]
+
[[File:Пропуски4.png|300px|thumb|рис.4 Пример избавления от пропусков путём добавления]]
*Если признак категориальный - добавляем к нему новое значение "пропуск"(увеличиваем количество категорий на 1)
+
*Если признак категориальный <tex>-</tex> добавляем к нему новое значение «пропуск»(увеличиваем количество категорий на 1)
*Если признак числовой - добавляем новый бинарный признак, было ли данное значение пропущено, а само значение заменять методами описанными выше.
+
*Если признак числовой <tex>-</tex> добавляем новый бинарный признак, было ли данное значение пропущено, а само значение заменять методами описанными выше.
 
+
(Пример рис.4)
 
= Отказ алгоритмов =  
 
= Отказ алгоритмов =  
 
Алгоритм может не только принимать на вход пропуски, но и возвращать. Если алгоритм возвращает проспуск, значит он отказывается от работы.
 
Алгоритм может не только принимать на вход пропуски, но и возвращать. Если алгоритм возвращает проспуск, значит он отказывается от работы.
Строка 60: Строка 60:
 
   
 
   
 
= Задача предсказания и заполнения пропусков =
 
= Задача предсказания и заполнения пропусков =
[[File:Пропуски5.png|530px|thumb|рис5]]
+
[[File:Пропуски5.png|530px|thumb|рис.5 Пример сведения задачи заполнения пропусков к задаче предсказания]]
 
Задачу заполнения пропусков можно свести к задаче предсказания.  
 
Задачу заполнения пропусков можно свести к задаче предсказания.  
  
 
Есть набор данных, который условно разбит на train и test. Можно сказать, что значения test в столбце Y пропущены и вместо задачи обучения с учителем решать задачу заполнения пропусков.
 
Есть набор данных, который условно разбит на train и test. Можно сказать, что значения test в столбце Y пропущены и вместо задачи обучения с учителем решать задачу заполнения пропусков.
  
[[File:Пропуски6.png|300px|thumb|рис6]]
+
[[File:Пропуски6.png|300px|thumb|рис.6 Пример сведения задачи заполнения пропусков к задаче обучения без учителя]]
В случае задачи обучения без учителя можно сказать, что все значения в столбце пропущены. (см. рис6)
+
В случае задачи обучения без учителя можно сказать, что все значения в столбце пропущены. (см. рис.6)
  
 
= Рекомендательные системы =
 
= Рекомендательные системы =
 
'''Коллаборативная(совместная) фильтрация'''
 
'''Коллаборативная(совместная) фильтрация'''
[[File:Пропуски7.png|300px|thumb|рис7]]
+
[[File:Пропуски7.png|300px|thumb|рис.7 Оценка конкретных предметов конкретными пользователями]]
Есть множество пользователей и множество предметов, которые эти пользователи оценивают. Нужно понять, как определённый пользователь оценит предмет, который до этого не оценивал. (см. рис7)
+
Есть множество пользователей и множество предметов, которые эти пользователи оценивают. Нужно понять, как определённый пользователь оценит предмет, который до этого не оценивал. (см. рис.7)
  
 
Эта задача не решается методами заполнения пропуска. Но методами рекомендательных систем можно решить задачу заполнения пропусков.
 
Эта задача не решается методами заполнения пропуска. Но методами рекомендательных систем можно решить задачу заполнения пропусков.
  
 
= Обучение на привилегированных данных =
 
= Обучение на привилегированных данных =
[[File:Пропуски8.png|300px|thumb|рис8]]
+
[[File:Пропуски8.png|300px|thumb|рис.8 Пример задачи обучения на привилегированных данных]]
Задача обучения с учителем, но к X даётся некоторый X', про который известно, что в тестовом множестве X' будет пропущен. (см. рис8)
+
Это задача обучения с учителем, в которой к X даётся некоторый X', про который известно, что в тестовом множестве он будет пропущен. (см. рис.8)
  
 
Базовое решение:
 
Базовое решение:
Строка 85: Строка 85:
  
 
(Пример)  
 
(Пример)  
Предсказать результат футбольного матча(победа/поражение). Где привелигированные данные: число голов, число красных/ жёлтых карточек.
+
Предсказать результат футбольного матча(победа/поражение), где привелигированные данные: число голов, число красных/ жёлтых карточек.
  
 
= Обучение на частично размеченных данных =
 
= Обучение на частично размеченных данных =
[[File:Пропуски9.png|300px|thumb|рис9]]
+
[[File:Пропуски9.png|300px|thumb|рис.9 Пример задачи обучения на частично размеченных данных]]
В тренировачном множестве только часть объектов имеют значение целевой переменной Y, у остальных объектов тренировочного и тестового множества значение Y пропущено. (см. рис9)
+
В тренировачном множестве только часть объектов имеют значение целевой переменной Y, у остальных объектов тренировочного и тестового множества значение Y пропущено. (см. рис.9)
  
 
Базовое решение:
 
Базовое решение:
 
*Не использовать объекты у которых пропущен целевой признак
 
*Не использовать объекты у которых пропущен целевой признак
 
*Не использовать целевой признак для обучения. Размеченные объекты(с заданным Y) можно использовать для тестирования(как внешнюю меру)
 
*Не использовать целевой признак для обучения. Размеченные объекты(с заданным Y) можно использовать для тестирования(как внешнюю меру)

Текущая версия на 19:13, 4 сентября 2022

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

Откуда берутся пропуски?

рис.1 Объединение 2 наборов данных
  • Решаем задачу поиска аномалий для столбцов. Когда находим аномальное значение в столбце. Можно сказать, что это не аномалия, а ошибка и его можно пометить как пропуск
  • Объединяем 2 набора данных (см. рис.1). Из-за того, что эти наборы данных немного разные(в разных наборах данных были разные признаки) после объединения получатся пропуски.
  • Подали разреженный набор данных. Недостающие значения [math]-[/math] пропуски.

Как кодируются пропуски?

  • В CSV не стандартизировано, могут быть: «?», « »(пробел), «_», любой другой символ, будь то две запятых подряд или пустая строка
  • В ARFF файле: «?»
  • В программе(Строка / объект): Null, None, пустая строка
  • В категории(кодирующейся от 0 до k-1): -1 или k
  • Число: NaN

Базовые решения:

  • Удалить
  • Заменить
  • Добавить

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

Удаление

Если в столбце есть пропуск [math]-[/math] берём и удаляем его из рассмотрения.

Можно удалять строки(объекты), НО могут возникнуть проблемы: если в столбце были пропуски в тренировочном наборе данных, то скорее всего в этом столбце пропуски будут и в тестовом наборе.

Замена

Выделяют 3 подхода:

Общий подход:

рис.2 Пример реализации общего подхода замены пропусков

Обучить модель, которая умеет учитывать пропуски, предсказывать значения текущего столбца.

На примере с рис.2 предполагаем, что второй объект ближе всего к четвёртому, поэтому скорость заполняем 160, а первый ближе к пятому, поэтому цвет заполняем «красный»

Частный случай:

рис.3 Пример реализации частного подхода замены пропусков

Заполнение средним арифметическим / модой

На примере с рис3. Среднее арифметическое(230, 160, 80, 250) = 180, а Мода(красный, синий, зелёный, синий) = синий

Константная замена:

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

(Пример) разреженная таблица состоит из слов и количества вхождений этого слова в текст. Если слово в тексте не встречалось, то на месте количества может стоять пропуск, что эквивалентно 0, если же храним: встречалось или нет, то на месте пропуска может быть false.

Добавление

рис.4 Пример избавления от пропусков путём добавления
  • Если признак категориальный [math]-[/math] добавляем к нему новое значение «пропуск»(увеличиваем количество категорий на 1)
  • Если признак числовой [math]-[/math] добавляем новый бинарный признак, было ли данное значение пропущено, а само значение заменять методами описанными выше.

(Пример рис.4)

Отказ алгоритмов

Алгоритм может не только принимать на вход пропуски, но и возвращать. Если алгоритм возвращает проспуск, значит он отказывается от работы.

  • Отказ от классификации: используется в ансамблях(когда несколько алгоритмов классификации работают, то какой-то из них может отказаться, понадеясь, что другой сможет классифицировать объект)
  • Отказ от кластеризации: используется для поиска аномалий(объект не попал ни в один кластер => аномальный)

Важно Алгоритм не будет просто так возвращать отказ от классификации / кластеризации(не будет возвращать значение пропуск, а вернёт что-то). Нужно смотреть отдельные реализации алгоритмов.

Задача предсказания и заполнения пропусков

рис.5 Пример сведения задачи заполнения пропусков к задаче предсказания

Задачу заполнения пропусков можно свести к задаче предсказания.

Есть набор данных, который условно разбит на train и test. Можно сказать, что значения test в столбце Y пропущены и вместо задачи обучения с учителем решать задачу заполнения пропусков.

рис.6 Пример сведения задачи заполнения пропусков к задаче обучения без учителя

В случае задачи обучения без учителя можно сказать, что все значения в столбце пропущены. (см. рис.6)

Рекомендательные системы

Коллаборативная(совместная) фильтрация

рис.7 Оценка конкретных предметов конкретными пользователями

Есть множество пользователей и множество предметов, которые эти пользователи оценивают. Нужно понять, как определённый пользователь оценит предмет, который до этого не оценивал. (см. рис.7)

Эта задача не решается методами заполнения пропуска. Но методами рекомендательных систем можно решить задачу заполнения пропусков.

Обучение на привилегированных данных

рис.8 Пример задачи обучения на привилегированных данных

Это задача обучения с учителем, в которой к X даётся некоторый X', про который известно, что в тестовом множестве он будет пропущен. (см. рис.8)

Базовое решение:

  • Не использовать X'
  • Обучить модель [math]a_1[/math] предсказывать X' по X. Затем обучить модель [math]a_2[/math] предсказывать Y по X [math] \times[/math] [math] a_1[/math](X)
  • Обучать предсказывать X' и Y.

(Пример) Предсказать результат футбольного матча(победа/поражение), где привелигированные данные: число голов, число красных/ жёлтых карточек.

Обучение на частично размеченных данных

рис.9 Пример задачи обучения на частично размеченных данных

В тренировачном множестве только часть объектов имеют значение целевой переменной Y, у остальных объектов тренировочного и тестового множества значение Y пропущено. (см. рис.9)

Базовое решение:

  • Не использовать объекты у которых пропущен целевой признак
  • Не использовать целевой признак для обучения. Размеченные объекты(с заданным Y) можно использовать для тестирования(как внешнюю меру)