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

Без трудоемкой и детальной работы сложно закодировать экспертные знания, помимо трудоемкой разработки функций.

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

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

Обсуждаемые здесь результаты и фрагменты кода можно найти в этом блокноте / репо.

Введение в байесовские сети и графы

Байесовские сети работают с графами, которые представляют собой объекты, состоящие из ребер и узлов. На изображении ниже показан график, описывающий ситуацию во время обеда с тремя узлами (голод, готовка, время обеда) и границами между ними (стрелки).

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

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

Здесь этот график кодирует, что приготовление чего-либо может означать, что настало время обеда, но время обеда не означает, что вы что-то готовите - вы также можете обедать вне дома или пропускать обед.

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

Совместное распределение вероятности и условной вероятности.

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

p(h,c,lt) = p(lt|h,c)*p(c|h)*p(h)

в котором говорится, что вероятность «голоден (ч) и приготовление © и время обеда (л)» такая же, как «время обеда, умноженное на вероятность того, что я готовлю, учитывая, что я голоден, умноженное на вероятность, что я голоден» . Это может показаться сложным, но это единственное уравнение кодирует всю нашу проблему, узлы и ребра, которые можно использовать для создания выводов на нашем графике и контрфактических анализов (см. Ниже).

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

Вывод о байесовских сетях

Закодировав наши экспертные знания, следующий шаг - подготовиться к некоторым выводам, то есть сделать прогнозы.

Представьте, что я собрал некоторые данные в течение недели, что привело к таблице ниже:

Из этой таблицы нам нужно создать таблицы условной вероятности p (lt | h, c), p (c | h) и p (h), чтобы затем создать совместное распределение вероятностей.

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

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

Применение байесовских сетей к проблеме «реального мира»

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

  • Уровень образования
  • Опыт работы
  • Водить машину
  • Социальная приверженность
  • Макет и шрифт, используемые в приложении (в дальнейшем сокращается до шрифта), и
  • Был ли принят на работу соответствующий кандидат.

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

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

Создание ориентированного ациклического графа (DAG) для описания данных, если оно выполняется точно, может быть довольно затратным в вычислительном отношении, поскольку проблема поиска структуры масштабируется сверхэкспоненциально с количеством переменных / узлов. Метод, который может обойти эту проблему, - это NOTEARS-алгоритм, который снижает вычислительную сложность примерно до O (n³). DAG, используемый для этого набора данных, показан ниже. Чтобы ускорить наши вычисления, непрерывные распределения были дискретизированы до пяти различных уровней.

Распределение условной вероятности на обучающем наборе, состоящем из 85% общих данных, дает модель с площадью под кривой ~ 0,95.

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

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

Поскольку все распределение значений является приблизительным, для каждой категории дается оценка достоверности от 0 до 1, где оценка 1 для `` нанятого '' означает, что кандидат обязательно будет принят на работу, и, к сожалению, для кандидата 3917 их оценка 1 «не нанятые» означает, что они не будут приняты на работу.

Контрфактический анализ и вмешательства

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

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

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

Вывод

Байесовские сети заполняют важный пробел в мире машинного обучения, преодолевая разрыв между другими простыми и быстрыми моделями (линейными, логистическими и т. Д.), В которых отсутствует информация о вероятности (читай: обеспечение достоверности прогноза), и вычислительно тяжелыми и требовательными к данным методами как и глубокие байесовские нейронные сети. Более того, они предлагают редкую возможность изучить причинно-следственную связь. Выполнение контрфактического анализа (Если я изменю переменную A, что произойдет с общим результатом?) Позволяет нам изучать данные способом, который еще не открыт для мощных методов глубокого обучения (хотя работа над этим продолжается).

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