2016-09-15 83 views
0

我正在計算數據集的成本。有什麼辦法來簡化這個嵌套的循環?我應該使用應用還是矩陣乘法?向量化R中的嵌套循環(用於多類邏輯損失計算)

更多背景:這是多級邏輯損失將用於機器學習。 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 

回答

3

試試這個:

J <- sum(- y_m * log(h2) - (1-y_m) * log(1-h2)) 
0
devtools::install_github("alexwhitworth/glmEnsemble") 
?glmEnsemble::multiclass_logloss