Термин «машинное обучение» стал чрезвычайно популярным в последние несколько лет, но не всегда понятно, что именно изучается и как.

Рами Джорджи

В 2019 году FloQast выпустила продукт AutoRec, который автоматизирует процесс сверки счетов, экономя часы или дни бухгалтеров, которые в противном случае они тратили бы на ручной просмотр транзакций каждый месяц, чтобы выявить истинные исключения или согласовать элементы. Это часто достигается путем сравнения двух наборов данных, таких как главная бухгалтерская книга, с банковской выпиской.

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

Итак, мы спросили себя, можем ли мы использовать здесь машинное обучение? В то время я был новичком в команде движков и не имел опыта машинного обучения. У меня было больше вопросов, чем ответов.

Даже сегодня есть ряд вопросов о машинном обучении (а также довольно много неправильных терминов) и его возможностях. Итак, я попытаюсь помочь вам создать базовое представление о том, что такое машинное обучение и как оно работает.

(Очень) краткое введение в машинное обучение

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

Давайте начнем с того, как мы, люди, можем учиться на данных, которые нам представляют. Предположим, вам дали следующие данные и попросили выяснить, какими могут быть значения для A и B:

(A x 2) + ( B x 10) = 30

(A x 3) + ( B x 20) = 55

(A x 5) + ( B x 30) = 85

Вероятно, вы правильно пришли к выводу, что A = 5 и B = 2. [Примечание редактора: насколько я понял, математики не будет…]. Теперь подумайте о процессе, который происходил в вашем уме, когда вы решали проблему. Возможно, это выглядело примерно так:

  1. Угадайте начальные значения для A и B
  2. Вычислить результат для каждой строки, используя выбранные значения
  3. Сравните результаты с данными ответами
  4. Отрегулируйте значения для A и B и повторяйте, пока результаты не совпадут с ответами (насколько это возможно)

Мы только что описали цикл обучения! Тот же процесс используется в машинном обучении, где цель состоит в том, чтобы узнать оптимальные значения для A и B (также известные как веса) на основе заданных ответов. А поскольку нам дают ответы для проверки, это называется обучение с учителем.

В этом примере у нас есть два входных функции, значения [2, 3, 5] и [10, 20, 30], которые соответствуют весам A и B соответственно, но на самом деле могут быть сотни или тысячи функций, которые представляют разные фрагменты данных. Функции — это точки данных, которые описывают проблему, которую вы пытаетесь решить. Итак, если вы пытаетесь предсказать цены на жилье, ваши характеристики могут включать такие параметры, как площадь в квадратных метрах, количество спален, количество ванных комнат и т. д.

Конечно, возникает вопрос:

Как именно машина знает, как имитировать описанный выше процесс угадывания и корректировки весов?

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

Теперь, когда мы узнали оптимальные веса на основе заданных входных данных (также известных как данные для обучения), у нас есть модель (читай: набор весов), которую можно использовать. чтобы предсказать вывод новых данных, для которых у нас нет ответов.

У вас также может возникнуть проблема бинарной классификации, в которой обучающие ответы равны 1 (да) или 0 (нет), а модель будет обучена прогнозировать значение (также известное как вероятность) между 0 и 1, и в этом случае вы можете считать вероятность 0,5 или выше прогнозом да.

Вернемся к нашей проблеме сопоставления транзакций

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

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

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

Первоначально опубликовано на https://floqast.com 27 октября 2020 г.