一、监督学习 (分类、回归)

  • 监督学习需要具有标签(label)的训练数据。如做分类,你需要先对训练数据做标记,然后才能训练模型将数据分成标记类。

1.分类和回归对比

  • 都是对输入做出预测
  • 输出不同
    如果机器学习模型的输出是物体所属的类别是离散值,例如布尔值,我们称之为分类模型。 如:预测明天及以后几天的天气情况:明天阴,下周一晴,是分类; 如果机器学习模型的
    输出的是物体的值,是连续值的模型称为回归模型。 如:通过之前的温度来预测现在往后的温度,每一个时刻,我们都能预测出一个温度值,得到这个值用的方法就是回归。
  • 结果不同:
    分类的结果没有逼近,对就是对,错就是错,什么类别就是什么类别,最终结果只有一个。
    回归是对真实值的一种逼近预测,值不确定,当预测值与真实值相近时,误差较小时,认为这是一个好的回归。
  • 损失函数不同
    回归问题的输出空间定义了一个度量 d = F(ytrue,yfalse)去衡量输出值与真实值之间的“误差大小”
    在分类问题中,只有分类“正确”与“错误”之分,至于错误时是将Class 5分到Class 6,还是Class 7,并没有区别

2.分类

机器学习模型的输出是物体所属的类别是离散值,例如布尔值,我们称之为分类模型。

1)K近邻

  • 依据最邻近的一个或者几个样本的类别,来决定待分类的样本所属的类别
  • 1)算距离:给定测试对象,计算它与训练集中的每个对象的距离 欧式距离、余弦相似度
    2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻 k的选择
    3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类
  • 优点: 既可以做分类也可以做回归;可以用于非线性分类/回归;时间复杂度低为O(n);准确率高,对离群点不敏感。
  • 缺点计算量大;样本不平衡问题;内存消耗大;k值的选择对分类效果有很大影响。
  • 计算量过大的问题的解决:先将样本按距离分解成组,获得质心,然后计算未知样本到各质心的距离,选出距离最近的一组或几组,再在这些组内引用KNN

2)朴素贝叶斯

  • 存在于条件概率的一个形式,根据贝叶斯公式计算类别概率。给出训练数据,以及这些数据对应的分类。则类别概率和条件概率。都可以从给出的训练数据中计算出来。
  • 优点:在数据较少的情况下仍然有效;可以处理多类别问题;适合增量式训练。
  • 缺点:对于输入数据的表达方式较为敏感;分类决策存在错误率;属性之间的独立性假设往往不成立(可先聚类)。

3)Logistic回归(逻辑回归LR)

  • 逻辑回归是sigmoid+线性回归。 根据损失函数,得到分类器结果与真实情况的差距,根据这个差距,采用梯度下降等优化方法,优化W值。
  • 目的:对输入的特征点,进行分类。以二分类为例讨论,所有点被分为0和1。不过这里的回归不是回归标签,因为标签是二值,回归的是分为1类的概率p。
  • 使用交叉熵作为损失函数;需要进行正则化
  • 求解: 梯度下降(BGD SGD MBGD);牛顿法
  • 优点:训练速度快;可解释性强;形式简单
  • 缺点:准确率低;无法解决数据不平衡的问题;对于非线性数据效果不好

4)支持向量机(SVM)

  • 是一个二分类模型,通过在特征空间中寻找间隔最大化的分离超平面的线性分类器,间隔最大化时鲁棒性最强 泛化能力最强。

  • 根据训练样本特性:线性可分支持向量机(可分 硬间隔);线性支持向量机(近似可分 软间隔);非线性支持向量机(核函数 )

  • 损失函数:合页损失函数+正则项

  • 惩罚系数C越高 过拟合 越低欠拟合

  • 支持向量
    线性可分SVM:在二维空间上,两类点被一条直线完全分开叫做线性可分。
    最大间隔超平面:从二维扩展到多维空间中时,将两类点完全正确地划分开的线就变成了一个超平面。
    支持向量:样本中距离超平面最近的一些点,这些点叫做支持向量。
    最优化:SVM 想要的就是找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。

  • 软间隔
    相比于硬间隔的苛刻条件,我们允许个别样本点出现在间隔带里面

  • 核函数
    可能会碰到的一种情况是样本点不是线性可分的。此使需要将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分
    包括:线性核 径向基(RBF)高斯核 幂指数 拉普拉斯

  • 优点缺点
    优点:泛化错误率低;能找出对任务至关重要的关键样本;决策函数只由少数的支持向量所确定计算开销不大;可用于非线性分类;结果易解释
    缺点:没有缺失值策略,缺失数据敏感;对参数调节和核函数选择敏感;原始分类器不加修改仅适用于处理二类问题。

