Машинное обучение… Все началось 2 года назад, когда я присоединился к небольшому, но очень амбициозному стартапу Wynk Limited. Задача создания интеллектуального Поиска и Открытия Музыки вскоре легла на мою тарелку. Это было мое первое знакомство с машинным обучением, когда я продолжил изучение музыкальных рекомендаций, самовнушения и переоценки релевантности для поиска. Сегодня, после двух лет практики разработки программного обеспечения и машинного обучения, я сижу здесь, в Университете штата Северная Каролина, за полмира отсюда, и все еще занимаюсь разработкой программного обеспечения и машинным обучением. Одна вещь, которую я должен был вам сказать, это то, что машинное обучение может быть настолько простым, насколько вы хотите, настолько сложным, насколько вы хотите! Вы можете выехать в любое время, когда захотите, но вы никогда не сможете уйти!. Ха-ха, не совсем так, но машинное обучение завораживает. В этом посте я пытаюсь понять детали машинного обучения высокого уровня, особенно в отношении бизнеса. Я пытаюсь объяснить и понять, почему важна простая и понятная базовая модель, прежде чем углубляться в готовые сложные модели машинного обучения.

Большинство задач, которые я решил, связаны с обработкой естественного языка и включают векторизацию слов. Частота слов может быть смоделирована как вероятностное распределение. Следовательно, чаще всего я строю Наивную байесовскую модель в качестве базовой линии, а затем перехожу к построению более сложных моделей, таких как Дерево решений, Машина опорных векторов и Случайный лес. Ждать…! Но что это за модели? Почему я называю одни базовыми, а другие сложными. Прежде чем я углублюсь в это, позвольте мне рассказать вам, почему базовый уровень важен.

«Дайте мне в любое время плодотворное заблуждение, полное семян, рассыпающееся собственными исправлениями. Вы можете оставить свою стерильную правду при себе» — Вильфредо Парето.

Мы последовательно разрабатываем сложное и сложное программное обеспечение, и неизменно выигрывают простые программы. Понятность является важным критерием для модели машинного обучения. Именно поэтому мы сначала строим простую, понятную и разумную модель в качестве базовой. Затем создайте более сложный вариант поверх этого и каждый раз добивайтесь большего успеха, чем базовый уровень.

Наивная байесовская модель — это вероятностная модель, основанная на «наивном» предположении, что все функции условно независимы. Это не только легко понять и объяснить, но и очень эффективно с точки зрения вычислений. И почти всегда Наивный Байес оказывается лучше, чем случайное предположение. Однако я не утверждаю здесь, что базовая линия всегда будет наивной байесовской. Все, что я говорю, это то, что NB — это фантастическая исходная базовая модель.

Классификация — очень фундаментальная задача в машинном обучении. Деревья решений очень интуитивны в этом аспекте, так как они очень понятны. Как создается дерево решений? Ну, это просто. Ищите максимальное разнообразие среди всех функций, разделяйте на функцию, которая минимизирует разнообразие обоих разделений, и рекурсивно делайте это снова и снова, пока не убедитесь, что разнообразие сведено к минимуму. В случае категориальных признаков (порядковых и номинальных) в качестве меры разнообразия используется энтропия. В то время как стандартное отклонение используется для числовых категорий (интервал и отношение). Случайные леса — это просто набор этих деревьев решений, также известных как ансамбль. Ансамбль обобщает решение, основанное на нескольких моделях, поэтому ошибка обычно ниже, чем у отдельной модели. Однако сейчас мы начинаем терять понятность!

