52
Машинное обучение на платформе .NET Неволин Роман [email protected] nevoroman nevoroman/ml-dotnext2016

Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Машинное обучение на платформе .NET

Неволин Роман

[email protected]

nevoroman

nevoroman/ml-dotnext2016

Page 2: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

2

Что такое машинное обучение?

«Machine Learning is the field of study that gives computers the ability to learn without being explicitly programmed»

— Prof. Arthur Samuel

Page 3: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

3

Page 4: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

4

Page 5: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

5

Page 6: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

6

Page 7: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

7

Page 8: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

8

Page 9: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

А оно мне надо?Я - не Google

9

Page 10: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

10

Page 11: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе
Page 12: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

12

Page 13: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

13

Page 14: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

А когда надо?

Когда алгоритм задачи трудно описать в коде, но легко объяснить человеку

14

Page 15: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

А когда надо?

Когда алгоритм задачи трудно описать в коде, но легко объяснить человеку

Когда вы пытаетесь предсказать изменения некоторого значения

15

Page 16: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

А когда надо?

Когда алгоритм задачи трудно описать в коде, но легко объяснить человеку

Когда вы пытаетесь предсказать изменения некоторого значения

Когда ваш алгоритм должен совершенствоваться за счет накопления данных

16

Page 17: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Так что насчет .NET?

17

Page 18: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

18

Page 19: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Пришло время играться с данными

19

Page 20: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

20

Магические ML библиотеки

Page 21: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Accord Framework

21

accord-framework.net

Page 22: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

22

Page 23: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

numl

23

numl.net

Page 24: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

numl

24

public double DecisionTreeTest() { var generator = new DecisionTreeGenerator(); var model = generator.Generate(_description, _trainingData); return Estimate(model); } public double KNNTest() { var generator = new KNNGenerator(2); var model = generator.Generate(_description, _trainingData); return Estimate(model); } public double NaiveBayesTest() { var generator = new NaiveBayesGenerator(2); var model = generator.Generate(_description, _trainingData); return Estimate(model); }

Page 25: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Encog

25

heatonresearch.com/encog

Page 26: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Encog

26

amzn.com/B005S0XEK0

Page 27: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Azure Machine Learning

27

azure.microsoft.com/ru-ru/services/machine-learning

Page 28: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Azure Machine Learning

28

azure.microsoft.com/ru-ru/services/machine-learning

Page 29: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Azure Machine Learning

29

azure.microsoft.com/ru-ru/services/machine-learning

Page 30: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Azure Machine Learning

30

Page 31: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Немного побенчмаркаем

31

Page 32: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Немного побенчмаркаемpublic double DecisionTreeTest() { var attributes = DecisionVariable.FromCodebook(_trainingData.CodeBook, _trainingData.InputColumnNames.ToArray()); var classificationDecisionTree = new DecisionTree(attributes, _trainingData.OutputPossibleValues); new C45Learning(classificationDecisionTree).Run(_trainingData.InputData, _trainingData.OutputData); var testingDataCount = _testingData.InputData.Length; double error = 0; for (var i = 0; i < testingDataCount; i++) { var input = _testingData.InputData[i]; var result = classificationDecisionTree.Compute(input); if (result != _testingData.OutputData[i]) error++; } return error / testingDataCount; }

32

Page 33: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Немного побенчмаркаем

Method Tool Median (ms) Correct

K Nearest Neighbors numl 12783892.2 99.94%

K Nearest Neighbors Accord Framework 1445.6 99.94%

K Nearest Neighbors scikit-learn (Python) 1249.1 99.94%

Decision Tree numl 2663.4 78.92%

Decision Tree Accord Framework 3740.9 92.76%

Decision Tree scikit-learn (Python) 317.8 99.93%

Naive Bayes numl 1664.4 92.55%

Naive Bayes Accord Framework 46 92.35%

Naive Bayes scikit-learn (Python) 183.3 92.35%

33

Page 34: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Немного побенчмаркаем

Method Tool Median (ms) Correct

K Nearest Neighbors numl 12783892.2 99.94%

K Nearest Neighbors Accord Framework 1445.6 99.94%

K Nearest Neighbors scikit-learn (Python) 1249.1 99.94%

Decision Tree numl 2663.4 78.92%

Decision Tree Accord Framework 3740.9 92.76%

Decision Tree scikit-learn (Python) 317.8 99.93%

