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

Материал из Викиконспекты
Перейти к: навигация, поиск
(не показана 1 промежуточная версия этого же участника)
Строка 31: Строка 31:
 
== Откуда берутся пропуски? ==
 
== Откуда берутся пропуски? ==
 
*Решаем задачу поиска аномалий для столбцов. Когда находим аномальное значение в столбце. Можно сказать, что это не аномалия, а ошибка и его можно пометить как пропуск
 
*Решаем задачу поиска аномалий для столбцов. Когда находим аномальное значение в столбце. Можно сказать, что это не аномалия, а ошибка и его можно пометить как пропуск
*2 набора данных объединяем(рис1(1 лекция, стр60)). Из-за того, что эти наборы данных немного разные(в разных наборах данных были разные признаки) и после объединения получатся пропуски.
+
*Объединяем 2 набора данных (см. рис1). Из-за того, что эти наборы данных немного разные(в разных наборах данных были разные признаки) после объединения получатся пропуски.
// про разные скорости
+
*Подали разреженный набор данных. Недостающие значения - пропуски.
*Конвертировать разреженный набор данных в обычный. Недостающие значения сконцентрируются(3:45:26) в пропуски.//(Вы будете делать таблицу)
 
  
 
== Как кодируются пропуски? ==
 
== Как кодируются пропуски? ==
*В CSV не стандартизировано, могут быть: “?”, “ “(пробел), “_”, любой другой символ или например две запятых подряд или пустая строка
+
*В CSV не стандартизировано, могут быть: “?”, “ “(пробел), “_”, любой другой символ, будь то две запятых подряд или пустая строка
 
*В ARFF файле: “?”
 
*В ARFF файле: “?”
 
*В программе(Строка / объект): Null, None, пустая строка
 
*В программе(Строка / объект): Null, None, пустая строка
Строка 43: Строка 42:
  
 
== Базовые решения: ==
 
== Базовые решения: ==
*Удаление
+
*Удалить
 
*Заменить
 
*Заменить
 
*Добавить
 
*Добавить
Строка 52: Строка 51:
 
Если в столбце есть пропуск - берём и удаляем его из рассмотрения.
 
Если в столбце есть пропуск - берём и удаляем его из рассмотрения.
  
Можно удалять строки(объекты), '''НО''' могут возникнуть проблемы: если в столбце были пропуски в тренировочном наборе данных, то скорее всего в этом столбце они будут и в тестовом наборе.
+
Можно удалять строки(объекты), '''НО''' могут возникнуть проблемы: если в столбце были пропуски в тренировочном наборе данных, то скорее всего в этом столбце пропуски будут и в тестовом наборе.
  
 
=== Замена ===
 
=== Замена ===
Строка 58: Строка 57:
 
==== Общий подход: ====
 
==== Общий подход: ====
 
Обучить модель, которая умеет учитывать пропуски, предсказывать значения текущего столбца.
 
Обучить модель, которая умеет учитывать пропуски, предсказывать значения текущего столбца.
рис2(1 лекция, стр61, левый)
+
 
Предполагаем, что второй объект ближе всего к четвёртому, поэтому скорость заполняем 160,  
+
На примере с рис2. Предполагаем, что второй объект ближе всего к четвёртому, поэтому скорость заполняем 160,  
а первый ближе к пятому, поэтому цвет заполняем красный
+
а первый ближе к пятому, поэтому цвет заполняем "красный"
  
 
==== Частный случай: ====  
 
==== Частный случай: ====  
заполнение средним арифметическим / модой
+
Заполнение средним арифметическим / модой
рис2(1 лекция, стр61, правый)
 
  
 
//про zero-rule classification
 
//про zero-rule classification
  
Среднее арифметическое(230, 160, 80, 250) = 180
+
На примере с рис3. Среднее арифметическое(230, 160, 80, 250) = 180, а Мода(красный, синий, зелёный, синий) = синий
 
 
Мода(красный, синий, зелёный, синий) = синий
 
  
 
==== Константная замена ====
 
==== Константная замена ====
Применяется в случае, когда мы знаем, что кодирует пропуск
+
Применяется в случае, когда мы знаем, что кодирует пропуск.
  
(например) разреженная таблица состоит из слов и количества вхождений этого слова в текст, если слово в тексте не встречалось, то на месте количества может стоять пропуск, что эквивалентно 0, если же храним встречалось или нет, то на месте пропуска может быть false
+
(Пример) разреженная таблица состоит из слов и количества вхождений этого слова в текст. Если слово в тексте не встречалось, то на месте количества может стоять пропуск, что эквивалентно 0, если же храним: встречалось или нет, то на месте пропуска может быть false.
  
 
=== Добавление ===
 
=== Добавление ===
 
*Если признак категориальный - добавляем к нему новое значение "пропуск"(увеличиваем количество категорий на 1)
 
*Если признак категориальный - добавляем к нему новое значение "пропуск"(увеличиваем количество категорий на 1)
*Если признак числовой - добавляем новый бинарный признак, было ли данное значение пропущено, а само значение заменять методами описанными выше
+
*Если признак числовой - добавляем новый бинарный признак, было ли данное значение пропущено, а само значение заменять методами описанными выше.
рис3(1 лекция, страница 62)
+
(рис4)
  
 
== Отказ алгоритмов ==  
 
== Отказ алгоритмов ==  
(3:52:00) возвращение дата-сетов с пропусками
+
Алгоритм может не только принимать на вход пропуски, но и возвращать. Если алгоритм возвращает проспуск, значит он отказывается от работы.
 +