5)决策树

  • 通过建立决策树划分子集,解决回归和分类的问题,划分标准:让模型的不确定性降低的越快越好
  • 决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。

(1)特征选择 :基于其特征选择方式的不同产生了不同的决策树类型,主要是ID3算法,C4.5算法和CART算法,其中ID3算法的评价指标是信息增益,C4.5算法的评价指标是信息增益率,CART算法的评价指标是基尼系数

  • 信息增益 - ID3: 以某特征划分数据集前后的熵的差值。使用所有特征划分数据集D,计算得到多个特征划分数据集D的信息增益,从这些信息增益中选择最大的。对于待划分的数据集D,其 entroy(前)是一定的,但是划分之后的熵 entroy(后)是不定的,entroy(后)越小说明使用此特征划分得到的子集的不确定性越小(也就是纯度越高),因此 entroy(前) - entroy(后)差异越大,说明使用当前特征划分数据集D的话,其纯度上升的更快。缺点:信息增益偏向取值较多的特征

  • 信息增益率 - C4.5:
    是在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。

    惩罚参数:数据集D以特征A作为随机变量的熵的倒数,即:将特征A取值相同的样本划分到同一个子集中
    缺点:信息增益比偏向取值较少的特征

  • 基尼指数 - CART
    表示在样本集合中一个随机选中的样本被分错的概率。= 样本被选中的概率 * 样本被分错的概率。

    选中的样本属于k的概率为pk,则这个样本被分错的概率是(1-pk);样本中有K个类别,一个随机选中的样本可以属于这k个类别中的任意一个,因而对类别加和;在候选属性集合中,选取那个使划分后基尼指数最小的属性

(2)决策树生成

  • 开始,所有记录看作一个节点
  • 遍历每个变量的每一种分割方式,找到最好的分割点
  • 分割成两个节点N1和N2
  • 对N1和N2分别继续执行2-3步,直到每个节点足够“纯”为止
  • 停止条件:当前节点中的记录数低于一个最小的阀值,那么就停止分割

(3)决策树的修剪
为了解决过拟合的问题,基于验证集用剪枝提高决策树的泛化性。验证集在预剪枝中用于决定该结点是否有必要依据该属性进行展开,在后剪枝中用于判断该结点是否需要进行剪枝。

  • 预剪枝:及早的停止树的构建,包括限制叶子结点个数,树的最大深度。在每一次实际对结点进行进一步划分之前,先采用验证集的数据来验证如果划分是否能提高划分的准确性。如果不能,就把结点标记为叶结点并退出进一步划分;如果可以就继续递归生成节点。
  • 后剪枝:先构造树,然后删除或者折叠信息量少的枝。对想要进行剪枝的结点进行验证集数据的准确性比较,如果剪枝能带来准确性的提高,那么就剪枝,否则保留。然后去判断其它需要考虑剪枝的结点。

4)优点:得到的模型很容易可视化;算法完全不受数据缩放影响

3.回归

  • 有一组数据(x,y),找出一个线性方程,使得数据到线上的距离总和最小。
  • 距离最小化:梯度下降法/最小二乘法

线性回归

  • 用线性的函数,如y=ax+b,去拟合一堆数据点,以达到给定因变量x,输出预测值y’的能力。
  • 损失函数
    MSE L2损失函数预测值与真实值之间距离平方的均值
    MAE L1损失函数预测值与真实值之间距离均值
    MAE作为损失函数更稳定,并且对离群值不敏感,但是其导数不连续,求解效率低。收敛较慢。
    MSE 求解速度高,但是其对离群值敏感,不过可以将离群值的导数设为0(导数值大于某个阈值)来避免这种情况。
  • 通过寻找最小损失函数更新参数。

3)非线性分类器
非线性分类器编程复杂,但是效果拟合能力强
当特征维度低时选择非线性分类器
随机森林(RF)

  • 以随机的方式构建一个森林由很多的相互不关联的决策树组成的森林。通过集成学习的思想将多棵树集成(集成学习通过建立几个模型组合的来解决单一预测问题)。
  • 多个决策树(分类器/模型)各自独立地学习和作出预测,这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。

二、无监督学习 (聚类)

非监督学习不需要标签,它只有输入数据,目标是发现数据中的规律。

k-means聚类

  • k-Nearest Neighbors 是一种监督学习算法,而k-means是非监督的。knn算法需要事先已有标注好的数据,当你需要对未标注的数据进行分类时,统计它附近最近的k个样本,将其划分为样本数最多的类别中。k-means聚类只需要一些未分类的数据点和阀值,算法会逐渐将样本点进行分成族类。

