|
|
Строка 1: |
Строка 1: |
− | Процесс подготовки данных для дальнейшего анализа называется '''предобработка'''
| |
− |
| |
− | = Нормализация =
| |
| Набор данных на самом деле содержит в себе единицы измерения, которые возможно будут указаны в формальном описании. Эти единицы измерения отбрасываются, чтобы набор данных имел только число. | | Набор данных на самом деле содержит в себе единицы измерения, которые возможно будут указаны в формальном описании. Эти единицы измерения отбрасываются, чтобы набор данных имел только число. |
| Чтобы это сделать необходимо, чтобы все объекты были приведены к единому формату (всё в килограммах или всё в метрах) | | Чтобы это сделать необходимо, чтобы все объекты были приведены к единому формату (всё в килограммах или всё в метрах) |
| | | |
− | //Пример про разницу машин
| + | = Базовые методы нормализации данных = |
− | | |
− | == Базовые методы нормализации данных ==
| |
| Применяются независимо к столбцу X | | Применяются независимо к столбцу X |
| | | |
Строка 25: |
Строка 20: |
| После нормализации: <math>\mathbb{E}[X_{new}] = 0</math> и <math>\mathbb{D}[X_{new}] = 1</math> | | После нормализации: <math>\mathbb{E}[X_{new}] = 0</math> и <math>\mathbb{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)
| + | 1. Есть матрица X. |
| | | |
− | == Рекомендательные системы == | + | 2. Матрицу центрировали (<math>\mathbb{E}[X_j] = 0</math>). |
− | '''Коллаборативная(совместная) фильтрация'''
| |
| | | |
− | Есть множество пользователей и множество предметов, которые эти пользователи оценивают. Нужно понять, как определённый пользователь оценит предмет, который до этого не оценивал. (см. рис7)
| + | 3. Ковариация вычисляется по следующей формуле: |
| | | |
− | Эта задача не решается методами заполнения пропуска. Но методами рекомендательных систем можно решить задачу заполнения пропусков.
| + | <tex>\Sigma(X) = \dfrac{1}{N}X^TX</tex> |
| | | |
− | == Обучение на привилегированных данных == | + | 4. Если же матрица нормализована так, что <math>\mathbb{D}[X_j] = 1</math>, то из произведения мы получим не ковариационную, а корреляционную матрицу |
− | Задача обучения с учителем, но к X даётся некоторый X', про который известно, что в тестовом множестве X' будет пропущен. (см. рис8)
| |
| | | |
− | Базовое решение:
| + | 5. Декорреляция вычисляется по формуле: |
− | *Не использовать X'
| |
− | *Обучить модель <math>a_1</math> предсказывать X' по X. Затем обучить модель <math>a_2</math> предсказывать Y по X и <math> a_1</math>(X)
| |
− | *Обучать предсказывать X' и Y.
| |
| | | |
− | (Пример) | + | <tex>\hat{X} = X \times \sum^{-1/2}(X)</tex> |
− | Предсказать результат футбольного матча(победа/поражение). Где привелигированные данные: число голов, число красных/ жёлтых карточек.
| |
| | | |
− | == Обучение на частично размеченных данных ==
| + | где <tex>\Sigma^{1/2}</tex> находится из разложения Холецкого |
− | В тренировачном множестве только часть объектов имеют значение целевой переменной Y, у остальных объектов тренировочного и тестового множества значение Y пропущено. (см. рис9)
| |
| | | |
− | Базовое решение:
| + | {{Утверждение |
− | *Не использовать объекты у которых пропущен целевой признак
| + | |statement=После декорреляции: <tex>\sum(\hat{X}) = I</tex> |
− | *Не использовать целевой признак для обучения. Размеченные объекты(с заданным Y) можно использовать для тестирования(как внешнюю меру)
| + | |proof=<tex>\Sigma = \dfrac{X^TX}{n}</tex> |
| | | |
− | //Активное обучение | + | <tex>\hat{X} = X \times \Sigma^{-1/2}</tex> |
| | | |
− | //Обучение с подкреплением | + | <tex>\dfrac{\hat{X}^T\hat{X}}{n} = \dfrac{(X * \Sigma^{-1/2})^T * (X * \Sigma^{-1/2})}{n} = \dfrac{\Sigma^{-T/2} * X^T * X * \Sigma^{-1/2}}{n} = |
| + | = (\Sigma^{-T/2} * \Sigma^{T/2})*(\Sigma^{1/2}*\Sigma^{-1/2}) = I * I = I</tex>. |
| + | }} |
Набор данных на самом деле содержит в себе единицы измерения, которые возможно будут указаны в формальном описании. Эти единицы измерения отбрасываются, чтобы набор данных имел только число.
Чтобы это сделать необходимо, чтобы все объекты были приведены к единому формату (всё в килограммах или всё в метрах)
Базовые методы нормализации данных
Применяются независимо к столбцу 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} - \mathbb{E}[X]}{\mathbb{D}[X]}[/math]
После нормализации: [math]\mathbb{E}[X_{new}] = 0[/math] и [math]\mathbb{D}[X_{new}] = 1[/math]
Декорреляция
1. Есть матрица X.
2. Матрицу центрировали ([math]\mathbb{E}[X_j] = 0[/math]).
3. Ковариация вычисляется по следующей формуле:
[math]\Sigma(X) = \dfrac{1}{N}X^TX[/math]
4. Если же матрица нормализована так, что [math]\mathbb{D}[X_j] = 1[/math], то из произведения мы получим не ковариационную, а корреляционную матрицу
5. Декорреляция вычисляется по формуле:
[math]\hat{X} = X \times \sum^{-1/2}(X)[/math]
где [math]\Sigma^{1/2}[/math] находится из разложения Холецкого
Утверждение: |
После декорреляции: [math]\sum(\hat{X}) = I[/math] |
[math]\triangleright[/math] |
[math]\Sigma = \dfrac{X^TX}{n}[/math]
[math]\hat{X} = X \times \Sigma^{-1/2}[/math]
[math]\dfrac{\hat{X}^T\hat{X}}{n} = \dfrac{(X * \Sigma^{-1/2})^T * (X * \Sigma^{-1/2})}{n} = \dfrac{\Sigma^{-T/2} * X^T * X * \Sigma^{-1/2}}{n} =
= (\Sigma^{-T/2} * \Sigma^{T/2})*(\Sigma^{1/2}*\Sigma^{-1/2}) = I * I = I[/math]. |
[math]\triangleleft[/math] |