SlideShare a Scribd company logo
1 of 41
Download to read offline
Лекция 10
Алгоритмические композиции
Кульминация и развязка
Владимир Гулин
26 ноября 2014 г.
План лекции
Напоминание
Бустинг
Градиентный бустинг
Мета-алгоритмы
1 / 40
Задача обучения с учителем
Постановка задачи
Пусть дан набор объектов D = {(xi , yi )}, xi ∈ X, yi ∈ Y, i ∈ 1, . . . , N,
полученный из неизвестной закономерности y = f (x). Необходимо
построить такую h(x), которая наиболее точно аппроксимирует f (x).
Будем искать неизвестную
h(x) = C(a1(x), . . . , aT (x))
ai (x) : X → R, ∀i ∈ {1, . . . , T} - базовые модели
C : R → Y - решающее правило
2 / 40
Алгоритмические композиции
Simple Voting
h(x) =
1
T
T
i=1
ai (x)
Weighted Voting
h(x) =
1
T
T
i=1
bi ai (x), bi ∈ R
Mixture of Experts
h(x) =
1
T
T
i=1
bi (x)ai (x), bi (x) : X → R
3 / 40
Идея бустинга
Снова выбираем ноутбук
Вместо того, чтобы спрашивать у всех экспертов, какой ноутбук
выбрать, будем после каждого очередного мнения менять наш
вопрос.
Более реалистичная модель
Уточняем наш вопрос в зависимости от ответов предыдущих
экспертов
4 / 40
Boosting vs Bagging
Стрельба в тире Игра в гольф
5 / 40
Бустинг для задачи бинарной классификации
Пусть
Y = −1, +1, ai : X → {−1, 0, +1}, i = 1 . . . T
Будем строить модель взвешенного голосования:
h(x) = sign
T
i=1
bi ai (x) , bi ∈ R
Функция потерь
err(h) =
1
N
N
j=1
I(yj = h(xj ))
6 / 40
Ключевые идеи бустинга
Используем “слабые” модели ai
Последовательно применяем слабые модели к “слегка”
изменяемым версиям оригинальных данных
При добавлении очередной модели ai , предыдущие i − 1
моделей не меняются
Аппроксимируем функцию потерь гладкой функцией
7 / 40
Аппроксимация пороговой функции экспонентой
Очевидно, что верно соотношение
I(y = a(x)) = I(y · a(x) ≤ 0) ≤ e−y·a(x)
Тогда ошибку композиции h(x) можно оценить сверху
0 ≤ err(h) =
1
N
N
j=1
I(yj = h(xj )) ≤
≤
1
N
N
j=1
exp −yj
T−1
i=1
bi ai (x) · exp(−yj bT aT (x)) → 0
8 / 40
AdaBoost(Freund & Shapire 1995)
1. Инициализировать веса объектов wj = 1/N, j = 1, 2, . . . , N.
2. Для всех i от 1 до T:
(a) Построить классификатор ai (x), используя веса wj
(b) Вычислить
erri =
N
j=1 wj I(yj = ai (xj ))
N
j=1 wj
(c) Вычислить
bi = log
1 − erri
erri
(d) Присвоить wj → wj · exp[bi · I(yj = ai (xj ))], j = 1, . . . , N.
3. h(x) = sign
T
i=1 bi ai (x)
9 / 40
AdaBoost. Пример
10 / 40
AdaBoost. Пример
11 / 40
AdaBoost. Пример
12 / 40
AdaBoost. Пример
13 / 40
Почему именно аппроксимация экспонентой?
14 / 40
Какие базовые модели выбрать?
Теорема:
Если на каждой итерации метод обучения позволяет построить
базовую модель, такую что число верных классификаций больше,
чем число неверных. Тогда метод обучения сходится за конечное
число шагов.
Базовые модели должны обладать достаточной сложностью,
чтобы обеспечить это требование.
Вопрос:
Можно ли использовать в качестве базовых моделей линейную
регрессию для алгоритма AdaBoost?
15 / 40
Boosting decision stumps
16 / 40
Удивительные факты о бустинге
не переобучается с увеличением числа итераций
17 / 40
Bias & variance
Оценка ожидания ошибки на некоторой точки x0
Err(x0) = Bias2
+ Variance + Noise(Irreducible Error)
Бэггинг уменьшает Variance
Бустинг уменьшает и Variance и Bias. Причем начальные
модели отвечают за уменьшение именно Bias, а остальные за
уменьшение Variance.
18 / 40
Применение AdaBoost
Viola–Jones object detection framework
ai (xj ) =
αi если fi (xj ) > θi
βi иначе
19 / 40
AdaBoost. Итоги
 Алгоритм прост
 Накладные расходы бустинга минимальны. Время построения
определяется временем построения базовых моделей
 Показывает хорошую обобщающую способность
 Имеет возможность идентификации шумовых объектов
 Жадное добавление алгоритмов приводит к неоптимальности
композиции
 Склонен к переобучению при наличии шума в данных (опять же
из-за экспоненциальной функции потерь)
 Переобучается при “малом” количестве данных
