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

Материал из Викиконспекты
Перейти к: навигация, поиск
м (rollbackEdits.php mass rollback)
 
(не показано 7 промежуточных версий 2 участников)
Строка 8: Строка 8:
  
 
== Преобразование порядкового типа ==
 
== Преобразование порядкового типа ==
[[File:Преобразование_порядкового_типа_в_k_категорий.png|250px|thumb|рис1. (A<B<C)]]
+
[[File:Преобразование_порядкового_типа_в_k_категорий.png|250px|thumb|рис.1 Преобразование порядкового типа в 3 категории A, B, C : (A<B<C)]]
  
 
* Преобразование в число(берём его порядковый номер)
 
* Преобразование в число(берём его порядковый номер)
 
* Преобразование в k бинарных категорий(если число значений конечно и равно k):
 
* Преобразование в k бинарных категорий(если число значений конечно и равно k):
  
<tex>c_i(ord) := (ord < ord_i), где </tex>{<tex>ord_1, ..., ord_k</tex>} - множество значений порядкового признака.(см. рис1)
+
<tex>c_i(ord) := (ord < ord_i), где </tex>{<tex>ord_1, ..., ord_k</tex>} - множество значений порядкового признака.(см. рис.1)
  
 
== Преобразование категории ==
 
== Преобразование категории ==
[[File:Преобразование_небинарной_категории_в_бинарную.png|250px|thumb|рис2. (A<B<C)]]
+
[[File:Преобразование_небинарной_категории_в_бинарную.png|250px|thumb|рис.2 Преобразование небинарной категории в бинарную (A<B<C)]]
  
 
* Бинарную категорию можно преобразовать в число: <tex>c_1 \Rightarrow 0, c_2 \Rightarrow 1</tex> или <tex>c_1 \Rightarrow -1, c_2 \Rightarrow +1</tex>
 
* Бинарную категорию можно преобразовать в число: <tex>c_1 \Rightarrow 0, c_2 \Rightarrow 1</tex> или <tex>c_1 \Rightarrow -1, c_2 \Rightarrow +1</tex>
* Категорию из k значений {<tex>c_1, ..., c_k</tex>} можно '''бинаризовать''' получив k бинарных категорий:<tex>b_i(c) := (c = c_i)</tex>(см. рис2)('''НО''' обратное преобразование иногда невозможно(получим много true и не понятно, к какой категории относить))
+
* Категорию из k значений {<tex>c_1, ..., c_k</tex>} можно '''бинаризовать''' получив k бинарных категорий:<tex>b_i(c) := (c = c_i)</tex>(см. рис.2)('''НО''' обратное преобразование иногда невозможно(получим много true и не понятно, к какой категории относить))
 
* One-hot encoding - преобразование категорий в числа (0, 1): one-hot<tex>_i(c) = [c = c_i]</tex>
 
* One-hot encoding - преобразование категорий в числа (0, 1): one-hot<tex>_i(c) = [c = c_i]</tex>
  
 
= Нормализация данных =
 
= Нормализация данных =
  
Применяются независимо к столбцу X
+
Набор данных содержит в себе единицы измерения, которые отбрасываются, чтобы набор данных был просто числами. Но чтобы далее работать, нам нужно, чтобы все объекты были приведены к единому формату. Подробнее читай [http://neerc.ifmo.ru/wiki/index.php?title=Нормализация_набора_данных тут]
 
 
Важно в sklearn.preprocessing есть метод normalize, но это не то, что нам нужно, он рассматривает нормализацию с геометрической точки зрения
 
(представляет объект в виде вектора), а не по столбцам
 
 
 
 
 
'''Минмакс, [0;1] масштабирование'''
 
<tex> x_{new} = \dfrac{x_{old} - \min[X]}{\max[X] - \min[X]}</tex>
 
 
 
После нормализации: <math>\min[X_{new}] = 0</math> и <math>\max[X_{new}] = 1</math>
 
 
 
 
 
'''Стандартизация, Z-масштабирование'''
 
<tex> x_{new} = \dfrac{x_{old} - \mathbb{E}[X]}{\mathbb{D}[X]}</tex>
 
 
 
После нормализации: <math>\mathbb{E}[X_{new}] = 0</math> и <math>\mathbb{D}[X_{new}] = 1</math>
 
 
 
= Декорреляция =
 
[[File:Декорреляция.png|300px|thumb|рис3]]
 
 
 
1. Есть матрица X.
 
 
 
2. Матрицу центрировали (<math>\mathbb{E}[X_j] = 0</math>).
 
 
 
3. Ковариация вычисляется по следующей формуле:
 
 
 
<tex>\Sigma(X) = \dfrac{1}{N}X^TX</tex>
 
 
 
4. Если же матрица нормализована так, что <math>\mathbb{D}[X_j] = 1</math>, то из произведения мы получим не ковариационную, а корреляционную матрицу
 
 
 
5. Декорреляция вычисляется по формуле:
 
 
 
<tex>\hat{X} = X \times \sum^{-1/2}(X)</tex>
 
 
 
где <tex>\Sigma^{1/2}</tex>  находится из разложения Холецкого
 
 
 
{{Утверждение
 
|statement=После декорреляции: <tex>\sum(\hat{X}) = I</tex>
 
|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>.
 
}}
 
  
 
= Аномалии в наборе данных =
 
= Аномалии в наборе данных =
  
Аномалии - плохие объекты для построения нашей модели
+
Аномалии - плохие объекты для построения нашей модели.
  
 
Задача поиска аномалий является отдельной задачей машинного обучения, про которую можно почитать [http://neerc.ifmo.ru/wiki/index.php?title=поиск_аномалий здесь]  
 
Задача поиска аномалий является отдельной задачей машинного обучения, про которую можно почитать [http://neerc.ifmo.ru/wiki/index.php?title=поиск_аномалий здесь]  

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

Типизация признаков

Преобразование числа

Обычно с числами довольно удобно работать и преобразовывают их достаточно редко.

Дискретизация

  • Преобразование в порядковый признак. (берём в числах диапазоны и диапазонам сопоставляем категории)
  • Преобразование в категориальный признак. (НО теряется информация о порядке)

Преобразование порядкового типа

рис.1 Преобразование порядкового типа в 3 категории A, B, C : (A<B<C)
  • Преобразование в число(берём его порядковый номер)
  • Преобразование в k бинарных категорий(если число значений конечно и равно k):

[math]c_i(ord) := (ord \lt ord_i), где [/math]{[math]ord_1, ..., ord_k[/math]} - множество значений порядкового признака.(см. рис.1)

Преобразование категории

рис.2 Преобразование небинарной категории в бинарную (A<B<C)
  • Бинарную категорию можно преобразовать в число: [math]c_1 \Rightarrow 0, c_2 \Rightarrow 1[/math] или [math]c_1 \Rightarrow -1, c_2 \Rightarrow +1[/math]
  • Категорию из k значений {[math]c_1, ..., c_k[/math]} можно бинаризовать получив k бинарных категорий:[math]b_i(c) := (c = c_i)[/math](см. рис.2)(НО обратное преобразование иногда невозможно(получим много true и не понятно, к какой категории относить))
  • One-hot encoding - преобразование категорий в числа (0, 1): one-hot[math]_i(c) = [c = c_i][/math]

Нормализация данных

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

Аномалии в наборе данных

Аномалии - плохие объекты для построения нашей модели.

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

Пропуски в наборе данных

Иногда в таблице с данными существую пустоты(они же пропуски), про работу с пропусками можно почитать тут