SlideShare a Scribd company logo
Машинное обучение на
платформе .NET
Неволин Роман
roman.nevolin@waveaccess.ru
nevoroman
nevoroman/ml-dotnet
Вступление
1
Вступление : репозиторий доклада
Вступление : из-за чего сыр-бор?
 Машинное обучение - это классно.
 .NET - это тоже замечательно
 По распространенному мнению, .NET не подходит для
решения задач машинного обучения...
4
...но мы же не станем отступать из-за таких мелочей?
https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
Машинное обучение
Машинное обучение : что это за зверь?
«Machine Learning is the field of study that gives computers the
ability to learn without being explicitly programmed»
— Prof. Arthur Samuel
6https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
Машинное обучение : когда использовать?
 Когда трудно описать алгоритм решения задачи
7https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
Машинное обучение : когда использовать?
 Когда трудно описать алгоритм решения задачи
 Когда нужно предугадать некоторые значения,
имея большой набор данных
8https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
Машинное обучение : когда использовать?
 Когда трудно описать алгоритм решения задачи
 Когда нужно предугадать некоторые значения,
имея большой набор данных
 Когда вы хотите улучшить работу имеющегося
алгоритма за счет накопления опыта
9https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
Машинное обучение : зачем мне это?
10
Анализ отзывов фанатов о
новых «Звездных войнах»
Решено в три дня и 10 строчек
кода.
https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
Машинное обучение : зачем мне это?
 Позволяет легко решать трудные задачки
11https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
Машинное обучение : зачем мне это?
 Позволяет легко решать трудные задачки
 Базовые навыки легко осваиваются и полезны в
других областях
12https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
Машинное обучение : зачем мне это?
 Позволяет легко решать трудные задачки
 Базовые навыки легко осваиваются и полезны в
других областях
 Это чертовски весело!
13https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
ML и .NET
ML и .NET : мы этого точно хотим?
15
 .NET имеет кучу клевых инструментов для работы с
данными
https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : мы этого точно хотим?
16
 .NET имеет кучу клевых инструментов для работы с
данными
 Позволяет встраивать алгоритмы машинного
обучения, не выходя из уютного дотнета
https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : мы этого точно хотим?
17
 .NET имеет кучу клевых инструментов для работы с
данными
 Позволяет встраивать алгоритмы машинного
обучения, не выходя из уютного дотнета
 F#
https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
F#
ML и .NET : мы этого точно хотим?
https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : препарируем F#
19https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : препарируем F#
20https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : препарируем F#
21
Функциональное программирование - это просто!
https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : препарируем F#
22https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : немного уличной магии
23https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : витаем в облаках
24https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : ближе к делу
Постановка задачи :
Необходимо без использования библиотек и бубна реализовать
спам-фильтр, написав для этих целей как можно меньше и кода, не
жертвуя, по возможности, читаемостью.
Решение:
F#, Байесовский классификатор и немного функциональщины
25https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
ML и .NET : что за классификатор?
Наивный байесовский классификатор - простой вероятностный
классификатор, основанный на применении теоремы Байеса.
26https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
Инструментарий
Инструментарий : чем думать будем?
 Accord Framework
 numl
 Encog
 Azure ML
28https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : Accord Framework
29
 Великолепно документирован
 Огромный арсенал всевозможных алгоритмов
 Гибкий
 Требует некоторого времени на освоение
https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : numl
30
 Просто осваивается
 Не требует долгого развертывания; для базовой реализации
алгоритма достаточно и минуты
 Базовый набор алгоритмов
 Отличный «тестовый стенд» - для смены алгоритма
необходимо поменять буквально одну строчку кода
https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : Encog
31
 Довольно гибок
 Неплохая встроенная работа с данными
 Имеет Java реализацию
 Работе с ним посвящена неплохая книга
 Некоторые алгоритмы он реализует просто великолепно.
https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : Azure ML
32
 Прост в использовании : ваш ребенок может случайно стать
Data Scienist'ом
 Это клевые модные облачные вычисления
 Функционал легко расширяется самописными модулями
 Легкая и приятная работа с данными
