в своем исследовании я использую так называемую модель Ли Картера (модель смертности), в которой вы можете получить параметры модели, используя разложение по единичным значениям на матрицу (логарифмическая смертность - средний возрастной характер смертность).
Я пытаюсь найти замену разложения по сингулярным значениям, я вижу, что хорошим выбором может быть автокодирование, применяемое в рекуррентной нейронной сети. Фактически SVD мог бы сходиться к автоэнкодеру, в котором функция активации является линейной функцией. С этой целью я попытался бы использовать нелинейную функцию активации, чтобы получить те же самые элементы, полученные SVD с нелинейной формой.
Давайте использовать эти шаги для получения данных: коэффициенты смертности для возрастов и лет
rm(list = ls())
library(MortalitySmooth)
ages <- 0:100
years <- 1960:2009
D <- as.matrix(selectHMDdata("Japan", "Deaths",
"Females", ages,
years))
D[D==0] <- 1
E <- as.matrix(selectHMDdata("Japan", "Exposures",
"Females", ages,
years))
E[E==0] <- 1
lMX <- log(D/E)
alpha <- apply(lMX, 1, mean)`
cent.logMXMatrix <- sweep(lMX, 1, alpha)
Теперь мы применяем SVD к центу .logMXMatrix
когда я использую SVD в R, я получаю это:
SVD <- svd(cent.logMXMatrix)
и мне нужно получить компоненты СВД:
SVD$d
SVD$v
SVD$u
Я бы хотел получить SVD-компонент с помощью Autoencoder ... Возможно ли это?
Я хотел бы получить ваше мнение, некоторые предложения от вас и, возможно ли, мне нужна базовая формулировка кода Python для автоэнкодера на "cent.logMXMatrix"
Большое спасибо,
Андреа