0
データセットのコストを計算しています。このネストされたforループを単純化する方法はありますか?適用または行列乗算を使用する必要がありますか?R(複数階ロジスティクスロス計算用)のループ用にネストされたベクトル化
その他の背景:これは、機械学習で使用されるmuti-classロジスティック損失です。 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