20 / 40
Градиентный бустинг
Модель взвешенного голосования
h(x) =
T
i=1
bi ai (x), x ∈ X, bi ∈ R
Ошибка композиции на обучающей выборке
err(h) =
N
j=1
L(yj ,
T−1
i=1
bi ai (xj ) + b · a(xj )) → min
b,a
Применяем жадную стратегию добавления моделей
Как и раньше оставляем построенные алгоритмы с весами
неизменными
21 / 40
Градиентный бустинг
Применим метод минимизации (метод наискорейшего спуска) err(h):
Тогда
hi,j = hi−1,j − η · err (hi−1,j ), j = 1, . . . , N
η - шаг спуска
Основная идея:
На каждом шаге алгоритма будем искать модель ai , которая
аппроксимировала бы вектор антиградиента.
22 / 40
Gradient boosting algorithm
1. Инициализировать h0(x) = argminγ
N
j=1
L(yj , γ)
2. Для всех i от 1 до T:
(a) Для всех j = 1, 2, . . . , N вычислить
gi,j = −
∂L(yj , h(xj ))
∂h(xj ) h=hi−1
(b) Построить базовую модель ai на ответах gi,j
ai = arg min
β,a
N
j=1
(gi,j − βa(xj ))2
(c) Определить вес bi
bi = arg min
b
N
j=1
L(yj , hi−1(x) + b · ai (xj ))
(d) Присвоить hi (x) = hi−1(x) + bi · ai (x)
3. Вернуть h(x) = hT (x)
23 / 40
Gradient boosting  overfitting
Необходимо подбирать число деревьев на валидационной
выборке
24 / 40
Shrinkage
Идея:
Будем делать шаг каждым алгоритмом с некоторым дисконтом
hi (x) = hi−1(x) + µ · bi · ai (x)
Дадим гольфисту тяжелую клюшку, чтоб он не мог ударить
сильно
25 / 40
Stohastic gradient boosting
Stohastic gradient boosting = Gradient Boosting + Bagging
Идея:
Для построения очередного алгоритма используются случайная
подвыборка, полученная алгоритмом выбора без возвращения
Выдадим гольфисту шары разной формы
Преимущества
Уменьшается время обучения
Лучше сходится (эквивалентно методу стохастического
градиентного спуска)
Имеет более высокую обобщающую способность
26 / 40
Shrinkage  Subsampling
27 / 40
Regularization in leafs
Идея:
Не все листы имеют одинаковый вклад
“Важность” листа зависит от числа объектов в нем
Дадим гольфисту палку вместо клюшки
Варианты решения:
Ограничить минимальное число примеров в листьях
Домножить значения в листьях на некоторую фукцию,
зависящую от количества примеров
28 / 40
OOB  Feature Importance
29 / 40
Gradient boosting algorithm complexity
Вычисление градиента O(g(N))
Построение модели (дерева) O(ND)
Вычисление предсказания O(N)
Построение дерева может быть эффективно распараллелено по
фичам. Поэтому в целом быстро.
30 / 40
Gradient boosting. Итоги
Gradient boosting - общий алгоритм бустинга. Позволяет
работать с произвольными функциями потерь и пространствами
ответов.
Чаще всего применяется с деревьями решений.
Показывает наилучшее качество для задач классификации,
регресии и ранжирования.
Применять надо с регуляризацией, иначе результаты могут
получиться удручающими.
Вопрос:
А что делать если функция не дифференцируема?
31 / 40
Стохастические алгоритмы и бустинг. Итоги
 Бустинг лучше работает для больших обучающих выборок в
ситуациях когда в данных имеются сложные зависимости.
 Стохастические методы лучше работают для коротких
обучающих выборок
 Стохастические алгоритмы можно эффективно распараллелить.
Бустинг предполагает последовательное построение композиции.
 RSM наиболее эффективен в пространствах большой
размерности
 Для бустинга лучше строить длинные композиции из слабых
