Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Машинное обучение

Павел Егоров           @xoposhiy
Kontur.Labs          pe@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
Я тоже хочу так уметь!
Языки программирования:
    R
    Octave
Библиотеки:
    The Accord.NET Framework
    ALGLIB
    OpenCV
Новые языки?!?
v = read.csv("vectors.csv")
hist(v[,4])
plot(hclust(dist(v)))
Я тоже хочу так уметь!
 http://www.kaggle.com/competitions
Q&A
Егоров Павел, Kontur.Labs
@xoposhiy
pe@kontur.ru
http://vk.com/pe.xoposhiy
Машинное обучение (Открытый семинар по средам)
Данные — наше всё!
• «Повезло» — у нас уже есть 100К+ документов.
• Грубые фильтры:
  Неинтересные нам документы (отчеты, расчеты, …)
  Дубли и очень похожие документы
  Тестовые, пустые, мусор
     → ~2К документов
RandomForest
Excel
• http://poi.apache.org (JAVA)
• https://code.google.com/p/npoi/ (.NET port)

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

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

More Related Content

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

  • 1. Машинное обучение Павел Егоров @xoposhiy Kontur.Labs pe@kontur.ru vk.com/pe.xoposhiy
  • 3. Примеры задач • Спам / боты • Сегментация рынка • Размеры футболок :-) • Ипотека • Рекомендации
  • 4. Терминология Исходные данные — множество векторов vi = (1, 0.5, 1.37, 2.8, -1, -0.1, …) Координата вектора — фича
  • 5. Обучение без учителя • Кластеризация • Иерархическая кластеризация • Сокращение размерности
  • 6. Обучение с учителем • Распознавание Да/Нет • Классификация Собака / Витрина / Лодыжка / Дельфин • Регрессия Почём завтра доллар?
  • 7. Классификаторы …тренируются классифицировать на обучающей выборке • Нейронные сети • KNN (K nearest neighbors) • Линейное разделение • Дерево решений • Рандомизированный лес • SVM
  • 8. Мотивация • Сервера собирают нам данные • Задач ML полно! • Интернета уже много, а специалистов по ML мало • ML — это не сложно
  • 9. Feature-engineering Задача: «Узнать человека по использованию мыши и клавиатуры» Фичи, господа, фичи!
  • 10. Прагматичный взгляд Машинное обучение — всего лишь способ объединения большого количества слабых признаков в сильный классификатор Если фич мало — просто закодируйте эвристику.
  • 12. Минутка саморекламы Kontur.Labs : • Студенты, магистранты, аспиранты • Наукоёмкие, хитрые задачи Очень-очень-очень скромный аналог MS Research
  • 13. Задача Бухгалтерские документы: акты, накладные, счета, договора, … Установленных стандартных шаблонов — НЕТ! Excel, Word Хотим извлекать «интересные» поля: • Тип документа, Номер, Дата • Сумма, НДС, Основание • Покупатель, Продавец • …
  • 19. Генеральный план Ищем в документе поле, в котором Тип/Дата/Номер/… Но постойте! Это же не задача классификации! Двухходовка: Простая эвристика находит все гипотезы Классификатор выбирает из них правильную
  • 23. Генераторы гипотез Регулярное выражение Иногда очень сложное Иногда создающееся динамически Требования: Среди гипотез должна присутствовать корректная Сложность ~ O(N)
  • 25. Фичи • Положение на странице • Размер шрифта • Жирность • Расстояние* до ключевых слов и других гипотез …и направление • Длина гипотезы • Частотность символов, в гипотезе • Положение гипотезы внутри блока текста (ячейки) • Выравнивание • Значение гипотезы (для сумм, и дат)
  • 26. Фичи. Инвариантность Инвариантность относительно некоторых трансформаций: Шрифт, масштаб, положение, синонимы, выравнивание текста, …
  • 27. Фичи. Какие выбрать? Вычислять много фич — дорого 1. Заменим значение одной из фич белым шумом 2. Обучим классификатор 3. Измерим на сколько упала точность * Для некоторых классификаторов есть и более правильные способы — изучайте конкретный классификатор
  • 28. Обучение и тестирование Размеченная база: • Обучающая выборка • Тестовая выборка Метрики качества: • Точность = корректноРаспознанные / всеРаспознанные • Полнота = корректноРаспознанные / всеКорректные
  • 29. Общая схема Придумываем Обучаем фичи Делаем Размечаем генератор базу гипотез документов Изучаем ошибки Для каждого поля отдельно
  • 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
  • 33. Я тоже хочу так уметь! Языки программирования: R Octave Библиотеки: The Accord.NET Framework ALGLIB OpenCV
  • 34. Новые языки?!? v = read.csv("vectors.csv") hist(v[,4]) plot(hclust(dist(v)))
  • 35. Я тоже хочу так уметь! http://www.kaggle.com/competitions
  • 38. Данные — наше всё! • «Повезло» — у нас уже есть 100К+ документов. • Грубые фильтры: Неинтересные нам документы (отчеты, расчеты, …) Дубли и очень похожие документы Тестовые, пустые, мусор → ~2К документов
  • 40. Excel • http://poi.apache.org (JAVA) • https://code.google.com/p/npoi/ (.NET port) Текст-блок: X, Y, W, H, Font, VAlignment, HAllignment Интерпретация формул Игнорируем: Картинки, объекты вне ячеек, границы, …