基础知识

1. 参数法与非参数法

机器学习上的方法分:

  • 参数方法

    根据先验知识假定模型服从某种分布,然后利用训练集估计出模型参数,也就弄清楚了整个模型。

    假设了一个在整个输入空间上有效的模型,将问题归结为在样本上估计少量参数,(如:线性模型估计w,高斯分布估计mu和sigma),参数学习方法假定了一个模型,当模型假定不成立或样本不是一个分组可能导致很大的误差。

    例如感知器

  • 非参数方法

    不需要知道数据的概率分布,只需要假设:相似的输入具有相似的输出。基于记忆训练集,然后根据训练集预测。

    非参数方法使用合适的距离度量相似性,对于输入样本,从训练集中找出它们的相似示例(输入样本的邻域),并由相似的实例插值得到正确的输入。

    例如kNN

2. 维度灾难

Curse of Dimensionality

维度灾难是在数字图像处理中,对于已知样本数目,存在一个特征数目的最大值,当实际使用的特征数目超过这个最大值时,分类器的性能不是得到改善,而是退化。

这种现象正是在识别模式中被称为“维度灾难”的一种表现形式。此外,提取特征向量的维度过
高会增加计算的复杂度,给后续的分类问题造成负面影响。

非参数方法在特征数 p 很大时表现不好。

3. 分类器性能指标

3.1 ROC 曲线

receiver operating characteristics 接收者操作特征

由上表可得出横,纵轴的计算公式:

  1. 真正类率 (True Postive Rate): \(TPR = \frac{TP}{TP+FN}\), 代表分类器预测的正类中实际正实例占所有正实例的比例。Sensitivity

  2. 负正类率 (False Postive Rate) : \(FPR = \frac{FP}{FP+TN}\),代表分类器预测的正类中实际负实例占所有负实例的比例。1-Specificity

  3. 真负类率 (True Negative Rate) : \(TNR = \frac{TN}{FP+TN}\),代表分类器预测的负类中实际负实例占所有负实例的比例, \(TNR=1-FPR\) 。Specificity

假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。

随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。

阈值最大时,对应坐标点为 \((0,0)\) ,阈值最小时,对应坐标点 \((1,1)\) 。

横轴:负正类率 (false postive rate FPR) 特异度,FPR越大,预测正类中实际负类越多。
纵轴:真正类率 (true postive rate TPR )灵敏度,TPR越大,预测正类中实际正类越多。

理想目标

\(TPR=1,FPR=0\),即图中 \((0,1)\) 点,故ROC曲线越靠拢 \((0,1)\) 点,越偏离 45 度对角线越好,Sensitivity、Specificity 越大效果越好。

3.2 AUC

area under the curve

常常用AUC来评估二分类模型的性能

Roc 曲线下的面积,介于 0.1 和 1 之间。Auc 作为数值可以直观的评价分类器的好坏,值越大越好。

首先 AUC 值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score 值将这个正样本排在负样本前面的概率就是 AUC 值,AUC 值越大,当前分类算法越有可能将正样本排在负样本前面,从而能够更好地分类。

AUC 可以看做随机从正负样本中选取一对正负样本,其中正样本的得分大于负样本的概率!

AUC 对正负样本比例不敏感

利用概率解释,还可以得到AUC另外一个性质,对正负样本比例不敏感。 在训练模型的时候,如果正负比例差异比较大,例如正负比例为1:1000,训练模型的时候通常要对负样本进行下采样。当一个模型训练完了之后,用负样本下采样后的测试集计算出来的AUC和未采样的测试集计算的AUC基本一致,或者说前者是后者的无偏估计!

方法

1. 梯度法

次梯度法(subgradient method)是传统梯度下降方法的拓展,用来处理不可微(non-differentiable )的凸函数。它的优势是比传统方法处理问题范围大,但劣势是算法收敛速度慢。而传统的梯度下降方法只能处理可导函数。

其实无论是梯度法还是次梯度法,本质上我们都在使用一阶泰勒展开式的原理去逼近在某点的原函数。正如泰勒展开式的思想所述,将目标函数在某点附近展开为泰勒(Taylor)多项式来逼近原函数。

1. 朴素贝叶斯

![](/img/2019-03-25-ml-101.jpg)

实例解析

现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

这是典型的二分类问题,按照朴素贝叶斯的求解,转换为

  • \(P(嫁 | 不帅、性格不好、矮、不上进)\)
  • \(P(不嫁 | 不帅、性格不好、矮、不上进)\)

的概率,最终选择嫁与不嫁的答案。

这里我们根据贝特斯公式:

$$P(不帅、性格不好、矮、不上进)=P(嫁)P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)$$
$$+P(不嫁)P(不帅|不嫁)P(性格不好|不嫁)P(矮|不嫁)P(不上进|不嫁)$$

$$P(不帅、性格不好、矮、不上进|嫁)=P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)$$


将上面的公式整理一下可得:

但是由贝叶斯公式可得:对于目标求解为不同的类别,贝叶斯公式的分母总是相同的。所以,只求解分子即可:

$$P(嫁)P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)=1/2 * 1/2 * 1/6 * 1/6 * 1/6=1/864$$

对于类别“不嫁”的贝叶斯分子为:

$$P(不嫁)P(不帅|不嫁)P(性格不好|不嫁)P(矮|不嫁)P(不上进|不嫁)=1/2 * 1/3 * 1/2 * 1* 2/3=1/18$$

经代入贝叶斯公式可得:

$$P(嫁|不帅、性格不好、矮、不上进)=(1/864) / (1/864+1/18)=1/49=2.04%$$

$$P(不嫁|不帅、性格不好、矮、不上进)=(1/18) / (1/864+1/18)=48/49=97.96%$$

则 \(P(不嫁|不帅、性格不好、矮、不上进) > P(嫁|不帅、性格不好、矮、不上进)\) ,则该女子选择不嫁!


优点

  • 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!)
  • 分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)

缺点

  • 朴素贝叶斯假设属性之间相互独立,这种假设在实际过程中往往是不成立的。在属性之间相关性越大,分类误差也就越大。

带你彻彻底底搞懂朴素贝叶斯公式
朴素贝叶斯算法原理小结