Вдохновленный исчислением причинно-следственных связей Джудеи Перл, платформа с открытым исходным кодом предоставляет программный интерфейс для популярных методов причинно-следственного вывода.

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



Человеческий разум обладает замечательной способностью связывать причины с конкретным событием. От результата выборов до падения предмета на пол мы постоянно связываем цепочки событий, которые вызывают определенный эффект. Нейропсихология называет эту когнитивную способность причинным рассуждением. Информатика и экономика изучают особую форму причинных рассуждений, известную как причинный вывод, которая фокусируется на изучении взаимосвязей между двумя наблюдаемыми переменными. За прошедшие годы машинное обучение привело к появлению множества методов причинно-следственного вывода, но их по-прежнему трудно использовать в основных приложениях. Недавно Microsoft Research открыла исходный код DoWhy, основу для причинного мышления и анализа.

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

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

Представляем DoWhy

Microsoft’s DoWhy - это библиотека на основе Python для вывода и анализа причинно-следственных связей, которая пытается упростить внедрение причинно-следственных связей в приложениях машинного обучения. Вдохновленный исчислением причинно-следственных связей Джудеи Перл, DoWhy объединяет несколько методов причинного вывода в рамках простой модели программирования, которая устраняет многие сложности традиционных подходов. По сравнению со своими предшественниками DoWhy вносит три ключевых вклада в реализацию моделей причинного вывода.

  1. Предоставляет принципиальный способ моделирования данной проблемы в виде причинно-следственного графа, чтобы все предположения были явными.
  2. Предоставляет унифицированный интерфейс для многих популярных методов причинно-следственного вывода, объединяя две основные структуры графических моделей и потенциальных результатов.
  3. Автоматически проверяет правильность предположений, если это возможно, и оценивает устойчивость оценки к нарушениям.

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

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

  1. Модель: DoWhy моделирует каждую проблему с помощью графа причинно-следственных связей. Текущая версия DoWhy поддерживает два формата ввода графиков: gml (предпочтительно) и точка. График может включать предварительные знания о причинно-следственных связях в переменных, но DoWhy не делает никаких немедленных предположений.
  2. Определить: Используя входной график, DoWhy находит все возможные способы определения желаемого причинно-следственного эффекта на основе графической модели. Он использует критерии на основе графиков и практическое исчисление, чтобы найти потенциальные способы поиска выражений, которые могут идентифицировать причинный эффект.
  3. Оценка: DoWhy оценивает причинно-следственный эффект с помощью статистических методов, таких как сопоставление или инструментальные переменные. Текущая версия DoWhy поддерживает такие методы оценки, как стратификация на основе склонности или сопоставление оценок склонности, которые ориентированы на оценку назначения лечения, а также методы регрессии, ориентированные на оценку поверхности ответа.
  4. Проверить. Наконец, DoWhy использует различные методы надежности для проверки достоверности причинного эффекта.

Использование DoWhy

Разработчики могут начать использовать DoWhy, установив модуль Python с помощью следующей команды:

python setup.py install

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

Treatment    Outcome        w0
0   2.964978   5.858518 -3.173399
1   3.696709   7.945649 -1.936995
2   2.125228   4.076005 -3.975566
3   6.635687  13.471594  0.772480
4   9.600072  19.577649  3.922406

DoWhy полагается на фреймы данных pandas для захвата входных данных:

rvar = 1 if np.random.uniform() >0.5 else 0 
data_dict = dowhy.datasets.xy_dataset(10000, effect=rvar, sd_error=0.2) 
df = data_dict['df']
print(df[["Treatment", "Outcome", "w0"]].head())

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

model= CausalModel(
        data=df,
        treatment=data_dict["treatment_name"],
        outcome=data_dict["outcome_name"],
        common_causes=data_dict["common_causes_names"],
        instruments=data_dict["instrument_names"])
model.view_model(layout="dot")
from IPython.display import Image, display
display(Image(filename="causal_model.png"))

Следующим шагом является определение причинно-следственных связей на графике:

identified_estimand = model.identify_effect()

Теперь мы можем оценить причинно-следственный эффект и определить, верна ли оценка. В этом примере для простоты используется линейная регрессия:

estimate = model.estimate_effect(identified_estimand,
        method_name="backdoor.linear_regression")
# Plot Slope of line between treamtent and outcome =causal effect
dowhy.plotter.plot_causal_effect(estimate, df[data_dict["treatment_name"]], df[data_dict["outcome_name"]])

Наконец, мы можем использовать другую технику, чтобы опровергнуть причинно-следственную оценку:

res_random=model.refute_estimate(identified_estimand, estimate, method_name="random_common_cause")

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