Машинное обучение — уменьшение размерности PCA (практика машинного обучения)

машинное обучение искусственный интеллект

«Это 8-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."

Обзор уменьшения размерности (почему уменьшение размерности)

Проклятие размерности: обычно относится к явлению, при котором количество вычислений увеличивается экспоненциально по мере увеличения количества измерений при вычислении векторов. Во многих задачах машинного обучения каждый фрагмент данных в обучающем наборе часто сопровождается тысячами или даже десятками тысяч признаков. Обработка всех этих особенностей не только делает обучение очень медленным, но и значительно увеличивает сложность поиска хорошего решения. Эту проблему мы часто называем проклятием размерности.

Проклятие размерности затрагивает многие области, такие как численный анализ, выборка, комбинирование, машинное обучение, интеллектуальный анализ данных и базы данных. В процессе моделирования машинного обучения это обычно означает, что с увеличением количества признаков объем вычислений станет очень большим.Если признак достигает сотен миллионов измерений, он не может быть рассчитан во время расчета. Иногда слишком большое измерение также приводит к снижению производительности машинного обучения.Дело не в том, что чем больше размер объекта, тем лучше.Производительность модели сначала будет увеличиваться, а затем снижаться с увеличением количества функций.

Многомерные данные усложняют вычисления

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

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

Как уменьшить размерность

Снижение размерности — это преобразование выборок (экземпляров) обучающих данных из пространства высокой размерности в пространство низкой размерности, и этот процесс тесно связан с концепцией сжатия с потерями в теории информации. Также важно понимать, что полностью без потерь уменьшения размерности не существует. Существует множество алгоритмов уменьшения размерности исходных данных, в этих методах уменьшение размерности достигается путем линейного преобразования исходных данных.

Роль уменьшения размерности

1. Сократите избыточные функции и уменьшите размеры данных

Предположим, у нас есть два признака: ?1: высота в сантиметрах для длины; ?2: высота в дюймах. Эти две отдельные функции ?1 и ?2 на самом деле представляют один и тот же контент, который фактически может уменьшить данные до одного измерения, и для представления высоты достаточно только одной функции. Многие функции имеют линейную связь, а многие функции с линейной зависимостью являются избыточными. Удаление избыточных функций не повлияет на результаты вычислений машинного обучения.

2. Упрощение визуализации данных

t-SNE (TSNE) преобразует сходство между точками данных в вероятности. Сходство в исходном пространстве представлено гауссовской совместной вероятностью, а сходство во встроенном пространстве представлено «распределением Стьюдента». Хотя методы уменьшения размерности данных и визуализации, такие как Isomap, LLE и их варианты, больше подходят для развертывания единого непрерывного низкоразмерного многообразия. Но если вы хотите точно визуализировать отношение сходства между образцами, например S-кривую, показанную на рисунке ниже (изображения с разными цветами представляют разные категории данных), t-SNE работает лучше. Потому что t-SNE в основном фокусируется на локальной структуре данных.

image.png

Уменьшение размерности PCA (анализ главных компонентов)

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Код

Он реализован с помощью встроенного алгоритма PCA в библиотеке sklearn.

from sklearn.decomposition import PCA
import numpy as np
import pandas as pd
X = np.array([[-1, -2], [-1, 0], [0, 0], [2, 1], [0, 1]])
pca = PCA(n_components=1)
newX = pca.fit_transform(X)
print(newX)

Результат выглядит следующим образом:

image.png