Опубликован: 20.08.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Новосибирский Государственный Университет
Лекция 2:

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

< Лекция 1 || Лекция 2: 123 || Лекция 3 >
1.1.5. Случайный лес

Один из общих подходов в машинном обучении заключается в использовании композиции "слабых" решающих правил. Итоговое правило строится путем взвешенного голосования ансамбля базовых правил. Для построения базовых правил и вычисления весов в последнее время часто используются две идеи:

  • Баггинг (bagging – bootstrap aggregation): обучение базовых правил происходит на различных случайных подвыборках данных или/и на различных случайных частях признакового описания; при этом базовые правила строятся независимо друг от друга.
  • Бустинг (boosting): каждое следующее базовое правило строится с использованием информации об ошибках предыдущих правил, а именно, веса объектов обучающей выборки подстраиваются таким образом, чтобы новое правило точнее работало на тех объектах, на которых предыдущие правила чаще ошибались.

Эксперименты показывают, что, как правило, бустинг работает на больших обучающих выборках, тогда как баггинг – на малых.

Одной из реализаций идеи баггинга является случайный лес [ 2 ].

Случайный лес, а точнее – случайные леса (random forests), является одним из наиболее универсальных и эффективных алгоритмов обучения с учителем, применимым как для задач классификации, так и для задач восстановления регрессии. Идея метода [ 2 ] заключается в использовании ансамбля из M деревьев решений (например, M = 500), которые обучаются независимо друг от друга. Итоговое решающее правило заключается в голосовании всех деревьев, входящих в состав ансамбля.

Для построения каждого дерева решений используется следующая процедура:

  • Генерация случайной подвыборки из обучающей выборки путем процедуры изъятия с возвращением (так называемая бутстрэп-выборка). Размер данной подвыборки обычно составляет 50–70% от размера всей обучающей выборки.
  • Построение дерева решений по данной подвыборке, причем в каждом новом узле дерева переменная для разбиения выбирается не из всех признаков, а из случайно выбранного их подмножества небольшой мощности \rho. Дерево строится до тех пор, пока не будет достигнут минимальный размер листа sz (количество объектов, попавших в него). Рекомендуемые значения: для задачи классификации \rho = d/3, sz = 1, для задачи восстановления регрессии \rho = \sqrt{d}, sz=3.

Одной из модификаций метода случайных деревьев является алгоритм крайне случайных деревьев (extremely random forests), в котором на каждом этапе для выбора признака, по которому будет проводиться разбиение, используется вновь сгенерированная случайная бутстрэп-выборка.

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

1.1.6. Градиентный бустинг деревьев решений

Градиентный бустинг деревьев решений (Gradient Boosting Trees – GBT) [ 6 , 7 ] – другой универсальный алгоритм машинного обучения, основанный на использовании ансамбля деревьев решений. В отличие от случайного леса градиентный бустинг является развитием бустинг-идеи.

Алгоритм минимизирует эмпирический риск жадным пошаговым алгоритмом, аналогичным методу градиентного спуска. Рассмотрим, например, задачу восстановления регрессии используют. Рассмотрим суммарный штраф на обучающей выборке как функцию от значений решающего правила f в точках x^{(1)},x^{(2)},...,x^{(N)}:

