题目

幼儿园考题就是数数字里的圈圈数,比如6有一个圈圈、8有2个圈圈、9有一个圈圈,所以8809=6。
在机器学习思维里,可以表示为一个求每个数字的权重的回归问题。闲来无事、加之刚学完coursesa上的andrew ng的课程,尝试用线性回归解决一下这个问题。
线性回归
模型表示
特征提取:对于0-9,数它在等式左侧出现的次数即为特征。
例如:
样例 | 特征X | 取值y | 说明 |
---|---|---|---|
7111=0 | 0,3,0,0,0,0,0,1,0,0 | 0 | 1出现了3次,7出现了1次 |
8809=6 | 1,0,0,0,0,0,0,0,2,1 | 6 | 0出现了1次、8出现了2次、9出现了1次 |
训练结果
学习算法是梯度下降的batch算法,learning rate取0.01,用题目中的已知样例进行训练,训练结果已经相当不错:
0.783963
0.821555
-0.199924
-0.195487
-0.147931
-0.110500
-0.162009
0.807857
-0.206934
1.721141
0.804065
0.821555
-0.199924
-0.195487
-0.147931
-0.110500
-0.162009
0.807857
-0.206934
1.721141
0.804065
第一个是intercept,可以看书,0得到的权重是0.82155、6得到0.80、9得到0.80,非常接近实际的圈圈数1;而8得到1.72,也必将接近实际的2。
用上述权值,未知结果的2889得到的预测值是4.834823,接近结果5。
更多的训练样本
构造1w个长度为5的样本,训练的结果就更加贴近实际。
0.714264
0.853207
-0.139821
-0.139341
-0.140103
-0.140220
-0.140126
0.854667
-0.139623
1.847647
0.855033
2889 predict = 5.1252
0.853207
-0.139821
-0.139341
-0.140103
-0.140220
-0.140126
0.854667
-0.139623
1.847647
0.855033
2889 predict = 5.1252