线性回归求解幼儿园数学题

题目的原意是要数数字有多少个圈儿。微博上的@梁斌penny@ML_120两位讨论说可以用机器学习来求解结果,并且@ML_120同学还特别指出,这应该是一个线性回归可解的问题。我最初觉得数字有几个圈儿,怎么可能让机器学习到这个feature呢?

不过既然两位ML专业人士都认定这是个LR问题,不由得再多去想一想。如果将0-9每个数字出现的次数,作为feature vector(忽略了数字出现的次序),用线性回归的结果会如何呢?遂用octave写了一个小程序来验证一下结果,代码如下:

因为样本和参数规模都很小,故直接用Normal Equation来求解了。结果出乎意料,非常符合。最后theta的结果也非常有趣,0/6/9的权重都接近1,8的权重接近2。

theta(2:11) =
   0.80769
  -0.19231
  -0.19231
  -0.19231
  -0.19231
  -0.19231
   0.80769
  -0.19231
   1.80769
   0.80769

另,还有@TreapDB同学用BPNN实现的一个回归方法(代码在此),结果也非常漂亮 :)