https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : немного побенчмаркаем
33https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : немного побенчмаркаем
https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : немного побенчмаркаем
Iris dataset
Method Tool Median (us) Correct
K Nearest Neighbors numl 5006.5 100%
K Nearest Neighbors Accord Framework 123.2 100%
K Nearest Neighbors scikit-learn (Python) 965.5 99%
Decision Tree numl 2338.1 86.66%
Decision Tree Accord Framework 687.7 96.66%
Decision Tree scikit-learn (Python) 501.9 93.33%
Naive Bayes numl 1657.8 80%
Naive Bayes Accord Framework 93.2 100%
Naive Bayes scikit-learn (Python) 1056.3 96.66%
https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : немного побенчмаркаем
https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Skin dataset
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%
Инструментарий : переваривая результаты
 Accord отлично показал себя на всех выбранных алгоритмах
 Некоторые алгоритмы могут работать ОЧЕНЬ медленно, но в
большинстве случаев - это проблема реализации.
 На больших объемах данных Accord и numl показали сравнимые
результаты, однако Accord все еще точнее
 Скорость и точность, которую показал Accord, сравнима с Scikit.
37https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : ну и зачем нам numl?
38https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
Инструментарий : FsLab
39
Объединяет в себе все лучшие инструменты манипулирования данными,
созданные для F#
https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
С чего начать?
 Mathias Brandewinder - Machine Learning Projects for .NET
Developers
 Matthew Kirk - Thoughtful Machine Learning
 Tomas Petricek - Analyzing and Visualizing Data with F#
https://github.com/nevoroman/ml-dotnet 40
У вас найдется минутка поговорить о ML?
https://github.com/nevoroman/ml-dotnet 41
roman.nevolin@waveaccess.ru
nevoroman
nevoroman/ml-dotnet
Спасибо за внимание!

More Related Content

Viewers also liked

Введение в машинное обучение
Введение в машинное обучение Введение в машинное обучение
Введение в машинное обучение
Anton Anokhin
 
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
solit
 
Определение курильщика по кардиограмме
Определение курильщика по кардиограммеОпределение курильщика по кардиограмме
Определение курильщика по кардиограмме
Александр Дьяконов
 
Алгебраический подход к анализу данных и его приложения
Алгебраический подход к анализу данных и его приложенияАлгебраический подход к анализу данных и его приложения
Алгебраический подход к анализу данных и его приложения
Александр Дьяконов
 
Решение задачи Search Results Relevance
Решение задачи Search Results RelevanceРешение задачи Search Results Relevance
Решение задачи Search Results Relevance
Александр Дьяконов
 
Спектральная теория графов
Спектральная теория графовСпектральная теория графов
Спектральная теория графов
Александр Дьяконов
 
Matrix Laboratory (эффективное программирование)
Matrix Laboratory (эффективное программирование)Matrix Laboratory (эффективное программирование)
Matrix Laboratory (эффективное программирование)
Александр Дьяконов
 
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15]
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15] Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15]
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15]
Python Meetup
 
Введение в язык программирования Питон (Python)
Введение в язык программирования Питон (Python)Введение в язык программирования Питон (Python)
Введение в язык программирования Питон (Python)
Александр Дьяконов
 
Теория нечётких множеств
Теория нечётких множествТеория нечётких множеств
Теория нечётких множеств
Александр Дьяконов
 
Pandas: обзор основных функций
Pandas: обзор основных функцийPandas: обзор основных функций
Pandas: обзор основных функций
Александр Дьяконов
 
HighLoad++ 2009 In-Memory Data Grids
HighLoad++ 2009 In-Memory Data GridsHighLoad++ 2009 In-Memory Data Grids
HighLoad++ 2009 In-Memory Data Grids
Alexey Kharlamov
 
Async Gateway или Разработка системы распределенных вычислений с нуля
Async Gateway или Разработка системы распределенных вычислений с нуляAsync Gateway или Разработка системы распределенных вычислений с нуля
Async Gateway или Разработка системы распределенных вычислений с нуля
Vitebsk Miniq
 
Phoenix for Rubyists
Phoenix for RubyistsPhoenix for Rubyists
Phoenix for Rubyists
Mike North
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
uzquiano
 
50 nouvelles choses que l'on peut faire en Java 8
50 nouvelles choses que l'on peut faire en Java 850 nouvelles choses que l'on peut faire en Java 8
50 nouvelles choses que l'on peut faire en Java 8
José Paumard
 
Алексей Николаенков, Devexperts
Алексей Николаенков, DevexpertsАлексей Николаенков, Devexperts
Алексей Николаенков, Devexperts
Nata_Churda
 
Code review at large scale
Code review at large scaleCode review at large scale
Code review at large scale
Mikalai Alimenkou
 
Amazon cloud – готовим вместе
Amazon cloud – готовим вместеAmazon cloud – готовим вместе
Amazon cloud – готовим вместе
Vitebsk Miniq
 
