无从下手?一文了解经典机器学习算法
声明:
- 参考——入门 | 机器学习新手必看10大算法
- 本文中的github链接指向我的github机器学习实战代码
- 这篇博客还在更新中…
常见机器学习算法的使用情况
回归
多元线性回归
其中,为输入特征特征向量。它的损失函数是基于最小二乘法的MSE,优化方法是梯度下降法。
- 优点:训练速度快,可解释性强。
- 缺点:对异常样本敏感(抗噪声能力差),模型简单难以学习高维特征空间输入。
可解释性强:线性模型的一个优点是,回归后,观察的值,我们可以提取知识:
- 通过观察的符号,我们就可以直到对输出的影响是正是负。
- 如果是经过归一化的,通过观察的大小,我们就可以知道特征的重要性。并按重要性为特征定秩,甚至可以去掉那些接近于0的特征。
经验:由于线性回归模型简单,可用于前期获取baseline。若要提高线性回归的性能:
- 训练前进行特征降维
- 提出噪声样本
顾名思义,应用多元线性回归模型的假设是:自变量与因变量之间是线性关系。
数学原理=>github
Polynomial Regression多项式回归
多项式回归在多元线性回归的基础上,增加了对自变量高阶特征的支持,其模型如下方程所示:
经验:高阶的多项式回归能得到更好的拟合效果,但可能会发生过拟合。过拟合、合适的拟合、欠拟合如下图所示:
Ridge Regression岭回归
岭回归不仅考虑误差(即最小二乘误差),还考虑模型参数的复杂度(用参数的L2范数表示,即L2正则化),其目标函数如下:
经验:该回归模型比多元线性回归模型有更好的防过拟合能力,同时也能用于自变量高度相关的情景。
Lasso回归
它与岭回归不同的地方在于:用参数的L1范数代替L2范数作为正则项,其目标函数如下:
经验:L1正则项可以使与无关的自变量系数接近或等于0,可用于特征选择。
Elastic回归
以上两种回归方式区别在于正则化项不同,在实际应用中,无法事先确定那个回归方式是更好的。为此,Elastic同时应用L1正则化和L2正则化,其目标函数如下所示:
分类
Logistic回归
Python代码——github
Logistic 回归(这是一种分类模型)与线性回归相似,目标都是找到每个输入变量的权重,即系数值。与线性回归不同的是,Logistic 回归对输出的预测使用被称为 logistic 函数的非线性函数进行变换。
损失函数为二分类交叉熵,优化算法为梯度下降。
经验:它需要大量的样本,因为在样本数量较少的情况下,极大似然估计的效果比普通最小二乘法差。
LDA线性判别分析
Logistic 回归是一种分类算法,传统上,它仅限于只有两类的分类问题。如果你有两个以上的类别,那么线性判别分析是首选的线性分类技术。
待补充~
朴素贝叶斯分类
Python代码——github
朴素贝叶斯是一个简单但是好用的预测建模算法。该模型由两种概率组成,这两种概率都可以直接从训练数据中计算出来:
- 每个类别的概率;
- 给定每个 x 的值,每个类别的条件概率。
一旦计算出来,概率模型可用于使用贝叶斯定理对新数据进行预测。
朴素贝叶斯之所以是朴素的,是因为它假设每个输入变量是独立的。这是一个强大的假设,真实的数据并非如此,但是,该技术在大量复杂问题上非常有用。
CART分类回归树
Python代码——github
关于分类回归树可以参考《统计学习方法》——李航。
- 优点:训练速度快,可解释性强,模型的拟合能力强,不需要对输入进行归一化
- 缺点:容易过拟合,需要进行剪枝
K近邻算法
Python代码——github
KNN算法在整个训练集中搜索K个最近的样本,并汇总这K个样本的输出,以预测新数据点。
图片来源:新浪科技
多层感知机
多层感知机基本被深度学习取代,本文不作介绍。
支持向量机
支持向量机是传统机器学习首选的分类方法。
图片来源:新浪科技
Bagging和随机森林
图片来源:新浪科技
Boosting和AdaBoost
Boosting是一种集成技术,它试图集成一些弱分类器来创建一个强分类器。
AdaBoost 是第一个为二分类开发的真正成功的 boosting 算法。这是理解 boosting 的最佳起点。现代 boosting 方法建立在 AdaBoost 之上,最有名的是GBDT。
- 优点:准确率高
- 缺点:对异常样本敏感(抗噪声能力差)