L(f) = L \left(f(x^{(1)}),f(x^{(2)}),...,f(x^{(N)} \right) = \sum_{i=1}^N {L \left(y^{(i)}},f(x^{(i)})\right).

Тогда градиент функции L(f) равен

grad L(f) = \left( \frac{\partial L \left( y^{(1)}, f(x^{(1)})\right)}{\partial f(x^{(1)})},\frac{\partial L \left( y^{(2)}, f(x^{(2)})\right)}{\partial f(x^{(2)})},...,\frac{\partial L \left( y^{(N)}, f(x^{(N)})\right)}{\partial f(x^{(N)})} \right).

На предварительном этапе алгоритм строит оптимальную константную модель f=g_{0}. На m-й итерации конструируется дерево решений g_{m} (небольшой глубины), аппроксимирующее компоненты вектора антиградиента, вычисленного для текущей модели f. После этого значения в узлах построенного дерева g_{m} перевычисляются, так, чтобы минимизировать суммарную величину штрафа L(f + g_{m}). Далее осуществляем присваиваниеf \leftarrow f + v \cdot g_{m}, что и завершает m-ю итерацию. Здесь v - параметр регуляризации (shrinkage), призванный бороться с возможным переобучением. Он выбирается из интервала (0,1].

Для решения задачи восстановления регрессии часто используются следующие штрафные функции:

квадратичный штраф

L(y,f(x)) = \frac{1}{2}(y-f(x))^2,

абсолютный штраф

L(y,f(x)) = \mid y - f(x) \mid.

или функция Хьюбера

L(y,f(x))=\frac {1}{2} (y-f(x))^2=\begin{cases}
\frac {1}{2} (y-f(x))^2, при\ |y-f(x)| \le \delta,\\
\delta (|y-f(x)|- \frac {\delta}{2})^2,\ при |y-f(x)| >  \delta.\\
\end{cases}

Заметим, что функция Хьюбера и квадратичный штраф дифференцируемы всюду, тогда как абсолютный штраф - везде, кроме точек, в которых y=f(x).

Для задачи классификации с K классами метод остается прежним, только вместо одной функции f конструируют сразу K функций f_{k} \;\;\; (k=1,2,...,K). В качестве штрафа можно использовать кросс-энтропию

L(y,f_{1}(x),y,f_{2}(x),...,y,f_{K}(x) = -\log_2{\rho_{y}(x)},

где

\rho_{y}(x) = \frac{e^{f_{y}(x)}}{\sum_{k=1}^K{e^{f_{y}(x)}}} \;\;\; (y=1,2,...,K)

- есть оценка вероятности того, что f(x)=y. Итоговый классификатор определяется как

f(x)=agr max_{y} \rho_{y}(x).

Более подробное описание алгоритма см. в [ 6 , 7 ].

Другим популярным методом, использующим идею бустинга, является алгоритм AdaBoost и его модификации [ 5 ].

1.2. Кластеризация

В задачах обучения без учителя (unsupervised learning) у объектов не известны выходы, и требуется найти некоторые закономерности в данных. К задачам обучения без учителя относят задачи кластеризации, понижения размерности, визуализации и др. Здесь рассматривается только кластеризация.

Задача кластеризации - это задача разбиения заданного набора объектов на кластеры, т. е. группы близких по своему признаковому описанию объектов. "Похожие" друг на друга объекты должны входить в один кластер, "не похожие" объекты должны попасть в разные кластеры.

Близость ("похожесть") объектов измеряется на основе функции расстояния \rho(x,x'):\mathbb{X} \times \mathbb{X} \rightarrow \mathbb{R}.

1.2.1. Метод центров тяжести

Рассмотрим один из алгоритмов, решающих задачу кластеризации - метод центров тяжестей (K-means). На вход алгоритма поступает набор данных

x^{(1)},x^{(2)},...,x^{(N)}, где x^{(i)} \in \mathbb{X} = Q_{1} \times Q_{2} \times ... \times Q_{d} \;\;\; (i=1,2,...,N)

и натуральное число K - количество кластеров, на которые нужно разбить данные. Алгоритм реализует пошаговую процедуру минимизации

\min_{C,m_{k}} \sum_{i=1}^N{\rho(x^{(i)},m_{k}},

где m_{k}- центр тяжести объектов, относящихся k-му кластеру:

m_{k} = \frac{\sum_{C(i)=k}{x^{(i)}}}{\mid \{i:C)i) = k\} \mid} \;\;\; (k=1,2,...,K).

При этом не гарантируется нахождение глобального минимума. На предварительном этапе строится некоторое разбиение входных данных на K групп (например, случайно). Пусть C(i) - номер группы, к которой принадлежит -й объект. В ходе работы алгоритма значения C(i) обновляются. В конце работы алгоритма значения C(i) будут соответствовать разбиению данных на кластеры. Каждая итерация представляет собой последовательность следующих шагов:

  • Вычисляем центр тяжести m_{k} (k = 1,2,...,K) объектов в каждой группе.
  • Для каждого объекта x^{(i)} находим k, для которого расстояние от x^{(i)} до m_{k}, т. е. \rho(x^{(i)},m_{k}), минимально. Обновляем функцию C(i), положив C(i) = k (i = 1,2,...,N).

Итерации завершаются, когда наступает стабилизация значений C(i), либо по достижении максимального значения числа итераций.

1.2.2. Метод медиан

Метод центров тяжестей работает с явными описаниями объектов x^{(i)} Модификацией этого метода является метод медиан, или метод срединных точек, (K -medians, или K -medoids). На вход этого алгоритма подается число кластеров K и матрица расстояний D = (d_{ii'}), где d_{ii'} = \rho(x^{(i)},x^{(i')})(i,i'=1,2,...,N). Заметим, что сама функция \rho(x,x') может быть не известна.

Алгоритм ничем не отличается от предыдущего, но вместо центра тяжестей, для каждой группы будем находить медиану, или срединную точку, m_{k} = x_{i_{k}^*} где

i_{k}^* = arg \min_{C(i)=k} \sum_{C(i')=k} {d_{ii'}^2}.

Каждая итерация представляет собой последовательность следующих шагов:

  • Вычисляем медиану m_{k} = x_{i_{k}^*}(k=1,2,...,K) объектов в каждой группе.
  • Для каждого объекта x^{(i)} находим k, для которого d_{i,i_{k}^*} минимально. Обновляем функцию C(i) положив C(i) = k(i = 1,2,...,N).

Как правило, результаты работы алгоритмов центров тяжестей и медиан (если они оба применимы к данным) близки.

< Лекция 1 || Лекция 2: 123 || Лекция 3 >
Александра Максимова
Александра Максимова

При прохождении теста 1 в нем оказались вопросы, который во-первых в 1 лекции не рассматривались, во-вторых, оказалось, что вопрос был рассмаотрен в самостоятельно работе №2. Это значит, что их нужно выполнить перед прохождением теста? или это ошибка?
 

Алена Борисова
Алена Борисова

В лекции по обработке полутоновых изображений (http://www.intuit.ru/studies/courses/10621/1105/lecture/17979?page=2) увидела следующий фильтр:


    \begin{array}{|c|c|c|}
    \hline \\
    0 & 0 & 0 \\
    \hline \\
    0 & 2 & 0 \\
    \hline \\
    0 & 0 & 0 \\
    \hline 
    \end{array} - \frac{1}{9} \begin{array}{|c|c|c|}
    \hline \\
    0 & 0 & 0 \\
    \hline \\
    0 & 1 & 0 \\
    \hline \\
    0 & 0 & 0 \\
    \hline 
    \end{array}

В описании говорится, что он "делает изображение более чётким, потому что, как видно из конструкции фильтра, в однородных частях изображение не изменяется, а в местах изменения яркости это изменение усиливается".

Что вижу я в конструкции фильтра (скорее всего ошибочно): F(x, y) = 2 * I(x, y) - 1/9 I(x, y) = 17/9 * I(x, y), где F(x, y) - яркость отфильтрованного пикселя, а I(x, y) - яркость исходного пикселя с координатами (x, y). Что означает обычное повышение яркости изображения, при этом без учета соседних пикселей (так как их множители равны 0).

Объясните, пожалуйста, как данный фильтр может повышать четкость изображения?

Сергей Кротов
Сергей Кротов
Россия
Дмитрий Донсков
Дмитрий Донсков
Россия, Москва, Московский Авиационный Институт