моделей, чем короткие из сильных
Вопрос:
А всегда ли стоит использовать деревянные модели bagging 
boosting?
32 / 40
BagBoo  BooBag
Идея:
Объединим стратегии бустинга и бэггинга
Если объединять бустинг бэггингом то BagBoo
Если объединять бэггинг бустингом то BooBag
33 / 40
Итоги
Бустингом бэггинг не испортишь! (и наоборот)
При таком подходе реальное качество почти неограничено... все
упирается в число деревьев
К сожалению, не получается применять в больших
высоконагруженных системах
Если есть много машин, то можно оценить верхнюю границу
качества системы машинного обучения
34 / 40
Задача
Дано: Имеется набор данных из системы поискового антиспама.
Требуется: Требуется сравнить классификаторы, основанные на
алгоритмических композициях, с методом опорных векторов.
Пошаговая инструкция
1. Скачать данные и запустить шаблон кода на python
http://goo.gl/ASDF7U
$ python compos.py -h
$ python compos.py -tr spam.train.txt -te spam.test.txt
2. Подобрать параметры 3х алгоритмических композиций, чтобы
они превосходили по качеству SVM.
3. Построить графики качества классификации, в зависимости от
числа базовых моделей.
35 / 40
Дз по алгоритмическим композициям:
Задание:
Реализовать один из алгоритмов машинного обучения, являющегося
композицией алгоритмов и применить свою реализацию на данных
из репозитория UCI.
Имеется 12 вариантов задания:
Для того, чтобы узнать свой вариант необходимо выполнить
функцию:
def ComputeMyTaskNumber(your_name):
return 1 + hash(your_name) % 12
где your_name - это ваши фамилия и имя латиницей (например
’Pupkin Vasiliy’)
36 / 40
Варианты:
1. Реализация модельного дерева решений с линейной регрессией
в листьях
2. Реализация алгоритма Random Forest (базовый алгоритм CART)
3. Реализация алгоритма AdaBoost (базовый алгоритм CART)
4. Реализация алгоритма градиентного бустинга с квадратичной
функцией потерь. В качестве базового алгоритма использовать
алгоритм CART.
5. Реализация алгоритма градиентного бустинга с логистической
футкцией потерь. В качестве базового алгоритма использовать
алгоритм CART.
6. Реализация алгоритма градиентного бустинга с квадратичной
функцией потерь. В качестве базового алгоритма использовать
алгоритм CART с RSM.
37 / 40
Варианты:
7. Реализация алгоритма градиентного бустинга с логистической
футкцией потерь. В качестве базового алгоритма использовать
алгоритм CART c RSM.
8. Реализация алгоритма стохастического градиентного бустинга с
квадратичной функцией потерь. В качестве базового алгоритма
использовать алгоритм CART.
9. Реализация алгоритма стохастического градиентного бустинга с
логистической футкцией потерь. В качестве базового алгоритма
использовать алгоритм CART.
10. Реализация алгоритма стохастического градиентного бустинга с
квадратичной функцией потерь. В качестве базового алгоритма
использовать алгоритм CART с RSM.
11. Реализация алгоритма стохастического градиентного бустинга с
логистической футкцией потерь. В качестве базового алгоритма
использовать алгоритм CART c RSM.
12. Реализация алгоритма BagBoo. В качестве базового алгоритма
использовать алгоритм градиентного бустинга с функцией
потерь (регрессия).
38 / 40
Данные UCI:
Для вариантов 1, 2, 4, 6, 8, 10, 12 следует использовать тестовые
датасеты:
https://archive.ics.uci.edu/ml/datasets/Housing
https://archive.ics.uci.edu/ml/datasets/Auto+MPG
https:
//archive.ics.uci.edu/ml/datasets/Computer+Hardware
Для вариантов 3, 5, 7, 9, 11 следует использовать тестовые
датасеты:
https://archive.ics.uci.edu/ml/datasets/Wine
https://archive.ics.uci.edu/ml/datasets/Iris
https:
//archive.ics.uci.edu/ml/datasets/Liver+Disorders
39 / 40
Вопросы

More Related Content

What's hot

Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии" Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии" Technosphere1
 
L11: Метод ансамблей
L11: Метод ансамблейL11: Метод ансамблей
L11: Метод ансамблейTechnosphere1
 
Лекция №3 "Различные алгоритмы кластеризации"
Лекция №3 "Различные алгоритмы кластеризации"Лекция №3 "Различные алгоритмы кластеризации"
Лекция №3 "Различные алгоритмы кластеризации"Technosphere1
 
L6: Метод опорных векторов
L6: Метод опорных векторовL6: Метод опорных векторов
L6: Метод опорных векторовTechnosphere1
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыTechnosphere1
 
L3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессияL3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессияTechnosphere1
 
L7:Задача кластеризации. Метрики качества
L7:Задача кластеризации. Метрики качестваL7:Задача кластеризации. Метрики качества
L7:Задача кластеризации. Метрики качестваTechnosphere1
 
Лекция №1 "Задачи Data Mining"
Лекция №1 "Задачи Data Mining" Лекция №1 "Задачи Data Mining"
Лекция №1 "Задачи Data Mining" Technosphere1
 
L10: Алгоритмы кластеризации
L10: Алгоритмы кластеризацииL10: Алгоритмы кластеризации
L10: Алгоритмы кластеризацииTechnosphere1
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовTheoretical mechanics department
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийTheoretical mechanics department
 
Лекция №11 "Основы нейронных сетей"
Лекция №11 "Основы нейронных сетей" Лекция №11 "Основы нейронных сетей"
Лекция №11 "Основы нейронных сетей" Technosphere1
 
Структурное обучение и S-SVM
Структурное обучение и S-SVMСтруктурное обучение и S-SVM
Структурное обучение и S-SVMromovpa
 
Лекция №13 "Глубокие нейронные сети"
Лекция №13 "Глубокие нейронные сети" Лекция №13 "Глубокие нейронные сети"
Лекция №13 "Глубокие нейронные сети" Technosphere1
 
