在我的研究中,我使用了所谓的Lee-Carter模型(死亡率模型),在这个模型中,你可以通过对(对数死亡率-平均年龄别死亡率)矩阵的奇异值分解得到模型参数。 我试图找到奇异值分解的替代方法,我发现一个很好的选择是由递归神经网络应用自动编码。事实上,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.logmx矩阵 当我在R中使用SVD时,我得到:
SVD <- svd(cent.logMXMatrix)
我需要得到SVD的组成部分:
SVD$d
SVD$v
SVD$u
我想得到SVD组件使用自动编码器…有可能吗? 我想听听您的意见,您的一些建议,以及是否可能我需要一个基本的python代码公式,用于cent.logmx矩阵““
非常感谢, 安德里亚
一层自动编码器将数据点线性映射到低维的潜在空间,然后应用非线性激活将结果投影到原始空间,同时最小化重建误差。
如果我们将非线性激活替换为线性激活(恒等式),并使用L2范数作为重建错误,那么您将执行与SVD相同的操作。你知道吗
相关问题 更多 >
编程相关推荐