40
Машинное обучение Павел Егоров Kontur.Labs @ xoposhiy [email protected] v k.com/ pe.xoposhiy

Машинное обучение (Открытый семинар по средам)

Embed Size (px)

Citation preview

Page 2: Машинное обучение (Открытый семинар по средам)

Куча хороших данных

→ PROFIT

Page 3: Машинное обучение (Открытый семинар по средам)

Примеры задач• Спам / боты• Сегментация рынка• Размеры футболок :-)• Ипотека• Рекомендации

Page 4: Машинное обучение (Открытый семинар по средам)

Терминология

Исходные данные — множество векторовvi = (1, 0.5, 1.37, 2.8, -1, -0.1, …)

Координата вектора — фича

Page 5: Машинное обучение (Открытый семинар по средам)

Обучение без учителя• Кластеризация• Иерархическая кластеризация• Сокращение размерности

Page 6: Машинное обучение (Открытый семинар по средам)

Обучение с учителем

• РаспознаваниеДа/Нет

• Классификация Собака / Витрина / Лодыжка /

Дельфин

• РегрессияПочём завтра доллар?

Page 7: Машинное обучение (Открытый семинар по средам)

Классификаторы…тренируются классифицировать на обучающей выборке

• Нейронные сети• KNN (K nearest neighbors)• Линейное разделение• Дерево решений• Рандомизированный лес• SVM

Page 8: Машинное обучение (Открытый семинар по средам)

Мотивация• Сервера собирают нам данные• Задач ML полно!• Интернета уже много, а специалистов по ML

мало• ML — это не сложно

Page 9: Машинное обучение (Открытый семинар по средам)

Feature-engineeringЗадача:«Узнать человека по использованию мыши и клавиатуры»

Фичи, господа, фичи!

Page 10: Машинное обучение (Открытый семинар по средам)

Прагматичный взглядМашинное обучение — всего лишь способ объединения большого количества слабых признаков в сильный классификатор

Если фич мало — просто закодируйте эвристику.

Page 11: Машинное обучение (Открытый семинар по средам)

Задача

Page 12: Машинное обучение (Открытый семинар по средам)

Минутка саморекламыKontur.Labs :• Студенты, магистранты, аспиранты• Наукоёмкие, хитрые задачи

Очень-очень-очень скромный аналог MS Research

Page 13: Машинное обучение (Открытый семинар по средам)

ЗадачаБухгалтерские документы:

акты, накладные, счета, договора, …

Установленных стандартных шаблонов — НЕТ!

Excel, Word

Хотим извлекать «интересные» поля:• Тип документа, Номер, Дата• Сумма, НДС, Основание• Покупатель, Продавец• …

Page 14: Машинное обучение (Открытый семинар по средам)
Page 15: Машинное обучение (Открытый семинар по средам)
Page 16: Машинное обучение (Открытый семинар по средам)
Page 17: Машинное обучение (Открытый семинар по средам)
Page 18: Машинное обучение (Открытый семинар по средам)

Идеи?

Page 19: Машинное обучение (Открытый семинар по средам)

Генеральный планИщем в документе поле, в котором Тип/Дата/Номер/…

Но постойте! Это же не задача классификации!

Двухходовка:Простая эвристика находит все гипотезыКлассификатор выбирает из них

правильную

Page 20: Машинное обучение (Открытый семинар по средам)
Page 21: Машинное обучение (Открытый семинар по средам)
Page 22: Машинное обучение (Открытый семинар по средам)

Разметка базы

Demo

Page 23: Машинное обучение (Открытый семинар по средам)

Генераторы гипотезРегулярное выражениеИногда очень сложноеИногда создающееся динамически

Требования:Среди гипотез должна присутствовать

корректнаяСложность ~ O(N)

Page 24: Машинное обучение (Открытый семинар по средам)

Фичи?

Page 25: Машинное обучение (Открытый семинар по средам)

Фичи• Положение на странице• Размер шрифта• Жирность• Расстояние* до ключевых слов и других

гипотез…и направление

• Длина гипотезы• Частотность символов, в гипотезе• Положение гипотезы внутри блока текста

(ячейки)• Выравнивание• Значение гипотезы (для сумм, и дат)

Page 26: Машинное обучение (Открытый семинар по средам)

Фичи. ИнвариантностьИнвариантность относительно некоторых трансформаций:

Шрифт, масштаб, положение, синонимы, выравнивание текста, …

Page 27: Машинное обучение (Открытый семинар по средам)

Фичи. Какие выбрать?Вычислять много фич — дорого

1. Заменим значение одной из фич белым шумом

2. Обучим классификатор3. Измерим на сколько упала точность

* Для некоторых классификаторов есть и более правильные способы — изучайте конкретный классификатор

Page 28: Машинное обучение (Открытый семинар по средам)

Обучение и

тестированиеРазмеченная база:• Обучающая выборка• Тестовая выборка

Метрики качества:• Точность = корректноРаспознанные /

всеРаспознанные• Полнота = корректноРаспознанные /

всеКорректные

Page 29: Машинное обучение (Открытый семинар по средам)

Общая схема

Для каждого поля отдельно

Размечаем базу

документов

Делаем генератор

гипотез

Обучаем

Изучаем ошибки

Придумываем фичи

Page 30: Машинное обучение (Открытый семинар по средам)

Отладка

Demo

Page 31: Машинное обучение (Открытый семинар по средам)

Отладка Random Forest

Image

Page 32: Машинное обучение (Открытый семинар по средам)

Я тоже хочу так уметь!Machine learning @ Stanford university (www.coursera.org)

Классическая книга:Pattern Recognition and Machine Learning

Christopher M. Bishop

Книги попроще:Machine Learning in Action, Peter Harrington

Machine learning for Hackers, Drew Conway, John Myles White

Page 33: Машинное обучение (Открытый семинар по средам)

Я тоже хочу так уметь!Языки программирования:

ROctave

Библиотеки:The Accord.NET FrameworkALGLIBOpenCV

Page 34: Машинное обучение (Открытый семинар по средам)

Новые языки?!?v = read.csv("vectors.csv")hist(v[,4])plot(hclust(dist(v)))

Page 35: Машинное обучение (Открытый семинар по средам)

Я тоже хочу так уметь!

http://www.kaggle.com/competitions

Page 37: Машинное обучение (Открытый семинар по средам)
Page 38: Машинное обучение (Открытый семинар по средам)

Данные — наше всё!• «Повезло» — у нас уже есть 100К+

документов.• Грубые фильтры:

Неинтересные нам документы (отчеты, расчеты, …)Дубли и очень похожие документыТестовые, пустые, мусор

→ ~2К документов

Page 39: Машинное обучение (Открытый семинар по средам)

RandomForest

Page 40: Машинное обучение (Открытый семинар по средам)

Excel• http://poi.apache.org (JAVA)• https://code.google.com/p/npoi/ (.NET port)

Текст-блок: X, Y, W, H, Font, VAlignment, HAllignmentИнтерпретация формул

Игнорируем:Картинки, объекты вне ячеек, границы,