20110925 circuit complexity_seminar_lecture01_kulikov
20110925 circuit complexity_seminar_lecture01_kulikov20110925 circuit complexity_seminar_lecture01_kulikov
20110925 circuit complexity_seminar_lecture01_kulikovComputer Science Club
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Nikolay Grebenshikov
 

What's hot (20)

Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии" Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии"
 
L11: Метод ансамблей
L11: Метод ансамблейL11: Метод ансамблей
L11: Метод ансамблей
 
Лекция №3 "Различные алгоритмы кластеризации"
Лекция №3 "Различные алгоритмы кластеризации"Лекция №3 "Различные алгоритмы кластеризации"
Лекция №3 "Различные алгоритмы кластеризации"
 
L6: Метод опорных векторов
L6: Метод опорных векторовL6: Метод опорных векторов
L6: Метод опорных векторов
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмы
 
L3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессияL3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессия
 
L7:Задача кластеризации. Метрики качества
L7:Задача кластеризации. Метрики качестваL7:Задача кластеризации. Метрики качества
L7:Задача кластеризации. Метрики качества
 
Лекция №1 "Задачи Data Mining"
Лекция №1 "Задачи Data Mining" Лекция №1 "Задачи Data Mining"
Лекция №1 "Задачи Data Mining"
 
L10: Алгоритмы кластеризации
L10: Алгоритмы кластеризацииL10: Алгоритмы кластеризации
L10: Алгоритмы кластеризации
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближений
 
Метод конечных разностей
Метод конечных разностейМетод конечных разностей
Метод конечных разностей
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Лекция №11 "Основы нейронных сетей"
Лекция №11 "Основы нейронных сетей" Лекция №11 "Основы нейронных сетей"
Лекция №11 "Основы нейронных сетей"
 
Структурное обучение и S-SVM
Структурное обучение и S-SVMСтруктурное обучение и S-SVM
Структурное обучение и S-SVM
 
Лекция №13 "Глубокие нейронные сети"
Лекция №13 "Глубокие нейронные сети" Лекция №13 "Глубокие нейронные сети"
Лекция №13 "Глубокие нейронные сети"
 
20110925 circuit complexity_seminar_lecture01_kulikov
20110925 circuit complexity_seminar_lecture01_kulikov20110925 circuit complexity_seminar_lecture01_kulikov
20110925 circuit complexity_seminar_lecture01_kulikov
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
 

Viewers also liked

Перечитывая Лео Бреймана
Перечитывая Лео БрейманаПеречитывая Лео Бреймана
Перечитывая Лео БрейманаSerge Terekhov
 
Нейрокомпьютеры и нейросети
Нейрокомпьютеры и нейросетиНейрокомпьютеры и нейросети
Нейрокомпьютеры и нейросетиrefasw
 
Нейрокомпьютеры
НейрокомпьютерыНейрокомпьютеры
НейрокомпьютерыTemniFV
 
FaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_reviewFaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_reviewKhryashchev
 
JetPoint meeting @JetBrains on bioinformatics
JetPoint meeting @JetBrains on bioinformaticsJetPoint meeting @JetBrains on bioinformatics
JetPoint meeting @JetBrains on bioinformaticsolegshpynov
 
20120415 videorecognition konushin_lecture05
20120415 videorecognition konushin_lecture0520120415 videorecognition konushin_lecture05
20120415 videorecognition konushin_lecture05Computer Science Club
 
Mail.ru on Big Data Russia
Mail.ru on Big Data RussiaMail.ru on Big Data Russia
Mail.ru on Big Data Russiarusbase.vc
 
L13: Заключительная
L13: ЗаключительнаяL13: Заключительная
L13: ЗаключительнаяTechnosphere1
 
Supervised ML in Practice: Tips & Tricks
Supervised ML in Practice:  Tips & TricksSupervised ML in Practice:  Tips & Tricks
Supervised ML in Practice: Tips & TricksDzianis Pirshtuk
 
Локализация лиц с помощью детектора Виолы-Джонс
Локализация лиц с помощью детектора Виолы-ДжонсЛокализация лиц с помощью детектора Виолы-Джонс
Локализация лиц с помощью детектора Виолы-ДжонсArtyom Shklovets
 
Интегрировать сторонний продукт или пилить самим? К вопросу о выборе системы ...
Интегрировать сторонний продукт или пилить самим? К вопросу о выборе системы ...Интегрировать сторонний продукт или пилить самим? К вопросу о выборе системы ...
Интегрировать сторонний продукт или пилить самим? К вопросу о выборе системы ...WG_ Events
 
Петрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgПетрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgWG_ Events
 
Оценка потенциала игрового продукта по косвенным признакам / Борис Cиницкий д...
Оценка потенциала игрового продукта по косвенным признакам / Борис Cиницкий д...Оценка потенциала игрового продукта по косвенным признакам / Борис Cиницкий д...
Оценка потенциала игрового продукта по косвенным признакам / Борис Cиницкий д...WG_ Events
 

Viewers also liked (17)

Перечитывая Лео Бреймана
Перечитывая Лео БрейманаПеречитывая Лео Бреймана
Перечитывая Лео Бреймана
 
