ループ 1: (確率的 - 予想されるより速い)
for i in range(len(data)):
x = data[i]
for t in range(0, m):
theta[t] -= my_lambda * (np.dot(theta, x) - y[i]) * x[t]
vs ループ 2: (バッチ - 遅くなることが予想される)
for t in range(0, m):
temp = 0
for i in range(len(data)):
x = data[i]
temp += (np.dot(theta, x) - y[i]) * x[t]
theta[t] = theta[t] - my_lambda * temp / M
しかし、私のバッチははるかに高速です-1回の反復経過時間0.025356054306対私のストキャスティクスは本当に遅いです-1回の反復経過時間1.0576338768
ここで、私の m は 13 で、データは約 500 タプルです。なぜそうなのか誰にも教えてもらえますか?または、どこで確率論を台無しにしましたか? ありがとう!
編集1:
data = [[], [], ...]
data = [record1, record2 ...]
record = [1, x1, x2, ... , x_m]
theta is vector
theta = np.zeros(m+1) //np is numpy