Вопрос или проблема
Пытаюсь объяснить свой вопрос на упрощенном наборе данных.
Имея следующий набор данных:
день f1 f2
0 0 10 1000
1 1 45 2000
2 2 120 3400
3 3 90 5000
Я пробую два подхода для генерации оценки на основе наблюдений данных:
Подход 1:
Я масштабировал характеристики так, чтобы максимальное значение было 1.0, деля каждую характеристику на ее максимальное значение, чтобы получить:
день f1 f2
0 0 0.083333 0.20
1 1 0.375000 0.40
2 2 1.000000 0.68
3 3 0.750000 1.00
Я создал оценку, где score = 𝑓(f1,f2)
, так что теперь данные выглядят так:
день f1 f2 оценка
0 0 0.083333 0.20 0.141667
1 1 0.375000 0.40 0.387500
2 2 1.000000 0.68 0.840000
3 3 0.750000 1.00 0.875000
Подход 2:
Я сделал аналогичное вычисление оценки, однако нормализация характеристик была проведена с помощью CDF следующим образом:
from scipy import stats
df['f1'] = df.f1.apply(stats.norm.cdf, args=(df.f1.mean(),df.f1.std()))
df['f2'] = df.f2.apply(stats.norm.cdf, args=(df.f2.mean(),df.f2.std()))
день f1 f2
0 0 0.123267 0.143672
1 1 0.330776 0.312474
2 2 0.865919 0.624118
3 3 0.687676 0.891864
И финальная оценка:
день f1 f2 оценка
0 0 0.123267 0.143672 0.133469
1 1 0.330776 0.312474 0.321625
2 2 0.865919 0.624118 0.745019
3 3 0.687676 0.891864 0.789770
Смотрим на более широкую картину.
Мой фактический набор данных состоит из 1280 последовательностей по 30 дней каждая с 10 характеристиками (размерность (1280,30,10)), и я пытаюсь предсказать оценку на 30-й день на основе первых недель данных.
Смотрю на гистограмму оценки на 30-й день моего первого подхода, она выглядит так:
в то время как мой другой подход производит следующее:
Вопрос: При построении модели регрессии LSTM, какой метод оценки лучше всего отразит общую оценку? Это вопрос о продукте или есть лучший статистический метод для вычисления оценки?
То, как вы это сформулировали, не является регрессионной задачей, поскольку предсказания в регрессии не ограничены. Ваши фактические оценки строго ограничены между нулем и единицей, что делает это более похожим на предсказание вероятности.
Чтобы получить наилучшие предсказания, лучше всего применить сигмоидальную функцию к активации выходного узла, чтобы ограничить предсказания между нулем и единицей.
Для оценки перекрестная энтропия будет хорошо работать в качестве функции потерь:
$$H(p,q) = – \sum_{i}p_i logq_i$$
Истинная метка для точки данных будет моделироваться как $p_i$, а предсказанное значение текущей модели будет моделироваться как $q_i$.
Ответ или решение
Ваш вопрос касается выбора подходящего метода оценки для LSTM модели, которая выполняет регрессию, основываясь на ваших данных. Рассмотрим ваши два подхода к вычислению "счета" и их применение в зависимости от вашей целевой задачи.
В первую очередь, обратим внимание на то, что ваши целевые значения находятся в пределах от 0 до 1, что делает вашу задачу более подходящей для задачи предсказания вероятностей, чем для классической регрессии. Это означает, что вам необходимо использовать функции активации, которые могут ограничить ваши предсказания, например, сигмоидную функцию на выходном слое вашей модели.
Подход 1 и Подход 2
В первом подходе вы использовали нормализацию, деля каждое значение на его максимальное значение, что дает вам значение в диапазоне от 0 до 1. Во втором подходе вы использовали функции распределения, чтобы нормализовать данные по нормальному закону.
Для выбора между этими двумя подходами необходимо рассмотреть, как ваши данные распределены и как вы хотите интерпретировать свои результаты.
-
Подход 1 — нормализация с использованием максимальных значений может привести к искажениям, особенно если ваши данные содержат выбросы. При этом расчеты производятся на основе относительных значений, что может быть недостаточно для сложных зависимостей в ваших данных.
-
Подход 2 — использование кумулятивной функции распределения (CDF) дает более гладкую нормализацию и позволяет учитывать распределение значений. Это особенно полезно, если ваши данные обладают неконтролируемыми вариациями или выбросами, так как CDF поможет более стабильно их усреднить.
Рекомендации по построению модели LSTM
-
Выбор функции активации: Используйте сигмоидную активацию на выходном слое вашей LSTM для ограничить ваш результат в диапазоне [0, 1].
-
Функция потерь: Для регрессионной задачи, где целевое значение ограничено, кросс-энтропия является хорошим выбором, так как она ориентирована на предсказание вероятностей:
$$H(p, q) = – \sum_{i}p_i \log(q_i)$$
Здесь (p_i) — это истинные метки, а (q_i) — ваши предсказания модели. -
Обработка данных: Если ваш целевой показатель подвержен выбросам или имеет сложные зависимости с входными данными, рекомендуется использовать второй подход (CDF) для более адекватного завершенного результата. Убедитесь, что ваши данные сбалансированы и не содержат крупных выбросов, которые могут искажать результаты.
-
Метрики оценки модели: После обучения модели проверьте распределение ваших предсказаний, чтобы убедиться, что они соответствуют распределению ваших целевых значений. Это можно сделать с помощью визуализации (гистограммы, графики рассеяния и т.д.).
Заключение
Оба ваших подхода имеют свои достоинства, но выбор будет зависеть от структуры ваших данных и ваших требований. Подход 2 с использованием CDF может дать более устойчивые результаты, особенно если данные сложные и подвержены выбросам. Обязательно проведите тестирование различных методов и проанализируйте полученные метрики, чтобы определить, какой из них дает наилучшие результаты в контексте вашей задачи.