无从下手?一文了解经典机器学习算法

声明:

常见机器学习算法的使用情况

前言

偏差与方差

描述的是预测值的期望与真实值之间。偏差越大,越偏离真实数据。
B i a s [ f ^ ( x ) ] = E [ f ^ ( x ) ] − f ( x ) Bias[\hat f(x)] = E[\hat f(x)] - f(x) Bias[f^(x)]=E[f^(x)]f(x)

描述的是预测值P的变化范围、离散程度,是预测值的方差,也就是离其期望值E的距离。方差越大,数据的分布越分散。
V a r [ f ^ ( x ) ] = E [ ( f ^ ( x ) − E [ f ^ ( x ) ] ) 2 ] Var[\hat f(x)] = E[(\hat f(x) - E[\hat f(x)])^2] Var[f^(x)]=E[(f^(x)E[f^(x)])2]

模型的真实误差是偏差和方差之和,如公式:
E [ ( y − f ^ ( x ) ) 2 ] = B i a s [ f ^ ( x ) ] 2 + V a r [ f ^ ( x ) ] + σ 2 E[(y - \hat f(x))^2] = Bias[\hat f(x)]^2 + Var[\hat f(x)] + \sigma^2 E[(yf^(x))2]=Bias[f^(x)]2+Var[f^(x)]+σ2

通常情况下,如果是小训练集,高偏差/低方差的分类器(例如,朴素贝叶斯NB)要比低偏差/高方差大分类的优势大(例如,KNN),因为后者会发生过拟合(overfiting)。然而,随着你训练集的增长,模型对于原数据的预测能力就越好,偏差就会降低,此时低偏差/高方差的分类器就会渐渐的表现其优势(因为它们有较低的渐近误差),而高偏差分类器这时已经不足以提供准确的模型了。

生成模型与判别模型

需要求联合分布的是生成模型,不需要的是判别模型。

回归

多元线性回归

y = w ⋅ x + b y = w\cdot x + b y=wx+b

其中, x x x为输入特征特征向量。它的损失函数是基于最小二乘法的MSE,优化方法是梯度下降法。

  • 优点:训练速度快,可解释性强。
  • 缺点:对异常样本敏感(抗噪声能力差),模型简单难以学习高维特征空间输入。

可解释性强:线性模型的一个优点是,回归后,观察 w j ( j = 1 , 2 , . . . , d ) w_j (j = 1, 2, ..., d) wj(j=1,2,...,d)的值,我们可以提取知识:

  1. 通过观察 w j w_j wj的符号,我们就可以直到 x j x_j xj对输出的影响是正是负。
  2. 如果 x j x_j xj是经过归一化的,通过观察 w j w_j wj的大小,我们就可以知道特征的重要性。并按重要性为特征定秩,甚至可以去掉那些 w j w_j wj接近于0的特征。

经验:由于线性回归模型简单,可用于前期获取baseline。若要提高线性回归的性能:

  1. 训练前进行特征降维
  2. 提出噪声样本

顾名思义,应用多元线性回归模型的假设是:自变量与因变量之间是线性关系。


数学原理=>github

Polynomial Regression多项式回归

多项式回归在多元线性回归的基础上,增加了对自变量高阶特征的支持,其模型如下方程所示: y = w 0 + w 1 ⋅ x + w ⋅ x 2 + . . . y = w_0 + w_1 \cdot x + w \cdot x^2 +... y=w0+w1x+wx2+...这是一种非线性模型,其最佳拟合线是曲线。
多项式回归拟合曲线

经验:高阶的多项式回归能得到更好的拟合效果,但可能会发生过拟合。过拟合、合适的拟合、欠拟合如下图所示:
过拟合、欠拟合、合适的拟合

Ridge Regression岭回归

岭回归不仅考虑误差(即最小二乘误差),还考虑模型参数的复杂度(用参数的L2范数表示,即L2正则化),其目标函数如下: l o s s = a r g m i n β ∈ R p   ∣ ∣ y − w ⋅ x ∣ ∣ 2 2 + λ ∣ ∣ w ∣ ∣ 2 2 loss = argmin_{\beta \in R^p} \ ||y-w\cdot x||_2^2 + \lambda ||w||_2^2 loss=argminβRp ywx22+λw22在这个公式中,有两个组成部分:第一个是最小二乘项,另一个是L2正则项。

经验:该回归模型比多元线性回归模型有更好的防过拟合能力,同时也能用于自变量高度相关的情景。

Lasso回归

它与岭回归不同的地方在于:用参数的L1范数代替L2范数作为正则项,其目标函数如下: l o s s = a r g m i n β ∈ R p   ∣ ∣ y − w ⋅ x ∣ ∣ 2 2 + λ ∣ ∣ w ∣ ∣ 1 loss = argmin_{\beta \in R^p} \ ||y-w\cdot x||_2^2 + \lambda ||w||_1 loss=argminβRp ywx22+λw1在这个公式中,有两个组成部分:第一个是最小二乘项,另一个是L1正则项。

经验:L1正则项可以使与 y y y无关的自变量系数接近或等于0,可用于特征选择。

Elastic回归