三、PCA降维

原理

  • 找到数据中的主成分 并利用主成分表示数据
  • 将原始数据按列组成n行m列矩阵X
  • 将X的每一行(代表一个属性字段)进行零均值化(减去这一行的均值)
  • 求去均值化后的协方差矩阵 对协方差矩阵进行特征性分解
  • 将特征向量按特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
  • P为降维到k维后的数据

方差:单个数据的分散程度
协方差:两个数据的相似程度
协方差矩阵:对角线为方差 其他地方为协方差

目标

使协方差下降(特征分解);方差上升;按特征值排列

作用

  • 缓解维度灾难
  • 用于降噪舍弃小的特征
  • 加剧过拟合
  • 特征独立

四、集成学习

Bagging、Boosting、Stacking、Blending
Bagging是并行化的,而Boosting是串行的。Bagging训练的速度就快些,而且对于大规模分布式训练来说,Bagging的优势就更大了。

Boosting:

  • 从训练集训练一个基学习器
  • 根据表现对样本进行调整 使做错的样本得到更多的关注,提高错误分类样本的权重
  • 用调整后的样本训练下一个学习器
  • 然后把结果并起来作为最终的预测结果

1)GBDT

  • GBDT(梯度提升决策树Gradient Boosting Decision
    Tree)。基学习器都是CART回归树。GBDT算法在每一步迭代时是输出的值不一样,本轮要拟合的输出值是之前的模型的预测值和真实值的差值(损失)。

  • 例:假如某人的年龄为30岁,第一次用20岁去拟合,发现损失还有10岁,第二次用6岁去拟合10岁,发现损失还有4岁,第三次用3岁去拟合4岁,依次下去直到损失在我们可接受范围内。

  • 损失函数:
    对于分类问题可以选用指数损失函数、对数损失函数。
    对于回归问题可以选用均方差损失函数、绝对损失函数。

  • 正则化
    对于每个模型乘以一个系数λ,降低每个模型对拟合损失的贡献。
    每次按比例(推荐[0.5, 0.8] 之间)随机抽取部分样本来训练模型,可以减小方差,但同样会增加模型的偏差,可采用交叉验证选取,这种方式称为子采样。采用子采样的GBDT有时也称为随机梯度提升树(SGBT)。
    控制基学习器CART树的复杂度,可以采用剪枝正则化。

  • 缺点:难以并行化

2)Adaboost

  • 提高前一轮弱分类错误分类样本的权重,降低正确分类样本的权重,因此,在后面的训练中,接下来的分类器就更加“关注”那些分错的样本点,这样,多个弱分类器组合起来就是Adaboost,

3)GBDT与Adboost

  • Adaboost用错分数据点来识别问题,通过调整错分数据点的权重来改进模型。GBDT通过负梯度来识别问题,每一轮训练时所关注的重点是本轮产生结果的残差,下一轮以本轮残差作为输入,尽量去拟合这个残差,使下一轮输出的残差不断变小。通过计算负梯度来改进模型。
  • 不同的是,AdaBoost是通过提升错分数据点的权重来定位模型的不足,而GBDT是通过算梯度来定位模型的不足。因此相比AdaBoost,GBDT可以使用更多种类的目标函数。

Bagging

通过有放回的采样 训练基学习器 将每个基学习器结合,使子学习器之间尽可能独立
1)随机森林(RF)

  • 决策树的集成;保证进入训练的单棵决策树的样本不一样,包括样本数量,样本的特征维度,以及其他可以影响训练模型的因素。
  • 步骤:
    对N个样本M个特征的数据集D进行w次采样,每次有放回的抽取x个生成w个子集
    每个子集生成一个决策树 每次未抽取到的作为oob(w个)
    对于单个决策树 按照节点不纯度最小原则分裂到-所有样例属于同一类
    将样本使用w个决策树预测 取最高票、取平均
  • 优点:不用担心过拟合;有抗噪能力;可以用于估计特征重要性
  • 缺点:对于样本少/维度小样本效果不好;结果不稳定

Stacking

用不同类型的弱学习器分层继集成输出

Blending

使用线性方法融合多个弱学习器

五、生成模型和判别模型

生成模型

  • 由数据学习联合概率分布 ,然后求出条件概率分布作为预测的模型。基本思想就是首先建立样本的联合概率密度模型,然后再得到后验概率,再利用它进行分类。
  • 如朴素贝叶斯、混合高斯、隐马尔可夫(HMM)

判别模型

  • 由数据直接学习决策函数,或者条件概率分布,作为预测的模型。
  • 如:感知机、k近邻、决策树、逻辑回归、最大熵、SVM、Boosting、条件随机场(CRF) 、CNN
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