Hazelcast for Terracotta Users
Hazelcast for Terracotta UsersHazelcast for Terracotta Users
Hazelcast for Terracotta Users
Hazelcast
 

Viewers also liked (20)

Введение в машинное обучение
Введение в машинное обучение Введение в машинное обучение
Введение в машинное обучение
 
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
 
Определение курильщика по кардиограмме
Определение курильщика по кардиограммеОпределение курильщика по кардиограмме
Определение курильщика по кардиограмме
 
Алгебраический подход к анализу данных и его приложения
Алгебраический подход к анализу данных и его приложенияАлгебраический подход к анализу данных и его приложения
Алгебраический подход к анализу данных и его приложения
 
Решение задачи Search Results Relevance
Решение задачи Search Results RelevanceРешение задачи Search Results Relevance
Решение задачи Search Results Relevance
 
Спектральная теория графов
Спектральная теория графовСпектральная теория графов
Спектральная теория графов
 
Matrix Laboratory (эффективное программирование)
Matrix Laboratory (эффективное программирование)Matrix Laboratory (эффективное программирование)
Matrix Laboratory (эффективное программирование)
 
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15]
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15] Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15]
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15]
 
Введение в язык программирования Питон (Python)
Введение в язык программирования Питон (Python)Введение в язык программирования Питон (Python)
Введение в язык программирования Питон (Python)
 
Теория нечётких множеств
Теория нечётких множествТеория нечётких множеств
Теория нечётких множеств
 
Pandas: обзор основных функций
Pandas: обзор основных функцийPandas: обзор основных функций
Pandas: обзор основных функций
 
HighLoad++ 2009 In-Memory Data Grids
HighLoad++ 2009 In-Memory Data GridsHighLoad++ 2009 In-Memory Data Grids
HighLoad++ 2009 In-Memory Data Grids
 
Async Gateway или Разработка системы распределенных вычислений с нуля
Async Gateway или Разработка системы распределенных вычислений с нуляAsync Gateway или Разработка системы распределенных вычислений с нуля
Async Gateway или Разработка системы распределенных вычислений с нуля
 
Phoenix for Rubyists
Phoenix for RubyistsPhoenix for Rubyists
Phoenix for Rubyists
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
 
50 nouvelles choses que l'on peut faire en Java 8
50 nouvelles choses que l'on peut faire en Java 850 nouvelles choses que l'on peut faire en Java 8
50 nouvelles choses que l'on peut faire en Java 8
 
Алексей Николаенков, Devexperts
Алексей Николаенков, DevexpertsАлексей Николаенков, Devexperts
Алексей Николаенков, Devexperts
 
Code review at large scale
Code review at large scaleCode review at large scale
Code review at large scale
 
Amazon cloud – готовим вместе
Amazon cloud – готовим вместеAmazon cloud – готовим вместе
Amazon cloud – готовим вместе
 
Hazelcast for Terracotta Users
Hazelcast for Terracotta UsersHazelcast for Terracotta Users
Hazelcast for Terracotta Users
 

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

Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Moscow.pm
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Yandex
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
OdessaJS Conf
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
Maria Kuneva
 
А.Левенчук -- Образование по машинному обучению
А.Левенчук -- Образование по машинному обучениюА.Левенчук -- Образование по машинному обучению
А.Левенчук -- Образование по машинному обучению
Anatoly Levenchuk
 
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Mail.ru Group
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Ontico
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Andrey Listochkin
 
Отображение языков высокого уровня на архитектуру ЭВМ на примере языка C и ос...
Отображение языков высокого уровня на архитектуру ЭВМ на примере языка C и ос...Отображение языков высокого уровня на архитектуру ЭВМ на примере языка C и ос...
Отображение языков высокого уровня на архитектуру ЭВМ на примере языка C и ос...Timur Shaporev
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
Fwdays
 
Владислав Шаклеин. Смешивание управляемого и неуправляемого C++ кода в Micros...
Владислав Шаклеин. Смешивание управляемого и неуправляемого C++ кода в Micros...Владислав Шаклеин. Смешивание управляемого и неуправляемого C++ кода в Micros...
Владислав Шаклеин. Смешивание управляемого и неуправляемого C++ кода в Micros...
Platonov Sergey
 
Ключевые риски и лучшие практики информационной безопасности при переходе в о...
Ключевые риски и лучшие практики информационной безопасности при переходе в о...Ключевые риски и лучшие практики информационной безопасности при переходе в о...
Ключевые риски и лучшие практики информационной безопасности при переходе в о...
Michael Kozloff
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий Лапин
IT61
 
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)Ontico
 
