我在尝试实现线性回归,但当我绘制成本时,值最初下降,然后在大约10,000次迭代后开始缓慢增加。奇怪的是,随着迭代次数的增加,线条对数据的拟合越来越好,但成本仍然在上升。
我认为在计算成本或绘制成本时我做错了什么,但我找不出问题所在。我尝试过使用更小的学习率,结果是一样的,只是速度更慢。
回答:
我认为你的成本函数有问题。你使用x_pred
来获取y_predict
,然后你将y_predict
与y_actual
进行比较,但y_actual
值是对应于x
的,而不是x_pred
。
你的代码:
def cost_fxn(alpha, beta, y_actual): cost = 0 y_predict = y_pred(alpha, beta, x_pred) for i in range(100): sq_error = (y_actual[i] - y_predict[i])**2 cost += sq_error return cost/(2*100)
应该改为:
def cost_fxn(alpha, beta, y_actual): cost = 0 y_predict = y_pred(alpha, beta, x) for i in range(100): sq_error = (y_actual[i] - y_predict[i])**2 cost += sq_error return cost/(2*100)