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

Это, безусловно, захватывающее время для отрасли, когда набирают популярность множество библиотек с открытым исходным кодом (TenserFlow, PredictionIO, DeepLearning4J или см. Github), и все облачные провайдеры от Amazon, IBM , Microsoft (список продолжается) все они предлагают свои собственные инструменты, которые помогут начать работу в области AI / ML / DL.

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

Так что же такое классификационные модели?

Модель классификации пытается сделать некоторые выводы из наблюдаемых значений. Учитывая один или несколько входных данных, модель классификации попытается предсказать ценность одного или нескольких результатов. Результаты - это метки, которые можно применить к набору данных. Например, при фильтрации писем «спам» или «не спам» (также известный как «ветчина» ‹серьезно, поищите это, если вы мне не верите), при просмотре данных транзакции,« мошеннические »или« авторизованные » ”

Есть два подхода к машинному обучению: контролируемый и неконтролируемый. В контролируемой модели набор обучающих данных вводится в алгоритм классификации. Это позволяет модели узнать, что такое, например, «авторизованные» транзакции. Затем образец тестовых данных сравнивается с образцом для определения наличия «мошеннической» транзакции. Этот тип обучения подпадает под «Классификацию».

С другой стороны, неконтролируемые модели получают набор данных, который не помечен, и ищет кластеры точек данных. Его можно использовать для поиска сходства в данных, выявления закономерностей или выявления выбросов в наборе данных. Типичный вариант использования - поиск похожих изображений. Неконтролируемые модели также могут использоваться для обнаружения «мошеннических» транзакций путем поиска аномалий в наборе данных. Этот тип обучения подпадает под «кластеризацию».

Антиспам использует алгоритм классификации Наивного Байеса. Когда люди получают нежелательную почту, когда они отмечают ее как спам, слова в этом письме помещаются в базу данных под названием спам. Хорошая почта попадает в базу данных любительских (иначе называемых спамом). Со временем список слов и фраз, содержащих спам, пополняется. Затем алгоритм защиты от спама может вычислить вероятность того, является ли электронное письмо спамом или нет, и на основании этого сделать свое определение.

Существует ряд классификационных моделей. Классификационные модели включают логистическую регрессию, дерево решений, случайный лес, дерево с градиентным усилением, многослойный персептрон, один против остальных и наивный байесовский метод.

Давайте посмотрим на некоторые из них с высокого уровня.

Логистическая регрессия

Мы уже потратили некоторое время на изучение Логистической регрессии с использованием Apache Spark и Python. Он принимает некоторые входные данные и вычисляет вероятность какого-либо результата. Например, если у ребенка температура 104F (40C), и у него есть сыпь и тошнота, то вероятность того, что у него ветряная оспа, может составлять 80%. Эмпирическое правило логистической регрессии: если вероятность ›50%, то решение верно. Итак, в этом случае устанавливается, что ребенок болен ветряной оспой.

Это разновидность линейной регрессии, где модель рассчитана для вычисления некоторой зависимой переменной y на основе некоторой независимой переменной x. Тогда y = mx + b. Модель ищет коэффициент m и точку пересечения оси y b. Таким образом, вы получаете некоторую модель, например, вероятность того, что ребенок заболеет ветряной оспой, может быть примерно такой:

p(p) = 0.01 * (temperature) + 0.04 * (nausea or not) + 0.03 (rash or not) — 0.4

Деревья решений

Дерево решений - это механический способ принятия решения путем разделения входных данных на более мелкие решения. Как и другие модели, в ней задействована математика. Но это не очень сложная математика.

Вот рисунок из книги Тома Митчелла «Машинное обучение». Цель состоит в том, чтобы принять решение о том, играть ли в гольф, основываясь на комбинации температуры, влажности, ветра, а также солнечно, облачно или идет дождь. Например, если солнечно, мягко, не влажно и не ветрено, то решение играть в гольф - «да».

Дерево разделено на узлы решений и листы. Листья - это решения: да или нет. Узлами являются факторы: ветрено, солнечно и т. Д.

Подход состоит в том, чтобы посмотреть на решения и факторы, которые привели к этому решению. Он основан на концепции энтропии. Это смотрит на частотное распределение решений, а затем вычисляет логарифм. Например, полная матрица факторов, которая приводит к решению играть в гольф, заносится в таблицу. В примере с Томом Митчеллом решение играть в гольф 5 раз было «да», а 9 раз - «нет». Распределение частот "да" тогда будет

y = 5 / (5 + 9) = 0.36

и нет

N = 9 / (5 + 9) = 0.64

Обратите внимание, что y + n = 1. Затем выполняется вычисление энтропии:

e = (-y * ln (y)) + (-n * ln (n)) = 0.94

Когда энтропия равна нулю, все ответы одинаковы. Процесс повторяется, разделяя каждое решение на подусловия для каждого решения, пока энтропия не станет нулевой. Итак, следующий шаг в примере с гольфом - это принять решение играть в гольф в солнечную погоду. Тогда посмотрите на решение, когда будет солнечно и ветрено. И так далее.

Случайный лес

Этот подход к классификации аналогичен дереву решений, за исключением того, что задаваемые вопросы включают некоторую случайность. Цель состоит в том, чтобы устранить предвзятость и сгруппировать результаты на основе наиболее вероятных положительных ответов. Эти наборы положительных отзывов называются мешками.

Примером применения модели случайного леса является алгоритм, который Netflix использует для рекомендации фильмов. Он смотрит на людей с похожими вкусами, а затем рекомендует фильмы таким образом. Он отбрасывает резко отклоняющиеся ответы, используя случайность, чтобы избежать искажения ответа в неправильном направлении.

Наивный байесовский

Как мы упоминали выше, Байес используется, среди прочего, для классификации электронной почты как спама или нет. Он основан на концепции зависимой вероятности. В Байесе нет ничего необычного, это обычная статистика.

Если вы бросаете кубик, вероятность выпадения 6 равна 1/6, так как есть 6 сторон. Какова вероятность того, что вы получите 5 после выпадения 6? Это ничем не отличается от того, если вы выбросили 3 или любое другое число вместо 5, поскольку это полностью независимые события. Таким образом, вероятность выпадения 6, а затем 5 составляет (1/6) * (1/6).

Зависимая вероятность основана на том, какова вероятность одного исхода при другом исходе. Вероятность того, что электронное письмо является спамом, основана на следующих трех факторах:

  1. Сколько спама вы получаете за определенный период времени?
  2. Сколько из них содержат слово, связанное со спамом, например «лотерея».
  3. Сколько писем со словом лотерея были отмечены пользователями как спам?

Итак, мы хотим ответить на вопрос: «какова вероятность того, что новое полученное электронное письмо является спамом, учитывая, что оно содержит слово« лотерея »?»

Это вычисляется ((вероятность спама в случае «лотереи») * (вероятность спама для всей почты)) / (вероятность электронного письма, содержащего слово «лотерея»).

Итак, это несколько примеров классификационных моделей. Есть и другие. Современные среды программирования включают в себя эти методы машинного языка, чтобы программистам и специалистам по обработке данных было проще применять их в аналитике.

Kirill Fuchs is a passionate developer at Fuzz Productions in Brooklyn, NY. He builds APIs and data-driven applications for clients such as CBS and Anheuser-Busch. Fuzz is a New York based mobile app development company that specializes in designing and developing IOS, Android, and Data Driven applications. 
PS: Fuzz is hiring :)