理解机器学习算法的一点心得 从Andrew ng 的公开课开始,机器学习的算法我接触到的也越来越多,我觉得机器学习算法和传统算法的最大不同就是:不会要求一个问题被100%求解,也就意味着不会有完美的解法,这也是著名的“Essentially, all models are wrong, but some are useful.”所表达的意思。正因为如此,机器学习算法往往不会有一个固定的算法流程,取而代之的把问题转化为最优化的问题,无论是ML(maximum likelihood),MAP(Maximum a Posterior)和EM(Expectation Maximization),都是这样的。 然后用不同的方法来优化这个问题,得到尽量好的结果,给人的感觉就像是一个黑盒,实际使用中需要不断地调参实验,但倘若你能理解好算法,至少能让这个盒子透明一点,这也是机器学习算法确实需要使用者去理解算法的原因,举个例子:传统算法比如一些高效的数据结构,我只需要知道一些接口就可以使用,不需要进行太多的理解,了解传统算法更多的是理解算法的思想,开阔思路,增强能力;而机器学习算法,你即使知道接口,也至少要调一些参数来达到实际使用的目的。 这样一来,阅读各类书籍和paper 也就在所难免了,甚至去阅读代码以至于实现加深理解,对于实际使用还是有很大的好处的,因为不是100%求解问题,所以面对不同的应用场景,想要达到最好的效果都需要加以变化。本文记录了一点自己学习的心得,私以为只要你能对算法有一种说得通的解释,就是OK 的,不一定要去深挖其数学上的证明(表示完全挖不动啊… … … … >_<) ===================================================================== O . 目的 之前说到机器学习算法常常把问题转化为一个最优化问题,理解这个最优化问题的目的能很好地帮助我们理解算法,比如最简单的最小二乘法(Least-squares): (这里的x是参数,和一些机器学习的常用表示里面有出入) 好多机器学习入门书都是从最小二乘开始引入的,其实这是线性代数(还是概率统计?囧rz)的课本内容嘛。 理解上式应该非常简单呐,括号内的就是目标值和与测试的差,取平方之后抹掉正负,而该式是要最小化这个东西,那么这个优化问题的“目的” 就是最小化预测函数在训练集上的误差。 当然这是最简单的一个例子了,我们接着看朴素贝叶斯分类器的优化目标: (这里 xi,yi 是训练集,π 和 θ是参数) 无论他后面怎么变化,用了什么优化方式,该算法的目的就是在训练集上最大化这个东西,只不过对于朴素贝...