如何矢量化此代码片段以一次性更新theta
?
for (j in 1:length(theta)) {
val = exp(y * sum(theta * random_data_vector)) * y * random_data_vector[j]
val = val / (1 + exp(y * sum(theta * random_data_vector)))
theta[j] = theta[j] - (alpha * val)
}
theta
是向量,random_data_vector
是向量,y
是数字
> dput(head(theta))
c(0.772925310069695, 0.853900654707104, 0.291106897871941, 0.114210048923269,
0.257764941081405, 0.0881731726694852)
> dput(head(random_data_vector))
c(0, 0, 0, 0, 0, 0)
不需要for
循环或索引,因为默认情况下,R 中的数学运算是矢量化的,假设所有向量的长度相同或长度为 1。(例如,默认情况下1:10 + 1
矢量化,不需要循环。
val = exp(y * sum(theta * random_data_vector)) * y * random_data_vector
val = val / (1 + exp(y * sum(theta * random_data_vector)))
theta = theta - (alpha * val)