DW集成学习Task4

混淆矩阵(真阳性TP:预测值和真实值都为正例、假阴性FN:预测值为负例,真实值位正例、假阳性FP:预测值为正例,真实值为负例、真阴性TN:预测值和真实值都为负例)
分类模型的指标:

  • 准确率:分类正确的样本数占总样本的比例
    A C C = T P + T N F P + F N + T P + T N ACC=\frac{TP+TN}{FP+FN+TP+TN} ACC=FP+FN+TP+TNTP+TN
  • 精度:预测为正且分类正确的样本占预测值为正的比例
    P R E = T P T P + F P PRE=\frac{TP}{TP+FP} PRE=TP+FPTP
  • 召回率:预测为正且分类正确的样本占类别为正的比例
    R E C = T P T P + F N REC=\frac{TP}{TP+FN} REC=TP+FNTP
  • F1值:综合衡量精度和召回率
    F 1 = P R E ∗ R E C P R E + R E C F1=\frac{PRE*REC}{PRE+REC} F1=PRE+RECPREREC
  • ROC曲线:以假阳率为横轴,真阳率为纵轴画出来的曲线,曲线下方的面积越大越好

1.逻辑回归(logistic regression)

(推导过程)

2.线性判别分析(LDA)

一种基于概率的分类模型,是一个比较久远的算法,从两个方向去描述这个算法,分别是基于贝叶斯公式降维分类的思想。
降维:类内方差小,类间方差大(松耦合,高内聚)

判别模型和生成模型:
P ( y ∣ x ) = P ( x , y ) P ( x ) = p ( y ) ∗ P ( x ∣ y ) P ( x ) P(y|x)=\frac{P(x,y)}{P(x)}=\frac{p(y)*P(x|y)}{P(x)} P(yx)=P(x)P(x,y)=P(x)p(y)P(xy)
判别模型:只要比较 P ( x ∣ y ) P ( y ) P(x|y)P(y) P(xy)P(y)的大小,因为 P ( x ) P(x) P(x) y y y无关
生成模型:要计算出 P ( y ∣ x ) P(y|x) P(yx)的分布,而 P ( x ) P(x) P(x)不易得到,求 P ( x , y ) P(x,y) P(x,y) y y y的积分,利用MCMC

3.朴素贝叶斯

线性判别分析:假设每种分类类别下的特征遵循一个协方差矩阵,每两个特征之间是存在协方差的,因此,在线性判别分析中各种特征是不独立的。
朴素贝叶斯算法对线性判别分析做进一步的模型简化,将线性判别分析中的协方差矩阵之间的协方差全部变成0,只保留各自特征的方差,也就是朴素贝叶斯假设各个特征之间是不相关的。
模型简化可以带来方差的减小和偏差的增大。

4.决策树

在回归树中,对一个给定的观测值,因变量的预测值取它所属的终端结点内训练集的平均因变量。
对于分类树来说,给定一个观测值,因变量的预测值为它所属的终端结点内训练集的最常出现的类。
分类树的构造过程与回归树很类似,与回归树一样,分类树也是采用递归二叉分裂,但是在分类树中,均方误差无法作为确定分裂结点的准则,一个很自然的替代指标是分类错误率。
分类错误率:此区域内的训练集中非常见类所占的类别。
但分类错误率在构建决策树时不够敏感,一般在实际中用一下两个指标代替:

  1. 基尼系数
  2. 交叉熵

决策树分类算法的完整步骤:

  1. 选择最优切分特征 j j j以及该特征上的最优点 s s s:遍历特征 j j j以及固定 j j j后遍历切分点 s s s,选择使得基尼系数或者交叉熵最小的 ( j , s ) (j,s) (j,s);
  2. 按照 ( j , s ) (j,s) (j,s)分裂特征空间,每个区域内的类别为该区域内样本比例最多的类别;
  3. 继续调用步骤1,2直到满足停止条件,就是每个区域的样本数小于等于5;
  4. 将特征空间划分为 J J J各不同的区域,生成分类树。

5.支持向量机(SVM)

6.非线性支持向量机

转换为核函数方法:

  1. 多项式核函数:是线性不可分SVM常用的核函数之一
  2. 高斯核函数:在SVM中也称为径向基核函数,是非线性分类SVM最主流的核函数。libsvm默认的核函数就是它。使用高斯核函数之前需要将特征标准化
  3. Sigmoid核函数:也是线性不可分SVM常用的核函数之一,此时SVM相当于没有隐藏层的简单神经网络
  4. 余弦相似度核:常用于衡量两段文字的余弦相似度

集成学习

是一种模型融合的方法
主要包括Bagging、Boosting、Stacking,都是将弱分类器变成强分类器

Bootstrap

自助采样,有放回采样

Bagging

Bagging思想的实质:通过Bootstrap的方式对全样本数据集进行抽样得到抽样子集,对不同的子集使用同一种基本模型进行拟合,然后投票得出最终的预测。
Bagging主要通过降低方差的方式减少预测误差
随机森林=Bagging+特征采样,进一步减小方差

Boosting