2011 Истомин А.С.
2011 Истомин А.С.2011 Истомин А.С.
2011 Истомин А.С.
 
Нейрокомпьютеры и нейросети
Нейрокомпьютеры и нейросетиНейрокомпьютеры и нейросети
Нейрокомпьютеры и нейросети
 
Нейрокомпьютеры
НейрокомпьютерыНейрокомпьютеры
Нейрокомпьютеры
 
FaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_reviewFaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_review
 
Marta_Egorova
Marta_EgorovaMarta_Egorova
Marta_Egorova
 
JetPoint meeting @JetBrains on bioinformatics
JetPoint meeting @JetBrains on bioinformaticsJetPoint meeting @JetBrains on bioinformatics
JetPoint meeting @JetBrains on bioinformatics
 
20120415 videorecognition konushin_lecture05
20120415 videorecognition konushin_lecture0520120415 videorecognition konushin_lecture05
20120415 videorecognition konushin_lecture05
 
Реализация метода автоматического разрешения лексической многозначности
Реализация метода автоматического разрешения лексической многозначностиРеализация метода автоматического разрешения лексической многозначности
Реализация метода автоматического разрешения лексической многозначности
 
Mail.ru on Big Data Russia
Mail.ru on Big Data RussiaMail.ru on Big Data Russia
Mail.ru on Big Data Russia
 
L13: Заключительная
L13: ЗаключительнаяL13: Заключительная
L13: Заключительная
 
Supervised ML in Practice: Tips & Tricks
Supervised ML in Practice:  Tips & TricksSupervised ML in Practice:  Tips & Tricks
Supervised ML in Practice: Tips & Tricks
 
Локализация лиц с помощью детектора Виолы-Джонс
Локализация лиц с помощью детектора Виолы-ДжонсЛокализация лиц с помощью детектора Виолы-Джонс
Локализация лиц с помощью детектора Виолы-Джонс
 
Интегрировать сторонний продукт или пилить самим? К вопросу о выборе системы ...
Интегрировать сторонний продукт или пилить самим? К вопросу о выборе системы ...Интегрировать сторонний продукт или пилить самим? К вопросу о выборе системы ...
Интегрировать сторонний продукт или пилить самим? К вопросу о выборе системы ...
 
Петрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgПетрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.org
 
Webdev7 (2)
Webdev7 (2)Webdev7 (2)
Webdev7 (2)
 
Оценка потенциала игрового продукта по косвенным признакам / Борис Cиницкий д...
Оценка потенциала игрового продукта по косвенным признакам / Борис Cиницкий д...Оценка потенциала игрового продукта по косвенным признакам / Борис Cиницкий д...
Оценка потенциала игрового продукта по косвенным признакам / Борис Cиницкий д...
 

Similar to Лекция №10 "Алгоритмические композиции. Завершение"

чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3Andrey Danilchenko
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06Computer Science Club
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1simple_people
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Mikhail Kurnosov
 
Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Sergey Tihon
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыsimple_people
 
lab1 math computational
lab1 math computationallab1 math computational
lab1 math computationaldinhtruonglam1
 
Разложение на множители
Разложение на множителиРазложение на множители
Разложение на множителиSchool 242
 
ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2Andrey Danilchenko
 
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...Mail.ru Group
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 
19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3Ann Eres
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
 
20100930 proof complexity_hirsch_lecture03
20100930 proof complexity_hirsch_lecture0320100930 proof complexity_hirsch_lecture03
20100930 proof complexity_hirsch_lecture03Computer Science Club
 

Similar to Лекция №10 "Алгоритмические композиции. Завершение" (20)

чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
 
Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
lab1 math computational
lab1 math computationallab1 math computational
lab1 math computational
 
Разложение на множители
Разложение на множителиРазложение на множители
Разложение на множители
 
ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2
 
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
 
презентация к уроку 3
презентация к уроку 3презентация к уроку 3
презентация к уроку 3
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 
19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3
 
лекция 8
лекция 8лекция 8
лекция 8
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
20100930 proof complexity_hirsch_lecture03
20100930 proof complexity_hirsch_lecture0320100930 proof complexity_hirsch_lecture03
20100930 proof complexity_hirsch_lecture03
 

More from Technosphere1

Л9: Взаимодействие веб-приложений
Л9: Взаимодействие веб-приложенийЛ9: Взаимодействие веб-приложений
Л9: Взаимодействие веб-приложенийTechnosphere1
 
Л8 Django. Дополнительные темы
Л8 Django. Дополнительные темыЛ8 Django. Дополнительные темы
Л8 Django. Дополнительные темыTechnosphere1
 
Мастер-класс: Особенности создания продукта для мобильного веб
Мастер-класс: Особенности создания продукта для мобильного вебМастер-класс: Особенности создания продукта для мобильного веб
Мастер-класс: Особенности создания продукта для мобильного вебTechnosphere1
 
Мастер-класс: "Интеграция в промышленную разработку"
Мастер-класс: "Интеграция в промышленную разработку"Мастер-класс: "Интеграция в промышленную разработку"
Мастер-класс: "Интеграция в промышленную разработку"Technosphere1
 