*Отказ от классификации: используется в ансамблях(когда несколько алгоритмов классификации работают, то какой-то из них может отказаться, понадеясь, что другой сможет классифицировать объект)
 +
*Отказ от кластеризации: используется для поиска аномалий(объект не попал ни в один кластер => аномальный)
  
 +
'''Важно''' Алгоритм не будет просто так возвращать отказ от классификации / кластеризации(не будет возвращать значение пропуск, а вернёт что-то).
 +
Нужно смотреть отдельные реализации алгоритмов.
 +
 
== Задача предсказания и заполнения пропусков ==
 
== Задача предсказания и заполнения пропусков ==
Задачу заполнения пропусков можно свести к задаче предсказания
+
Задачу заполнения пропусков можно свести к задаче предсказания.
рис4(1 лекция, страница 64 верхняя часть)
+
(рис5)
  
 
Есть набор данных, который условно разбит на train и test. Можно сказать, что значения test в столбце Y пропущены и вместо задачи обучения с учителем решать задачу заполнения пропусков.
 
Есть набор данных, который условно разбит на train и test. Можно сказать, что значения test в столбце Y пропущены и вместо задачи обучения с учителем решать задачу заполнения пропусков.
  
В случае задачи обучения без учителя можно сказать, что все значения в столбце пропущены
+
В случае задачи обучения без учителя можно сказать, что все значения в столбце пропущены. (см. рис6)
рис5(1 лекция, страница 64 справа снизу)
 
  
 
== Рекомендательные системы ==
 
== Рекомендательные системы ==
 
'''Коллаборативная(совместная) фильтрация'''
 
'''Коллаборативная(совместная) фильтрация'''
  
Есть множество пользователей и множество предметов, которые эти пользователи оценят. Нужно понять, как определённый пользователь оценит предмет, который до этого не оценивал.
+
Есть множество пользователей и множество предметов, которые эти пользователи оценивают. Нужно понять, как определённый пользователь оценит предмет, который до этого не оценивал. (см. рис7)
рис6(1 лекция, страница 65)
 
  
Эта задача не решается методами заполнения пропуска. Но методами рекомендательной систем можно решить задачу заполнения пропусков.
+
Эта задача не решается методами заполнения пропуска. Но методами рекомендательных систем можно решить задачу заполнения пропусков.
  
 
== Обучение на привилегированных данных ==
 
== Обучение на привилегированных данных ==
Задача обучения с учителе, но к X даётся некоторый X', про который известно, что в тестовом множестве X' будет пропущен  
+
Задача обучения с учителем, но к X даётся некоторый X', про который известно, что в тестовом множестве X' будет пропущен. (см. рис8)
рис7(1 лекция, страница 66)
 
  
Базовые решения:
+
Базовое решение:
 
*Не использовать X'
 
*Не использовать X'
 
*Обучить модель <math>a_1</math> предсказывать X' по X. Затем обучить модель <math>a_2</math> предсказывать Y по X и <math> a_1</math>(X)
 
*Обучить модель <math>a_1</math> предсказывать X' по X. Затем обучить модель <math>a_2</math> предсказывать Y по X и <math> a_1</math>(X)
Строка 112: Строка 110:
  
 
(Пример)  
 
(Пример)  
Предсказать результат футбольного матча(победа/поражение)
+
Предсказать результат футбольного матча(победа/поражение). Где привелигированные данные: число голов, число красных/ жёлтых карточек.
Привелигированные данные: число голов, число красных/ жёлтых карточек
 
  
 
== Обучение на частично размеченных данных ==
 
== Обучение на частично размеченных данных ==
В тренировачном множестве только часть объектов имеют значение целевой переменной Y, у остальных объектов тренировочного и тестового множества значение Y пропущено.
+
В тренировачном множестве только часть объектов имеют значение целевой переменной Y, у остальных объектов тренировочного и тестового множества значение Y пропущено. (см. рис9)
рис8(1 лекция, страница 67)
 
  
 
Базовое решение:
 
Базовое решение:
Строка 124: Строка 120:
  
 
//Активное обучение
 
//Активное обучение
 +
 
//Обучение с подкреплением
 
//Обучение с подкреплением

Версия 21:06, 28 июня 2022

Процесс подготовки данных для дальнейшего анализа называется предобработка

Нормализация

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

//Пример про разницу машин

Базовые методы нормализации данных

Применяются независимо к столбцу X

Важно в sklearn.preprocessing есть метод normalize, но это не то, что нам нужно, он рассматривает нормализацию с геометрической точки зрения (представляет объект в виде вектора), а не по столбцам


Минмакс, [0;1] масштабирование [math] x_{new} = \dfrac{x_{old} - min[X]}{max[X] - min[X]}[/math]

После нормализации: [math]min[X_{new}] = 0[/math] и [math]max[X_{new}] = 1[/math]


Стандартизация, Z-масштабирование [math] x_{new} = \dfrac{x_{old} - E[X]}{D[X]}[/math]

После нормализации: [math]E[X_{new}] = 0[/math] и [math]D[X_{new}] = 1[/math]

// == декорреляция == пока не нашёл

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

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

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

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

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

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

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

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

Удаление

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

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

Замена

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

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

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

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

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

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

//про zero-rule classification

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

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

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

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

Добавление

  • Если признак категориальный - добавляем к нему новое значение "пропуск"(увеличиваем количество категорий на 1)
  • Если признак числовой - добавляем новый бинарный признак, было ли данное значение пропущено, а само значение заменять методами описанными выше.

(рис4)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//Активное обучение

//Обучение с подкреплением