Boosting思想的实质:使用同一组数据集进行反复学习,得到一系列简单模型,然后组合这些模型构成一个预测性能十分强大的机器学习模型。
Boosting思想提高最终的预测结果是通过不断减少偏差的形式,与Bagging有着本质的不同。
主要介绍两类常用的Boosting方式:Adaptive Boosting和Gradient Boosting以及它们的变体Xgboost、LightGBM以及Catboost。

在概率近似正确PAC学习的框架下:
弱学习:识别错误率小于1/2(即准确率仅比随机猜测略高的学习算法)
强学习:识别准确率很高并能在多项式时间内完成的学习算法
在PAC学习的框架下,强可学习和弱可学习是等价的。

大多数Boosting方法都是通过改变训练数据集的概率分布(训练数据不同样本的权值),针对不同概率分布的数据调用弱分类算法学习一系列的弱分类器。

Adaboost基本原理

  • 提高那些被前一轮分类器错误分类的样本的权重,而降低那些被正确分类的样本的权重,这样那些在上一轮分类器中没有得到正确分类的样本,由于其权重的增大而在后一轮的训练中备受关注;
  • 各个弱分类器的组合是通过采取加权多数表决的方式,具体来说,加大分类错误率低的弱分类器的权重,因为这些分类器能更好地完成分类任务,而减小分类错误率较大的弱分类器的权重,使其在表决中起较小的作用。

Adaboost模型的决策边界比单层决策树的决策边界要复杂得多,Adaboost试图用增加模型复杂度而降低偏差的方式去减少总误差,但是过程中引入了方差,可能出现过拟合,因此在训练集和测试集之间的性能存在较大的差距。
与单个分类器相比,Adaboost等Boosting模型增加了计算的复杂度,而且Boosting方式无法做到现在流行的并行计算的方式进行训练,因为每一步迭代都要基于上一步的基本分类器。

前向分步算法
根据Adaboost算法抽象出来的整体框架逻辑,构建集成学习的一个非常重要的框架——前向分步算法。
不仅可以解决分类问题,也可以解决回归问题
(1)加法模型
前向分步算法可以用来求解复杂的优化问题,基本思路是:因为学习的是加法模型,如果从前往后,每一步只优化一个基函数及其系数,逐步逼近目标函数,那么就可以降低优化的复杂度。
(2)前向分步算法
(3)前向分步算法与Adaboost的关系:
Adaboost算法是前向分步算法的特例,Adaboost算法是由基本分类器组成的加法模型,损失函数为指数损失函数。

梯度提升决策树(GBDT)

(1)基于残差学习的提升树算法
在使用加法模型+前向分步算法的框架解决问题之前,首先确定框架内使用的基函数是什么,这里使用决策树分类器,树算法最重要的是寻找最佳的划分点,分类树用纯度来判断最佳划分点使用信息增益(ID3算法),信息增益率(C4.5算法),基尼系数(CART分类树)。
但在回归树中的样本标签是连续数值,可划分点包含了所有特征的所有可取的值,所以使用熵之类的指标不合适,取而代之的是平方误差,它能很好地评判拟合程度。基函数确定以后,需要确定每次提升的标准是什么。
在Adaboost算法内使用了分类错误率来修正样本权重以及计算每个基本分类器的权重,而回归问题没有分类错误率。模仿分类错误率,用每个样本的残差表示每次使用基函数预测时没有解决的那部分问题。
(2)梯度提升决策树算法(GBDT)
提升树利用加法模型和向前分步算法实现学习的过程,当损失函数为平方损失和指数损失时,每一步优化是相当简单的,但是对于一般的损失函数而言,每一步优化不是那么容易,因此使用梯度下降优化方法。
利用损失函数的负梯度在当前模型的值作为回归问题提升树算法中的残差的近似值,拟合回归树。与其说负梯度作为残差的近似值,不如说残差是负梯度的一种特例。

XGboost

XGboost本质上还是一个GBDT,两者都是boosting方法。XGboost是一个优化的分布式梯度增强库,在GBDT框架下实现机器学习算法。XGboost提供了并行树提升(也称为GBDT、GBM),可以快速准确地解决许多数据科学问题。
XGboost以CART决策树为子模型,通过Gradient Tree Boosting实现多棵CART树的集成学习,得到最终模型。

LightGBM

LightGBM也是像XGBoost一样,是一类集成算法,算法本质上与XGboost没有出入,只是在XGboost的基础上进行了优化。

  • 优化速度和内存使用
    降低了计算每个分割增益的成本;
    使用直方图减法进一步提高速度;
    减少内存使用;
    减少并行学习的计算成本;
  • 稀疏优化
    用离散的bin替换连续的值,如果#bins较小,则可以使用较小的数据类型来存储训练数据;
    无需存储其他信息即可对特征数值进行与排序;
  • 精度优化
    使用叶子树为导向的决策树建立算法而不是树的深度导向;
    分类特征的编码方式的优化;
    通信网络的优化;
    并行学习的优化;
    GPU支持。

你可能感兴趣的:(DW,其他)