ОБРАБОТКА ДАННЫХ И МАШИННОЕ ОБУЧЕНИЕ
Data Mining и Machine Learning тесно связаны между собой. Data Mining – это метод, используемый для анализа больших массивов данных с помощью статистических и математических методов для поиска скрытых закономерностей или тенденций и извлечения из них ценности. Machine Learning (ML) работает с массивами данных, которые сформировала технология Data Mining. С помощью заранее смоделированных алгоритмов, технология искусственного интеллекта использует данные для принятия решений и последующих действий.
Процесс анализа данных состоит из нескольких этапов:
- Очистка данных. Необходимый этап для избавления от шумов, неполных или неверных данных, которые могут помешать правильной работе алгоритма.
- Интеграция данных. Извлечение, комбинация и интеграция данных.
- Выборка данных. На этом этапе из базы данных извлекаются только полезные данные.
- Преобразование данных. Нормализация, агрегирование, обобщение данных.
- Интеллектуальный анализ данных. Используются различные методы, такие как регрессия, классификация, кластеризация, прогнозирование и многое другое, для поиска закономерностей в данных.
- Оценка полезности полученной модели.
- Представление полученной информации в доступном виде.
Data Analysis помогает анализировать огромные массивы данных и найти среди них ценную информацию, которая поможет, например, обнаружить аномалии или сбои в работе продукта или провести сегментацию клиентов, разделив их на отдельные группы с учетом их потребностей, проанализировать рыночную корзину и предложить покупателю товары, приобретаемые вместе с уже выбранным товаром, а также многое другое.
Искусственный интеллект построенный на ML алгоритмах, способен просчитывать максимальное количество возможных решений одной ситуации, постоянно получать, обрабатывать и объединять множество новой информации. Подобно человеческому мозгу, искусственный интеллект способен без устали круглосуточно обрабатывать информацию, помогая человеку выполнять различную работу, связанную с распознаванием, принятием решений, анализом данных.
Обучение алгоритмов делится на:
Обучение с учителем (для каждой ситуации имеется требуемое решение)
Обучение без учителя (известна только ситуация без решения)
Обучение с подкреплением (для каждой ситуации имеется принятое решение)
Типы решаемых задач
Классификация
Классификация – разделение объектов на заранее известные классы.
Это задача обучения с учителем, она может помочь, например, в сортировке писем, разделив их на личные, рабочие и спам.
Кластеризация
Кластеризация – группировка объектов на основе данных, которые описывают сущность этих объектов. Объекты в одной группе должны быть похожи между собой и сильно отличаться от объектов в других группах.
Кластеризация является примером задачи без учителя, заранее нам неизвестны кластеры, и мы не можем измерить их правильность. Примером кластеризации может являться задача поиска похожих клиентов для продажи определенного продукта.
Регрессия
Регрессия – установление зависимости непрерывных выходных данных от входных.
Регрессия является задачей обучения с учителем, может быть использована, например, для предсказания цены недвижимости, основываясь на значениях ее определенных особенностей и признаков.
Прогнозирование
Прогнозирование – задача, аналогичная регрессии, но учитывающая временную составляющую.
Примером такой задачи обучения с учителем может являться прогноз продаж товаров с целью определения нормы товарного запаса. Прогнозируются будущие значения на основе ранее наблюдаемых значений.
Ассоциация
Ассоциация – задача установления закономерностей между связанными событиями.
Ассоциация является задачей обучения без учителя. Самым ярким примером задачи ассоциации является выявление покупок, которые обычно покупаются вместе. Например, анализ магазина напротив школы показал, что с 15 до 16 часов чаще всего вместе покупаются чипсы и газировка.
Последовательные шаблоны
Последовательные шаблоны – задача выявления закономерностей между связанными во времени событиями.
Если в задаче ассоциации рассматривается только факт появления группы товаров вместе, то в последовательных шаблонах мы рассматриваем уже последовательность появления предметов в их группах.
Анализ отклонений
Анализ отклонений – задача выявления аномалий.
Анализ аномалий необходим, чтобы выявлять нетипичные ситуации, связанные с работой программ, механизмов или даже в поведении человека, и оперативно уведомлять ответственный персонал, или даже автоматически принимать ограничивающее решение. При анализе работы программ причиной аномалии может являться наличие вируса или взлом системы, а выявленные отклонения от поведенческих паттернов, например, клиента банка – могут сигнализировать о краже банковской карты или взлома доступа в интернет банк, либо другие мошеннические действия.
Синтез
Задачи синтеза - генерации, например, текстов, аудио, видео, фотографий обычно решаются использованием специализированных нейронных сетей. Одним из примеров являются реализации голосовых помощников у Яндекс или Google. Имеются также специализированные сети способные синтезировать картины и музыку, раскрашивать черно-белые фотографии или даже фильмы.
Библиотеки, используемые при решении задач DA/ML
Основная библиотека, используемая для машинного обучения в C#, - это библиотека ML.NET от Microsoft. Одной из основных структур этой библиотеки является DataView, идея которой заимствована от SQL. В структуре DataView нет ограничения на размер данных, так как в память загружается только тот объем данных, который необходим в данный момент. Более того, в этой структуре используется lazy evaluation (отложенное вычисление), то есть она не выполняет никакие действия, пока не начнется обучение модели. Однако это создает некоторые сложности при отладке. При работе с машинным обучением, данные чаще всего хранятся в файлах .csv и .tsv, или базе данных. Уже загруженные данные в DataView также можно обрабатывать, например, их можно нормализовать, для чего DataView представляем множество возможностей. Подготовленные данные ML.NET с помощью TrainTestSplit при необходимости выполняет деление набора на обучающие и тестовые данные. При помощи обучающих классов ML.NET предоставляет используемые в data science алгоритмы (https://github.com/jeffprosise/ML.NET).
Также в .NET для машинного обучения и науке о данных используются следующие библиотеки:
Infer.NET. Данная платформа предназначена для выполнения байесовского вывода в графических моделях, а также используется для вероятностного программирования. Поддерживает кроссплатформенность.
Accord.NET. Платформа для машинного обучения в сочетании с библиотеками для обработки аудио и изображений. Данная библиотека полностью написана на C#. Используется для создания приложений компьютерного зрения, прослушивания, обработки сигналов и статистики. Поддерживает кроссплатформенную разработку.
AForge.NET. Фреймворк для компьютерного зрения и искусственного интеллекта, например, для обработки изображений, нейронных сетей, генетических алгоритмах, машинного обучения, робототехники.
Catalyst. Данная библиотека предлагает уже обученные модели для обработки естественного языка, а также предоставляет более ускоренное обучение для некоторых моделей, поддерживает кроссплатформенность.
GeneticSharp. Многоплатформенная библиотека генетических алгоритмов.
SciSharp STACK. Данная библиотека переносит все основные фреймворки для работы с машинным обучением с python на .NET. SciSharp STACK кроссплатформенна. В нее перенесены из python технологии, связанные с TensorFlow, NumPy, Keras, а также вдохновленная TensorFlow и созданная с нуля библиотека NeuralNetwork.NET, а также библиотека SciSharp Cube для использования функций машинного обучения в контейнере Docker.
m2cgen. Это инструмент командной строки для переноса обученных классических моделей машинного обучения в собственный код .NET без каких-либо зависимостей.
Наиболее полный набор методов ML реализован в виде библиотек для языка Python:
NumPy. Библиотека, предназначенная для выполнения операций линейной алгебры и численных преобразований, упрощает работу с подготовкой данных и построением модели.
Pandas. Библиотека для обработки данных, которые можно с ее помощью загрузить практически из любых источников, вычислить различные функции, создать новые параметры, построить запросы к данным, схожие с SQL-запросами.
Scikit-learn. Библиотека программного обеспечения, содержащая методы разбиения датасета на тестовый и обучающий, вычисление основных метрик над наборами данных, проведение кросс-валидации. А также данная библиотека имеет некоторые алгоритмы машинного обучения: линейная регрессия, гребневая регрессия, LASSO, метод опорных векторов, методы решающих деревьев, лесов, реализация основных методов кластеризации.
SciPy. Данная библиотека имеет огромный набор инструментов математического анализа, таких как, вычисление интегралов, обработку сигналов, изображений, вычисление экстремумов. SciPy помогает выполнять задачи оптимизации, решать системы уравнений, реализовывать генетические алгоритмы.
TensorFlow. Данная библиотека используется для построения нейронных сетей. Для работы с видеокартами NVIDIA использует библиотеку cuDNN. С помощью TensorFlow можно строить глубокие нейросети для распознавания образов и рукописного текста, а также рекуррентные сети для NLP.
Keras. Библиотека поддерживает основные виды слоев и структурных элементов для построения нейронных сетей, имеет поддержку как рекуррентных, так и сверточных сетей, а также реализацию известных архитектур нейронных сетей. Имеет готовые функции для работы с текстом и изображениями.
Theano. Данная библиотека может работать с очень большими нейросетями, она помогает снижать время разработки, оптимизировать и вычислять математические выражения.
Caffe. Содержит реализацию известных нейронных сетей, также, как и TensorFlow, для работы с видеокартами NVIDIA использует cuDNN.
pyTorch. Данная библиотека содержит реализации статических операций, алгоритмов для работы с изображениями, а также инструментов для работы с нейросетями.
Seaborn. Графическая библиотека для визуализации результатов машинного обучения, например, построения графиков временных рядов, тепловых карт и пр.
В штате компании "Кросс-Информ" работают специалисты с профильным образованием в прикладной математике, имеющие научные работы в области обработки данных и машинном обучении, а также опыт применения этих технологий на практике в коммерческих проектах.