11. Несколько
ближайших
соседей
• Новый
объект
принадлежит
тому
же
классу,
что
и
большинство
из
k
его
соседей
250
200
150
100
50
0
0
50
100
150
200
250
300
12. Граница
разделения
классов
для
k=5
Оказывается,
алгоритм
дает
ошибку
на
обучающей
выборке!
А
это
и
не
плохо.
23. Сложность
модели
и
ее
параметры
• Обычно
если
модель
склонна
переобучаться,
то
у
нее
много
параметров
• Наоборот,
если
у
модели
мало
параметров,
то
и
вряд
ли
она
переобучается
24. Строгая
постановка
задачи
классификации
новые
объекты
обучающая
выборка
признаки
класс
признаковое
описание
признаки
?
26. Разбиение
на
контроль
• Используем
имеющиеся
данные
из
обучающей
выборки.
Разобъем
обучение
на
две
части.
• На
одной
мы
будем
обучаться,
а
на
второй
проверять,
сколько
ошибок
выдал
алгоритм
обучающая
выборка
новая
обучающая
выборка
контрольная
выборка
!
27. Качество
обучения
в
зависимости
от
k
%
98
96
94
92
90
88
86
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
k
28. Как
точнее
узнавать
оптимальное
значение
параметра
k?
• Видно
что
график
скачет,
почему?
• Точно
узнать
k
тяжело
• Можно
проводить
разбиение
на
тест
и
контроль
много
раз,
а
затем
усреднять
результаты
29. Итак,
что
мы
имеем
• Сложность:
O(NM),
N
–
количество
объектов
в
обучении,
M
–
количество
новых
объектов,
O(1)
–
подсчет
одного
расстояния
• Структуры
данных
для
ускорения:
kd-‐tree,
R-‐tree,
Ball-‐tree
• Есть
один
оптимизируемый
параметр
–
число
соседей
k
(а
всего
параметров
больше,
почему?)
• Нужно
уметь
считать
расстояние
между
объектами
30. Про
выбор
расстояния
• Расстояние
на
плоскости
между
точками
и
• Расстояние
в
многомерном
случае
считается
аналогично
• Можно
добавить
признакам
веса
• Можно
считать
вообще
по-‐другому
• Можно
делать
отбор
признаков
31. Выбор
расстояния
Понять
какую
меру
сходства
между
объектами
надо
использовать
–
очень
сложная
задача
32. Параметры
модели
• Количество
настраиваемых
параметров
у
алгоритма
бывает
куда
больше
• Не
всегда
удается
«тупо»
перебрать
все
значения
параметров
у
модели
• Придумываются
разные
быстрые
методы
нахождения
параметров,
близких
к
оптимальным
(раздел
математики
–
методы
оптимизации)
33. Цикл
решения
задачи
Выбор
метода
и
параметров
Предобработка
данных
Обучение
Оценка
качества
Окончательный
классификатор
36. Болен
ли
пациент?
Неизвестные
пациенты
Известные
пациенты
Описание
пациента
Болен
или
нет?
признаковое
описание
признаки
?
37. Есть
золото?
Новые
территории
Известные
территории
Описание
территории
Есть
или
нет?
признаковое
описание
признаки
?
Очень
несбалансированные
данные!
38. Поднимется
или
упадет
цена
акций?
Будущее
История
Цены
акций
в
предыдущие
Цена
в
следующий
момент
моменты
времени
признаковое
описание
признаки
?
39. Кого
выберут
на
выборах?
Новые
кандид
аты
Кандидаты
с
прошлых
выборов
Описание
кандидата
Выбран
или
нет?
признаковое
описание
признаки
?
Нужны
дополнительные
ограничения
на
вид
данных!
40. Есть
ли
котик
на
изображении?
Неизвестные
фотографии
Размеченные
фотографии
Описание
изображений
Есть
котик
или
нет?
признаковое
описание
признаки
?
41. Что
такое
изображение?
• Матрица
пикселей
• Каждый
пиксель
имеет
свой
цвет
(число)
Число,
кодирующее
цвет
42. Как
описать
изображение?
Развернуть
матрицу
пикселей
в
одну
строчку
и
использовать
это
как
набор
признаков
44. Рекомендательная
система
Известные
Новые
пользователи
пользователи
Понравится
новый
Просмотренные
фильмы
фильм
или
нет?
признаковое
описание
признаки
?
Не
учитывается
большое
количество
взаимосвязей!
45. Рекомендательная
система
• Большое
количество
пропусков
в
данных
• Можно
использовать
категориальные
признаки!
46. Коллаборативная
фильтрация
Фильм
Неизвестные
оценки
Известные
оценки
Пользователь
Оценка
за
фильм
признаки
?
Категориальные
признаки
могут
принимать
много
неупорядоченных
значений
52. Гиперплоскости
в
многомерных
Author
пространствах
Today
• В
двумерном
случае
–
прямая
• В
трехмерном
–
плоскость
• Дальше
–
гиперплоскость
a1 x1 + a2 x2 + ... + an
1 xn 1
+ an xn + a0 = 0
Делит
пространство
на
две
части
53. Есть
много
способов
провести
прямую
Какая
прямая
лучше?
Нужно
сравнивать
качество!
59. Нейронные
сети
l
l
l
l
Могут
подстроиться
под
любые
данные
Любят
переобучаться
На
самом
деле
не
похожи
на
мозг
человека
:)
Имеют
огромное
количество
преимуществ
и
недостатков
62. В
чем
проблемы?
•
•
•
•
Правила
составлялись
вручную
экспертами
Мнения
экспертов
расходятся
Эскперты
могут
ошибаться
Эксперт
не
в
состоянии
проанализировать
все
данные
64. Какие
условия
будут
в
дереве?
Попробуем
использовать
пороговые
условия
перехода
в
виде
пороговых
правил:
x>c
65. Начнем
строить
дерево
• Будем
действовать
жадно
• Каждый
раз
берем
наиболее
«информативное»
разделение
всей
области
нет
66. Строим
дерево
Каждый
раз
берем
наиболее
«информативное»
разделение
текущей
области
нет
да
нет
да
67. Преимущества
деревьев
перед
алгоритмами
на
метриках
• Придумать
правильную
меру
сходства
–
значит
почти
решить
задачу,
это
сложно.
А
решающие
деревья
не
используют
метрики
• Единственное
что
используют
деревья
–
А
В
С
точка
В
ближе
к
А,
чем
С
по
данному
признаку
• Устойчивы
к
монотонным
преобразованиям
признаков
68. Недостатки
решающего
дерева
• В
реальных
задачах
сильно
переобучаются,
мельчат
вокруг
одной
области
пространства
(содержат
в
себе
много
параметров)
• Очень
неустойчивы
относительно
данных
69. Решение:
подрезания
деревьев
• Если
информативность
условия
меньше
порога,
то
прекращаем
строить
дерево
• Количество
объектов
в
листе
меньше
некоторого
числа,
то
прекращаем
строить
• И
т.п.
75. Как
работает
случайный
лес?
Реальная
оптимальная
границы
Результат
работы
Random
Forest
(50
деревьев)
Результат
работы
Random
Forest
(2000
деревьев)
76. Случайный
лес
•
•
•
•
•
•
•
•
Работает
с
признаками
разной
природы
Не
надо
думать
над
метрикой
Устойчив
к
изменениям
признаков
Хорошо
распараллеливается
Тяжело
интерпретируется
человеком
Плохо
приближает
линейные
зависимости
Долго
строится
Не
переобучается
при
увеличении
количества
деревьев
“This
ease
of
use
also
makes
Random
Forests
an
ideal
tool
for
people
without
a
background
in
sta:s:cs,
allowing
lay
people
to
produce
fairly
strong
predic:ons
free
from
many
common
mistakes,
with
only
a
small
amount
of
research
and
programming”.
Kaggle.com
77. Последовательное
наращивание
композиции
алгоритмов
(бустинг)
• Строим
композицию
из
слабых
алгоритмов
–
подрезанных
решающих
деревьев
• Каждое
новое
дерево
компенсирует
ошибки
суммы
предыдущих
• Получается
очень
сильная
композиция
• Склонна
к
переобучению,
несмотря
на
многие
обратные
заявления
:)
79. Основная
идея
бустинга
• Набор
ответов,
предсказанный
после
шага
T
• Предсказанный
ответ
отличается
от
истинного
на
разность
• Будем
обучать
следующее
дерево
на
эту
разность
80. Что
такое
бустинг
на
самом
деле?
• Рассматривается
не
разность,
а
градиент
ответов,
на
который
настраивается
очередное
дерево
• Перед
деревьями
ставятся
маленькие
коэффициенты
(порядка
0.02)
во
избежание
переобучения
• На
каждом
шаге
используется
произвольная
часть
объектов
(стохастичность)
Yandex
MatrixNet
–
стохастический
градиентный
бустинг
над
решающими
деревьями
(а
еще
его
используют
Yahoo,
CERN
и
другие)
83. Про
терминологию
• Интеллектуальный
анализ
данных
(Data
Mining)
• Машинное
обучение
(Machine
Learning,
Sta—s—cal
Learning)
• Прикладная
статистика
(Applied
Sta—s—cs)
• Факторный
анализ
(Factor
Analysis)
• Теория
оптимизации
(Op—miza—on
Theory)
• Искусственный
Интеллект
(Ar—ffi—al
Intellengence)
84. Соревнования
по
анализу
данных
• Сайты
– Kaggle.com
– и
другие
• Кем
проводятся
– Компаниями
– Работодателями
– Университетами
85. Отличия
от
олимпиадного
программирования
• Дается
одна
задача,
а
не
несколько
• Решаются
значительно
дольше
(недели,
месяцы,
годы)
• Не
существует
точного
и
правильного
решения
• Идет
борьба
за
сущие
проценты
качества
• Не
важен
язык,
скорость
работы
и
ресурсы;
важен
только
результат
• В
одиночку
или
командами
86. На
чем
пишут
алгоритмы
обучения?
• Готовые
наборы
методов
машинного
обучения
(для
общего
понимания,
какой
метод
лучше)
– Weka
– RapidMiner
– Orange
• Интерпретируемые
языки
(для
экспериментов
и
выбора
алгоритма)
– Matlab
(Octave
–
бесплатная
версия)
– Python
(+
библиотеки
на
основе
scipy)
– R
• Более
низкоуровневые
языки
(для
скорости
работы,
когда
уже
ясно,
какой
алгоритм
будет
использоваться)
– C
– C++