banner banner banner
Введение в машинное обучение
Введение в машинное обучение
Оценить:
Рейтинг: 0

Полная версия:

Введение в машинное обучение

скачать книгу бесплатно

7. Какие библиотеки машинного обучения используются в данном пособии?

8. Укажите типы машинного обучения, относящиеся к классу «обучение без учителя» (Unsupervised Learning).

9. Вы получили заданный набор обучающих данных. Что делать, если результаты работы алгоритма машинного обучения не удовлетворяют потребностям практики?

2. Классические алгоритмы машинного обучения

2.1. Формальное описание задач машинного обучения

Формальная постановка задачи машинного обучения (задача обучения по примерам или задача обучения с учителем) заключается в следующем [[35 - Дьяконов А. Г. Анализ данных, обучение по прецедентам, логические игры, системы WEKA, RapidMiner и MatLab (Практикум на ЭВМ кафедры математических методов прогнозирования): учебное пособие. – М.: Изд. отдел факультета ВМК МГУ им. М. В. Ломоносова, 2010.]].

Пусть имеются два пространства: Ob (пространство допустимых объектов), Y (пространство ответов или меток) и (целевая) функция.

Определено отображение y: Ob ? Y, которое задано лишь на конечном множестве объектов (обучающей выборке (прецедентах) (sample set)) размером m:

то есть известны метки объектов ob

, ob

,…, ob

. Требуется построить алгоритм A («обучить»), который по объекту ob определяет значение y(ob) или «достаточно близкое» значение, если допускается неточное решение.

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

При конечном множестве Y = {1, 2,…, l} задачу называют задачей классификации (на l непересекающихся классов). В этом случае можно считать, что множество X разбито на классы C

,…, C

, где Ci = {ob Ob | y(ob) = i} при i{1, 2,…, l}:

Ob = ?

C

.

При Y = {(?1,…,?l ) |?1,…,?l {0,1 говорят о задаче классификации на l пересекающихся классов. Здесь i-й класс – Ci = {ob Ob | y(ob) = (?1,…,?l), ?i = 1}.

Для решения задачи, то есть поиска оптимального алгоритма A, вводится функция потерь или функция стоимости (cost function) J(A(ob), y(ob)), которая описывает, насколько «плох» ответ A(ob) по сравнению с верным ответом y(ob). В задаче классификации можно считать, что

а в задаче регрессии

J(A(ob), y(ob)) = | A(ob) – y(ob) |

или

J(A(ob), y(ob)) = (A(ob) – y(ob))2.

Возникает закономерный вопрос: что же такое объект? В задачах машинного обучения объект – это некоторое множество параметров (признаков). Если некоторую сущность можно описать конечным набором параметров, то она может рассматриваться как объект в машинном обучении, причем ее физическая природа не имеет значения. Параметры могут задаваться исследователем, исходя из его представлений о наилучшем описании объекта, так, как это делается в «классических» задачах машинного обучения, или, с другой стороны, формироваться путем выполнения некоторой процедуры так, как это делается в глубоком обучении.

Таким образом, каждый объект ob описывается конечным набором (входных) параметров или свойств (input values or features) x

,x

,….x

, одинаковым для каждого ob

? Ob , а y называется целевой переменной (целевым параметром) (target value) в задаче регрессии или классом в задаче классификации.

Алгоритм А может описываться конечным набором параметров ?

? ? или, как часто говорится при описании нейронных сетей, весов (weights) w

? W.

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

В задаче регрессии алгоритм A часто называется функцией гипотезы, а функция стоимости определяется как сумма квадратов разности «предсказываемого» алгоритмом (функцией гипотезы) значения и реального значения у по множеству примеров m. При этом подбирается такая функция гипотезы h

(x), которая при некотором наборе параметров ?

? ? обеспечивает минимальное значение J(?).

где m – множество обучающих примеров или объектов; x

– значение параметров или свойств для i-го объекта; y

– фактическое значение объясняемой или целевой переменной для i-го примера; h

– функция гипотезы, которая может быть линейной (h

= ?

+ ?

x) или нелинейной (например, квадратичная функция гипотезы одной переменной – (h

= ?

+ ?

x + ?

x

).

Например, если мы рассматриваем задачу прогнозирования стоимости автомобиля, исходя из года его производства, то год производства будет являться входной переменной или свойством (x), а стоимость – целевой переменной (y) (рисунок 2.1).

Рисунок 2.1. Зависимость стоимости автомобиля от года выпуска

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

Забегая вперед, можно сказать, что для подбора параметров ?

необходимо, чтобы параметры x

?X (в многомерном случае), описывающие объекты, были выражены единицами одинаковой размерности и примерно одинаковой величины. Чаще всего путем нормализации стремятся представить все параметры в виде чисел в диапазоне 0?x?1 или –1?x?1. Вообще говоря, выбор функции нормализации зависит от класса задачи. Кроме того, в процессе предварительной обработки данных могут быть использованы методы, обеспечивающие исключение аномальных значений, исключение шумов (например, высокочастотных) путем сглаживания и т.п. Выбор этих методов также зависит от класса задачи. После того как параметры нормализованы и очищены от аномальных значений, а также исключены объекты, которые определены не полностью (то есть объекты, для которых часть свойств неизвестна), выполняется поиск функции гипотезы h

(x), которая минимизирует стоимость J(?).

2.2. Линейная регрессия одной переменной

Задача линейной регрессии формулируется как поиск минимальной функции стоимости (см. формулу 2.1) при условии, что функция гипотезы является линейной h

= ?

+ ?

x. Очевидно, что подобная функция соответствует линии в двумерном пространстве (рисунок 3.1a). Для нахождения оптимальной функции h

(x) применяется алгоритм градиентного спуска (gradient descent), суть которого заключается в последовательном изменении параметров ?

, ?

с использованием выражения:

где ? – параметр обучения; а

является производной функции стоимости по ?

. Знак := означает присваивание, в отличие от знака равенства (=), применяемого в алгебраических выражениях.

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

Отметим, что выражение функции гипотезы можно преобразовать следующим образом:

и записать в виде:

с учетом того, что x

= 1. Последнее выражение позволяет вычислять функцию гипотезы путем матричного умножения матрицы X, первая колонка которой всегда состоит из единиц, на вектор ?.

С учетом дифференцирования выражения 1.3 и 1.4 можно переписать в виде:

В зависимости от параметра обучения ? алгоритм может достигать минимума (сходиться) или же при слишком большом ? не сходиться.

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

можно использовать матричное выражение:

где ? – вектор параметров; (X

X)

– обратная матрица X

X; X

– транспонированная матрица X.

Преимуществом матричных операций является то, что нет необходимости подбирать параметр ? и выполнять несколько итераций алгоритма. Недостаток связан с необходимостью получения обратной матрицы, сложность вычисления которой пропорциональна O(n

), а также c невозможностью получения обратной матрицы в некоторых случаях.

Рассмотрим пример.

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

%matplotlib inline

import matplotlib.pyplot as plt

import numpy as np

import time

Отметим, что библиотека time позволит нам рассчитать время выполнения программы. Ее применение будет понятно из нижеследующего кода. Сформируем обучающее множество, состоящее из 30 примеров:

xr=np.matrix(np.linspace(0,10,30))

x=xr.T

#значения функции зададим в виде следующего выражения

y=np.power(x,2)+1

#Построим график (рисунок) командами

plt.figure(figsize=(9,9))

plt.plot(x,y,'.')

Рисунок 2.2. График функции y=x

+1