Введение в машинное обучение и ML.NET, часть 1
Введение
В настоящее время машинное обучение становится все более популярным и используется в широкой индустрии, а также в нашей повседневной жизни. В этой статье мы узнаем, как разрабатывать приложения машинного обучения с использованием Microsoft ML.NET (Machine Learning .NET). Если у нас есть базовые знания в области машинного обучения, типов машинного обучения и алгоритма, нам будет проще выбрать подходящее задание и модель машинного обучения для разработки нашего приложения для машинного обучения. В этой главе мы начнем со следующего:
- Введение в машинное обучение
- Введение в типы машинного обучения и алгоритм
- Почему машинное обучение становится все более популярным
- Введение в Microsoft ML.NET
- Особенности ML.NET
Введение в машинное обучение
Машинное обучение (ML) - это приложение, которое является частью искусственного интеллекта (ИИ). Машинное обучение использует алгоритмы и статистические методы для самостоятельного обучения систем без использования каких-либо явных программ. Машинное обучение используется для автоматического обучения систем и предоставления нам прогнозируемых результатов системы. В области ML для обучения и прогнозирования результатов нам необходимо предоставить много данных. В машинном обучении в основном используются 2 волшебные слова:
- Обучение
- Данные
Чтобы понять обучение и данные, давайте посмотрим на пример из реальной жизни, когда рождается новый ребенок, и родители, учителя и соседи начинают учить детей, показывая объект. Мы можем сказать, что родитель учит ребенка впервые показывая яблоко, и он будет неоднократно говорить ребенку, что это яблоко, и яблоко будет красного цвета, форма яблока будет такой, вот яблоко - данные для ребенка, и мозг ребенка тренируется, запоминая, как выглядит яблоко. После того, как мозг ребенка обучен этому предмету, всякий раз, когда он видит объект яблока, он немедленно скажет, что это яблоко.
Подобно тому, как мы обучаем младенца в первый раз, показывая объект, мы обучаем машину с большим количеством данных, чтобы предсказать и вернуть результат для нас. Для тренировки машины нам нужно много данных. Предоставляя много связанных данных для машины, машины будут хорошо обучены и способны предсказать точные результаты для нас. Ниже вы увидите изображение, которое послужит примером для данных, например, давайте рассмотрим, как мы обучаем машины предсказывать число и отображать результат. Здесь мы использовали данные в виде изображения и видим, что различные виды чисел 2 были созданы с разными шрифтами, а также написаны от руки. Все эти числа 2 будут даны машинам по данным и обучены машинам прогнозировать результат.
Опять же, вам всем будет интересно узнать об обучении и о том, как мы можем обучать машины, для этого в машинном обучении у нас есть задача и алгоритмы. Как мы уже знаем, что касается машинного обучения, нам не нужно явно писать какую-либо программу, так как мы будем использовать алгоритм машинного обучения для прогнозирования результатов. Теперь мы рассмотрим несколько типов машинного обучения и алгоритмов.
Процесс машинного обучения
На следующем изображении мы видим, что процесс машинного обучения был объяснен, поскольку сначала мы передаем данные в систему, а затем выбираем подходящую модель машинного обучения для обучения системы. После завершения обучения машина готова прогнозировать результаты и показывать результаты для внешнего мира.
Введение в типы машинного обучения и алгоритм
В машинном обучении очень важны типы и алгоритмы. Если мы хотим разработать приложение машинного обучения, мы должны понимать, что такое типы машинного обучения и какой тип и алгоритм следует выбирать для наших приложений, чтобы обучать и прогнозировать результаты. Эта статья ориентирована на использование машинного обучения для контролируемого типа обучения и неконтролируемого обучения. Мы подробно рассмотрим два основных типа машинного обучения:
- Контролируемое обучение (Supervised Learning)
- Неконтролируемое обучение (Unsupervised Learning)
Мы рассмотрим эти типы машинного обучения и алгоритм с примерами.
На приведенной выше диаграмме мы можем видеть несколько типов и алгоритмов машинного обучения с примерами того, в каком типе приложения могут использоваться все типы и алгоритм машинного обучения. В этой статье мы будем использовать контролируемое обучение с моделью регрессии и классификации и неуправляемый тип с моделью кластеризации. Теперь давайте подробно рассмотрим каждый тип и алгоритм машинного обучения.
Контролируемое обучение
При контролируемом обучении компьютер получит маркированный ввод и желаемый вывод. Сначала мы посмотрим пример использования модели регрессии для прогнозирования цены на жилье для каждого города, для этого мы дадим все данные о доме для конкретного города с названием города, названием района, типом дома, сведениями об этаже, числом комнат и арендной платой.
На этом изображении выше мы можем понять информацию о жилье для трех различных типов домов как отдельный дом, тип виллы и тип квартиры с количеством информации о номере. Это не точная цена дома в конкретном городе, это образец типов жилья и цены для легкого понимания концепций. Как видно из приведенного выше изображения, мы можем легко понять текущую цену на жилье для конкретной области в этом городе. Вся эта информация о названии города, названии района, типе дома, деталях этажа, количестве комнат и арендной плате за дом для всех домов в этом городе будет предоставлена в качестве входных данных для машины для прогнозирования арендной платы за жилье для поиска пользователя. Когда мы ищем дом, мы будем вводить данные в виде названия города, названия района, количества комнат, которые нам нужны, какой тип дома мы предпочитаем и какой бюджет ищем для дома. Здесь, бюджет является ключевым словом для нашего поиска, и результатом, который мы будем искать в нашем поиске, будет аренда дома. Здесь, для машинного обучения, контролируемого типа и регрессионной модели, мы будем давать арендную плату за дом в качестве маркированного входа. Мы обучаем машину со всеми входами и маркированными входами. После обучения машина будет прогнозировать результат, используя алгоритм регрессии, и выдаст прогнозируемый результат для нас в качестве аренды дома.
Если пользователь ищет аренду дома с 3 комнатами, дом квартирного типа в городе Маура и в районе Аннанагара со всеми данными, предоставленными машине, машина прогнозирует результат и отображает приблизительный результат как 15000. В машинном обучении нам нужно предоставлять много данных.
В контролируемом обучении еще одна модель будет использоваться в качестве классификационной модели. Классификационная модель будет использоваться для обнаружения спама в почте и для прогнозирования настроений.
Неконтролируемое обучение
При неконтролируемом обучении компьютер получит ввод без желаемого вывода. Основная цель этой модели - найти структуру входов.
В неконтролируемом обучении у нас есть модель кластеризации. Модель кластеризации может использоваться для определения кластера сегментации клиентов по нашим продуктам, например, в качестве сегментации клиентов по продажам наших продуктов. Давайте рассмотрим, что у нас есть «ABC», XYZ» и «123» как три различных продукта, и продукты, которые мы продаем в четырех крупных городах в Дели, Мумбае, Калькутте и в Ченнаи. Мы группируем всю историю продаж наших трех продуктов по четырем городам и хотим найти кластер нашего продукта, в этом случае мы можем использовать неконтролируемом обучение, используя кластерную модель.
Почему машинное обучение становится все более популярным?
В настоящее время машинное обучение широко используется в нашей повседневной жизни, во многих отраслях промышленности, в областях исследований, в науке и т. д. Машинное обучение также используется для автоматизации таких систем, как, например, обнаружение почтового спама и обнаружение мошенничества. Что касается машинного обучения в нашей повседневной жизни, мы можем привести в качестве примера новостную ленту Facebook, которую мы можем видеть на нашей стене, так как мы будем видеть всю новостную ленту, связанную с нашей часто или недавно посещаемой публикацией друзей. Facebook использует концепцию машинного обучения для подачи новостей. Машинное обучение также используется сегодня в широких отраслях промышленности, таких как производство, здравоохранение, финансовые услуги, путешествия, розничная торговля и т. д. Машинное обучение также используется для изготовления беспилотных автомобилей без водителя (т.е. автомобилей с автоматическим управлением). В автомобилях с автоматическим управлением датчики используются для определения объектов, сближающихся по всем четырем сторонам, в зависимости от объектов, за которыми будет контролироваться скорость автомобиля, а также с помощью навигации автомобили с автоматическим управлением будут достигать пункта назначения. информация будет храниться как место движения и представлять сигнал движения. Для беспилотных автомобилей будут использоваться концепции машинного обучения. ML также в настоящее время широко используется в исследовательских и медицинских областях, таких как прогнозирование вирусной недостаточности при СПИДе, прогнозирование развития болезни Паркинсона, интеллектуальное сельское хозяйство, биотехнология для разработки лекарств, медицинская терапия, используемая в космологических картах и т. д.
В будущем машинное обучение будет широко использоваться во всех областях, и оно станет более популярным, чем сегодня.
Мы видели, как и почему машинное обучение становится все более популярным в настоящее время, и Microsoft также представила новую платформу под названием ML.NET в марте месяце во время сборки 2018. ML.NET расшифровывается как Machine Learning.Net, которая используется для разрабатывать приложения для машинного обучения с использованием .NET - более подробную информацию о ML.NET мы увидим в наших следующих главах.
Введение в Microsoft ML.NET
Microsoft представила ML.NET (Machine Learning.NET) во время сборки 2018 (март). Текущая версия ML.NET - это ML.NET preview 1.4, выпущенная в сентябре 2019 года. Machine Learning.Net - это кроссплатформенная платформа с открытым исходным кодом. Да, теперь легко разработать наше собственное приложение для машинного обучения или разработать собственные модули с использованием инфраструктуры машинного обучения. Для всех любителей .NET это отличная новость, поскольку мы можем использовать код на C # или F # для разработки машинного обучения с использованием ML.NET. ML.NET имеет открытый исходный код и может разрабатываться и работать на Windows, Linux и macOS. Мы можем разрабатывать пользовательские модели машинного обучения, используя ML.NET для консоли, настольного компьютера, Интернета, мобильных устройств, игр и для IOT.M. L.NET также поддерживает расширение и работу с TensorFlow, Accord.NET и CNTK. Последний выпуск ML .NET также поддерживает загрузку и обучение данных из реляционных баз данных, таких как SQL Server, Oracle, MySQL и т. д. Также была создана последняя версия ML.NET для разработки простого пользовательского ML с использованием AutoML.
В настоящее время Microsoft выпустила предварительную версию ML.NET, и Microsoft продолжает добавлять больше функций в инфраструктуру ML.NET, настоящей версией ML.NET является ML.NET 1.4.
Прежде чем приступить к работе с ML.NET, давайте разберемся с базовой концепцией ML.NET, которую необходимо использовать для разработки наших приложений машинного обучения.
- Загрузка данных: для идеального прогнозирования результатов нам необходимо предоставить много данных для обучения модели. В ML.Net мы можем предоставлять данные как для обучения, так и для проверки по тексту (CSV / TSV, реляционная база данных (теперь поддерживаются SQL Server, Oracle, MySQL и т. Д.)), Двоичные, IEnumerable и т. д.
- Обучение: нам нужно выбрать правильный алгоритм для обучения модели в зависимости от наших потребностей, для обучения и прогнозирования результатов.
- Оценка: Выберите тип машинного обучения для нашей модели обучения и прогнозирования. Если вам нужно работать с сегментом, то вы можете выбрать модель кластеризации, если вам нужно найти цену прогнозирования акций, вы можете выбрать регрессию и, если вам нужно найти анализ настроений, вы можете выбрать модель классификации.
- Прогнозируемые результаты. На основе данных об обучении и тестировании с обученной моделью окончательный прогноз будет отображаться с помощью приложения ML.NET. Обученная модель будет сохранена в двоичном формате, который также может быть интегрирован с другими нашими приложениями .NET.
Приведенный выше рисунок объясняет последовательность процессов, которые будут использоваться для разработки наших приложений машинного обучения с использованием ML.NET. Далее мы подробнее рассмотрим компоненты ML.NET.
Особенности ML.NET
Теперь давайте рассмотрим некоторые из применений и возможностей Microsoft ML.NET.
- Все любители DotNet могут написать свой код для машинного обучения, используя ML.NET.
- Вы можете использовать C # или F # для кодирования с ML.NET.
- ML.NET является кроссплатформенным и обладает открытым исходным кодом.
- ML.NET можно разрабатывать и запускать на Windows, Linux и macOS.
- Широко используется в Microsoft Windows, Bing, Azure, а также имеет расширения для других сред, таких как TensorFlow, CNTK и Accord.NET.
- ML.NET поддерживает разработку приложений машинного обучения для Интернета, мобильных устройств, компьютеров, игр и IOT.
- ML.NET сохраняет обученную модель в виде двоичного файла и может быть интегрирована в любые другие приложения DotNet.
- ML.NET сейчас находится в предварительной версии, и Microsoft часто добавляет много новых функций, а также планирует добавить Deep Learning с TensorFlow и CNTK.
- В предварительной версии 0.2 ML.NET были представлены новые задачи кластеризации машинного обучения.
- В превью ML.NET версии 0.5 добавлено преобразование скоринга модели TensorFlow.
- В превью ML.NET версии 0.6 добавлена возможность оценки предварительно обученных моделей ONNX.
- Теперь, начиная с версии ML.NET 0.7, он поддерживает как x86, так и x64.ML.NET уже в предварительной версии, и Microsoft часто обновляет версию, добавляя дополнительные функции в ML.NET. Предыдущие версии ML.NET 0.7 поддерживают разработку только для x64, но из новой версии ML.NET 0.7 поддерживают разработку как для x86, так и для x64.
- Предварительная версия ML.NET 0.7 поддерживает экспериментальные привязки Python для ML.NET под названием NimbusML.
- В ML.NET preview версии 0.7 включены сценарии обнаружения аномалий.
- Предварительная версия ML.NET 0.9 была добавлена с некоторыми улучшениями API ML.NET.
- ML.NET 1.0 был добавлен с Automated machine learning (AutoML) и представил еще несколько новых инструментов, таких как ML.NET CLI и ML.NET Model Builder.
- ML.NET 1.1 был выпущен с улучшенной поддержкой типа изображения в памяти, в IDataView также добавлен новый алгоритм, алгоритм обнаружения аномалий.
- ML.NET 1.2 выпущен с поддержкой интеграции моделей ML.NET в веб-приложениях или приложениях без сервера с пакетом интеграции Microsoft.Extensions.ML
- ML.NET Предварительный просмотр версии 1.4 Загрузчик базы данных, который облегчает обучение с использованием реляционной базы данных.
Точки интереса
ML.NET Предварительный просмотр 1.4 является текущим выпущенным видением сегодня (сентябрь 2019). Microsoft продолжает обновлять ML.Net, добавляя дополнительные функции, поэтому всегда следите за последними обновлениями и ждите публикации полной версии ML.NET. В следующей части мы узнаем о работе с ML.NET для каждой модели и алгоритма с последней версией выпуска и функциями. Надеемся, вы поняли, что такое машинное обучение и ML.NET из этой части 1, и в следующей части мы подробно рассмотрим начало работы с ML.NET.