Метод опорных векторов (SVM) немного отличается от других моделей. SVM построен на том факте, что некоторые точки данных важнее других, особенно те, которые находятся очень близко к границе принятия решения. Эти точки (по сути, векторы) называются опорными векторами. SVM пытается максимизировать разницу между метками классов. Используя сложный множитель Лагранжа и квадратичное программирование, SVM предлагает точки данных (векторы), которые наиболее полезны для дифференциации классов. Хотя из математики кажется, что SVM — очень сложная модель. Однако, если присмотреться, каждый шаг двойных и простых задач SVM можно объяснить геометрически. Я считаю, что SVM понятен, поскольку он дает нам определенные векторы, которые различают метки классов. Более того, мы можем ввести штраф за неправильную классификацию в задаче оптимизации, чтобы получить столько жесткой границы для классификации, сколько мы хотим.

Вот несколько шагов решения проблемы машинного обучения:

  • Определите свою проблему и набор данных.
  • Очистка данных, предварительная обработка и простая визуализация для понимания шаблонов различных переменных и меток классов.
  • Придумайте базовую модель. Как видите, наивный байесовский метод действует как чрезвычайно хорошая базовая модель благодаря вероятностному подходу. Это понятно и просто.
  • Установите свои базовые показатели оценки, такие как точность, отзыв, оценка F1, оценка F2 и т. д.
  • Попробуйте 2–3 разные модели, чтобы понять лучшую базовую модель, такую ​​как NB, дерево решений, случайный лес, SVM и т. д.
  • Настало время настоящего инженерного дела. Начните с различных процессов, которые используются на практике, таких как уменьшение размерности, использование различных ядер, добавление внешних функций (встраивание слов в НЛП), анализ основных компонентов и т. д. Комбинируйте различные классификаторы, оптимизированные для определенных меток классов. Например, используйте классификатор Max Voting из 2 разных классификаторов, скажем, SVM с линейным ядром и Random Forest, чтобы предсказать 2 разных метки класса.
  • Сравните производительность нового классификатора с базовым уровнем на основе показателей оценки, которые были определены ранее.
  • Если производительность выше, установите эту модель в качестве основы для будущих разработок. И продолжать, и продолжать. По мере того, как для вашей задачи будет появляться все больше и больше разнообразных данных, вы обнаружите необходимость постоянно превосходить базовую модель. Вы можете победить его, создав новые модели, улучшив гиперпараметры базовой модели или новой модели.

Обычно случается, что мы теряем понятность, когда переходим к более сложным моделям. Но если у нас есть хорошие базовые модели, мы всегда можем исследовать понятность с точки зрения этих моделей. Например, мы создаем модель задачи обработки естественного языка, используя NB для категоризации новостных статей в Интернете. Модель глубокого обучения с обученным Global Vector встраиванием слов с блоками долговременной кратковременной памяти может работать лучше. Но как мы объясним использование Word Embeddings? Мы смотрим на основные слова, используемые для классификации в случае модели NB, сравниваем ее с этой моделью нейронной сети и исследуем понятность. Модель машинного обучения без надлежащего понимания — это черный ящик. Бизнес не процветает на черном ящике. Бизнес работает на действенной аналитике, понимании экспериментов, успехов и неудач. По сути, понимание каждой развернутой функции. Причина, по которой конкретная модель работает и не работает.

Базовые показатели важны в бизнесе. Базовые показатели важны для быстрого выполнения нескольких итераций. Базовые показатели — это ориентиры для вашего варианта использования. Часто требуется развернуть несколько версий продукта и записать результаты экспериментов для анализа модели. Затем мы изучаем плюсы и минусы конкретной модели не только с точки зрения базовых показателей оценки, но и с точки зрения реального клиентского опыта. Модель «черного ящика» не позволяет нам использовать выводы из этого результата. Однако комплексная модель позволяет нам понять, почему одни функции работают, а другие — нет. Базовый уровень важен для обеспечения понятности сложных задач машинного обучения и бизнеса.

Давайте продолжим изучение приложений машинного обучения в следующих блогах…

Поскольку я работаю в основном с обработкой естественного языка и в основном с текстовым поиском. Я написал несколько блогов о настройке и использовании apache SOLR в предыдущих историях, т. е. что такое SOLR, настройка solr и настройка solr.