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

Preview:

Citation preview

Машинное обучение

Павел ЕгоровKontur.Labs

@xoposhiype@kontur.ru

vk.com/pe.xoposhiy

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

→ PROFIT

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

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

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

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

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

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

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

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

Дельфин

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

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

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

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

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

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

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

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

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

Задача

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

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

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

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

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

Excel, Word

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

Идеи?

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

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

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

правильную

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

Demo

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

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

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

Фичи?

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

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

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

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

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

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

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

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

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

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

Обучение и

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

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

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

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

Общая схема

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

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

документов

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

гипотез

Обучаем

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

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

Отладка

Demo

Отладка Random Forest

Image

Я тоже хочу так уметь!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

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

ROctave

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

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

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

http://www.kaggle.com/competitions

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

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

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

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

RandomForest

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

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

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

Recommended