Рассмотрим простой пример преобразования двумерного набора данных в одномерный. На рисунке 2.15a слева показан синтетический набор данных, где каждая из 200 точек является объектом в пространстве двух признаков. Набор получен командой:
X = np.dot(np.random.random(size=(2, 2)), np.random.normal(size=(2, 200))).T
Рассчитаем ковариационную матрицу, собственное число и матрицу собственных векторов командами:
S=(1/X.shape[1])*np.dot(X.T,X) #covariance matrix
w, v = np.linalg.eigh(S)
Используя первый или второй вектор матрицы v, мы можем получить два набора взаимно ортогональных значений – z и zz:
vreduced=v[:,1]
vreduced1=v[:,0]
z=np.dot(vreduced,X.T)
zz=np.dot(vreduced1,X.T)
Видно, что дисперсия распределения объектов вдоль горизонтальной оси значительно больше, чем вдоль вертикальной (рисунок 2.15b). Фактически объекты, расположенные на горизонтальной и вертикальной осях, и являются одномерным представлением исходного набора. Видно, что, исключая вертикальную ось (рисунок 2.15b) полностью (вторая главная компонента), мы теряем относительно небольшое количество информации.
Заметим, что объекты можно вновь неточно восстановить в пространстве двух признаков, выполнив обратное преобразование:
Xa= Vreduced*Z.
Однако информацию, относящуюся ко второй главной компоненте, мы, конечно, потеряем (рисунок 2.15с).
a) Исходный набор данных, где каждый объект имеет два свойства
b) Отображение объектов на взаимно перпендикулярные оси (первую и вторую главную компоненты)
с) Восстановление объектов в двумерном пространстве признаков. Исходное распределение объектов показано полупрозрачными точками
Рисунок 2.15. Преобразование данных при применении PCA
На первый взгляд (рисунок 2.15с) может показаться, что задача PCA является задачей линейной регрессии, однако это не совсем так. Отличие в том, что в задаче линейной регрессии среднеквадратическое расстояние определяется вдоль оси y (оси меток), а в PCA – перпендикулярно главной компоненте (рисунок 2.16).
Рисунок 2.16. Представление задач линейной регрессии (слева) и PCA (справа)
Примечание. Полный текст программы расчета главных компонент приведен в MLF_PCA_numpy_001.ipynb – https://www.dropbox.com/s/65y1z7svf7epx1q/MLF_PCA_numpy_001.html?dl=0
Библиотека scikit-learn имеет в своем составе модуль PCA, с помощью которого можно вычислить главные компоненты и найти количество главных компонент, необходимых для обеспечения заданной вариативности новых параметров z.
Примечание. Закрепить навыки работы с PCA в составе библиотеки scikit-learn можно, выполнив задания лабораторной работы ML_lab08_Principal Component Analysis – https://www.dropbox.com/sh/xnjiztxoxpqwos3/AADoUPfNeMnEXapbqb3JHHvla?dl=0
2.14. Контрольные вопросы
Какие параметры регулируют работу алгоритма k-NN и позволяют улучшить качество классификации?
Что такое ядро в алгоритме опорных векторов?
Приведите выражение функции стоимости алгоритма опорных векторов.
Как обучается алгоритм Naïve Bayes?
Укажите достоинства алгоритма Naïve Bayes.
Укажите недостатки алгоритма Naïve Bayes.
Что дает сглаживание по Лапласу в алгоритме Naïve Bayes?
Чем помогает применение логарифмов в алгоритме Naïve Bayes?
Что такое бустинг?
В чем заключается преимущество бустинга над деревьями решений?
Что такое PCA?
Каково минимальное количество главных компонент, получаемых с помощью PCA?
3. Оценка качества методов ML
Для решения конкретной задачи с помощью ML необходимо выбрать соответствующий метод, который дает наилучший результат.
Примечание. Под методом машинного обучения мы понимаем в данном случае реализацию алгоритма или некоторой модели вычислений, которая решает задачу классификации, регрессии или кластеризации.