Мухамедиев Равиль Ильгизович - Введение в машинное обучение стр 12.

Шрифт
Фон

import xgboost

clf = xgboost.XGBClassifier(nthread=1)


Применим XGBClassifier для решения задачи Fashion-MNIST:


clf = xgboost.XGBClassifier(nthread=4,scale_pos_weight=1)

clf.fit(X_train, y_train)


nthread количество потоков, которое рекомендуется устанавливать не по количеству процессорных ядер вычислительной системы.


Результат, который получен в этом случае:

Accuracy of XGBClassifier on training set: 0.88

Accuracy of XGBClassifier on test set: 0.86


Важной особенностью является нечувствительность к нормировке данных. То есть если мы будем рассматривать исходные данные изображения в их первозданном виде, исключив операторы:

##X_train1=X_train1/255.0

##X_test1=X_test1/255.0


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

Примечание. При проведении экспериментов с большим набором данных нужно учесть, что алгоритм довольно долго обучается. В частности, при решении задачи Fashion-MNIST время обучения превышает 10 минут. Программу, решающую задачу Fashion-MNIST с помощью XGBoost (MLF_XGBoost_Fashion_MNIST_001), можно загрузить по ссылке https://www.dropbox.com/s/frb01qt3slqkl6q/MLF_XGBoost_Fashion_MNIST_001.html?dl=0

2.13. Снижение размерности данных. Метод главных компонент

Метод главных компонент (Principal Component Analysis PCA) один из «классических» способов уменьшения размерности данных, причем таким образом, чтобы минимизировать потери информации. С его помощью можно выяснить, какие из свойств объектов наиболее влиятельны в процессе принятия классификации. Однако он вполне успешно применяется для сжатия данных и обработки изображений. В машинном обучении метод часто применяется как один из способов понижения размерности до двух или трех с целью отображения объектов классификации или регрессии в виде, понятном для человека, или для ускорения обучения путем «отбрасывания» тех свойств данных, которые менее существенны, то есть вносят меньший вклад в распределение данных. Метод восходит к работам Пирсона и Сильвестра [[65], [66]].

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

Определение 1. В теории вероятностей и математической статистике мера линейной зависимости двух случайных величин называется ковариацией. Ковариационная матрица, определяющая такую зависимость, рассчитывается следующим образом:



Иначе, учитывая, что X матрица параметров размерностью m x n (m количество случайных величин, n количество параметров или измерений, их определяющих), мы можем записать:



Определение 2. Ненулевой вектор, который при умножении на некоторую квадратную матрицу превращается в самого же себя с числовым коэффициентом, называется собственным вектором матрицы. Другими словами, если задана квадратная матрица S, то ненулевой вектор v называется собственным вектором матрицы, если существует число w такое, что:



Число w называют собственным значением или собственным числом матрицы S. Алгоритм расчета главных компонент включает два этапа:

Рассчитывается ковариационная матрица S, которая по определению является квадратной матрицей размера n x n, где n число свойств.

Рассчитывается матрица собственных векторов V размерностью n x n, состоящая из n собственных векторов матрицы, каждый из которых состоит из n компонентов.

Фактически мы получаем n ортогональных измерений, в которых распределены величины x(i).

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

Другими словами, можно сократить матрицу V, уменьшив тем самым число ортогональных проекций вектора x. Обозначим сокращенную матрицу Vreduced. Затем можно умножить сокращенную матрицу на транспонированную матрицу X:

Z= Vreduced*X.T.

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

Рассмотрим простой пример преобразования двумерного набора данных в одномерный. На рисунке 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 и позволяют улучшить качество классификации?

Что такое ядро в алгоритме опорных векторов?

Приведите выражение функции стоимости алгоритма опорных векторов.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3