【发布时间】:2016-02-24 19:24:31
【问题描述】:
我正在尝试线性优化 R 中的预测准确性,但我一直在寻找收敛和方便的答案。
我的想法如下:我有一组 32 个要优化的参数。这 32 个参数是使用 'rnorm' 从正态分布中随机抽取的。
linCoeff <- rnorm(32,0,5)
(linCoeff 作为线性系数)。
这 32 个参数按以下方式组合:
myVal <- (((clSigm*lCoeff[1])+lCoeff[2])*data[,1])+
(((clSigm*lCoeff[3])+lCoeff[4])*data[,2])+
(((clSigm*lCoeff[5])+lCoeff[6])*data[,3])+
(((clSigm*lCoeff[7])+lCoeff[8])*data[,4])+
(((clSigm*lCoeff[9])+lCoeff[10])*data[,5])+
(((clSigm*lCoeff[11])+lCoeff[12])*data[,6])+
(((clSigm*lCoeff[13])+lCoeff[14])*data[,7])+
(((clSigm*lCoeff[15])+lCoeff[16])*data[,8])+
(((clSigm*lCoeff[17])+lCoeff[18])*data[,9])+
(((clSigm*lCoeff[19])+lCoeff[20])*data[,10])+
(((clSigm*lCoeff[21])+lCoeff[22])*data[,11])+
(((clSigm*lCoeff[23])+lCoeff[24])*data[,12])+
(((clSigm*lCoeff[25])+lCoeff[26])*data[,13])+
(((clSigm*lCoeff[27])+lCoeff[28])*data[,14])*data$indDV1+
(((clSigm*lCoeff[29])+lCoeff[30])*data[,15])*data$indDV2+
((clSigm*lCoeff[31])+lCoeff[32])
我在哪里:
clSigm,为固定参数;
data[,i],这是我想要求和的 data.frame 上的值。
最后,它具有 16 个元素之和的形式,这给了我一个数值:'myVal'。 然后我应用一个激活函数,它给出了
- -1 如果 'myVal' 为 >0 并且
- 如果“myVal”为
然后我将它与我的输入(-1 和 +1 的列表)进行比较并输出平衡精度。
我想对这 32 个参数进行线性优化以找到最大 BACC,但使用传统的 R 方法并不能得到明显的结果,因为我永远不会收敛...
举个例子,我给 optim 的函数是:
retrieveVal <- function(lCoeff,data){
clSigm <- 1/(1+exp(.5-(data$acc)))
myVal <- (((clSigm*lCoeff[1])+lCoeff[2])*data[,1])+
(((clSigm*lCoeff[3])+lCoeff[4])*data[,2])+
(((clSigm*lCoeff[5])+lCoeff[6])*data[,3])+
(((clSigm*lCoeff[7])+lCoeff[8])*data[,4])+
(((clSigm*lCoeff[9])+lCoeff[10])*data[,5])+
(((clSigm*lCoeff[11])+lCoeff[12])*data[,6])+
(((clSigm*lCoeff[13])+lCoeff[14])*data[,7])+
(((clSigm*lCoeff[15])+lCoeff[16])*data[,8])+
(((clSigm*lCoeff[17])+lCoeff[18])*data[,9])+
(((clSigm*lCoeff[19])+lCoeff[20])*data[,10])+
(((clSigm*lCoeff[21])+lCoeff[22])*data[,11])+
(((clSigm*lCoeff[23])+lCoeff[24])*data[,12])+
(((clSigm*lCoeff[25])+lCoeff[26])*data[,13])+
(((clSigm*lCoeff[27])+lCoeff[28])*data[,14])*data$indDV1+
(((clSigm*lCoeff[29])+lCoeff[30])*data[,15])*data$indDV2+
((clSigm*lCoeff[31])+lCoeff[32])
act <- c(lapply(myVal,FUN=activate))
return(-BACC(inp,act))
}
然后:
optim(par=linCoeff,fn=retrieveVal,data=myData)
如果有人可以在这里提供帮助,我都会听到!
提前致谢。
【问题讨论】:
标签: r optimization