Webdev7: Обработка HTTP запросов. Django Views
Webdev7: Обработка HTTP запросов. Django ViewsWebdev7: Обработка HTTP запросов. Django Views
Webdev7: Обработка HTTP запросов. Django ViewsTechnosphere1
 
L8: Л7 Em-алгоритм
L8: Л7 Em-алгоритмL8: Л7 Em-алгоритм
L8: Л7 Em-алгоритмTechnosphere1
 
L4: Решающие деревья
L4: Решающие деревьяL4: Решающие деревья
L4: Решающие деревьяTechnosphere1
 
L1 Вводная лекция. Обзор основных задач Data Science (Лекция №1)
L1 Вводная лекция. Обзор основных задач Data Science (Лекция №1)L1 Вводная лекция. Обзор основных задач Data Science (Лекция №1)
L1 Вводная лекция. Обзор основных задач Data Science (Лекция №1)Technosphere1
 

More from Technosphere1 (9)

Л9: Взаимодействие веб-приложений
Л9: Взаимодействие веб-приложенийЛ9: Взаимодействие веб-приложений
Л9: Взаимодействие веб-приложений
 
Л8 Django. Дополнительные темы
Л8 Django. Дополнительные темыЛ8 Django. Дополнительные темы
Л8 Django. Дополнительные темы
 
Мастер-класс: Особенности создания продукта для мобильного веб
Мастер-класс: Особенности создания продукта для мобильного вебМастер-класс: Особенности создания продукта для мобильного веб
Мастер-класс: Особенности создания продукта для мобильного веб
 
Web лекция 1
Web   лекция 1Web   лекция 1
Web лекция 1
 
Мастер-класс: "Интеграция в промышленную разработку"
Мастер-класс: "Интеграция в промышленную разработку"Мастер-класс: "Интеграция в промышленную разработку"
Мастер-класс: "Интеграция в промышленную разработку"
 
Webdev7: Обработка HTTP запросов. Django Views
Webdev7: Обработка HTTP запросов. Django ViewsWebdev7: Обработка HTTP запросов. Django Views
Webdev7: Обработка HTTP запросов. Django Views
 
L8: Л7 Em-алгоритм
L8: Л7 Em-алгоритмL8: Л7 Em-алгоритм
L8: Л7 Em-алгоритм
 
L4: Решающие деревья
L4: Решающие деревьяL4: Решающие деревья
L4: Решающие деревья
 
L1 Вводная лекция. Обзор основных задач Data Science (Лекция №1)
L1 Вводная лекция. Обзор основных задач Data Science (Лекция №1)L1 Вводная лекция. Обзор основных задач Data Science (Лекция №1)
L1 Вводная лекция. Обзор основных задач Data Science (Лекция №1)
 

