模型与算法

在写论文的过程中,被老师批评过描述不清模型与算法。

后来通过查找资料,才发现模型(Model)与算法(Algorithm)是两码事。

通俗来讲,模型指代的是目标函数(最终要建立的函数),算法则是求解该目标函数的方法

模型=目标函数,算法=求解该目标函数的方法。

比如很多人没搞清楚,到底Decision Tree里什么是模型什么是算法。

Decision Tree里,其模型是二叉树模型(暂不讨论多叉树情况),如果写成目标函数,那么则是一个分段函数,如果是二分类问题,那么这个分段函数取值为0,1。那么有了这个目标函数,怎么求解呢?

两种算法:1.将训练集中的1样本全部归为左叶子,0样本归为右叶子,但是我们都知道这样长出来的决策树不具备预测能力。2.贪心算法,或者叫启发式算法,从根开始,采取一定的分裂原则进行分裂,这个分裂原则有信息增益最大化,Gini系数,方差最小。

那么是不是第二种算法长出来的树就是最优的?当然不是,启发式算法的核心思想是当前最优,所以一定存在一棵决策树要比这样生长出来的树是要好的,比如第一种树就一定比第二种树好。

再举个例子。XGBoost里,什么是模型,什么是算法?

XGBoost里面,它采用的是加性模型,解这个加性模型的算法是启发式算法或者叫贪心算法,因为同时寻找K个基决策树来降低损失函数是不可能做到的,所以它的想法就是添加一棵树,使得损失下降即可。但是我们要注意,XGBoost采用贪心算法只解出来的决策树的最优叶子值,它没办法一步解决树的结构问题,也即树该长什么样

XGB说只要你的树有这么多个叶子,每个叶子里有哪些样本,那我就可以告诉你,这些叶子的叶子值应该取多少,但是XGB也说,虽然我可以告诉你叶子值是多少,但是你怎么长的我现在还解决不了。

那XGB在长决策树的过程中,采用的还是传统决策树的启发式算法,采用从根开始的启发式分裂算法,只不过XGB由于已经知道了对于任意形态的决策树,它都能计算出这个形态的决策树的最优Loss,那么生长原则便从信息增益最大,变成它自己的那一套Gain最大化。

所以,决策树这个东西,到目前为止,这么多年的发展,其根本采用的方式仍然是启发式分裂,无论是后续的Bagging,Boosting,随机森林,深度森林,它本质上都没改变这些基础算法,只是大家采用的模型在变化而已。

转自:模型与算法 - 知乎

猜你喜欢

转载自blog.csdn.net/fuhanghang/article/details/130085000