Machine Learning I

在学习Andrew Ng的机器学习课程Machine Learning,上了这个课之后感觉,这才叫MOOC好不好!老师很认真的在讲,而且讲的特别细致,连不会微积分都没关系( ̄▽ ̄)”

前两周的课程讲了线性回归的两种方法,一是梯度下降法(Gradient descent),二是正规方程(Normal Equation),两者各有利弊。

梯度下降法 正规方程
只能趋近于最优解 最优解√
需要选择合适的α 有通式求解√
O(n*iterations)√ O(n^3)
应用范围较广√ 只能用于线性回归

根据Andrew老师的建议,当n(feature的种类)超过10000时,才应该考虑梯度下降法,否则用正规方程通常更好。

应用

用线性回归分析了一下学院上学期的成绩。

最可能会有相关关系的,是工数和线数。用正规方程求解,得到下图:

θ =

| -3.5127 |
| 0.9836 |

果然,θ2=0.98,说明这两门学科的分数是很有联系的。同时也看出了,工数的分数还是普遍高于线数的。有可能是因为工数的学分高,也有可能是确实线数比工数难一些吧。

之后用梯度下降法求解,得到了下图:

θ =

| 0.0110 |
| 0.9417 |

α =

0.00001

Andrew老师说将来会有方法自动选择α。但目前来看,这个α还是很难选的。而且这个梯度下降法,Cost的下降速度的下降速度(下降加速度)是很大的,只要α是能用的,差不多二三十次就能精确到个位了,但即使到了1000次(100次和1000次差别不大)还相差了0.8左右。可能真正使用梯度下降法的时候得迭代十万、百万次的。

其他

突然想看看,如果是没什么关系的数据,线性回归会得到什么结果呢?

于是,我计算了一下工数和军事理论的关系:

看到这个图的第一印象,这么分散啊,但看了一眼Cost,才4.8!看了一眼坐标轴,我想到了前两天知乎上看到的一个问题:「数据会说谎」的真实例子有哪些?今天碰见这张图,果然很有误导性啊,于是赶紧

set(gca, 'XLim', [40 100], 'YLim', [40 100]);

这样得到的图就合理多了:

这张图还让我明白,反应两个数据相关程度的并不是Cost的大小,而应该是对应的θ,θ越接近0,就越没关系。比如,当把工数和军理两科互换之后,Cost产生了很大的变化,但两者θ2都不大。

ps:其实我尝试过各种各样的组合,已经多个科目的组合,θ经常会降到0.1左右,甚至0.01左右,但从来没有小于0过。这说明,整体看来,“好学生”们,就算是那种凭运气的军理,也会比普通学生分数高一写,这应该就是态度不同的体现吧。

上篇藏于图片的信息
下篇To be, or not to be