AI-мониторинг психического состояния через носимые устройства
Пациенты с хроническим стрессом часто не замечают ухудшения до кризиса. Носимые устройства — Apple Watch, Garmin, Oura Ring — фиксируют физиологию (ЧСС, HRV, ЭКС), но сырые данные бесполезны без интеллектуальной интерпретации. Наша команда с 7+ лет опыта в AI/ML для healthcare разрабатывает системы, которые превращают сырые сенсорные потоки в интерпретируемые метрики стресса и тревоги. Ключевая проблема — межперсональная вариабельность: RMSSD = 30 мс может быть нормой для одного и сигналом тревоги для другого. Без персонализации модели ошибаются в 40% случаев. Мы предлагаем решение, которое адаптируется под каждого пользователя за 2 недели сбора данных. Результат — AUC 0.82–0.88 на тестах, что на 15–20% лучше единых моделей. Оценим ваш проект за 2 дня и предложим решение под ключ. Свяжитесь с нами для предварительного анализа.
Физиологические маркеры психического состояния
Вегетативная нервная система (ВНС) напрямую отражает стресс-ответ. Симпатическая активация ведёт к тахикардии, снижению HRV, усилению потоотделения и повышению температуры кожи. Ключевые биомаркеры сведены в таблицу:
| Биомаркер | Физиологический смысл | Индикатор стресса |
|---|---|---|
| RMSSD (HRV) | Парасимпатический тонус | Снижение = стресс |
| LF/HF ratio | Симпато-вагальный баланс | Рост = симпатическая активация |
| EDA tonic (SCL) | Базовый уровень возбуждения | Повышение при хроническом стрессе |
| EDA phasic (SCR) | Острые реакции | Частота и амплитуда растут |
| Периферическая температура | Вазоконстрикция | Снижение при симпатической активации |
| Актиграфия | Двигательная активность | Беспокойность, нарушения сна |
Feature Engineering из физиологических данных
HRV фичи во временной и частотной областях:
def compute_hrv_stress_features(rr_intervals_ms, window_sec=300): """ 5-минутное окно — стандарт для HRV анализа (Task Force) """ rr = np.array(rr_intervals_ms) # Временные метрики time_features = { 'rmssd': np.sqrt(np.mean(np.diff(rr)**2)), 'sdnn': np.std(rr), 'pnn50': np.mean(np.abs(np.diff(rr)) > 50), 'mean_rr': np.mean(rr), 'cv_rr': np.std(rr) / np.mean(rr) # coefficient of variation } # Частотные метрики (PSD через Welch) from scipy.signal import welch f, psd = welch(rr - np.mean(rr), fs=4.0, nperseg=256) # upsampled to 4 Hz lf_mask = (f >= 0.04) & (f < 0.15) hf_mask = (f >= 0.15) & (f < 0.40) lf_power = np.trapz(psd[lf_mask], f[lf_mask]) hf_power = np.trapz(psd[hf_mask], f[hf_mask]) freq_features = { 'lf_power_ms2': lf_power, 'hf_power_ms2': hf_power, 'lf_hf_ratio': lf_power / (hf_power + 1e-8), 'total_power': np.trapz(psd, f) } return {**time_features, **freq_features} EDA обработка с использованием neurokit2:
import neurokit2 as nk def process_eda_signal(eda_raw, sampling_rate=64): """ neurokit2: разложение EDA на tonic (SCL) + phasic (SCR) компоненты """ signals, info = nk.eda_process(eda_raw, sampling_rate=sampling_rate) return { 'scl_mean': signals['EDA_Tonic'].mean(), 'scr_count': len(info['SCR_Onsets']), # число острых стресс-реакций 'scr_amplitude_mean': signals['SCR_Amplitude'].mean(), 'scr_recovery_time': signals['SCR_RecoveryTime'].mean() } Как AI анализирует данные носимых устройств?
Мы строим бин-классификаторы стресса на основе Random Forest или XGBoost, используя комбинацию HRV, EDA и актиграфии. Модели обучаются на публичных датасетах (WESAD, DEAP) с последующей адаптацией под целевую популяцию через transfer learning. Для продакшена применяем ONNX Runtime с INT8-квантизацией — latency p99 < 50 мс на устройстве.
Почему персонализированный baseline критичен?
Абсолютное значение RMSSD = 30 мс может быть нормой для одного человека и низким для другого. Мы используем скользящее среднее за 2 недели для каждого пользователя:
def personalized_stress_score(current_hrv, personal_baseline_hrv): """ Относительное отклонение от персонального baseline Более интерпретируемо, чем абсолютные значения """ hrv_deviation = (current_hrv['rmssd'] - personal_baseline_hrv['rmssd_mean']) / personal_baseline_hrv['rmssd_std'] return -hrv_deviation # инвертируем: снижение HRV = рост стресса Мультимодальная фузия
Late fusion объединяет scores от каждого сенсора, что обеспечивает надёжность при отсутствии одного из каналов (например, нет EDA):
def fuse_modalities(hrv_features, eda_features, actigraphy_features): hrv_score = hrv_stress_model.predict_proba([hrv_features])[0][1] eda_score = eda_stress_model.predict_proba([eda_features])[0][1] activity_score = activity_stress_model.predict_proba([actigraphy_features])[0][1] final_score = 0.45 * hrv_score + 0.35 * eda_score + 0.20 * activity_score return final_score Такой подход даёт AUC 0.82–0.88 на внутренних тестах — это на 15–20% лучше, чем использование только HRV.
Сравнение моделей: что выбрать?
| Модель | AUC (WESAD) | Latency p99 (мс) | Размер (MB) |
|---|---|---|---|
| Random Forest | 0.78 | 2.1 | 0.5 |
| XGBoost | 0.82 | 3.4 | 1.2 |
| LightGBM | 0.81 | 2.8 | 0.8 |
| Нейросеть (MLP) | 0.85 | 8.0 | 2.5 |
XGBoost даёт лучшее соотношение точности и скорости. Для edge-устройств мы квантизируем до INT8 — размер сжимается в 4 раза без потери AUC.
Цифровое фенотипирование настроения
Digital phenotyping из смартфона включает screen time, GPS-трекинг, социальные взаимодействия и паттерны сна. По этим данным мы предсказываем PHQ-9 score с точностью AUC 0.75-0.82. Это не заменяет опросник, но позволяет выявлять тенденции без активного заполнения.
Ограничения и этические аспекты
Точность моделей зависит от контекста: лабораторный стресс (TSST) отличается от реального. Мы не ставим диагнозы — система рекомендует обратиться к специалисту при высоком stress-score. Все психологические данные обрабатываются на edge для соблюдения GDPR (Art. 9). Обучающие выборки содержат bias — мы работаем над диверсификацией.
Детальные метрики HRV
| Метрика | Описание | Стресс-индикатор |
|---|---|---|
| SDNN | Стандартное отклонение NN-интервалов | <50 мс: высокий риск |
| pNN50 | Доля соседних RR >50 мс | <3%: сниженный парасимпатический тонус |
| HF (0.15-0.40 Hz) | Парасимпатическая активность | Снижение при стрессе |
| LF/HF | Симпато-вагальный баланс | >2: симпатическая доминанта |
Процесс работы
- Аналитика — аудит ваших устройств и потоков данных, выбор биомаркеров.
- Проектирование — архитектура пайплайна: сбор, предобработка, хранение (InfluxDB + pgvector).
- Разработка — модели и квантизация, интеграция с мобильным приложением.
- Тестирование — A/B тесты, валидация на реальных пользователях.
- Деплой — CLI, мобильный SDK или облачный API с мониторингом.
Что входит в результат
Мы передаём: документацию пайплайна, обученные модели с метриками, SDK для iOS/Android, дашборды в Grafana, инструкцию по адаптации под новые устройства. Гарантируем поддержку 3 месяца после деплоя.
Сроки
Базовый stress-монитор (HRV + baseline + мобильное приложение) — от 4 до 5 недель. Полный цикл с EDA, digital phenotyping и edge-обработкой — от 3 до 4 месяцев. Стоимость рассчитывается индивидуально после предварительного аудита.
Получите консультацию AI-инженера с 7+ лет опыта в healthcare ML. Экономия бюджета до 40% за счет раннего выявления стресса — оцените выгоду для вашего проекта.







