【问题标题】:Vectorize nested for loops in R (for multi class logistic loss calculation)向量化 R 中的嵌套 for 循环(用于多类逻辑损失计算)
【发布时间】:2017-01-23 15:13:36
【问题描述】:

我正在计算数据集的成本。有没有办法简化这个嵌套的 for 循环?我应该使用应用还是矩阵乘法?

更多背景:这是多类逻辑损失,将用于机器学习。 y_m 是从标签 y 派生的指标矩阵(10 个标签的分类)。我通过随机生成 h2 和 y 来简化问题,以获得最小的可重现代码。

h2=matrix(runif(5000*10),ncol=10)
y=round(runif(5000)*9)+1

y_m <- matrix(0,ncol=10,nrow=length(y))
y_m[cbind(1:length(y),y)] <- 1

J=0
for(i in 1:5000){
  for(k in 1:10){
    J=J-y_m[i,k]*log(h2[i,k])-(1-y_m[i,k])*log(1-h2[i,k]);
  }
}
J

【问题讨论】:

    标签: r matrix machine-learning vectorization


    【解决方案1】:

    试试这个:

    J <- sum( - y_m * log(h2) - (1-y_m) * log(1-h2) )
    

    【讨论】:

      【解决方案2】:
      devtools::install_github("alexwhitworth/glmEnsemble")
      ?glmEnsemble::multiclass_logloss
      

      【讨论】:

        猜你喜欢
        • 2020-01-29
        • 2019-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-03
        • 2021-07-29
        • 1970-01-01
        相关资源
        最近更新 更多