私のアルゴリズムは次のようなものです:
データは次のように保存されます。
data = [record1, record2, ... ]
where record1 is [1, x1, x2 ..., x_m] m feature values for that record
theta is parameter of linear regression function, theta is vector of size m+1
y is true label, again array of length, len(data). (y[0] is true value for record 0)
線形回帰 確率的更新:
while True:
for i in range(len(data)):
x = data[i]
for t in range(0, m):
theta[t] = theta[t] - my_lambda * (np.dot(theta, x) - y[i]) * x[t]
j_theta = compute_J_of_theta(data, y, theta)
print "Iteration #: ", iterations, " j_theta ", j_theta
if j_theta < 5000:
#print "******************** FINALLY CONVERGED!!!! ********************"
break
compute_j_of_theta(data, y, theta):
"""
Convergence criteria,
compute J(theta) = 1/2M sum (h_theta(x_t) - y_t)**2
"""
temp = 0
for i in range(0, len(data)):
x = data[i]
temp += (np.dot(theta, x) - y[i])**2
return temp/2*M
my_lambda は非常に小さいです 最初は theta はサイズ m+1 の 0 ベクトルです
Que: トレーニング セット エラーはテスト以上のものです...なぜですか? これの何が問題なのですか?EDIT 1: err を計算するのは私のばかげた間違いでした