试谈传统算法与机器学习算法

传统的数据结构与算法中的算法一般定义是^{1}

非形式地说,算法(algorithm)就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。这样算法就是把输入转换成输出的计算步骤的一个序列。

我们也可以把算法看成是用于求解良说明的计算问题的工具。一般来说,问题陈述说明了期望的输入/输出关系。算法则描述一个特定的计算过程来实现该输入/输出关系。

简单来说,算法就是能实现期望的输入到输出的计算过程。从这个角度讲,机器学习也是一种算法,它的输入是一组数据(称为训练数据),输出是在另一组数据上(称为测试数据)表现最好或较好的一个算法(或者叫模型),所以可以认为机器学习是输出算法的算法。

理论上,最理想的当然是在所有可能的算法(模型)中找到一个在未见数据上表现最好的模型。但实际往往难以实现。退而求其次,人们尝试能不能在一个相对确定的一类模型中,找到一个”好模型“。因此,实际上机器学习算法的作用就是,在给定训练数据的前提下,找到某类模型的最佳参数。

这里自然地得到了机器学习中的三要素^{2},即

  1. 模型:在哪类模型中进行最佳参数的求解。比如是线性模型、树模型还是神经网络模型等。
  2. 策略:即目标函数,也称为损失函数。学习最佳参数的目标是什么,是平方损失、绝对损失还是交叉熵损失,是经验风险最小化还是结构风险最小化,正则项是L1还是L2,正则项系数是多少等等?
  3. 算法:使用什么样的算法来优化参数。当模型空间和策略确定后,机器学习问题就转化为最优化问题了,那用什么方法来优化呢。是批梯度下降,随机梯度下降,还是牛顿法?

在通过三要素得到一个机器学习模型后,需要确定得到的是否是一个“好模型”,通常的作法是:在未参与训练的数据上应用模型,得到预测结果后,使用某一个或某几个指标评价,这里的未参与训练的数据就是测试数据,指标就是所谓的模型评估指标。常用的评估指标有误差率、准确率、查全率、ROC、平方误差等。

参考资料

  1. 李航. 统计学习方法[M]. 2012.
  2. Thomas H.Cormen Charles E.Leiserson Ronald L.Rivest Clifford Stein 殷建平 徐云 王刚 刘晓光 苏明 邹恒明 王宏志. 算法导论(原书第3版)[J]. 计算机教育, 2013(10):51-51.

推荐阅读更多精彩内容