Вопрос или проблема
Я добавляю больше деталей
У меня есть временной ряд данных о детях (1, 2, 3), который показывает, сколько проблем у них возникает каждую неделю (с недели 1 по неделю 80) и в каком органе (14 органов).
Существуют отдельные числовые таблицы корреляций без учета времени для детей/органов, показывающие количество клеток крови типа X на орган на ребенка -> Причины проблем.
Моя цель – предсказать, сколько проблем будет у НовогоРебенка (Ребенок4), в каком organ, по неделям.
Предсказать это: Неделя1: 1 проблема | Живот Неделя1: 1 проблема | Печень Неделя2: 1 проблема | Живот ..
TIME_SERIES_INPUT ——> LSTM (RNN?) ——-\
——————————————————————-> СЛИТЬ —>
AUXILIARY_INPUTS –> [сделать что-то] ———-/*
Как я могу смоделировать эту задачу с помощью Keras/TF? Чтобы быть более конкретным, сначала мне следует изменить набор данных, чтобы включить таблицы корреляций? Или я могу подключить модель к LSTM? Я видел несколько примеров на этом форуме, но они в основном касаются CNN, что не применимо к моему набору данных. P.S. я могу вставить весь набор данных, если это необходимо.
Спасибо
Набор данных выглядит следующим образом
Неделя Ребенок Возраст Орган Дата Проблема Найдена Тип Проблемы
2 Ребенок2 A0 Орган2 06/24/16 1 F
2 Ребенок3 A0 Орган11 05/01/17 1 F
2 Ребенок3 A0 Орган11 05/02/17 1 F
2 Ребенок3 A0 Орган13 05/03/17 1 F
2 Ребенок3 A0 Орган13 05/05/17 1 F
3 Ребенок2 A0 Орган12 06/29/16 1 F
3 Ребенок2 A0 Орган2 07/01/16 1 F
4 Ребенок3 A0 Орган13 05/18/17 1 F
4 Ребенок3 A0 Орган2 05/19/17 1 F
Таблица корреляции без учета времени выглядит следующим образом
Новые клетки крови типа X на орган на ребенка
Орган Ребенок1 Ребенок2 Ребенок3 НовыйРебенок
Мочевой пузырь Орган1 288 247 97 253
Мозг Орган2 2548 1972 992 251
Уши Орган3 32 254 162 155
Глаза Орган4 111 0 459 -89
Сердце Орган5 42 1214 0 142
Почки Орган6 4 188 186 -87
Почки Орган7 806 1764 796 153
Печень Орган8 658 657 -20 0
Легкие Орган9 0 484 0 0
Нос Орган10 3328 9940 4435 3223
Поджелудочная железа Орган11 11 389 207 194
Кожа Орган12 664 766 164 -145
Живот Орган13 246 -71 0 -70
Язык Орган14 1403 0 33 0
Если у вас просто есть обычная таблица корреляции (в чем я не уверен), вы можете сделать это так: для каждой строки вы можете добавить корреляцию органа в строке к другим органам. Так вы получите
Неделя Ребенок Возраст Орган Дата Проблема Найдена Тип Проблемы Орган1 Орган2 Орган3 ...
2 Ребенок2 A0 Орган2 06/24/16 1 F 0.5 0 0.3 ...
Если у вас нет строки для нового ребенка, тогда вам следует отформатировать данные таким образом вместе с другими параметрами. Corr_Organ1 – это агрегат всех корреляций, которые приводят к сбою Органа1.
Ребенок X-Type_cells Орган1 Organ1_time Орган2 Organ2_time Corr_Organ1 Corr_Organ2 ...
Ребенок1 1024 Да 06/24/16 Нет nan 0.2 0 ...
Затем вы делаете итерации: сначала прогнозируете все с нулевыми корреляциями. Затем, когда вы рассчитываете первый прогноз и Орган 1 не удался, вы обновляете все остальные корреляции.
Начальные данные:
Ребенок X-Type_cells Орган1 Organ1_time Орган2 Organ2_time Corr_Organ1 Corr_Organ2 ...
Ребенок1 1024 nan nan nan nan 0 0 ...
После первой итерации:
Ребенок X-Type_cells Орган1 Organ1_time Орган2 Organ2_time Corr_Organ1 Corr_Organ2 ...
Ребенок1 1024 да xxx нет nan 0 0.8 ...
Затем вы снова прогнозируете на основе корреляций и получаете следующий результат:
Ребенок X-Type_cells Орган1 Organ1_time Орган2 Organ2_time Corr_Organ1 Corr_Organ2 ...
Ребенок1 1024 да xxx да nan 0.2 0.8 ...
Вы повторяете эти итерации, пока ничего не изменится.
Агрегация корреляций может быть простой суммой или чем-то более сложным.
Ответ или решение
Моделирование временного ряда с использованием Keras и TensorFlow для прогнозирования заболеваний у новорожденного
Для решения вашей задачи по прогнозированию потенциальных заболеваний новорожденного на основе временных рядов и корреляционных таблиц, мы можем использовать архитектуру глубокого обучения, комбинирующую LSTM (долгосрочную короткосрочную память) и дополнительные входные данные, связанные с корреляцией между органами и типами клеток. Давайте разберем этот процесс подробнее.
Шаг 1: Подготовка данных
-
Форматирование временных рядов:
Вам нужно преобразовать ваш набор данных о заболеваниях в формат, подходящий для LSTM. Это включает в себя создание трехмерного тензора, где первая размерность — это время (недели), вторая — это различные объекты (например, младенцы или органы), а третья — это признаки (например, количество заболеваний).Например, ваш набор данных может выглядеть следующим образом:
(num_samples, num_timesteps, num_features)
-
Включение корреляционных данных:
Каждую запись временного ряда можно дополнить значениями из корреляционных таблиц, чтобы указать на связи между органами и типами клеток. Это можно сделать, добавляя соответствующие корреляционные коэффициенты для каждого органа:Орган1, Орган2, Орган3, ... (Корреляции)
-
Объединение данных:
Вам потребуется объединить временные данные и вспомогательные корреляционные входные данные. Для этого можно воспользоваться слоями Keras, такими какConcatenate
.
Шаг 2: Создание модели
Вы можете создать модель, используя Keras следующим образом:
import numpy as np
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, LSTM, Dense, Concatenate
# Определение входных данных
time_series_input = Input(shape=(num_timesteps, num_features), name='time_series_input')
auxiliary_input = Input(shape=(num_auxiliary_features,), name='auxiliary_input')
# LSTM слой
lstm_out = LSTM(50, return_sequences=False)(time_series_input)
# Объединение выходов
merged = Concatenate()([lstm_out, auxiliary_input])
# Полносвязные слои для окончательной классификации
dense_out = Dense(64, activation='relu')(merged)
output = Dense(num_classes, activation='softmax')(dense_out)
# Создание модели
model = Model(inputs=[time_series_input, auxiliary_input], outputs=output)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Обучение моделя
model.fit([X_time_series, X_auxiliary], y_labels, epochs=50, batch_size=32)
Шаг 3: Прогнозирование и итерационные обновления
Для прогнозирования заболеваний у новорождённых вы можете использовать итеративный подход, описанный вами. На первом этапе вы предсказываете заболевания с нулевыми корреляциями. После того как вы получите предсказания, вы должны обновить корреляционные коэффициенты и пересчитывать прогнозы.
-
Первоначальный прогноз:
Начните с прогнозирования заболеваний без учета корреляций. -
Обновление корреляционных данных:
На основе полученных результатов обновите корреляционные коэффициенты. Это можно сделать по вашему предложенному алгоритму, добавляя новые связи по мере получения данных от модели. -
Итерация:
Продолжайте итерации до тех пор, пока предсказания не начнут сходиться и не будет наблюдаться стабильный вариант результата.
Заключение
Использование LSTM вместе с корреляционными данными позволяет вам эффективно моделировать и прогнозировать количество вероятных заболеваний у новорождённых. Важно также экспериментировать с параметрами модели и методами предобработки данных, чтобы добиться наилучших результатов. В процессе реализации этой модели следите за метриками, такими как точность и потеря, чтобы убедиться в ее эффективности.