Лекция №10 "Алгоритмические композиции. Завершение"

  • 1. Лекция 10 Алгоритмические композиции Кульминация и развязка Владимир Гулин 26 ноября 2014 г.
  • 3. Задача обучения с учителем Постановка задачи Пусть дан набор объектов D = {(xi , yi )}, xi ∈ X, yi ∈ Y, i ∈ 1, . . . , N, полученный из неизвестной закономерности y = f (x). Необходимо построить такую h(x), которая наиболее точно аппроксимирует f (x). Будем искать неизвестную h(x) = C(a1(x), . . . , aT (x)) ai (x) : X → R, ∀i ∈ {1, . . . , T} - базовые модели C : R → Y - решающее правило 2 / 40
  • 4. Алгоритмические композиции Simple Voting h(x) = 1 T T i=1 ai (x) Weighted Voting h(x) = 1 T T i=1 bi ai (x), bi ∈ R Mixture of Experts h(x) = 1 T T i=1 bi (x)ai (x), bi (x) : X → R 3 / 40
  • 5. Идея бустинга Снова выбираем ноутбук Вместо того, чтобы спрашивать у всех экспертов, какой ноутбук выбрать, будем после каждого очередного мнения менять наш вопрос. Более реалистичная модель Уточняем наш вопрос в зависимости от ответов предыдущих экспертов 4 / 40
  • 6. Boosting vs Bagging Стрельба в тире Игра в гольф 5 / 40
  • 7. Бустинг для задачи бинарной классификации Пусть Y = −1, +1, ai : X → {−1, 0, +1}, i = 1 . . . T Будем строить модель взвешенного голосования: h(x) = sign T i=1 bi ai (x) , bi ∈ R Функция потерь err(h) = 1 N N j=1 I(yj = h(xj )) 6 / 40
  • 8. Ключевые идеи бустинга Используем “слабые” модели ai Последовательно применяем слабые модели к “слегка” изменяемым версиям оригинальных данных При добавлении очередной модели ai , предыдущие i − 1 моделей не меняются Аппроксимируем функцию потерь гладкой функцией 7 / 40
  • 9. Аппроксимация пороговой функции экспонентой Очевидно, что верно соотношение I(y = a(x)) = I(y · a(x) ≤ 0) ≤ e−y·a(x) Тогда ошибку композиции h(x) можно оценить сверху 0 ≤ err(h) = 1 N N j=1 I(yj = h(xj )) ≤ ≤ 1 N N j=1 exp −yj T−1 i=1 bi ai (x) · exp(−yj bT aT (x)) → 0 8 / 40
  • 10. AdaBoost(Freund & Shapire 1995) 1. Инициализировать веса объектов wj = 1/N, j = 1, 2, . . . , N. 2. Для всех i от 1 до T: (a) Построить классификатор ai (x), используя веса wj (b) Вычислить erri = N j=1 wj I(yj = ai (xj )) N j=1 wj (c) Вычислить bi = log 1 − erri erri (d) Присвоить wj → wj · exp[bi · I(yj = ai (xj ))], j = 1, . . . , N. 3. h(x) = sign T i=1 bi ai (x) 9 / 40
  • 15. Почему именно аппроксимация экспонентой? 14 / 40
  • 16. Какие базовые модели выбрать? Теорема: Если на каждой итерации метод обучения позволяет построить базовую модель, такую что число верных классификаций больше, чем число неверных. Тогда метод обучения сходится за конечное число шагов. Базовые модели должны обладать достаточной сложностью, чтобы обеспечить это требование. Вопрос: Можно ли использовать в качестве базовых моделей линейную регрессию для алгоритма AdaBoost? 15 / 40
  • 18. Удивительные факты о бустинге не переобучается с увеличением числа итераций 17 / 40
  • 19. Bias & variance Оценка ожидания ошибки на некоторой точки x0 Err(x0) = Bias2 + Variance + Noise(Irreducible Error) Бэггинг уменьшает Variance Бустинг уменьшает и Variance и Bias. Причем начальные модели отвечают за уменьшение именно Bias, а остальные за уменьшение Variance. 18 / 40
  • 20. Применение AdaBoost Viola–Jones object detection framework ai (xj ) = αi если fi (xj ) > θi βi иначе 19 / 40
  • 21. AdaBoost. Итоги Алгоритм прост Накладные расходы бустинга минимальны. Время построения определяется временем построения базовых моделей Показывает хорошую обобщающую способность Имеет возможность идентификации шумовых объектов Жадное добавление алгоритмов приводит к неоптимальности композиции Склонен к переобучению при наличии шума в данных (опять же из-за экспоненциальной функции потерь) Переобучается при “малом” количестве данных 20 / 40
  • 22. Градиентный бустинг Модель взвешенного голосования h(x) = T i=1 bi ai (x), x ∈ X, bi ∈ R Ошибка композиции на обучающей выборке err(h) = N j=1 L(yj , T−1 i=1 bi ai (xj ) + b · a(xj )) → min b,a Применяем жадную стратегию добавления моделей Как и раньше оставляем построенные алгоритмы с весами неизменными 21 / 40
  • 23. Градиентный бустинг Применим метод минимизации (метод наискорейшего спуска) err(h): Тогда hi,j = hi−1,j − η · err (hi−1,j ), j = 1, . . . , N η - шаг спуска Основная идея: На каждом шаге алгоритма будем искать модель ai , которая аппроксимировала бы вектор антиградиента. 22 / 40
  • 24. Gradient boosting algorithm 1. Инициализировать h0(x) = argminγ N j=1 L(yj , γ) 2. Для всех i от 1 до T: (a) Для всех j = 1, 2, . . . , N вычислить gi,j = − ∂L(yj , h(xj )) ∂h(xj ) h=hi−1 (b) Построить базовую модель ai на ответах gi,j ai = arg min β,a N j=1 (gi,j − βa(xj ))2 (c) Определить вес bi bi = arg min b N j=1 L(yj , hi−1(x) + b · ai (xj )) (d) Присвоить hi (x) = hi−1(x) + bi · ai (x) 3. Вернуть h(x) = hT (x) 23 / 40
  • 25. Gradient boosting overfitting Необходимо подбирать число деревьев на валидационной выборке 24 / 40
  • 26. Shrinkage Идея: Будем делать шаг каждым алгоритмом с некоторым дисконтом hi (x) = hi−1(x) + µ · bi · ai (x) Дадим гольфисту тяжелую клюшку, чтоб он не мог ударить сильно 25 / 40
  • 27. Stohastic gradient boosting Stohastic gradient boosting = Gradient Boosting + Bagging Идея: Для построения очередного алгоритма используются случайная подвыборка, полученная алгоритмом выбора без возвращения Выдадим гольфисту шары разной формы Преимущества Уменьшается время обучения Лучше сходится (эквивалентно методу стохастического градиентного спуска) Имеет более высокую обобщающую способность 26 / 40
  • 29. Regularization in leafs Идея: Не все листы имеют одинаковый вклад “Важность” листа зависит от числа объектов в нем Дадим гольфисту палку вместо клюшки Варианты решения: Ограничить минимальное число примеров в листьях Домножить значения в листьях на некоторую фукцию, зависящую от количества примеров 28 / 40
  • 30. OOB Feature Importance 29 / 40
  • 31. Gradient boosting algorithm complexity Вычисление градиента O(g(N)) Построение модели (дерева) O(ND) Вычисление предсказания O(N) Построение дерева может быть эффективно распараллелено по фичам. Поэтому в целом быстро. 30 / 40
  • 32. Gradient boosting. Итоги Gradient boosting - общий алгоритм бустинга. Позволяет работать с произвольными функциями потерь и пространствами ответов. Чаще всего применяется с деревьями решений. Показывает наилучшее качество для задач классификации, регресии и ранжирования. Применять надо с регуляризацией, иначе результаты могут получиться удручающими. Вопрос: А что делать если функция не дифференцируема? 31 / 40
  • 33. Стохастические алгоритмы и бустинг. Итоги Бустинг лучше работает для больших обучающих выборок в ситуациях когда в данных имеются сложные зависимости. Стохастические методы лучше работают для коротких обучающих выборок Стохастические алгоритмы можно эффективно распараллелить. Бустинг предполагает последовательное построение композиции. RSM наиболее эффективен в пространствах большой размерности Для бустинга лучше строить длинные композиции из слабых моделей, чем короткие из сильных Вопрос: А всегда ли стоит использовать деревянные модели bagging boosting? 32 / 40
  • 34. BagBoo BooBag Идея: Объединим стратегии бустинга и бэггинга Если объединять бустинг бэггингом то BagBoo Если объединять бэггинг бустингом то BooBag 33 / 40
  • 35. Итоги Бустингом бэггинг не испортишь! (и наоборот) При таком подходе реальное качество почти неограничено... все упирается в число деревьев К сожалению, не получается применять в больших высоконагруженных системах Если есть много машин, то можно оценить верхнюю границу качества системы машинного обучения 34 / 40
  • 36. Задача Дано: Имеется набор данных из системы поискового антиспама. Требуется: Требуется сравнить классификаторы, основанные на алгоритмических композициях, с методом опорных векторов. Пошаговая инструкция 1. Скачать данные и запустить шаблон кода на python http://goo.gl/ASDF7U $ python compos.py -h $ python compos.py -tr spam.train.txt -te spam.test.txt 2. Подобрать параметры 3х алгоритмических композиций, чтобы они превосходили по качеству SVM. 3. Построить графики качества классификации, в зависимости от числа базовых моделей. 35 / 40
  • 37. Дз по алгоритмическим композициям: Задание: Реализовать один из алгоритмов машинного обучения, являющегося композицией алгоритмов и применить свою реализацию на данных из репозитория UCI. Имеется 12 вариантов задания: Для того, чтобы узнать свой вариант необходимо выполнить функцию: def ComputeMyTaskNumber(your_name): return 1 + hash(your_name) % 12 где your_name - это ваши фамилия и имя латиницей (например ’Pupkin Vasiliy’) 36 / 40
  • 38. Варианты: 1. Реализация модельного дерева решений с линейной регрессией в листьях 2. Реализация алгоритма Random Forest (базовый алгоритм CART) 3. Реализация алгоритма AdaBoost (базовый алгоритм CART) 4. Реализация алгоритма градиентного бустинга с квадратичной функцией потерь. В качестве базового алгоритма использовать алгоритм CART. 5. Реализация алгоритма градиентного бустинга с логистической футкцией потерь. В качестве базового алгоритма использовать алгоритм CART. 6. Реализация алгоритма градиентного бустинга с квадратичной функцией потерь. В качестве базового алгоритма использовать алгоритм CART с RSM. 37 / 40
  • 39. Варианты: 7. Реализация алгоритма градиентного бустинга с логистической футкцией потерь. В качестве базового алгоритма использовать алгоритм CART c RSM. 8. Реализация алгоритма стохастического градиентного бустинга с квадратичной функцией потерь. В качестве базового алгоритма использовать алгоритм CART. 9. Реализация алгоритма стохастического градиентного бустинга с логистической футкцией потерь. В качестве базового алгоритма использовать алгоритм CART. 10. Реализация алгоритма стохастического градиентного бустинга с квадратичной функцией потерь. В качестве базового алгоритма использовать алгоритм CART с RSM. 11. Реализация алгоритма стохастического градиентного бустинга с логистической футкцией потерь. В качестве базового алгоритма использовать алгоритм CART c RSM. 12. Реализация алгоритма BagBoo. В качестве базового алгоритма использовать алгоритм градиентного бустинга с функцией потерь (регрессия). 38 / 40
  • 40. Данные UCI: Для вариантов 1, 2, 4, 6, 8, 10, 12 следует использовать тестовые датасеты: https://archive.ics.uci.edu/ml/datasets/Housing https://archive.ics.uci.edu/ml/datasets/Auto+MPG https: //archive.ics.uci.edu/ml/datasets/Computer+Hardware Для вариантов 3, 5, 7, 9, 11 следует использовать тестовые датасеты: https://archive.ics.uci.edu/ml/datasets/Wine https://archive.ics.uci.edu/ml/datasets/Iris https: //archive.ics.uci.edu/ml/datasets/Liver+Disorders 39 / 40