![]() |
![]() |
![]() |
![]() |
4 пакета Python для причинно-следственного анализа данных |
|
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2022-08-26 22:14 ![]() Причинно-следственный анализ — это область экспериментальной статистики, направленная на установление и обоснование причинно-следственных связей. Использование статистических алгоритмов для доказательства причинно-следственных связей в наборе данных при строгом допущении называется эксплораторным причинно-следственным анализом (ЭПСА). ЭПСА — это способ доказать причинно-следственные связи с помощью более контролируемых экспериментов, а не только на основе корреляции. Часто требуется испытать контрфактическое состояние — иное состояние при других обстоятельствах. Проблема в том, что корреляционный анализ позволяет приблизительно установить только причинно-следственные связи, но не контрфактические. ![]() Анализ причинно-следственных связей — это совершенно другая область исследований в науке о данных, поскольку он отличается от предсказаний, полученных в результате моделирования с помощью машинного обучения. Можно всегда предсказать результат МО на основе имеющихся данных, но не то, что выходит за рамки этих данных. Чтобы узнать больше о причинно-следственном анализе, познакомимся с 4 пакетами Python, которые можно использовать для исследования данных. 1. Causalinference Causalinference — это пакет Python, который предоставляет различные статистические методы причинно-следственного анализа. Это простой пакет, используемый для изучения основ причинно-следственного анализа. Causalinference обладает такими особенностями, как:
Более подробное объяснение каждого из приведенных свойств можно найти здесь. Для испытания пакета Causalinference сначала установим его: pip install causalinference После завершения установки реализуем модель причинно-следственных связей для ЭПСА. Будем использовать случайные данные, полученные из пакета causalinference. from causalinference import CausalModel #Y - результат, D - статус воздействия, а X - независимая переменная. Y, D, X = random_data() Классификационная модель print(causal.summary_stats) ![]() Используя атрибут Главной частью причинно-следственного анализа является получение информации об эффекте воздействия. Проще всего это сделать с помощью обычного метода наименьших квадратов. causal.est_via_ols() ![]()
Используя эту информацию, можно оценить, имеет ли воздействие эффект по сравнению с контролем. Используя метод определения меры склонности, можно также получить информацию о вероятности воздействия в зависимости от независимых переменных. causal.est_propensity_s() ![]() 2. Causallib Causallib — это пакет Python для причинно-следственного анализа, разработанный компанией IBM. Пакет предоставляет API причинно-следственного анализа, объединенный с API Scikit-Learn, что позволяет создавать сложные модели обучения с помощью метода fit-and-predict (подгонки и предсказания). Чем особенно хорош пакет Causallib, так это количеством ноутбуков-примеров, которые можно использовать в процессе обучения. ![]() Итак, приступим к использованию пакета causallib для обучения. Сначала нужно установить его: pip install causallib Теперь используем образец набора данных из пакета causallib и проведем причинно-следственный анализ с помощью модели из Scikit-Learn: from sklearn.linear_model import LogisticRegression data = load_nhefs() Приведенный выше код загружает данные исследования отдаленных результатов влияния курения на здоровье. Для установления и оценки причинно-следственного эффекта воспользуемся моделью логистической регрессии в качестве причинно-следственной модели. Посмотрим на потенциальный результат и эффект воздействия. print(potential_outcomes) ![]() Анализируя потенциальные исходы, видим, что средняя разница в весе, если бы все бросили курить (1), составляет 5,38 кг, а средняя разница в весе, если бы все курили постоянно (0), составляет 1,71 кг. Это означает, что средняя разница в весе составляет около 3,67 кг. Таким образом, можно сделать вывод, что лечение от курения сократит увеличение веса примерно на 3,67 кг. 3. Causalimpact Causalimpact — это пакет Python для причинно-следственного анализа, позволяющий оценить причинно-следственный эффект интервенции в отношении временных рядов. Цель анализа — определить разницу между воздействием до и после факта. Causalimpact анализирует временной ряд ответа (например, клики, действие лекарства и т. д.) и временной ряд контроля (тот же ответ, но в более контролируемой среде) с помощью байесовской структурной модели временных рядов. Эта модель предсказывает контрфактический результат (что будет, если интервенции не случится), а затем позволяет сравнить его с фактическим результатом. Начнем использовать пакет, предварительно его установив: pip install causalimpact После завершения установки пакета необходимо создать имитационные данные. Создадим набор данных со 100 наблюдениями, где эффект интервенции будет наблюдаться после временной точки 71. import numpy as np np.random.seed(1) x1 = arma_generate_sample(ar=[0.999], ma=[0.9], nsample=100) + 100 y[71:100] = y[71:100] + 10 ![]() Как видно выше, получены зависимая переменная (y) и независимая переменная (x1). Обычно у нас имеется более одной независимой переменной, но будем придерживаться текущих данных. Запустим анализ с этими данными, указав период до интервенции и после. impact = CausalImpact(data, pre_period, post_period) ![]() Приведенный выше граф представляет собой три набора информации.
Получить информацию из каждой точки данных можно так: impact.inferences ![]() Суммарный результат (сводку) можно получить с помощью следующего кода: impact.summary() ![]() Сводка позволяет оценить, имела ли интервенция причинно-следственный эффект. Если потребуется более подробный отчет, можно использовать следующий код: impact.summary(output = 'report') ![]() Чтобы узнать больше о причинно-следственном анализе интервенции на основе временных рядов, ознакомьтесь с документацией Causalimpact. 4. DoWhy DoWhy — это пакет Python, который обеспечивает современный причинно-следственный анализ. Он оснащен простым API и полной документацией. Как следует из документации, DoWhy выполняет анализ причинно-следственных связей в 4 этапа.
Проведем анализ причинно-следственных связей с помощью пакета DoWhy. Сначала установим его, выполнив следующий код: pip install dowhy В качестве образца набора данных будем использовать рандомизированный набор данных из пакета DoWhy. from dowhy import CausalModel # Загрузка пробных данных Теперь, с учетом графа и предположений, можно создать причинно-следственную модель. Создание причинно-следственной модели на основе данных и заданного графа: model = CausalModel( ![]() Далее нужно определить причинно-следственный эффект с помощью следующего кода: #Определение причинно-следственного эффекта: ![]() Определив причинно-следственный эффект, можно оценить, насколько он статистически точен. estimate = model.estimate_effect(identified_estimand, method_name="backdoor.propensity_score_matching") ![]() Оценка причинно-следственного эффекта основана на статистической оценке данных, но сама обусловленность не основана на данных. Скорее, она основана на предположениях, сделанных ранее. Необходимо проверить обоснованность предположений с помощью проверки правильности расчетов (робастности). refute_results = model.refute_estimate(identified_estimand, estimate, method_name="random_common_cause") ![]() На этом анализ причинно-следственных связей завершается и можно использовать полученную информацию для принятия решения о наличии или отсутствии причинно-следственного эффекта от воздействия. Читайте также:
Источник: Nuances of Programming Источник: m.vk.com Комментарии: |
|