很久没有上课了, 感觉有点小累. 有这种感觉的不仅仅只有我, 还有上课的老师. 毕竟是把一个学期的课压缩成了一周. 这一周的课程是以机器学习和图形图像为主题的课程. 老师来自圣地亚哥. 这位老师的很多理念我很认同. 比如: 我们学技术的就应该了解算法的细节,仅仅去调参数去解决是没有任何意义的. 有时候课下听他闲聊的时候我也觉得相见恨晚.
贴上它给出的作业以及我的作业报告:
HomeworkAssignment 1
实验环境:
MacOS,Matlab2014b ;
Part
I. Unit Price Prediction
这是一个线性回归的问题;菜品单价的算法预测的思路如下:
已知,
step1,随机生成每份菜的单价 ,
step2,随机生成每份菜的数量
step3,计算当前情况下的估计的消费总额以及实际的消费总额
PLACEHOLDER部分的算法:
%%%%PLACEHOLDER#start
%calculate delta values
delta =sum(meal.*estUnitPrice) -cashierPrice ;
%update unit prices
fori= 1:3
estUnitPrice(i)=estUnitPrice(i) - alpha*delta*meal(i)
end
%%%%%PLACEHOLDER#end
二、验数据以及结论
修改一下参数获得的实验数据以及结论:
%PLACEHOLDER#start: set your own stopping conditions and
learning rate
%condition 1: maximal iterations, stop.2000000
MAX_ITERATION=100000;
%condition 2: if the difference between your prediction and the
cashier's
%price is smaller than a threshold, stop.
MIN_DELTA= 0.01;
% learning rate
%alpha=1e-3;0.000010.0005
alpha=0.0001;
%PLACEHOLDER#end
2.1MAX_ITERATION
当alpha=0.0001,MIN_DELTA=0.01时,仅修改MAX_ITERATION的结果如下表所示。
表1.alpha=0.0001,MIN_DELTA=0.01时,MAX_ITERATION=100000~ 5000
2.2 MIN_DELTA
当alpha=0001,MAX_ITERATION= 100000的时候,仅修改MIN_DELTA
的结果如下表所示。
2.3 alpha
当MIN_DELTA=0.001,MAX_ITERATION= 100000的时候,仅修改MIN_DELTA
的结果如下表所示。
自己发现的问题:
1.如果发上述的每次获取的最佳参数组合在一起会不会更好一些呢?
实际上会比设想的要好一些。以训练次数为例:经过以上的实验数据采集我们知道,当alpha=1e-3,MIN_DELTA= 0.000000001,MAX_ITERATION=3000的时候,estUnitPrice =(20.000025.00008.0000),estimation error:9.553467e-08。我把每次迭代的误差绘制成以下图表。横坐标的单位是迭代次数,纵坐标的单位是误差。我们从下图中可以得知:训练到1000次左右的时候,我们就没有必要去再次训练了。也就是说可以得到一个更加省时减少计算次数的模型。
图4.最佳参数组合中,每次计算的误差