в своем исследовании я использую так называемую модель Ли Картера (модель смертности), в которой вы можете получить параметры модели, используя разложение по сингулярным значениям на матрице (логарифмический коэффициент смертности - средний возрастной показатель смертности). Я пытаюсь найти замену Singular Value Decomposition, я увидел, что хорошим выбором может быть автокодирование, применяемое рекуррентной нейронной сетью. Фактически, 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 к cent.logMXMatrix, когда я использую SVD в R, я получаю это:
SVD <- svd(cent.logMXMatrix)
и мне нужно получить компоненты СВД:
SVD$d
SVD$v
SVD$u
Я хотел бы получить компонент SVD с помощью Autoencoder... Возможно ли это? Я хотел бы получить ваше мнение, некоторые предложения от вас и возможно ли, что мне нужна базовая формулировка кода Python для автоэнкодера на "cent.logMXMatrix"
Большое спасибо, Андреа