Использование причинно-следственной связи: как ИИ может помочь людям замедлить старение

Как ИИ может помочь людям жить дольше, рекомендуя действия, связанные с образом жизни?

Автор: Шубханги Ранджан

Эта статья изначально появилась в блоге Омдены.

Постановка задачи

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

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

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

Причинный вывод

Ассоциация не подразумевает причинно-следственную связь

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

Корреляция и причинность могут показаться обманчиво похожими. Хотя причинность и корреляция могут существовать одновременно, корреляция не подразумевает причинно-следственной связи. Причинность явно применяется к случаям, когда действие А вызывает результат Б. С другой стороны, корреляция — это просто отношение. Действие A связано с действием B, но одно событие не обязательно приводит к другому событию. Таким образом, корреляции могут привести к неправильным предположениям.

В корреляциях используется обозначение P (x | y), то есть вероятность x при заданном y: например, вероятность заболевания при условии, что человек употребляет алкоголь. Однако в причинном исчислении делается очень маленькое, но важное изменение. Вместо P(x|y) это P(x|do(y)), т.е. вероятность x при условии, что выполнено y: например, вероятность более низкого биологического возраста при условии, что я начну заниматься высокоинтенсивной деятельностью. "Делать" очень важно: оно представляет собой вмешательство, фактическое выполнение чего-то, что вызовет эффект.

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

Концептуальная основа (структурно-причинные графики):

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

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

Моделирование рандомизированных контролируемых испытаний:

Данные, которые мы использовали, относятся к 5 людям в течение 6 месяцев, записанным с таких устройств, как fitbit. Кроме того, пользователь вручную вводит данные, такие как эффективность сна, усталость, стресс, оценка оживления с оценкой 10.

Рандомизированные эксперименты являются золотым стандартом для вывода о причинно-следственных связях, потому что назначение лечения является случайным и физически манипулируемым: одна группа получает лечение, а другая нет. Предположения здесь просты, защищены по замыслу и могут быть удобно защищены. Когда нет контроля над назначением лечения, как в случае с данными наблюдения, мы пытаемся его смоделировать. Моделирование здесь равносильно утверждению: «Мы предполагаем, что после поправки на возраст, пол, вес, максимальную частоту сердечных сокращений, потребление алкоголя, социально-экономические факторы, этническую принадлежность бегуны и не бегуны настолько похожи друг на друга, как если бы они были случайным образом назначены для бега». ».

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

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

def get_cluster_groups(df):
'''
Function to assign a cluster group to every individual using Agglomerative clustering
Input -> df <dataframe> -> dataframe with demographic details of individuals
Output -> df <dataframe> -> dataframe with cluster groups column added to the demographic details
'''
df_scaled = scale_data(df = df, except_cols = ['Unnamed: 0', 'person_id', 'Minutes Asleep', 'Number of Steps',
'Sleep Efficiency', 'Very Active Minutes', 'composition_score',
'deep_sleep_in_minutes', 'duration_score', 'glasses_of_fluid',
'lightly_active_minutes', 'meal_count', 'moderately_active_minutes',
'mood', 'readiness', 'revitalization_score', 'total_calories',
'total_distance', 'BA', 'fatigue_inv', 'stress_inv', 'restlessness_inv'])
plt.figure(figsize=(20, 10))
plt.title('Dendrogram')
dendo = shc.dendrogram(
shc.linkage(df_scaled[df_scaled.columns.difference(['person_id'])].values,
method='ward',
metric='euclidean'),
truncate_mode='lastp',
p=40,
show_contracted=True)
cluster = AgglomerativeClustering(n_clusters=3,
affinity='euclidean',
linkage='ward')
groups = cluster.fit_predict(
df_scaled[df_scaled.columns.difference(
['Participant ID'])].values)

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

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

PyMatch — это библиотека Python, в которой представлены методы сопоставления для исследований с наблюдением, и она представляет собой реализацию пакета R Matching на Python. PyMatch поддерживает сопоставление показателей склонности как для дискретных, так и для непрерывных переменных, которые мы использовали во время нашего проекта.

Более подробную информацию о PyMatch можно найти в следующем репозитории GitHub: https://github.com/benmiroglio/pymatch.

Подбор модели начальной оценки склонности

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

Соответствие

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

Теперь мы используем функцию model.match(), чтобы начать реализацию сопоставления. Это делается с заменой, что означает, что одна запись большинства (в нашем случае y = 1) может быть сопоставлена ​​с несколькими записями меньшинства (y = 0). Matcher присваивает каждой записи в тестовой и контрольной группах уникальный идентификатор record_id, чтобы это можно было исправить после сопоставления. В конце этого раздела результаты распечатываются, и мы можем наблюдать, что каждая пара совпадений имеет оценки в пределах 0,0001 друг от друга.

Оценка совпадений

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

Машинное обучение для рекомендаций:

С помощью сопоставленного набора данных (Matched_df) мы теперь можем обучить модель машинного обучения и вывести причинно-следственную связь. Мы использовали модель логистической регрессии и выполнили гиперпараметрическую настройку ее параметра регуляризации C.

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import GridSearchCV, StratifiedKFold
Log_model = LogisticRegression(max_iter = 1000)
grid_values = {'C':[0.000,0.001,0.01, 0.1, 1, 10, 100, 1000], 'penalty': ['l2']}
cross_validation = StratifiedKFold(n_splits = 5)
grid_log_model = GridSearchCV(Log_model, param_grid = grid_values, scoring = 'accuracy', cv = cross_validation)
grid_log_model.fit(X_train, y_train)
print(grid_log_model.best_params_)
print(grid_log_model.best_score_)
{'C': 0.001, 'penalty': 'l2'}
0.5112658459795772
Log_model = LogisticRegression(max_iter = 1000, C = grid_log_model.best_params_['C']).fit(X_train, y_train)
y_pred_lr = Log_model.predict(X_test)
accuracy_score(y_test, y_pred_lr)
0.4662045060658579

Вывод

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

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