Машинное обучение на платформе - jug ru...
TRANSCRIPT
![Page 1: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/1.jpg)
Машинное обучение на платформе .NET
Неволин Роман
nevoroman
nevoroman/ml-dotnext2016
![Page 2: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/2.jpg)
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/3.jpg)
3
![Page 4: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/4.jpg)
4
![Page 5: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/5.jpg)
5
![Page 6: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/6.jpg)
6
![Page 7: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/7.jpg)
7
![Page 8: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/8.jpg)
8
![Page 9: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/9.jpg)
А оно мне надо?Я - не Google
9
![Page 10: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/10.jpg)
10
![Page 11: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/11.jpg)
![Page 12: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/12.jpg)
12
![Page 13: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/13.jpg)
13
![Page 14: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/14.jpg)
А когда надо?
Когда алгоритм задачи трудно описать в коде, но легко объяснить человеку
14
![Page 15: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/15.jpg)
А когда надо?
Когда алгоритм задачи трудно описать в коде, но легко объяснить человеку
Когда вы пытаетесь предсказать изменения некоторого значения
15
![Page 16: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/16.jpg)
А когда надо?
Когда алгоритм задачи трудно описать в коде, но легко объяснить человеку
Когда вы пытаетесь предсказать изменения некоторого значения
Когда ваш алгоритм должен совершенствоваться за счет накопления данных
16
![Page 17: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/17.jpg)
Так что насчет .NET?
17
![Page 18: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/18.jpg)
18
![Page 19: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/19.jpg)
Пришло время играться с данными
19
![Page 20: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/20.jpg)
20
Магические ML библиотеки
![Page 22: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/22.jpg)
22
![Page 24: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/24.jpg)
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 27: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/27.jpg)
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/28.jpg)
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/29.jpg)
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/30.jpg)
Azure Machine Learning
30
![Page 31: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/31.jpg)
Немного побенчмаркаем
31
![Page 32: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/32.jpg)
Немного побенчмаркаем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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/33.jpg)
Немного побенчмаркаем
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/34.jpg)
Немного побенчмаркаем
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/35.jpg)
Немного побенчмаркаем
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/36.jpg)
Немного побенчмаркаем
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/37.jpg)
Немного побенчмаркаем
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/38.jpg)
Бенчмарки : перевариваем результаты
Accord показал хорошие результаты на каждом из алгоритмов
Некоторые алгоритмы могут работать ОЧЕНЬ медленно, но в большинстве случаев - это проблема реализации.
На больших объемах данных Accord и numl показали сравнимые результаты, однако Accord все еще точнее
Скорость и точность, которую показал Accord, сравнима с Scikit.
38
![Page 39: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/39.jpg)
FsLab
Объединяет в себе все лучшие инструменты манипулирования данными, созданные для F#
39
fslab.org
![Page 40: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/40.jpg)
Hype
40
hypelib.github.io/Hype
Compositional Machine Learning and Hyperparameter Optimization Library
![Page 42: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/42.jpg)
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/43.jpg)
Проблемы анализа тональности
43
![Page 44: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/44.jpg)
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/45.jpg)
Рекуррентные нейронные сети
45
![Page 46: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/46.jpg)
46
Задача 1 : анализируем тональность твитов
![Page 47: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/47.jpg)
Задача 2 : предсказание популярности велопроката
![Page 48: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/48.jpg)
Выводы
Машинное обучение – отличный инструмент, если абстрагироваться от его внутренней сложности.
F# - потрясающий инструмент для работы с данными
Под .NET много замечательных инструментов, позволяющих работать с ML.
48
![Page 49: Машинное обучение на платформе - JUG Ru Grouppublic.jugru.org/dotnext/2016/spb/day_1/track_2/nevolin.pdfМашинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/49.jpg)
С чего начать?
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/50.jpg)
С чего начать?
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/51.jpg)
С чего начать?
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Машинное обучение на платформе](https://reader030.vdocuments.net/reader030/viewer/2022040614/5f094a067e708231d4261d2a/html5/thumbnails/52.jpg)
У вас найдется минутка поговорить о ML?
nevoroman
nevoroman/ml-dotnext2016
Спасибо за внимание!
52