Web20 from zero
Web20 from zeroWeb20 from zero
Web20 from zeroqweasdrty
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Fwdays
 
Deep convolution networks with caffe
Deep convolution networks with caffeDeep convolution networks with caffe
Deep convolution networks with caffe
Andrew Babiy
 
SymfonyConf IV.2016 - Реанимация проектов на Symfony
SymfonyConf IV.2016 - Реанимация проектов на SymfonySymfonyConf IV.2016 - Реанимация проектов на Symfony
SymfonyConf IV.2016 - Реанимация проектов на Symfony
Serge Velikanov
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняLuxoftTraining
 

Similar to Машинное обучение на платформе .NET (20)

Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
 
А.Левенчук -- Образование по машинному обучению
А.Левенчук -- Образование по машинному обучениюА.Левенчук -- Образование по машинному обучению
А.Левенчук -- Образование по машинному обучению
 
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013
 
Отображение языков высокого уровня на архитектуру ЭВМ на примере языка C и ос...
Отображение языков высокого уровня на архитектуру ЭВМ на примере языка C и ос...Отображение языков высокого уровня на архитектуру ЭВМ на примере языка C и ос...
Отображение языков высокого уровня на архитектуру ЭВМ на примере языка C и ос...
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
Владислав Шаклеин. Смешивание управляемого и неуправляемого C++ кода в Micros...
Владислав Шаклеин. Смешивание управляемого и неуправляемого C++ кода в Micros...Владислав Шаклеин. Смешивание управляемого и неуправляемого C++ кода в Micros...
Владислав Шаклеин. Смешивание управляемого и неуправляемого C++ кода в Micros...
 
Log+
Log+Log+
Log+
 
Ключевые риски и лучшие практики информационной безопасности при переходе в о...
Ключевые риски и лучшие практики информационной безопасности при переходе в о...Ключевые риски и лучшие практики информационной безопасности при переходе в о...
Ключевые риски и лучшие практики информационной безопасности при переходе в о...
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий Лапин
 
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
 
Web20 from zero
Web20 from zeroWeb20 from zero
Web20 from zero
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
 
Deep convolution networks with caffe
Deep convolution networks with caffeDeep convolution networks with caffe
Deep convolution networks with caffe
 