以上两种回归方式区别在于正则化项不同,在实际应用中,无法事先确定那个回归方式是更好的。为此,Elastic同时应用L1正则化和L2正则化,其目标函数如下所示: l o s s = a r g m i n β ∈ R p   ∣ ∣ y − w ⋅ x ∣ ∣ 2 2 + λ 2 ∣ ∣ w ∣ ∣ 2 2 + λ 1 ∣ ∣ w ∣ ∣ 1 loss = argmin_{\beta \in R^p} \ ||y-w\cdot x||_2^2 + \lambda_2 ||w||_2^2 + \lambda_1 ||w||_1 loss=argminβRp ywx22+λ2w22+λ1w1在应用线性回归时,可优先考虑Elastic回归。PS:我个人觉得这三种正则项回归方式效果差不多。

分类

Logistic回归

Python代码——github
Logistic 回归(这是一种分类模型,也是一种判别式模型)与线性回归相似,目标都是找到每个输入变量的权重,即系数值。与线性回归不同的是,Logistic 回归对输出的预测使用被称为 logistic 函数的非线性函数进行变换。
y = s i g m o i d ( w ⋅ x + b ) = 1 1 + e x p ( − ( w ⋅ x + b ) ) y = sigmoid(w \cdot x + b) = \frac 1 {1 + exp(-(w\cdot x + b))} y=sigmoid(wx+b)=1+exp((wx+b))1

损失函数为二分类交叉熵 L = − ∑ ( p log ⁡ p + ( 1 − p ) log ⁡ ( 1 − p ) ) L = -\sum (p\log p + (1-p)\log (1-p)) L=(plogp+(1p)log(1p)),优化算法为梯度下降。

  • 优点:简单高效,能获得预测概率分布,可解释性强
  • 缺点:不适用于高维数据,准确率不高

经验:它需要大量的样本,因为在样本数量较少的情况下,极大似然估计的效果比普通最小二乘法差。

LDA线性判别分析

Logistic 回归是一种分类算法,传统上,它仅限于只有两类的分类问题。如果你有两个以上的类别,那么线性判别分析是首选的线性分类技术。
待补充~

朴素贝叶斯分类

Python代码——github
朴素贝叶斯属于生成模型。该模型由两种概率组成,这两种概率都可以直接从训练数据中计算出来:

  1. 每个类别的概率;
  2. 给定每个 x 的值,每个类别的条件概率。

一旦计算出来,概率模型可用于使用贝叶斯定理对新数据进行预测。

  • 优点:简单高效,有坚实的数学基础,结果稳定,对小规模数据表现好,能处理多个分类任务,适合增量式训练(即可以实时的对新增的样本进行训练),对缺失数据不敏感,可解释性强
  • 缺点:准确率不高,需要强假设(条件独立假设)
  • 使用场景:欺诈检测,垃圾邮件检测,文本分类,文本情感分析,人脸识别

朴素贝叶斯之所以是朴素的,是因为它假设每个输入变量是独立的。这是一个强大的假设,真实的数据并非如此,但即使条件独立假设不成立,朴素贝叶斯分布的表现依然出色,其主要缺点是不能学习特征间的相互作用。
引用一个比较经典的例子,比如,虽然你喜欢Brad Pitt和Tom Cruise的电影,但是它不能学习出你不喜欢他们在一起演的电影。

CART分类回归树

Python代码——github
关于分类回归树可以参考《统计学习方法》——李航。

  • 优点:训练速度快,可解释性强,模型的拟合能力强,不需要对输入进行归一化
  • 缺点:容易过拟合,需要进行剪枝

K近邻算法

Python代码——github
KNN算法在整个训练集中搜索K个最近的样本,并汇总这K个样本的输出,以预测新数据点。

![K近邻算法](http://n.sinaimg.cn/translate/w1076h807/20180201/4w2a-fyrcsrw4506738.jpg) 图片来源:[新浪科技](http://tech.sina.com.cn/roll/2018-02-01/doc-ifyreuzn1050498.shtml)
  • 优点:简单,非线性,对异常数据不敏感,可以增量学习
  • 缺点:不适用于样本不平衡,需要大量内存,K值超参数选择

多层感知机

多层感知机基本被深度学习取代,本文不作介绍。

支持向量机

支持向量机是传统机器学习首选的分类方法。

![SVM](http://n.sinaimg.cn/translate/w1033h603/20180201/mqyp-fyrcsrw4506858.jpg) 图片来源:[新浪科技](http://tech.sina.com.cn/roll/2018-02-01/doc-ifyreuzn1050498.shtml)

Bagging和随机森林

![随机森林](http://n.sinaimg.cn/translate/w1080h661/20180201/fTig-fyrcsrw4506918.jpg) 图片来源:[新浪科技](http://tech.sina.com.cn/roll/2018-02-01/doc-ifyreuzn1050498.shtml)

Boosting和AdaBoost

Boosting是一种集成技术,它试图集成一些弱分类器来创建一个强分类器。

AdaBoost 是第一个为二分类开发的真正成功的 boosting 算法。这是理解 boosting 的最佳起点。现代 boosting 方法建立在 AdaBoost 之上,最有名的是GBDT。

  • 优点:准确率高
  • 缺点:对异常样本敏感(抗噪声能力差)

过拟合和欠拟合

定义

what is it

解决

how to solve it

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值