开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2023.02.14北京
比较肤浅。搜了一圈之后似乎不同的领域(数学专业,搞算法理论的和搞机器学习实战的)理解似乎也都不太一样,我就站在机器学习领域,偏向应用的算法类的角度找了一些答疑解惑的内容。
这里的算法更接近一种思想或者说策略,可以用语言描述出每个步骤,并不通过训练数据得到结果,只是这种算法思想会体现在代码解题的过程中。
通俗来讲,模型指代的是目标函数,算法则是求解该目标函数的方法。
DecisionTree里,其模型是二叉树模型(暂不讨论多叉树情况)
如果写成目标函数,那么则是一个分段函数,如果是二分类问题,那么这个分段函数取值为0,1。那么有了这个目标函数,怎么求解呢?
两种算法:1.将训练集中的1样本全部归为左叶子,0样本归为右叶子,但是我们都知道这样长出来的决策树不具备预测能力。2.贪心算法,或者叫启发式算法,从根开始,采取一定的分裂原则进行分裂,这个分裂原则有信息增益最大化,Gini系数,方差最小。
那么是不是第二种算法长出来的树就是最优的?当然不是,启发式算法的核心思想是当前最优,所以一定存在一棵决策树要比这样生长出来的树是要好的,比如第一种树就一定比第二种树好。
再举个例子。
XGBoost里,什么是模型,什么是算法?
XGBoost里面,它采用的是加性模型,解这个加性模型的算法是启发式算法或者叫贪心算法,因为同时寻找K个基决策树来降低损失函数是不可能做到的,所以它的想法就是添加一棵树,使得损失下降即可。但是我们要注意,XGBoost采用贪心算法只解出来的决策树的最优叶子值,它没办法一步解决树的结构问题,也即树该长什么样
XGB说只要你的树有这么多个叶子,每个叶子里有哪些样本,那我就可以告诉你,这些叶子的叶子值应该取多少,但是XGB也说,虽然我可以告诉你叶子值是多少,但是你怎么长的我现在还解决不了。
那XGB在长决策树的过程中,采用的还是传统决策树的启发式算法,采用从根开始的启发式分裂算法,只不过XGB由于已经知道了对于任意形态的决策树,它都能计算出这个形态的决策树的最优Loss,那么生长原则便从信息增益最大,变成它自己的那一套Gain最大化。
所以,决策树这个东西,到目前为止,这么多年的发展,其根本采用的方式仍然是启发式分裂,无论是后续的Bagging,Boosting,随机森林,深度森林,它本质上都没改变这些基础算法,只是大家采用的模型在变化而已。
机器学习中的"算法"
机器学习中的“算法”是在数据上运行以创建机器学习“模型”的过程。
机器学习算法执行“模式识别”。算法从数据中“学习”,或者对数据集进行“拟合”。
机器学习算法具有许多特性(这些特性就和以前大学学的算法课的概念很像):
学者可以设计出全新的排序算法,程序员可以在应用程序中使用标准的排序算法。
机器学习中的“模型”
机器学习中的“模型”是运行在数据上的机器学习算法的输出。
模型表示机器学习算法所学到的内容。
模型是在训练数据上运行机器学习算法后保存的“东西”,它表示用于进行预测所需的规则、数字和任何其他特定于算法的数据结构。
参考搜到的东西
以最简单的线性回归算法为例,可以表示为y=ax+bh=f(x)ε=yf(x)y=ax+b\\h=f(x)\\\varepsilon=y-f(x)y=ax+bh=f(x)ε=yf(x)
目标函数就是要找的拟合函数,就是上面的h=f(x)h=f(x)h=f(x)而损失函数就是评估目标函数准确与否的一个函数,如何评估呢,预测值和真实值进行比较就可以,也就是ε=yf(x)\varepsilon=y-f(x)ε=yf(x)