SymfonyConf IV.2016 - Реанимация проектов на Symfony
SymfonyConf IV.2016 - Реанимация проектов на SymfonySymfonyConf IV.2016 - Реанимация проектов на Symfony
SymfonyConf IV.2016 - Реанимация проектов на Symfony
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровня
 

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

  • 1. Машинное обучение на платформе .NET Неволин Роман roman.nevolin@waveaccess.ru nevoroman nevoroman/ml-dotnet
  • 4. Вступление : из-за чего сыр-бор?  Машинное обучение - это классно.  .NET - это тоже замечательно  По распространенному мнению, .NET не подходит для решения задач машинного обучения... 4 ...но мы же не станем отступать из-за таких мелочей? https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
  • 6. Машинное обучение : что это за зверь? «Machine Learning is the field of study that gives computers the ability to learn without being explicitly programmed» — Prof. Arthur Samuel 6https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
  • 7. Машинное обучение : когда использовать?  Когда трудно описать алгоритм решения задачи 7https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
  • 8. Машинное обучение : когда использовать?  Когда трудно описать алгоритм решения задачи  Когда нужно предугадать некоторые значения, имея большой набор данных 8https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
  • 9. Машинное обучение : когда использовать?  Когда трудно описать алгоритм решения задачи  Когда нужно предугадать некоторые значения, имея большой набор данных  Когда вы хотите улучшить работу имеющегося алгоритма за счет накопления опыта 9https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
  • 10. Машинное обучение : зачем мне это? 10 Анализ отзывов фанатов о новых «Звездных войнах» Решено в три дня и 10 строчек кода. https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
  • 11. Машинное обучение : зачем мне это?  Позволяет легко решать трудные задачки 11https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
  • 12. Машинное обучение : зачем мне это?  Позволяет легко решать трудные задачки  Базовые навыки легко осваиваются и полезны в других областях 12https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
  • 13. Машинное обучение : зачем мне это?  Позволяет легко решать трудные задачки  Базовые навыки легко осваиваются и полезны в других областях  Это чертовски весело! 13https://github.com/nevoroman/ml-dotnet/tree/master/MLIntro
  • 15. ML и .NET : мы этого точно хотим? 15  .NET имеет кучу клевых инструментов для работы с данными https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 16. ML и .NET : мы этого точно хотим? 16  .NET имеет кучу клевых инструментов для работы с данными  Позволяет встраивать алгоритмы машинного обучения, не выходя из уютного дотнета https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 17. ML и .NET : мы этого точно хотим? 17  .NET имеет кучу клевых инструментов для работы с данными  Позволяет встраивать алгоритмы машинного обучения, не выходя из уютного дотнета  F# https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 18. F# ML и .NET : мы этого точно хотим? https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 19. ML и .NET : препарируем F# 19https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 20. ML и .NET : препарируем F# 20https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 21. ML и .NET : препарируем F# 21 Функциональное программирование - это просто! https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 22. ML и .NET : препарируем F# 22https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 23. ML и .NET : немного уличной магии 23https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 24. ML и .NET : витаем в облаках 24https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 25. ML и .NET : ближе к делу Постановка задачи : Необходимо без использования библиотек и бубна реализовать спам-фильтр, написав для этих целей как можно меньше и кода, не жертвуя, по возможности, читаемостью. Решение: F#, Байесовский классификатор и немного функциональщины 25https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 26. ML и .NET : что за классификатор? Наивный байесовский классификатор - простой вероятностный классификатор, основанный на применении теоремы Байеса. 26https://github.com/nevoroman/ml-dotnet/tree/master/ML&Dotnet
  • 28. Инструментарий : чем думать будем?  Accord Framework  numl  Encog  Azure ML 28https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 29. Инструментарий : Accord Framework 29  Великолепно документирован  Огромный арсенал всевозможных алгоритмов  Гибкий  Требует некоторого времени на освоение https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 30. Инструментарий : numl 30  Просто осваивается  Не требует долгого развертывания; для базовой реализации алгоритма достаточно и минуты  Базовый набор алгоритмов  Отличный «тестовый стенд» - для смены алгоритма необходимо поменять буквально одну строчку кода https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 31. Инструментарий : Encog 31  Довольно гибок  Неплохая встроенная работа с данными  Имеет Java реализацию  Работе с ним посвящена неплохая книга  Некоторые алгоритмы он реализует просто великолепно. https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 32. Инструментарий : Azure ML 32  Прост в использовании : ваш ребенок может случайно стать Data Scienist'ом  Это клевые модные облачные вычисления  Функционал легко расширяется самописными модулями  Легкая и приятная работа с данными https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 33. Инструментарий : немного побенчмаркаем 33https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 34. Инструментарий : немного побенчмаркаем https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 35. Инструментарий : немного побенчмаркаем Iris dataset Method Tool Median (us) Correct K Nearest Neighbors numl 5006.5 100% K Nearest Neighbors Accord Framework 123.2 100% K Nearest Neighbors scikit-learn (Python) 965.5 99% Decision Tree numl 2338.1 86.66% Decision Tree Accord Framework 687.7 96.66% Decision Tree scikit-learn (Python) 501.9 93.33% Naive Bayes numl 1657.8 80% Naive Bayes Accord Framework 93.2 100% Naive Bayes scikit-learn (Python) 1056.3 96.66% https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 36. Инструментарий : немного побенчмаркаем https://github.com/nevoroman/ml-dotnet/tree/master/MLTools Skin dataset 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. Инструментарий : переваривая результаты  Accord отлично показал себя на всех выбранных алгоритмах  Некоторые алгоритмы могут работать ОЧЕНЬ медленно, но в большинстве случаев - это проблема реализации.  На больших объемах данных Accord и numl показали сравнимые результаты, однако Accord все еще точнее  Скорость и точность, которую показал Accord, сравнима с Scikit. 37https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 38. Инструментарий : ну и зачем нам numl? 38https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 39. Инструментарий : FsLab 39 Объединяет в себе все лучшие инструменты манипулирования данными, созданные для F# https://github.com/nevoroman/ml-dotnet/tree/master/MLTools
  • 40. С чего начать?  Mathias Brandewinder - Machine Learning Projects for .NET Developers  Matthew Kirk - Thoughtful Machine Learning  Tomas Petricek - Analyzing and Visualizing Data with F# https://github.com/nevoroman/ml-dotnet 40
  • 41. У вас найдется минутка поговорить о ML? https://github.com/nevoroman/ml-dotnet 41 roman.nevolin@waveaccess.ru nevoroman nevoroman/ml-dotnet Спасибо за внимание!