我正在尝试我的第一个个人项目,在参加机器学习的入门课程之后,我正在尝试使用线性近似来预测两个数字的加/减的结果。
我有3个功能:第一个数字,减法/加法(0或1)和第二个数字。 所以我的输入看起来像这样:
2
6
0
使用相应的输出:
% Iterate
for i = 1 : iter
% hypothesis
h = X * Theta;
% reg theta prep
regTheta = Theta;
regTheta(:, 1) = 0;
% cost calc
J(i, 2) = (1 / (2 * m)) * (sum((h - y) .^ 2) + lambda * sum(sum(regTheta .^ 2,1),2));
% theta calc
Theta = Theta - (alpha / m) * ((h - y)' * X)' + lambda * sum(sum(regTheta, 1), 2);
end
我(我认为)已经成功实现了逻辑回归算法,因为平方误差逐渐减小,但是在100到100(0到50)范围内,平方误差值在大约400次迭代后变为大约685.6。
Graph: Squared Error vs Iterations
为了解决这个问题,我尝试使用更大的数据集进行训练,摆脱正则化,并对输入值进行标准化。
我知道修复高偏差的一个步骤是增加近似的复杂性,但我想在这个特定级别上最大化性能。是否有可能在这个级别上更进一步?
我在Octave中的线性逼近码:
burger
注意:我为lambda使用0,以忽略正则化。