Naive Bayes numl 1664.4 92.55%

Naive Bayes Accord Framework 46 92.35%

Naive Bayes scikit-learn (Python) 183.3 92.35%

34

Page 35: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Немного побенчмаркаем

Method Tool Median (ms) Correct

K Nearest Neighbors numl 12783892.2 99.94%

K Nearest Neighbors Accord Framework 1445.6 99.94%

K Nearest Neighbors scikit-learn (Python) 1249.1 99.94%

Decision Tree numl 2663.4 78.92%

Decision Tree Accord Framework 3740.9 92.76%

Decision Tree scikit-learn (Python) 317.8 99.93%

Naive Bayes numl 1664.4 92.55%

Naive Bayes Accord Framework 46 92.35%

Naive Bayes scikit-learn (Python) 183.3 92.35%

35

Page 36: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Немного побенчмаркаем

Method Tool Median (ms) Correct

K Nearest Neighbors numl 12783892.2 99.94%

K Nearest Neighbors Accord Framework 1445.6 99.94%

K Nearest Neighbors scikit-learn (Python) 1249.1 99.94%

Decision Tree numl 2663.4 78.92%

Decision Tree Accord Framework 3740.9 92.76%

Decision Tree scikit-learn (Python) 317.8 99.93%

Naive Bayes numl 1664.4 92.55%

Naive Bayes Accord Framework 46 92.35%

Naive Bayes scikit-learn (Python) 183.3 92.35%

36

Page 37: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Немного побенчмаркаем

Method Tool Median (ms) Correct

K Nearest Neighbors numl 12783892.2 99.94%

K Nearest Neighbors Accord Framework 1445.6 99.94%

K Nearest Neighbors scikit-learn (Python) 1249.1 99.94%

Decision Tree numl 2663.4 78.92%

Decision Tree Accord Framework 3740.9 92.76%

Decision Tree scikit-learn (Python) 317.8 99.93%

Naive Bayes numl 1664.4 92.55%

Naive Bayes Accord Framework 46 92.35%

Naive Bayes scikit-learn (Python) 183.3 92.35%

37

Page 38: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Бенчмарки : перевариваем результаты

Accord показал хорошие результаты на каждом из алгоритмов

Некоторые алгоритмы могут работать ОЧЕНЬ медленно, но в большинстве случаев - это проблема реализации.

На больших объемах данных Accord и numl показали сравнимые результаты, однако Accord все еще точнее

Скорость и точность, которую показал Accord, сравнима с Scikit.

38

Page 39: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

FsLab

Объединяет в себе все лучшие инструменты манипулирования данными, созданные для F#

39

fslab.org

Page 40: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Hype

40

hypelib.github.io/Hype

Compositional Machine Learning and Hyperparameter Optimization Library

Page 41: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Stanford NLP

41

nlp.stanford.edu

Page 42: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

42

Проблемы анализа тональности

- “Dotnext is awesome” - точно позитивный

- “Dotnext is boring” - точно негативный

- “Dotnext is not really awesome” - ???

Page 43: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Проблемы анализа тональности

43

Page 44: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

44

Проблемы анализа тональности

- “Dotnext is awesome” - точно позитивный

- “Dotnext is boring” - точно негативный

- “Dotnext is not really awesome”

- “Dotnext is awesome? Don't think so.” - ???

Page 45: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Рекуррентные нейронные сети

45

Page 46: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

46

Задача 1 : анализируем тональность твитов

Page 47: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Задача 2 : предсказание популярности велопроката

Page 48: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

Выводы

Машинное обучение – отличный инструмент, если абстрагироваться от его внутренней сложности.

F# - потрясающий инструмент для работы с данными

Под .NET много замечательных инструментов, позволяющих работать с ML.

48

Page 49: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

С чего начать?

49

Mathias Brandewinder

Machine Learning Projects for .NET Developers

amzn.com/1430267674

Page 50: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

С чего начать?

50

Peter Flach

Machine Learning: The Art and Science of Algorithms that Make Sense of Data

amzn.com/1107422221

Page 51: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

С чего начать?

51

Tomas Petricek

Analyzing and Visualizing Data with F#

fslab.org/report

Page 52: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе

У вас найдется минутка поговорить о ML?

[email protected]

nevoroman

nevoroman/ml-dotnext2016

Спасибо за внимание!

52