review2:机器学习基础

review2:机器学习基础

  • 第二章 机器学习基础
    • 2.1 大话理解机器学习本质
    • 2.2 各种常见算法图示
    • 2.3 监督学习、非监督学习、半监督学习、弱监督学习?
    • 2.4 监督学习有哪些步骤
    • 2.5 多实例学习?
    • 2.6 什么是神经网络?
    • 2.7 理解局部最优与全局最优
    • 2.8 分类算法
      • 2.8.1 常用分类算法的优缺点?
      • 2.8.2 分类算法的评估方法?
      • 2.8.3 正确率能很好的评估分类算法吗?
      • 2.8.4 什么样的分类器是最好的?
    • 2.9 逻辑回归
      • 2.9.1 回归划分
      • 2.9.2 逻辑回归适用性
      • 2.9.3 逻辑回归与朴素贝叶斯有什么区别?
      • 2.9.4 线性回归与逻辑回归的区别?
    • 2.10 代价函数
      • 2.10.1 为什么需要代价函数?
      • 2.10.2 代价函数作用原理
      • 2.10.3 为什么代价函数要非负?
      • 2.10.4 常见代价函数?
      • 2.10.5 为什么用交叉熵代替二次代价函数
    • 2.11 损失函数
      • 2.11.1 什么是损失函数?
      • 2.11.2 常见的损失函数
      • 2.11.3 逻辑回归为什么使用对数损失函数?
      • 2.11.4 对数损失函数是如何度量损失的?
    • 2.12 梯度下降
      • 2.12.1 机器学习中为什么需要梯度下降?
      • 2.12.2 梯度下降法缺点?
      • 2.12.3 梯度下降法直观理解?
      • 2.12.4 梯度下降法算法描述
      • 2.12.5 如何对梯度下降法进行调优?
      • 2.12.6 随机梯度和批量梯度区别?
      • 2.12.7 各种梯度下降法性能比较
    • 2.13 计算图的导数计算?
    • 2.14 线性判别分析(LDA)
      • 2.14.1 LDA思想总结
      • 2.14.2 图解LDA核心思想
      • 2.14.3 二类LDA算法原理?
      • 2.14.4 LDA算法流程总结?
      • 2.14.5 LDA和PCA区别?
      • 2.14.6 LDA优缺点?
    • 2.15 主成分分析(PCA)
      • 2.15.1 主成分分析(PCA)思想总结
      • 2.15.2 图解PCA核心思想
      • 2.15.3 PCA算法推理
      • 2.15.4 PCA算法流程总结
      • 2.15.5 PCA算法主要优缺点
      • 2.15.6 降维的必要性及目的
      • 2.15.7 KPCA与PCA的区别?
    • 2.16 模型评估
      • 2.16.1 模型评估常用方法?
      • 2.16.2 误差、偏差和方差有什么区别和联系?
      • 2.16.3 经验误差与泛化误差
      • 2.16.4 图解欠拟合、过拟合
      • 2.16.5 如何解决过拟合与欠拟合?
      • 2.16.6 交叉验证的主要作用
      • 2.16.7 理解k折交叉验证
      • 2.16.8 混淆矩阵
      • 2.16.9 错误率及精度
      • 2.16.10 查准率与查全率
      • 2.16.11 ROC与AUC
      • 2.16.12 如何画ROC曲线?
      • 2.16.13 如何计算TPR,FPR?
      • 2.16.14 如何计算AUC?
      • 2.16.15 为什么使用Roc和Auc评价分类器?
      • 2.16.16 直观理解AUC
      • 2.16.17 代价敏感错误率与代价曲线
      • 2.16.18 模型有哪些比较检验方法
      • 2.16.19 为什么使用标准差?
      • 2.16.20 类别不平衡产生原因?
      • 2.16.21 常见的类别不平衡问题解决方法
    • 2.17 决策树
      • 2.17.1 决策树的基本原理
      • 2.17.2 决策树的三要素?
      • 2.17.3 决策树学习基本算法
      • 2.17.4 决策树算法优缺点
      • 2.17.5 熵的概念以及理解
      • 2.17.6 信息增益的理解
      • 2.17.7 剪枝处理的作用及策略?
    • 2.18 支持向量机
      • 2.18.1 什么是支持向量机
      • 2.18.2 支持向量机能解决哪些问题?
      • 2.18.3 核函数特点及其作用?
      • 2.18.4 SVM为什么引入对偶问题?
      • 2.18.5 如何理解SVM中的对偶问题
      • 2.18.7 常见的核函数有哪些?
      • 2.18.9 SVM主要特点?
      • 2.18.10 SVM主要缺点?
      • 2.18.11 逻辑回归与SVM的异同
    • 2.19 贝叶斯分类器
      • 2.19.1 图解极大似然估计
      • 2.19.2 极大似然估计原理
      • 2.19.3 贝叶斯分类器基本原理
      • 2.19.4 朴素贝叶斯分类器
      • 2.19.5 举例理解朴素贝叶斯分类器
      • 2.19.6 半朴素贝叶斯分类器
    • 2.20 EM算法
      • 2.20.1 EM算法基本思想
      • 2.20.2 EM算法推导
      • 2.20.3 图解EM算法
      • 2.20.4 EM算法流程
    • 2.21 降维和聚类
      • 2.21.1 图解为什么会产生“维数灾难”?
      • 2.21.2 怎样避免维数灾难
      • 2.21.3 聚类和降维有什么区别与联系?
      • 2.21.4 有哪些聚类算法优劣衡量标准
      • 2.21.5 聚类和分类有什么区别?
      • 2.21.6 不同聚类算法特点性能比较
      • 2.21.7 四种常用聚类方法之比较
      • 2.21.8 k-means聚类算法
      • 2.21.9 层次聚类算法
      • 2.21.10 SOM聚类算法
      • 2.21.11 FCM聚类算法
      • 2.21.12 四种聚类算法试验
    • 2.22 GBDT和随机森林的区别
    • 2.24 大数据与深度学习之间的关系

第二章 机器学习基础

2.1 大话理解机器学习本质

​ 机器学习(Machine Learning, ML),顾名思义,让机器去学习。这里,机器指的是计算机,是算法运行的物理载体,你也可以把各种算法本身当做一个有输入和输出的机器。那么到底让计算机去学习什么呢?对于一个任务及其表现的度量方法,设计一种算法,让算法能够提取中数据所蕴含的规律,这就叫机器学习。如果输入机器的数据是带有标签的,就称作有监督学习。如果数据是无标签的,就是无监督学习。

2.2 各种常见算法图示

|回归算法|聚类算法|正则化方法|

|决策树学习|贝叶斯方法|基于核的算法|

|聚类算法|关联规则学习|人工神经网络|

|深度学习|降低维度算法|集成算法|

2.3 监督学习、非监督学习、半监督学习、弱监督学习?

​ 根据数据类型的不同,对一个问题的建模有不同的方式。依据不同的学习方式和输入数据,机器学习主要分为以下四种学习方式。

监督学习

  1. 监督学习是使用已知正确答案的示例来训练网络。已知数据和其一一对应的标签,训练一个预测模型,将输入数据映射到标签的过程。
  2. 监督式学习的常见应用场景如分类问题和回归问题。
  3. 常见的有监督机器学习算法包括支持向量机(Support Vector Machine, SVM),朴素贝叶斯(Naive Bayes),逻辑回归(Logistic Regression),K近邻(K-Nearest Neighborhood, KNN),决策树(Decision Tree),随机森林(Random Forest),AdaBoost以及线性判别分析(Linear Discriminant Analysis, LDA)等。深度学习(Deep Learning)也是大多数以监督学习的方式呈现。

非监督式学习

  1. 在非监督式学习中,数据并不被特别标识,适用于你具有数据集但无标签的情况。学习模型是为了推断出数据的一些内在结构。
  2. 常见的应用场景包括关联规则的学习以及聚类等。
  3. 常见算法包括Apriori算法以及k-Means算法。

半监督式学习

  1. 在此学习方式下,输入数据部分被标记,部分没有被标记,这种学习模型可以用来进行预测。
  2. 应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,通过对已标记数据建模,在此基础上,对未标记数据进行预测。
  3. 常见算法如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。

弱监督学习

  1. 弱监督学习可以看做是有多个标记的数据集合,次集合可以是空集,单个元素,或包含多种情况(没有标记,有一个标记,和有多个标记)的多个元素。
  2. 数据集的标签是不可靠的,这里的不可靠可以是标记不正确,多种标记,标记不充分,局部标记等。
  3. 已知数据和其一一对应的弱标签,训练一个智能算法,将输入数据映射到一组更强的标签的过程。标签的强弱指的是标签蕴含的信息量的多少,比如相对于分割的标签来说,分类的标签就是弱标签。
  4. 举例,给出一张包含气球的图片,需要得出气球在图片中的位置及气球和背景的分割线,这就是已知弱标签学习强标签的问题。

​ 在企业数据应用的场景下, 人们最常用的可能就是监督式学习和非监督式学习的模型。 在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据, 目前半监督式学习是一个很热的话题。

2.4 监督学习有哪些步骤

​ 监督学习是使用已知正确答案的示例来训练网络,每组训练数据有一个明确的标识或结果。想象一下,我们可以训练一个网络,让其从照片库中(其中包含气球的照片)识别出气球的照片。以下就是我们在这个假设场景中所要采取的步骤。

步骤1:数据集的创建和分类
​ 首先,浏览你的照片(数据集),确定所有包含气球的照片,并对其进行标注。然后,将所有照片分为训练集和验证集。目标就是在深度网络中找一函数,这个函数输入是任意一张照片,当照片中包含气球时,输出1,否则输出0。

步骤2:数据增强(Data Augmentation)
​ 当原始数据搜集和标注完毕,一般搜集的数据并不一定包含目标在各种扰动下的信息。数据的好坏对于机器学习模型的预测能力至关重要,因此一般会进行数据增强。对于图像数据来说,数据增强一般包括,图像旋转,平移,颜色变换,裁剪,仿射变换等。

步骤3:特征工程(Feature Engineering)
​ 一般来讲,特征工程包含特征提取和特征选择。常见的手工特征(Hand-Crafted Feature)有尺度不变特征变换(Scale-Invariant Feature Transform, SIFT),方向梯度直方图(Histogram of Oriented Gradient, HOG)等。由于手工特征是启发式的,其算法设计背后的出发点不同,将这些特征组合在一起的时候有可能会产生冲突,如何将组合特征的效能发挥出来,使原始数据在特征空间中的判别性最大化,就需要用到特征选择的方法。在深度学习方法大获成功之后,人们很大一部分不再关注特征工程本身。因为,最常用到的卷积神经网络(Convolutional Neural Networks, CNNs)本身就是一种特征提取和选择的引擎。研究者提出的不同的网络结构、正则化、归一化方法实际上就是深度学习背景下的特征工程。

步骤4:构建预测模型和损失
​ 将原始数据映射到特征空间之后,也就意味着我们得到了比较合理的输入。下一步就是构建合适的预测模型得到对应输入的输出。而如何保证模型的输出和输入标签的一致性,就需要构建模型预测和标签之间的损失函数,常见的损失函数(Loss Function)有交叉熵、均方差等。通过优化方法不断迭代,使模型从最初的初始化状态一步步变化为有预测能力的模型的过程,实际上就是学习的过程。

步骤5:训练
​ 选择合适的模型和超参数进行初始化,其中超参数比如支持向量机中核函数、误差项惩罚权重等。当模型初始化参数设定好后,将制作好的特征数据输入到模型,通过合适的优化方法不断缩小输出与标签之间的差距,当迭代过程到了截止条件,就可以得到训练好的模型。优化方法最常见的就是梯度下降法及其变种,使用梯度下降法的前提是优化目标函数对于模型是可导的。

步骤6:验证和模型选择
​ 训练完训练集图片后,需要进行模型测试。利用验证集来验证模型是否可以准确地挑选出含有气球在内的照片。
​ 在此过程中,通常会通过调整和模型相关的各种事物(超参数)来重复步骤2和3,诸如里面有多少个节点,有多少层,使用怎样的激活函数和损失函数,如何在反向传播阶段积极有效地训练权值等等。

步骤7:测试及应用
​ 当有了一个准确的模型,就可以将该模型部署到你的应用程序中。你可以将预测功能发布为API(Application Programming Interface, 应用程序编程接口)调用,并且你可以从软件中调用该API,从而进行推理并给出相应的结果。

2.5 多实例学习?

​ 多实例学习(Multiple Instance Learning, MIL) :已知包含多个数据的数据包和数据包的标签,训练智能算法,将数据包映射到标签的过程,在有的问题中也同时给出包内每个数据的标签。
​ 比如说一段视频由很多张图组成,假如10000张,那么我们要判断视频里是否包含某一物体,比如气球。单张标注每一帧是否有气球太耗时,通常人们看一遍说这个视频里是否有气球,就得到了多示例学习的数据。10000帧的数据不是每一个都有气球出现,只要有一帧有气球,那么我们就认为这个数据包是有气球的。只有当所有的视频帧都没有气球,才是没有气球的。从这里面学习哪一段视频(10000张)是否有气球出现就是多实例学习的问题。

2.6 什么是神经网络?

​ 神经网络就是按照一定规则将多个神经元连接起来的网络。不同的神经网络,具有不同的连接规则。
例如全连接(Full Connected, FC)神经网络,它的规则包括:

  1. 有三种层:输入层,输出层,隐藏层。

  2. 同一层的神经元之间没有连接。

  3. fully connected的含义:第 N 层的每个神经元和第 N-1 层的所有神经元相连,第 N-1 层神经元的输出就是第 N 层神经元的输入。

  4. 每个连接都有一个权值。

    神经网络架构
    ​ 下面这张图就是一个神经网络系统,它由很多层组成。输入层负责接收信息,比如一只猫的图片。输出层是计算机对这个输入信息的判断结果,它是不是猫。隐藏层就是对输入信息的传递和加工处理。
    [外链图片转存失败(img-oRBD7f4r-1563801132613)(./img/ch2/2.5.1.png)]

2.7 理解局部最优与全局最优

​ 笑谈局部最优和全局最优

​ 柏拉图有一天问老师苏格拉底什么是爱情?苏格拉底叫他到麦田走一次,摘一颗最大的麦穗回来,不许回头,只可摘一次。柏拉图空着手出来了,他的理由是,看见不错的,却不知道是不是最好的,一次次侥幸,走到尽头时,才发现还不如前面的,于是放弃。苏格拉底告诉他:“这就是爱情。”这故事让我们明白了一个道理,因为生命的一些不确定性,所以全局最优解是很难寻找到的,或者说根本就不存在,我们应该设置一些限定条件,然后在这个范围内寻找最优解,也就是局部最优解——有所斩获总比空手而归强,哪怕这种斩获只是一次有趣的经历。
​ 柏拉图有一天又问什么是婚姻?苏格拉底叫他到树林走一次,选一棵最好的树做圣诞树,也是不许回头,只许选一次。这次他一身疲惫地拖了一棵看起来直挺、翠绿,却有点稀疏的杉树回来,他的理由是,有了上回的教训,好不容易看见一棵看似不错的,又发现时间、体力已经快不够用了,也不管是不是最好的,就拿回来了。苏格拉底告诉他:“这就是婚姻。”

​ 优化问题一般分为局部最优和全局最优。

  1. 局部最优,就是在函数值空间的一个有限区域内寻找最小值;而全局最优,是在函数值空间整个区域寻找最小值问题。
  2. 函数局部最小点是它的函数值小于或等于附近点的点。但是有可能大于较远距离的点。
  3. 全局最小点是那种它的函数值小于或等于所有的可行点。

2.8 分类算法

​ 分类算法和回归算法是对真实世界不同建模的方法。分类模型是认为模型的输出是离散的,例如大自然的生物被划分为不同的种类,是离散的。回归模型的输出是连续的,例如人的身高变化过程是一个连续过程,而不是离散的。

​ 因此,在实际建模过程时,采用分类模型还是回归模型,取决于你对任务(真实世界)的分析和理解。

2.8.1 常用分类算法的优缺点?

算法 优点 缺点
Bayes 贝叶斯分类法 1)所需估计的参数少,对于缺失数据不敏感。
2)有着坚实的数学基础,以及稳定的分类效率。
1)需要假设属性之间相互独立,这往往并不成立。(喜欢吃番茄、鸡蛋,却不喜欢吃番茄炒蛋)。
2)需要知道先验概率。
3)分类决策存在错误率。
Decision Tree决策树 1)不需要任何领域知识或参数假设。
2)适合高维数据。
3)简单易于理解。
4)短时间内处理大量数据,得到可行且效果较好的结果。
5)能够同时处理数据型和常规性属性。
1)对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。
2)易于过拟合。
3)忽略属性之间的相关性。
4)不支持在线学习。
SVM支持向量机 1)可以解决小样本下机器学习的问题。
2)提高泛化性能。
3)可以解决高维、非线性问题。超高维文本分类仍受欢迎。
4)避免神经网络结构选择和局部极小的问题。
1)对缺失数据敏感。
2)内存消耗大,难以解释。
3)运行和调参略烦人。
KNN K近邻 1)思想简单,理论成熟,既可以用来做分类也可以用来做回归;
2)可用于非线性分类;
3)训练时间复杂度为O(n);
4)准确度高,对数据没有假设,对outlier不敏感;
1)计算量太大。
2)对于样本分类不均衡的问题,会产生误判。
3)需要大量的内存。
4)输出的可解释性不强。
Logistic Regression逻辑回归 1)速度快。
2)简单易于理解,直接看到各个特征的权重。
3)能容易地更新模型吸收新的数据。
4)如果想要一个概率框架,动态调整分类阀值。
特征处理复杂。需要归一化和较多的特征工程。
Neural Network 神经网络 1)分类准确率高。
2)并行处理能力强。
3)分布式存储和学习能力强。
4)鲁棒性较强,不易受噪声影响。
1)需要大量参数(网络拓扑、阀值、阈值)。
2)结果难以解释。
3)训练时间过长。
Adaboosting 1)adaboost是一种有很高精度的分类器。
2)可以使用各种方法构建子分类器,Adaboost算法提供的是框架。
3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。
4)简单,不用做特征筛选。
5)不用担心overfitting。
对outlier比较敏感

2.8.2 分类算法的评估方法?

  • 几个常用术语
    ​ 这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negative)分别是:
    1. True positives(TP): 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数;
    2. False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
    3. False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
    4. True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。

[外链图片转存失败(img-khOnwA7o-1563801132613)(./img/ch2/2.9/1.png)]

上图是这四个术语的混淆矩阵,做以下说明:
1)P=TP+FN表示实际为正例的样本个数。
2)True、False描述的是分类器是否判断正确。
3)Positive、Negative是分类器的分类结果,如果正例计为1、负例计为-1,即positive=1、negative=-1。用1表示True,-1表示False,那么实际的类标=TF*PN,TF为true或false,PN为positive或negative。
4)例如True positives(TP)的实际类标=1*1=1为正例,False positives(FP)的实际类标=(-1)*1=-1为负例,False negatives(FN)的实际类标=(-1)*(-1)=1为正例,True negatives(TN)的实际类标=1*(-1)=-1为负例。

  • 评价指标
    1. 正确率(accuracy)
      正确率是我们最常见的评价指标,accuracy = (TP+TN)/(P+N),正确率是被分对的样本数在所有样本数中的占比,通常来说,正确率越高,分类器越好。
    2. 错误率(error rate)
      错误率则与正确率相反,描述被分类器错分的比例,error rate = (FP+FN)/(P+N),对某一个实例来说,分对与分错是互斥事件,所以accuracy =1 - error rate。
    3. 灵敏度(sensitivity)
      sensitivity = TP/P,表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力。
    4. 特异性(specificity)
      specificity = TN/N,表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力。
    5. 精度(precision)
      precision=TP/(TP+FP),精度是精确性的度量,表示被分为正例的示例中实际为正例的比例。
    6. 召回率(recall)
      召回率是覆盖面的度量,度量有多个正例被分为正例,recall=TP/(TP+FN)=TP/P=sensitivity,可以看到召回率与灵敏度是一样的。
    7. 其他评价指标
      计算速度:分类器训练和预测需要的时间;
      鲁棒性:处理缺失值和异常值的能力;
      可扩展性:处理大数据集的能力;
      可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。
    8. 精度和召回率反映了分类器分类性能的两个方面。如果综合考虑查准率与查全率,可以得到新的评价指标F1-score,也称为综合分类率: F 1 = 2 × p r e c i s i o n × r e c a l l p r e c i s i o n + r e c a l l ​ F1=\frac{2 \times precision \times recall}{precision + recall}​ F1=precision+recall2×precision×recall

​ 为了综合多个类别的分类情况,评测系统整体性能,经常采用的还有微平均F1(micro-averaging)和宏平均F1(macro-averaging )两种指标。

​ (1)宏平均F1与微平均F1是以两种不同的平均方式求的全局F1指标。

​ (2)宏平均F1的计算方法先对每个类别单独计算F1值,再取这些F1值的算术平均值作为全局指标。

​ (3)微平均F1的计算方法是先累加计算各个类别的a、b、c、d的值,再由这些值求出F1值。

​ (4)由两种平均F1的计算方式不难看出,宏平均F1平等对待每一个类别,所以它的值主要受到稀有类别的影响,而微平均F1平等考虑文档集中的每一个文档,所以它的值受到常见类别的影响比较大。

  • ROC曲线和PR曲线

​ ROC曲线是(Receiver Operating Characteristic Curve,受试者工作特征曲线)的简称,是以灵敏度(真阳性率)为纵坐标,以1减去特异性(假阳性率)为横坐标绘制的性能评价曲线。可以将不同模型对同一数据集的ROC曲线绘制在同一笛卡尔坐标系中,ROC曲线越靠近左上角,说明其对应模型越可靠。也可以通过ROC曲线下面的面积(Area Under Curve, AUC)来评价模型,AUC越大,模型越可靠。

[外链图片转存失败(img-eDmw4EIw-1563801132613)(./img/ch2/2.7.3.png)]

​ 图2.8.2.1 ROC曲线

​ PR曲线是Precision Recall Curve的简称,描述的是precision和recall之间的关系,以recall为横坐标,precision为纵坐标绘制的曲线。该曲线的所对应的面积AUC实际上是目标检测中常用的评价指标平均精度(Average Precision, AP)。AP越高,说明模型性能越好。

2.8.3 正确率能很好的评估分类算法吗?

​ 不同算法有不同特点,在不同数据集上有不同的表现效果,根据特定的任务选择不同的算法。如何评价分类算法的好坏,要做具体任务具体分析。对于决策树,主要用正确率去评估,但是其他算法,只用正确率能很好的评估吗?
​ 答案是否定的。
​ 正确率确实是一个很直观很好的评价指标,但是有时候正确率高并不能完全代表一个算法就好。比如对某个地区进行地震预测,地震分类属性分为0:不发生地震、1发生地震。我们都知道,不发生的概率是极大的,对于分类器而言,如果分类器不加思考,对每一个测试样例的类别都划分为0,达到99%的正确率,但是,问题来了,如果真的发生地震时,这个分类器毫无察觉,那带来的后果将是巨大的。很显然,99%正确率的分类器并不是我们想要的。出现这种现象的原因主要是数据分布不均衡,类别为1的数据太少,错分了类别1但达到了很高的正确率缺忽视了研究者本身最为关注的情况。

2.8.4 什么样的分类器是最好的?

​ 对某一个任务,某个具体的分类器不可能同时满足或提高所有上面介绍的指标。
​ 如果一个分类器能正确分对所有的实例,那么各项指标都已经达到最优,但这样的分类器往往不存在。比如之前说的地震预测,既然不能百分百预测地震的发生,但实际情况中能容忍一定程度的误报。假设在1000次预测中,共有5次预测发生了地震,真实情况中有一次发生了地震,其他4次则为误报。正确率由原来的999/1000=99.9下降为996/1000=99.6。召回率由0/1=0%上升为1/1=100%。对此解释为,虽然预测失误了4次,但真的地震发生前,分类器能预测对,没有错过,这样的分类器实际意义更为重大,正是我们想要的。在这种情况下,在一定正确率前提下,要求分类器的召回率尽量高。

2.9 逻辑回归

2.9.1 回归划分

广义线性模型家族里,依据因变量不同,可以有如下划分:

  1. 如果是连续的,就是多重线性回归。
  2. 如果是二项分布,就是逻辑回归。
  3. 如果是泊松(Poisson)分布,就是泊松回归。
  4. 如果是负二项分布,就是负二项回归。
  5. 逻辑回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最常用的就是二分类的逻辑回归。

2.9.2 逻辑回归适用性

  1. 用于概率预测。用于可能性预测时,得到的结果有可比性。比如根据模型进而预测在不同的自变量情况下,发生某病或某种情况的概率有多大。
  2. 用于分类。实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。进行分类时,仅需要设定一个阈值即可,可能性高于阈值是一类,低于阈值是另一类。
  3. 寻找危险因素。寻找某一疾病的危险因素等。
  4. 仅能用于线性问题。只有当目标和特征是线性关系时,才能用逻辑回归。在应用逻辑回归时注意两点:一是当知道模型是非线性时,不适用逻辑回归;二是当使用逻辑回归时,应注意选择和目标为线性关系的特征。
  5. 各特征之间不需要满足条件独立假设,但各个特征的贡献独立计算。

2.9.3 逻辑回归与朴素贝叶斯有什么区别?

  1. 逻辑回归是判别模型, 朴素贝叶斯是生成模型,所以生成和判别的所有区别它们都有。
  2. 朴素贝叶斯属于贝叶斯,逻辑回归是最大似然,两种概率哲学间的区别。
  3. 朴素贝叶斯需要条件独立假设。
  4. 逻辑回归需要求特征参数间是线性的。

2.9.4 线性回归与逻辑回归的区别?

(贡献者:黄钦建-华南理工大学)

​ 线性回归的样本的输出,都是连续值,$ y\in (-\infty ,+\infty ) , 而 逻 辑 回 归 中 ,而逻辑回归中 y\in (0,1)$,只能取0和1。

​ 对于拟合函数也有本质上的差别:

​ 线性回归: f ( x ) = θ T x = θ 1 x 1 + θ 2 x 2 + . . . + θ n x n f(x)=\theta ^{T}x=\theta _{1}x _{1}+\theta _{2}x _{2}+...+\theta _{n}x _{n} f(x)=θTx=θ1x1+θ2x2+...+θnxn

​ 逻辑回归: f ( x ) = P ( y = 1 ∣ x ; θ ) = g ( θ T x ) f(x)=P(y=1|x;\theta )=g(\theta ^{T}x) f(x)=P(y=1x;θ)=g(θTx),其中, g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1

​ 可以看出,线性回归的拟合函数,是对f(x)的输出变量y的拟合,而逻辑回归的拟合函数是对为1类样本的概率的拟合。

​ 那么,为什么要以1类样本的概率进行拟合呢,为什么可以这样拟合呢?

θ T x = 0 \theta ^{T}x=0 θTx=0就相当于是1类和0类的决策边界:

​ 当 θ T x > 0 \theta ^{T}x>0 θTx>0,则y>0.5;若$\theta ^{T}x\rightarrow +\infty , 则 ,则 y \rightarrow 1 $,即y为1类;

​ 当 θ T x < 0 \theta ^{T}x<0 θTx<0,则y<0.5;若$\theta ^{T}x\rightarrow -\infty , 则 ,则 y \rightarrow 0 $,即y为0类;

这个时候就能看出区别,在线性回归中 θ T x \theta ^{T}x θTx为预测值的拟合函数;而在逻辑回归中 θ T x ​ \theta ^{T}x​ θTx为决策边界。

线性回归 逻辑回归
目的 预测 分类
y ( i ) y^{(i)} y(i) 未知 (0,1)
函数 拟合函数 预测函数
参数计算方式 最小二乘法 极大似然估计

下面具体解释一下:

  1. 拟合函数和预测函数什么关系呢?简单来说就是将拟合函数做了一个逻辑函数的转换,转换后使得 y ( i ) ∈ ( 0 , 1 ) y^{(i)} \in (0,1) y(i)(0,1);
  2. 最小二乘和最大似然估计可以相互替代吗?回答当然是不行了。我们来看看两者依仗的原理:最大似然估计是计算使得数据出现的可能性最大的参数,依仗的自然是Probability。而最小二乘是计算误差损失。

2.10 代价函数

2.10.1 为什么需要代价函数?

  1. 为了得到训练逻辑回归模型的参数,需要一个代价函数,通过训练代价函数来得到参数。
  2. 用于找到最优解的目的函数。

2.10.2 代价函数作用原理

​ 在回归问题中,通过代价函数来求解最优解,常用的是平方误差代价函数。有如下假设函数:

h ( x ) = A + B x h(x) = A + Bx h(x)=A+Bx

​ 假设函数中有 A A A B B B两个参数,当参数发生变化时,假设函数状态也会随着变化。
如下图所示:

[外链图片转存失败(img-SHbEZNtH-1563801132613)(./img/ch2/2.16/1.jpg)]

​ 想要拟合图中的离散点,我们需要尽可能找到最优的 A A A B B B来使这条直线更能代表所有数据。如何找到最优解呢,这就需要使用代价函数来求解,以平方误差代价函数为例,假设函数为 h ( x ) = θ 0 x h(x)=\theta_0x h(x)=θ0x
平方误差代价函数的主要思想就是将实际数据给出的值与拟合出的线的对应值做差,求出拟合出的直线与实际的差距。在实际应用中,为了避免因个别极端数据产生的影响,采用类似方差再取二分之一的方式来减小个别数据的影响。因此,引出代价函数:

J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(\theta_0, \theta_1) = \frac{1}{m}\sum_{i=1}^m(h(x^{(i)})-y^{(i)})^2 J(θ0,θ1)=m1i=1m(h(x(i))y(i))2

最优解即为代价函数的最小值 min ⁡ J ( θ 0 , θ 1 ) ​ \min J(\theta_0, \theta_1)​ minJ(θ0,θ1)。如果是1个参数,代价函数一般通过二维曲线便可直观看出。如果是2个参数,代价函数通过三维图像可看出效果,参数越多,越复杂。
当参数为2个时,代价函数是三维图像。

[外链图片转存失败(img-sJp9COaj-1563801132614)(./img/ch2/2.16/2.jpg)]

2.10.3 为什么代价函数要非负?

​ 目标函数存在一个下界,在优化过程当中,如果优化算法能够使目标函数不断减小,根据单调有界准则,这个优化算法就能证明是收敛有效的。
​ 只要设计的目标函数有下界,基本上都可以,代价函数非负更为方便。

2.10.4 常见代价函数?

  1. 二次代价函数(quadratic cost)

J = 1 2 n ∑ x ∥ y ( x ) − a L ( x ) ∥ 2 J = \frac{1}{2n}\sum_x\Vert y(x)-a^L(x)\Vert^2 J=2n1xy(x)aL(x)2

​ 其中, J J J表示代价函数, x x x表示样本, y y y示实际值, a a a表示输出值, n n n表示样本的总数。使用一个样本为例简单说明,此时二次代价函数为:
J = ( y − a ) 2 2 J = \frac{(y-a)^2}{2} J=2(ya)2
​ 假如使用梯度下降法(Gradient descent)来调整权值参数的大小,权值 w w w和偏置 b b b的梯度推导如下:
∂ J ∂ b = ( a − y ) σ ′ ( z ) \frac{\partial J}{\partial b}=(a-y)\sigma'(z) bJ=(ay)σ(z)
其中, z ​ z​ z表示神经元的输入, σ ​ \sigma​ σ表示激活函数。权值 w ​ w​ w和偏置 b ​ b​ b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,权值 w ​ w​ w和偏置 b ​ b​ b的大小调整得越快,训练收敛得就越快。

:神经网络常用的激活函数为sigmoid函数,该函数的曲线如下所示:

[外链图片转存失败(img-2NAjTcrd-1563801132614)(./img/ch2/2.18/1.jpg)]

如图所示,对0.88和0.98两个点进行比较:
​ 假设目标是收敛到1.0。0.88离目标1.0比较远,梯度比较大,权值调整比较大。0.98离目标1.0比较近,梯度比较小,权值调整比较小。调整方案合理。
​ 假如目标是收敛到0。0.88离目标0比较近,梯度比较大,权值调整比较大。0.98离目标0比较远,梯度比较小,权值调整比较小。调整方案不合理。
​ 原因:在使用sigmoid函数的情况下, 初始的代价(误差)越大,导致训练越慢。

  1. 交叉熵代价函数(cross-entropy)

J = − 1 n ∑ x [ y ln ⁡ a + ( 1 − y ) ln ⁡ ( 1 − a ) ] J = -\frac{1}{n}\sum_x[y\ln a + (1-y)\ln{(1-a)}] J=n1x[ylna+(1y)ln(1a)]

其中, J J J表示代价函数, x x x表示样本, y y y表示实际值, a a a表示输出值, n n n表示样本的总数。
权值 w w w和偏置 b ​ b​ b的梯度推导如下:
∂ J ∂ w j = 1 n ∑ x x j ( σ ( z ) − y )    , ∂ J ∂ b = 1 n ∑ x ( σ ( z ) − y ) \frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\;, \frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y) wjJ=n1xxj(σ(z)y)bJ=n1x(σ(z)y)

当误差越大时,梯度就越大,权值 w w w和偏置 b b b调整就越快,训练的速度也就越快。
二次代价函数适合输出神经元是线性的情况,交叉熵代价函数适合输出神经元是S型函数的情况。

  1. 对数似然代价函数(log-likelihood cost)
    对数似然函数常用来作为softmax回归的代价函数。深度学习中普遍的做法是将softmax作为最后一层,此时常用的代价函数是对数似然代价函数。
    对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。对数似然代价函数在二分类时可以化简为交叉熵代价函数的形式。
    在tensorflow中:
    与sigmoid搭配使用的交叉熵函数:tf.nn.sigmoid_cross_entropy_with_logits()
    与softmax搭配使用的交叉熵函数:tf.nn.softmax_cross_entropy_with_logits()
    在pytorch中:
    与sigmoid搭配使用的交叉熵函数:torch.nn.BCEWithLogitsLoss()
    与softmax搭配使用的交叉熵函数:torch.nn.CrossEntropyLoss()

2.10.5 为什么用交叉熵代替二次代价函数

  1. 为什么不用二次方代价函数
    由上一节可知,权值 w w w和偏置 b b b的偏导数为 ∂ J ∂ w = ( a − y ) σ ′ ( z ) x \frac{\partial J}{\partial w}=(a-y)\sigma'(z)x wJ=(ay)σ(z)x ∂ J ∂ b = ( a − y ) σ ′ ( z ) ​ \frac{\partial J}{\partial b}=(a-y)\sigma'(z)​ bJ=(ay)σ(z), 偏导数受激活函数的导数影响,sigmoid函数导数在输出接近0和1时非常小,会导致一些实例在刚开始训练时学习得非常慢。

  2. 为什么要用交叉熵
    交叉熵函数权值 w w w和偏置 b ​ b​ b的梯度推导为:

∂ J ∂ w j = 1 n ∑ x x j ( σ ( z ) − y )    , ∂ J ∂ b = 1 n ∑ x ( σ ( z ) − y ) \frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\;, \frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y) wjJ=n1xxj(σ(z)y)bJ=n1x(σ(z)y)

由以上公式可知,权重学习的速度受到 σ ( z ) − y \sigma{(z)}-y σ(z)y影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因 σ ′ ( z ) ​ \sigma'{(z)}​ σ(z)导致的学习缓慢的情况。

2.11 损失函数

2.11.1 什么是损失函数?

​ 损失函数(Loss Function)又叫做误差函数,用来衡量算法的运行情况,估量模型的预测值与真实值的不一致程度,是一个非负实值函数,通常使用$
L(Y, f(x))​$来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。

2.11.2 常见的损失函数

​ 机器学习通过对算法中的目标函数进行不断求解优化,得到最终想要的结果。分类和回归问题中,通常使用损失函数或代价函数作为目标函数。
​ 损失函数用来评价预测值和真实值不一样的程度。通常损失函数越好,模型的性能也越好。
​ 损失函数可分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是在经验风险损失函数上加上正则项。
​ 下面介绍常用的损失函数:

  1. 0-1损失函数
    如果预测值和目标值相等,值为0,如果不相等,值为1。

L ( Y , f ( x ) ) = { 1 , Y ≠ f ( x ) 0 , Y = f ( x ) L(Y, f(x)) = \begin{cases} 1,& Y\ne f(x)\\ 0,& Y = f(x) \end{cases} L(Y,f(x))={1,0,Y̸=f(x)Y=f(x)

一般的在实际使用中,相等的条件过于严格,可适当放宽条件:

L ( Y , f ( x ) ) = { 1 , ∣ Y − f ( x ) ∣ ⩾ T 0 , ∣ Y − f ( x ) ∣ < T L(Y, f(x)) = \begin{cases} 1,& |Y-f(x)|\geqslant T\\ 0,& |Y-f(x)|< T \end{cases} L(Y,f(x))={1,0,Yf(x)TYf(x)<T

  1. 绝对值损失函数
    和0-1损失函数相似,绝对值损失函数表示为:

L ( Y , f ( x ) ) = ∣ Y − f ( x ) ∣ ​ L(Y, f(x)) = |Y-f(x)|​ L(Y,f(x))=Yf(x)

  1. 平方损失函数

L ( Y , f ( x ) ) = ∑ N ( Y − f ( x ) ) 2 L(Y, f(x)) = \sum_N{(Y-f(x))}^2 L(Y,f(x))=N(Yf(x))2

这点可从最小二乘法和欧几里得距离角度理解。最小二乘法的原理是,最优拟合曲线应该使所有点到回归直线的距离和最小。

  1. 对数损失函数

L ( Y , P ( Y ∣ X ) ) = − log ⁡ P ( Y ∣ X ) L(Y, P(Y|X)) = -\log{P(Y|X)} L(Y,P(YX))=logP(YX)

​ 常见的逻辑回归使用的就是对数损失函数,有很多人认为逻辑回归的损失函数是平方损失,其实不然。逻辑回归它假设样本服从伯努利分布(0-1分布),进而求得满足该分布的似然函数,接着取对数求极值等。逻辑回归推导出的经验风险函数是最小化负的似然函数,从损失函数的角度看,就是对数损失函数。

  1. 指数损失函数
    指数损失函数的标准形式为:

L ( Y , f ( x ) ) = exp ⁡ ( − Y f ( x ) ) L(Y, f(x)) = \exp(-Yf(x)) L(Y,f(x))=exp(Yf(x))

例如AdaBoost就是以指数损失函数为损失函数。

  1. Hinge损失函数
    Hinge损失函数的标准形式如下:

L ( y ) = max ⁡ ( 0 , 1 − t y ) L(y) = \max{(0, 1-ty)} L(y)=max(0,1ty)

统一的形式:
L ( Y , f ( x ) ) = max ⁡ ( 0 , Y f ( x ) ) L(Y, f(x)) = \max{(0, Yf(x))} L(Y,f(x))=max(0,Yf(x))

其中y是预测值,范围为(-1,1),t为目标值,其为-1或1。

在线性支持向量机中,最优化问题可等价于

w , b min ⁡ ∑ i = 1 N ( 1 − y i ( w x i + b ) ) + λ ∥ w ∥ 2 \underset{\min}{w,b}\sum_{i=1}^N (1-y_i(wx_i+b))+\lambda\Vert w\Vert ^2 minw,bi=1N(1yi(wxi+b))+λw2

上式相似于下式

1 m ∑ i = 1 N l ( w x i + b y i ) + ∥ w ∥ 2 \frac{1}{m}\sum_{i=1}^{N}l(wx_i+by_i) + \Vert w\Vert ^2 m1i=1Nl(wxi+byi)+w2

其中 l ( w x i + b y i ) l(wx_i+by_i) l(wxi+byi)是Hinge损失函数, ∥ w ∥ 2 \Vert w\Vert ^2 w2可看做为正则化项。

2.11.3 逻辑回归为什么使用对数损失函数?

假设逻辑回归模型
P ( y = 1 ∣ x ; θ ) = 1 1 + e − θ T x P(y=1|x;\theta)=\frac{1}{1+e^{-\theta^{T}x}} P(y=1x;θ)=1+eθTx1
假设逻辑回归模型的概率分布是伯努利分布,其概率质量函数为:
P ( X = n ) = { 1 − p , n = 0 p , n = 1 P(X=n)= \begin{cases} 1-p, n=0\\ p,n=1 \end{cases} P(X=n)={1p,n=0p,n=1
其似然函数为:
L ( θ ) = ∏ i = 1 m P ( y = 1 ∣ x i ) y i P ( y = 0 ∣ x i ) 1 − y i L(\theta)=\prod_{i=1}^{m} P(y=1|x_i)^{y_i}P(y=0|x_i)^{1-y_i} L(θ)=i=1mP(y=1xi)yiP(y=0xi)1yi
对数似然函数为:
ln ⁡ L ( θ ) = ∑ i = 1 m [ y i ln ⁡ P ( y = 1 ∣ x i ) + ( 1 − y i ) ln ⁡ P ( y = 0 ∣ x i ) ] = ∑ i = 1 m [ y i ln ⁡ P ( y = 1 ∣ x i ) + ( 1 − y i ) ln ⁡ ( 1 − P ( y = 1 ∣ x i ) ) ] \ln L(\theta)=\sum_{i=1}^{m}[y_i\ln{P(y=1|x_i)}+(1-y_i)\ln{P(y=0|x_i)}]\\ =\sum_{i=1}^m[y_i\ln{P(y=1|x_i)}+(1-y_i)\ln(1-P(y=1|x_i))] lnL(θ)=i=1m[yilnP(y=1xi)+(1yi)lnP(y=0xi)]=i=1m[yilnP(y=1xi)+(1yi)ln(1P(y=1xi))]
对数函数在单个数据点上的定义为:
c o s t ( y , p ( y ∣ x ) ) = − y ln ⁡ p ( y ∣ x ) − ( 1 − y ) ln ⁡ ( 1 − p ( y ∣ x ) ) cost(y,p(y|x))=-y\ln{p(y|x)-(1-y)\ln(1-p(y|x))} cost(y,p(yx))=ylnp(yx)(1y)ln(1p(yx))
则全局样本损失函数为:
c o s t ( y , p ( y ∣ x ) ) = − ∑ i = 1 m [ y i ln ⁡ p ( y i ∣ x i ) + ( 1 − y i ) ln ⁡ ( 1 − p ( y i ∣ x i ) ) ] cost(y,p(y|x)) = -\sum_{i=1}^m[y_i\ln p(y_i|x_i)+(1-y_i)\ln(1-p(y_i|x_i))] cost(y,p(yx))=i=1m[yilnp(yixi)+(1yi)ln(1p(yixi))]
由此可看出,对数损失函数与极大似然估计的对数似然函数本质上是相同的。所以逻辑回归直接采用对数损失函数。

2.11.4 对数损失函数是如何度量损失的?

​ 例如,在高斯分布中,我们需要确定均值和标准差。
​ 如何确定这两个参数?最大似然估计是比较常用的方法。最大似然的目标是找到一些参数值,这些参数值对应的分布可以最大化观测到数据的概率。
​ 因为需要计算观测到所有数据的全概率,即所有观测到的数据点的联合概率。现考虑如下简化情况:

  1. 假设观测到每个数据点的概率和其他数据点的概率是独立的。

  2. 取自然对数。
    假设观测到单个数据点 x i ( i = 1 , 2 , . . . n ) x_i(i=1,2,...n) xi(i=1,2,...n)的概率为:
    P ( x i ; μ , σ ) = 1 σ 2 π exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) P(x_i;\mu,\sigma)=\frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_i-\mu)^2}{2\sigma^2} \right) P(xi;μ,σ)=σ2π 1exp(2σ2(xiμ)2)

  3. 其联合概率为:
    P ( x 1 , x 2 , . . . , x n ; μ , σ ) = 1 σ 2 π exp ⁡ ( − ( x 1 − μ ) 2 2 σ 2 ) × 1 σ 2 π exp ⁡ ( − ( x 2 − μ ) 2 2 σ 2 ) × . . . × 1 σ 2 π exp ⁡ ( − ( x n − μ ) 2 2 σ 2 ) P(x_1,x_2,...,x_n;\mu,\sigma)=\frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_1-\mu)^2}{2\sigma^2} \right) \\ \times \frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_2-\mu)^2}{2\sigma^2} \right) \times ... \times \frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_n-\mu)^2}{2\sigma^2} \right) P(x1,x2,...,xn;μ,σ)=σ2π 1exp(2σ2(x1μ)2)×σ2π 1exp(2σ2(x2μ)2)×...×σ2π 1exp(2σ2(xnμ)2)

​ 对上式取自然对数,可得:
ln ⁡ ( P ( x 1 , x 2 , . . . x n ; μ , σ ) ) = ln ⁡ ( 1 σ 2 π ) − ( x 1 − μ ) 2 2 σ 2 + ln ⁡ ( 1 σ 2 π ) − ( x 2 − μ ) 2 2 σ 2 + . . . + ln ⁡ ( 1 σ 2 π ) − ( x n − μ ) 2 2 σ 2 \ln(P(x_1,x_2,...x_n;\mu,\sigma))= \ln \left(\frac{1}{\sigma \sqrt{2\pi}} \right) - \frac{(x_1-\mu)^2}{2\sigma^2} \\ + \ln \left( \frac{1}{\sigma \sqrt{2\pi}} \right) - \frac{(x_2-\mu)^2}{2\sigma^2} +...+ \ln \left( \frac{1}{\sigma \sqrt{2\pi}} \right) - \frac{(x_n-\mu)^2}{2\sigma^2} ln(P(x1,x2,...xn;μ,σ))=ln(σ2π 1)2σ2(x1μ)2+ln(σ2π 1)2σ2(x2μ)2+...+ln(σ2π 1)2σ2(xnμ)2
根据对数定律,上式可以化简为:
ln ⁡ ( P ( x 1 , x 2 , . . . x n ; μ , σ ) ) = − n ln ⁡ ( σ ) − n 2 ln ⁡ ( 2 π ) − 1 2 σ 2 [ ( x 1 − μ ) 2 + ( x 2 − μ ) 2 + . . . + ( x n − μ ) 2 ] \ln(P(x_1,x_2,...x_n;\mu,\sigma))=-n\ln(\sigma)-\frac{n}{2} \ln(2\pi)\\ -\frac{1}{2\sigma^2}[(x_1-\mu)^2+(x_2-\mu)^2+...+(x_n-\mu)^2] ln(P(x1,x2,...xn;μ,σ))=nln(σ)2nln(2π)2σ21[(x1μ)2+(x2μ)2+...+(xnμ)2]
然后求导为:
∂ ln ⁡ ( P ( x 1 , x 2 , . . . , x n ; μ , σ ) ) ∂ μ = n σ 2 [ μ − ( x 1 + x 2 + . . . + x n ) ] \frac{\partial\ln(P(x_1,x_2,...,x_n;\mu,\sigma))}{\partial\mu}= \frac{n}{\sigma^2}[\mu - (x_1+x_2+...+x_n)] μln(P(x1,x2,...,xn;μ,σ))=σ2n[μ(x1+x2+...+xn)]
​ 上式左半部分为对数损失函数。损失函数越小越好,因此我们令等式左半的对数损失函数为0,可得:
μ = x 1 + x 2 + . . . + x n n \mu=\frac{x_1+x_2+...+x_n}{n} μ=nx1+x2+...+xn
同理,可计算 σ ​ \sigma ​ σ

2.12 梯度下降

2.12.1 机器学习中为什么需要梯度下降?

  1. 梯度下降是迭代法的一种,可以用于求解最小二乘问题。
  2. 在求解机器学习算法的模型参数,即无约束优化问题时,主要有梯度下降法(Gradient Descent)和最小二乘法。
  3. 在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
  4. 如果我们需要求解损失函数的最大值,可通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换。
  5. 在机器学习中,梯度下降法主要有随机梯度下降法和批量梯度下降法。

2.12.2 梯度下降法缺点?

  1. 靠近极小值时收敛速度减慢。
  2. 直线搜索时可能会产生一些问题。
  3. 可能会“之字形”地下降。

梯度概念需注意:

  1. 梯度是一个向量,即有方向有大小。
  2. 梯度的方向是最大方向导数的方向。
  3. 梯度的值是最大方向导数的值。

2.12.3 梯度下降法直观理解?

梯度下降法经典图示:

[外链图片转存失败(img-sUqj2Bjj-1563801132615)(./img/ch2/2.25/1.png)]

​ 形象化举例,由上图,假如最开始,我们在一座大山上的某处位置,因为到处都是陌生的,不知道下山的路,所以只能摸索着根据直觉,走一步算一步,在此过程中,每走到一个位置的时候,都会求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。不断循环求梯度,就这样一步步地走下去,一直走到我们觉得已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山势低处。
​ 由此,从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部的最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

核心思想归纳

  1. 初始化参数,随机选取取值范围内的任意数;
  2. 迭代操作:
    a)计算当前梯度;
    b)修改新的变量;
    c)计算朝最陡的下坡方向走一步;
    d)判断是否需要终止,如否,返回a);
  3. 得到全局最优解或者接近全局最优解。

2.12.4 梯度下降法算法描述

  1. 确定优化模型的假设函数及损失函数。
    ​ 举例,对于线性回归,假设函数为:
    h θ ( x 1 , x 2 , . . . , x n ) = θ 0 + θ 1 x 1 + . . . + θ n x n h_\theta(x_1,x_2,...,x_n)=\theta_0+\theta_1x_1+...+\theta_nx_n hθ(x1,x2,...,xn)=θ0+θ1x1+...+θnxn
    其中, θ i , x i ( i = 0 , 1 , 2 , . . . , n ) \theta_i,x_i(i=0,1,2,...,n) θi,xi(i=0,1,2,...,n)分别为模型参数、每个样本的特征值。
    对于假设函数,损失函数为:
    J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m ∑ j = 0 m ( h θ ( x 0 ( j ) , x 1 ( j ) , . . . , x n ( j ) ) − y j ) 2 J(\theta_0,\theta_1,...,\theta_n)=\frac{1}{2m}\sum^{m}_{j=0}(h_\theta (x^{(j)}_0 ,x^{(j)}_1,...,x^{(j)}_n)-y_j)^2 J(θ0,θ1,...,θn)=2m1j=0m(hθ(x0(j),x1(j),...,xn(j))yj)2

  2. 相关参数初始化。
    ​ 主要初始化 θ i {\theta}_i θi、算法迭代步长${\alpha} 、 终 止 距 离 、终止距离 {\zeta} 。 初 始 化 时 可 以 根 据 经 验 初 始 化 , 即 。初始化时可以根据经验初始化,即 {\theta} 初 始 化 为 0 , 步 长 初始化为0,步长 0{\alpha} 初 始 化 为 1 。 当 前 步 长 记 为 初始化为1。当前步长记为 1{\varphi}_i $。当然,也可随机初始化。

  3. 迭代计算。

    1)计算当前位置时损失函数的梯度,对${\theta}_i $,其梯度表示为:

∂ ∂ θ i J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m ∑ j = 0 m ( h θ ( x 0 ( j ) , x 1 ( j ) , . . . , x n ( j ) ) − y j ) 2 \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n)=\frac{1}{2m}\sum^{m}_{j=0}(h_\theta (x^{(j)}_0 ,x^{(j)}_1,...,x^{(j)}_n)-y_j)^2 θiJ(θ0,θ1,...,θn)=2m1j=0m(hθ(x0(j),x1(j),...,xn(j))yj)2
​ 2)计算当前位置下降的距离。
φ i = α ∂ ∂ θ i J ( θ 0 , θ 1 , . . . , θ n ) {\varphi}_i={\alpha} \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n) φi=αθiJ(θ0,θ1,...,θn)
​ 3)判断是否终止。
​ 确定是否所有 θ i {\theta}_i θi梯度下降的距离 φ i {\varphi}_i φi都小于终止距离 ζ {\zeta} ζ,如果都小于 ζ {\zeta} ζ,则算法终止,当然的值即为最终结果,否则进入下一步。
​ 4)更新所有的 θ i {\theta}_i θi,更新后的表达式为:
θ i = θ i − α ∂ ∂ θ i J ( θ 0 , θ 1 , . . . , θ n ) {\theta}_i={\theta}_i-\alpha \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n) θi=θiαθiJ(θ0,θ1,...,θn)
θ i = θ i − α 1 m ∑ j = 0 m ( h θ ( x 0 ( j ) , x 1 ( j ) , . . . , x n ( j ) ) − y j ) x i ( j ) \theta_i=\theta_i - \alpha \frac{1}{m} \sum^{m}_{j=0}(h_\theta (x^{(j)}_0 ,x^{(j)}_1,...,x^{(j)}_n)-y_j)x^{(j)}_i θi=θiαm1j=0m(hθ(x0(j),x1(j),...,xn(j))yj)xi(j)
​ 5)令上式 x 0 ( j ) = 1 x^{(j)}_0=1 x0(j)=1,更新完毕后转入1)。
​ 由此,可看出,当前位置的梯度方向由所有样本决定,上式中 1 m ​ \frac{1}{m}​ m1 α 1 m ​ \alpha \frac{1}{m}​ αm1 的目的是为了便于理解。

2.12.5 如何对梯度下降法进行调优?

实际使用梯度下降法时,各项参数指标不能一步就达到理想状态,对梯度下降法调优主要体现在以下几个方面:

  1. 算法迭代步长 α \alpha α选择。
    在算法参数初始化时,有时根据经验将步长初始化为1。实际取值取决于数据样本。可以从大到小,多取一些值,分别运行算法看迭代效果,如果损失函数在变小,则取值有效。如果取值无效,说明要增大步长。但步长太大,有时会导致迭代速度过快,错过最优解。步长太小,迭代速度慢,算法运行时间长。
  2. 参数的初始值选择。
    初始值不同,获得的最小值也有可能不同,梯度下降有可能得到的是局部最小值。如果损失函数是凸函数,则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。
  3. 标准化处理。
    由于样本不同,特征取值范围也不同,导致迭代速度慢。为了减少特征取值的影响,可对特征数据标准化,使新期望为0,新方差为1,可节省算法运行时间。

2.12.6 随机梯度和批量梯度区别?

​ 随机梯度下降(SDG)和批量梯度下降(BDG)是两种主要梯度下降法,其目的是增加某些限制来加速运算求解。
下面通过介绍两种梯度下降法的求解思路,对其进行比较。
假设函数为:
h θ ( x 0 , x 1 , . . . , x 3 ) = θ 0 x 0 + θ 1 x 1 + . . . + θ n x n h_\theta (x_0,x_1,...,x_3) = \theta_0 x_0 + \theta_1 x_1 + ... + \theta_n x_n hθ(x0,x1,...,x3)=θ0x0+θ1x1+...+θnxn
损失函数为:
J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m ∑ j = 0 m ( h θ ( x 0 j , x 1 j , . . . , x n j ) − y j ) 2 J(\theta_0, \theta_1, ... , \theta_n) = \frac{1}{2m} \sum^{m}_{j=0}(h_\theta (x^{j}_0 ,x^{j}_1,...,x^{j}_n)-y^j)^2 J(θ0,θ1,...,θn)=2m1j=0m(hθ(x0j,x1j,...,xnj)yj)2
其中, m ​ m​ m为样本个数, j ​ j​ j为参数个数。

1、 批量梯度下降的求解思路如下:
a) 得到每个$ \theta ​$对应的梯度:
∂ ∂ θ i J ( θ 0 , θ 1 , . . . , θ n ) = 1 m ∑ j = 0 m ( h θ ( x 0 j , x 1 j , . . . , x n j ) − y j ) x i j \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n)=\frac{1}{m}\sum^{m}_{j=0}(h_\theta (x^{j}_0 ,x^{j}_1,...,x^{j}_n)-y^j)x^{j}_i θiJ(θ0,θ1,...,θn)=m1j=0m(hθ(x0j,x1j,...,xnj)yj)xij
b) 由于是求最小化风险函数,所以按每个参数 $ \theta ​$ 的梯度负方向更新 $ \theta_i ​$ :
θ i = θ i − 1 m ∑ j = 0 m ( h θ ( x 0 j , x 1 j , . . . , x n j ) − y j ) x i j \theta_i=\theta_i - \frac{1}{m} \sum^{m}_{j=0}(h_\theta (x^{j}_0 ,x^{j}_1,...,x^{j}_n)-y^j)x^{j}_i θi=θim1j=0m(hθ(x0j,x1j,...,xnj)yj)xij
c) 从上式可以注意到,它得到的虽然是一个全局最优解,但每迭代一步,都要用到训练集所有的数据,如果样本数据很大,这种方法迭代速度就很慢。
相比而言,随机梯度下降可避免这种问题。

2、随机梯度下降的求解思路如下:
a) 相比批量梯度下降对应所有的训练样本,随机梯度下降法中损失函数对应的是训练集中每个样本的粒度。
损失函数可以写成如下这种形式,
J ( θ 0 , θ 1 , . . . , θ n ) = 1 m ∑ j = 0 m ( y j − h θ ( x 0 j , x 1 j , . . . , x n j ) ) 2 = 1 m ∑ j = 0 m c o s t ( θ , ( x j , y j ) ) J(\theta_0, \theta_1, ... , \theta_n) = \frac{1}{m} \sum^{m}_{j=0}(y^j - h_\theta (x^{j}_0 ,x^{j}_1,...,x^{j}_n))^2 = \frac{1}{m} \sum^{m}_{j=0} cost(\theta,(x^j,y^j)) J(θ0,θ1,...,θn)=m1j=0m(yjhθ(x0j,x1j,...,xnj))2=m1j=0mcost(θ,(xj,yj))
b)对每个参数 $ \theta​$ 按梯度方向更新 $ \theta​$:
θ i = θ i + ( y j − h θ ( x 0 j , x 1 j , . . . , x n j ) ) \theta_i = \theta_i + (y^j - h_\theta (x^{j}_0, x^{j}_1, ... ,x^{j}_n)) θi=θi+(yjhθ(x0j,x1j,...,xnj))
c) 随机梯度下降是通过每个样本来迭代更新一次。
随机梯度下降伴随的一个问题是噪音较批量梯度下降要多,使得随机梯度下降并不是每次迭代都向着整体最优化方向。

小结:
随机梯度下降法、批量梯度下降法相对来说都比较极端,简单对比如下:

方法 特点
批量梯度下降 a)采用所有数据来梯度下降。
b)批量梯度下降法在样本量很大的时候,训练速度慢。
随机梯度下降 a)随机梯度下降用一个样本来梯度下降。
b)训练速度很快。
c)随机梯度下降法仅仅用一个样本决定梯度方向,导致解有可能不是全局最优。
d)收敛速度来说,随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。

下面介绍能结合两种方法优点的小批量梯度下降法。

3、 小批量(Mini-Batch)梯度下降的求解思路如下
对于总数为 m m m个样本的数据,根据样本的数据,选取其中的 n ( 1 < n < m ) n(1< n< m) n(1<n<m)个子样本来迭代。其参数 θ \theta θ按梯度方向更新 θ i \theta_i θi公式如下:
θ i = θ i − α ∑ j = t t + n − 1 ( h θ ( x 0 j , x 1 j , . . . , x n j ) − y j ) x i j \theta_i = \theta_i - \alpha \sum^{t+n-1}_{j=t} ( h_\theta (x^{j}_{0}, x^{j}_{1}, ... , x^{j}_{n} ) - y^j ) x^{j}_{i} θi=θiαj=tt+n1(hθ(x0j,x1j,...,xnj)yj)xij

2.12.7 各种梯度下降法性能比较

​ 下表简单对比随机梯度下降(SGD)、批量梯度下降(BGD)、小批量梯度下降(Mini-batch GD)、和Online GD的区别:

BGD SGD Mini-batch GD Online GD
训练集 固定 固定 固定 实时更新
单次迭代样本数 整个训练集 单个样本 训练集的子集 根据具体算法定
算法复杂度 一般
时效性 一般 一般
收敛性 稳定 不稳定 较稳定 不稳定

BGD、SGD、Mini-batch GD,前面均已讨论过,这里介绍一下Online GD。

​ Online GD于Mini-batch GD/SGD的区别在于,所有训练数据只用一次,然后丢弃。这样做的优点在于可预测最终模型的变化趋势。

​ Online GD在互联网领域用的较多,比如搜索广告的点击率(CTR)预估模型,网民的点击行为会随着时间改变。用普通的BGD算法(每天更新一次)一方面耗时较长(需要对所有历史数据重新训练);另一方面,无法及时反馈用户的点击行为迁移。而Online GD算法可以实时的依据网民的点击行为进行迁移。

2.13 计算图的导数计算?

​ 计算图导数计算是反向传播,利用链式法则和隐式函数求导。

​ 假设 z = f ( u , v ) z = f(u,v) z=f(u,v) 在点 ( u , v ) (u,v) (u,v) 处偏导连续, ( u , v ) (u,v) (u,v)是关于 t t t 的函数,在 t t t 点可导,求 z z z t t t 点的导数。

根据链式法则有
d z d t = ∂ z ∂ u . d u d t + ∂ z ∂ v . d v d t \frac{dz}{dt}=\frac{\partial z}{\partial u}.\frac{du}{dt}+\frac{\partial z}{\partial v} .\frac{dv}{dt} dtdz=uz.dtdu+vz.dtdv

​ 链式法则用文字描述:“由两个函数凑起来的复合函数,其导数等于里边函数代入外边函数的值之导数,乘以里边函数的导数。
​ 为了便于理解,下面举例说明:

f ( x ) = x 2 , g ( x ) = 2 x + 1 f(x)=x^2,g(x)=2x+1 f(x)=x2,g(x)=2x+1

​ 则:
f [ g ( x ) ] ′ = 2 [ g ( x ) ] × g ′ ( x ) = 2 [ 2 x + 1 ] × 2 = 8 x + 4 {f[g(x)]}'=2[g(x)] \times g'(x)=2[2x+1] \times 2=8x+4 f[g(x)]=2[g(x)]×g(x)=2[2x+1]×2=8x+4

2.14 线性判别分析(LDA)

2.14.1 LDA思想总结

​ 线性判别分析(Linear Discriminant Analysis,LDA)是一种经典的降维方法。和主成分分析PCA不考虑样本类别输出的无监督降维技术不同,LDA是一种监督学习的降维技术,数据集的每个样本有类别输出。

LDA分类思想简单总结如下:

  1. 多维空间中,数据处理分类问题较为复杂,LDA算法将多维空间中的数据投影到一条直线上,将d维数据转化成1维数据进行处理。
  2. 对于训练数据,设法将多维数据投影到一条直线上,同类数据的投影点尽可能接近,异类数据点尽可能远离。
  3. 对数据进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定样本的类别。

如果用一句话概括LDA思想,即“投影后类内方差最小,类间方差最大”。

2.14.2 图解LDA核心思想

​ 假设有红、蓝两类数据,这些数据特征均为二维,如下图所示。我们的目标是将这些数据投影到一维,让每一类相近的数据的投影点尽可能接近,不同类别数据尽可能远,即图中红色和蓝色数据中心之间的距离尽可能大。

[外链图片转存失败(img-fHzKEFef-1563801132615)(./img/ch2/2.29/1.png)]

左图和右图是两种不同的投影方式。

​ 左图思路:让不同类别的平均点距离最远的投影方式。

​ 右图思路:让同类别的数据挨得最近的投影方式。

​ 从上图直观看出,右图红色数据和蓝色数据在各自的区域来说相对集中,根据数据分布直方图也可看出,所以右图的投影效果好于左图,左图中间直方图部分有明显交集。

​ 以上例子是基于数据是二维的,分类后的投影是一条直线。如果原始数据是多维的,则投影后的分类面是一低维的超平面。

2.14.3 二类LDA算法原理?

​ 输入:数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } ​ D=\{(\boldsymbol x_1,\boldsymbol y_1),(\boldsymbol x_2,\boldsymbol y_2),...,(\boldsymbol x_m,\boldsymbol y_m)\}​ D={(x1,y1),(x2,y2),...,(xm,ym)},其中样本 x i ​ \boldsymbol x_i ​ xi 是n维向量, y i ϵ { 0 , 1 } ​ \boldsymbol y_i \epsilon \{0, 1\}​ yiϵ{0,1},降维后的目标维度 d ​ d​ d。定义

N j ( j = 0 , 1 ) N_j(j=0,1) Nj(j=0,1) 为第 j j j 类样本个数;

X j ( j = 0 , 1 ) X_j(j=0,1) Xj(j=0,1) 为第 j j j 类样本的集合;

u j ( j = 0 , 1 ) ​ u_j(j=0,1)​ uj(j=0,1) 为第 j ​ j​ j 类样本的均值向量;

∑ j ( j = 0 , 1 ) \sum_j(j=0,1) j(j=0,1) 为第 j j j 类样本的协方差矩阵。

​ 其中
u j = 1 N j ∑ x ϵ X j x ( j = 0 , 1 ) , ∑ j = ∑ x ϵ X j ( x − u j ) ( x − u j ) T ( j = 0 , 1 ) u_j = \frac{1}{N_j} \sum_{\boldsymbol x\epsilon X_j}\boldsymbol x(j=0,1), \sum_j = \sum_{\boldsymbol x\epsilon X_j}(\boldsymbol x-u_j)(\boldsymbol x-u_j)^T(j=0,1) uj=Nj1xϵXjx(j=0,1)j=xϵXj(xuj)(xuj)T(j=0,1)
​ 假设投影直线是向量 w \boldsymbol w w,对任意样本 x i \boldsymbol x_i xi,它在直线 w w w上的投影为 w T x i \boldsymbol w^Tx_i wTxi,两个类别的中心点 u 0 u_0 u0, $u_1 $在直线 w w w 的投影分别为 w T u 0 \boldsymbol w^Tu_0 wTu0 w T u 1 \boldsymbol w^Tu_1 wTu1

​ LDA的目标是让两类别的数据中心间的距离 ∥ w T u 0 − w T u 1 ∥ 2 2 \| \boldsymbol w^Tu_0 - \boldsymbol w^Tu_1 \|^2_2 wTu0wTu122 尽量大,与此同时,希望同类样本投影点的协方差 w T ∑ 0 w \boldsymbol w^T \sum_0 \boldsymbol w wT0w w T ∑ 1 w \boldsymbol w^T \sum_1 \boldsymbol w wT1w 尽量小,最小化 w T ∑ 0 w − w T ∑ 1 w ​ \boldsymbol w^T \sum_0 \boldsymbol w - \boldsymbol w^T \sum_1 \boldsymbol w​ wT0wwT1w
​ 定义
​ 类内散度矩阵
S w = ∑ 0 + ∑ 1 = ∑ x ϵ X 0 ( x − u 0 ) ( x − u 0 ) T + ∑ x ϵ X 1 ( x − u 1 ) ( x − u 1 ) T S_w = \sum_0 + \sum_1 = \sum_{\boldsymbol x\epsilon X_0}(\boldsymbol x-u_0)(\boldsymbol x-u_0)^T + \sum_{\boldsymbol x\epsilon X_1}(\boldsymbol x-u_1)(\boldsymbol x-u_1)^T Sw=0+1=xϵX0(xu0)(xu0)T+xϵX1(xu1)(xu1)T
​ 类间散度矩阵 S b = ( u 0 − u 1 ) ( u 0 − u 1 ) T S_b = (u_0 - u_1)(u_0 - u_1)^T Sb=(u0u1)(u0u1)T

​ 据上分析,优化目标为
arg ⁡ max ⁡ w J ( w ) = ∥ w T u 0 − w T u 1 ∥ 2 2 w T ∑ 0 w + w T ∑ 1 w = w T ( u 0 − u 1 ) ( u 0 − u 1 ) T w w T ( ∑ 0 + ∑ 1 ) w = w T S b w w T S w w \mathop{\arg\max}_\boldsymbol w J(\boldsymbol w) = \frac{\| \boldsymbol w^Tu_0 - \boldsymbol w^Tu_1 \|^2_2}{\boldsymbol w^T \sum_0\boldsymbol w + \boldsymbol w^T \sum_1\boldsymbol w} = \frac{\boldsymbol w^T(u_0-u_1)(u_0-u_1)^T\boldsymbol w}{\boldsymbol w^T(\sum_0 + \sum_1)\boldsymbol w} = \frac{\boldsymbol w^TS_b\boldsymbol w}{\boldsymbol w^TS_w\boldsymbol w} argmaxwJ(w)=wT0w+wT1wwTu0wTu122=wT(0+1)wwT(u0u1)(u0u1)Tw=wTSwwwTSbw
​ 根据广义瑞利商的性质,矩阵 S w − 1 S b S^{-1}_{w} S_b Sw1Sb 的最大特征值为 J ( w ) J(\boldsymbol w) J(w) 的最大值,矩阵 S w − 1 S b S^{-1}_{w} S_b Sw1Sb 的最大特征值对应的特征向量即为 w \boldsymbol w w

2.14.4 LDA算法流程总结?

LDA算法降维流程如下:

​ 输入:数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D = \{ (x_1,y_1),(x_2,y_2), ... ,(x_m,y_m) \} D={(x1,y1),(x2,y2),...,(xm,ym)},其中样本 $x_i $ 是n维向量, y i ϵ { C 1 , C 2 , . . . , C k } y_i \epsilon \{C_1, C_2, ..., C_k\} yiϵ{C1,C2,...,Ck},降维后的目标维度 d d d

​ 输出:降维后的数据集 $\overline{D} $ 。

步骤:

  1. 计算类内散度矩阵 S w S_w Sw
  2. 计算类间散度矩阵 S b ​ S_b​ Sb
  3. 计算矩阵 S w − 1 S b ​ S^{-1}_wS_b​ Sw1Sb
  4. 计算矩阵 S w − 1 S b S^{-1}_wS_b Sw1Sb 的最大的 d 个特征值。
  5. 计算 d 个特征值对应的 d 个特征向量,记投影矩阵为 W 。
  6. 转化样本集的每个样本,得到新样本 P i = W T x i ​ P_i = W^Tx_i​ Pi=WTxi
  7. 输出新样本集 D ‾ = { ( p 1 , y 1 ) , ( p 2 , y 2 ) , . . . , ( p m , y m ) } ​ \overline{D} = \{ (p_1,y_1),(p_2,y_2),...,(p_m,y_m) \}​ D={(p1,y1),(p2,y2),...,(pm,ym)}

2.14.5 LDA和PCA区别?

异同点 LDA PCA
相同点 1. 两者均可以对数据进行降维;
2. 两者在降维时均使用了矩阵特征分解的思想;
3. 两者都假设数据符合高斯分布;
不同点 有监督的降维方法; 无监督的降维方法;
降维最多降到k-1维; 降维多少没有限制;
可以用于降维,还可以用于分类; 只用于降维;
选择分类性能最好的投影方向; 选择样本点投影具有最大方差的方向;
更明确,更能反映样本间差异; 目的较为模糊;

2.14.6 LDA优缺点?

优缺点 简要说明
优点 1. 可以使用类别的先验知识;
2. 以标签、类别衡量差异性的有监督降维方式,相对于PCA的模糊性,其目的更明确,更能反映样本间的差异;
缺点 1. LDA不适合对非高斯分布样本进行降维;
2. LDA降维最多降到分类数k-1维;
3. LDA在样本分类信息依赖方差而不是均值时,降维效果不好;
4. LDA可能过度拟合数据。

2.15 主成分分析(PCA)

2.15.1 主成分分析(PCA)思想总结

  1. PCA就是将高维的数据通过线性变换投影到低维空间上去。
  2. 投影思想:找出最能够代表原始数据的投影方法。被PCA降掉的那些维度只能是那些噪声或是冗余的数据。
  3. 去冗余:去除可以被其他向量代表的线性相关向量,这部分信息量是多余的。
  4. 去噪声,去除较小特征值对应的特征向量,特征值的大小反映了变换后在特征向量方向上变换的幅度,幅度越大,说明这个方向上的元素差异也越大,要保留。
  5. 对角化矩阵,寻找极大线性无关组,保留较大的特征值,去除较小特征值,组成一个投影矩阵,对原始样本矩阵进行投影,得到降维后的新样本矩阵。
  6. 完成PCA的关键是——协方差矩阵。协方差矩阵,能同时表现不同维度间的相关性以及各个维度上的方差。协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。
  7. 之所以对角化,因为对角化之后非对角上的元素都是0,达到去噪声的目的。对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。所以我们只取那些含有较大能量(特征值)的维度,其余的就舍掉,即去冗余。

2.15.2 图解PCA核心思想

​ PCA可解决训练数据中存在数据特征过多或特征累赘的问题。核心思想是将m维特征映射到n维(n < m),这n维形成主元,是重构出来最能代表原始数据的正交特征。

​ 假设数据集是m个n维, ( x ( 1 ) , x ( 2 ) , ⋯   , x ( m ) ) (\boldsymbol x^{(1)}, \boldsymbol x^{(2)}, \cdots, \boldsymbol x^{(m)}) (x(1),x(2),,x(m))。如果 n = 2 n=2 n=2,需要降维到 n ′ = 1 n'=1 n=1,现在想找到某一维度方向代表这两个维度的数据。下图有 u 1 , u 2 u_1, u_2 u1,u2两个向量方向,但是哪个向量才是我们所想要的,可以更好代表原始数据集的呢?

[外链图片转存失败(img-e6nIdosO-1563801132615)(./img/ch2/2.34/1.png)]

从图可看出, u 1 u_1 u1 u 2 u_2 u2好,为什么呢?有以下两个主要评价指标:

  1. 样本点到这个直线的距离足够近。
  2. 样本点在这个直线上的投影能尽可能的分开。

如果我们需要降维的目标维数是其他任意维,则:

  1. 样本点到这个超平面的距离足够近。
  2. 样本点在这个超平面上的投影能尽可能的分开。

2.15.3 PCA算法推理

下面以基于最小投影距离为评价指标推理:

​ 假设数据集是m个n维, ( x ( 1 ) , x ( 2 ) , . . . , x ( m ) ) (x^{(1)}, x^{(2)},...,x^{(m)}) (x(1),x(2),...,x(m)),且数据进行了中心化。经过投影变换得到新坐标为 w 1 , w 2 , . . . , w n {w_1,w_2,...,w_n} w1,w2,...,wn,其中 w w w 是标准正交基,即 ∥ w ∥ 2 = 1 \| w \|_2 = 1 w2=1 w i T w j = 0 w^T_iw_j = 0 wiTwj=0

​ 经过降维后,新坐标为 { w 1 , w 2 , . . . , w n } \{ w_1,w_2,...,w_n \} {w1,w2,...,wn},其中 n ′ n' n 是降维后的目标维数。样本点 x ( i ) x^{(i)} x(i) 在新坐标系下的投影为 z ( i ) = ( z 1 ( i ) , z 2 ( i ) , . . . , z n ′ ( i ) ) z^{(i)} = \left(z^{(i)}_1, z^{(i)}_2, ..., z^{(i)}_{n'} \right) z(i)=(z1(i),z2(i),...,zn(i)),其中 z j ( i ) = w j T x ( i ) z^{(i)}_j = w^T_j x^{(i)} zj(i)=wjTx(i) x ( i ) ​ x^{(i)} ​ x(i) 在低维坐标系里第 j 维的坐标。

​ 如果用 $z^{(i)} $ 去恢复 $x^{(i)} $ ,则得到的恢复数据为 x ^ ( i ) = ∑ j = 1 n ′ x j ( i ) w j = W z ( i ) \widehat{x}^{(i)} = \sum^{n'}_{j=1} x^{(i)}_j w_j = Wz^{(i)} x (i)=j=1nxj(i)wj=Wz(i),其中 W W W为标准正交基组成的矩阵。

​ 考虑到整个样本集,样本点到这个超平面的距离足够近,目标变为最小化 ∑ i = 1 m ∥ x ^ ( i ) − x ( i ) ∥ 2 2 \sum^m_{i=1} \| \hat{x}^{(i)} - x^{(i)} \|^2_2 i=1mx^(i)x(i)22 。对此式进行推理,可得:
∑ i = 1 m ∥ x ^ ( i ) − x ( i ) ∥ 2 2 = ∑ i = 1 m ∥ W z ( i ) − x ( i ) ∥ 2 2 = ∑ i = 1 m ( W z ( i ) ) T ( W z ( i ) ) − 2 ∑ i = 1 m ( W z ( i ) ) T x ( i ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) = ∑ i = 1 m ( z ( i ) ) T ( z ( i ) ) − 2 ∑ i = 1 m ( z ( i ) ) T x ( i ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) = − ∑ i = 1 m ( z ( i ) ) T ( z ( i ) ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) = − t r ( W T ( ∑ i = 1 m x ( i ) ( x ( i ) ) T ) W ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) = − t r ( W T X X T W ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) \sum^m_{i=1} \| \hat{x}^{(i)} - x^{(i)} \|^2_2 = \sum^m_{i=1} \| Wz^{(i)} - x^{(i)} \|^2_2 \\ = \sum^m_{i=1} \left( Wz^{(i)} \right)^T \left( Wz^{(i)} \right) - 2\sum^m_{i=1} \left( Wz^{(i)} \right)^T x^{(i)} + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \\ = \sum^m_{i=1} \left( z^{(i)} \right)^T \left( z^{(i)} \right) - 2\sum^m_{i=1} \left( z^{(i)} \right)^T x^{(i)} + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \\ = - \sum^m_{i=1} \left( z^{(i)} \right)^T \left( z^{(i)} \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \\ = -tr \left( W^T \left( \sum^m_{i=1} x^{(i)} \left( x^{(i)} \right)^T \right)W \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \\ = -tr \left( W^TXX^TW \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} i=1mx^(i)x(i)22=i=1mWz(i)x(i)22=i=1m(Wz(i))T(Wz(i))2i=1m(Wz(i))Tx(i)+i=1m(x(i))Tx(i)=i=1m(z(i))T(z(i))2i=1m(z(i))Tx(i)+i=1m(x(i))Tx(i)=i=1m(z(i))T(z(i))+i=1m(x(i))Tx(i)=tr(WT(i=1mx(i)(x(i))T)W)+i=1m(x(i))Tx(i)=tr(WTXXTW)+i=1m(x(i))Tx(i)

​ 在推导过程中,分别用到了 x ‾ ( i ) = W z ( i ) \overline{x}^{(i)} = Wz^{(i)} x(i)=Wz(i) ,矩阵转置公式 ( A B ) T = B T A T (AB)^T = B^TA^T (AB)T=BTAT W T W = I W^TW = I WTW=I z ( i ) = W T x ( i ) z^{(i)} = W^Tx^{(i)} z(i)=WTx(i) 以及矩阵的迹,最后两步是将代数和转为矩阵形式。
​ 由于 W W W 的每一个向量 w j w_j wj 是标准正交基, ∑ i = 1 m x ( i ) ( x ( i ) ) T \sum^m_{i=1} x^{(i)} \left( x^{(i)} \right)^T i=1mx(i)(x(i))T 是数据集的协方差矩阵,$\sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} $ 是一个常量。最小化 ∑ i = 1 m ∥ x ^ ( i ) − x ( i ) ∥ 2 2 \sum^m_{i=1} \| \hat{x}^{(i)} - x^{(i)} \|^2_2 i=1mx^(i)x(i)22 又可等价于
arg ⁡ min ⁡ ⎵ W − t r ( W T X X T W ) s . t . W T W = I \underbrace{\arg \min}_W - tr \left( W^TXX^TW \right) s.t.W^TW = I W argmintr(WTXXTW)s.t.WTW=I
利用拉格朗日函数可得到
J ( W ) = − t r ( W T X X T W ) + λ ( W T W − I ) J(W) = -tr(W^TXX^TW) + \lambda(W^TW - I) J(W)=tr(WTXXTW)+λ(WTWI)
​ 对 W W W 求导,可得 $-XX^TW + \lambda W = 0 $ ,也即 $ XX^TW = \lambda W $ 。 $ XX^T $ 是 $ n’ $ 个特征向量组成的矩阵, λ \lambda λ 为$ XX^T $ 的特征值。 W W W 即为我们想要的矩阵。
​ 对于原始数据,只需要 z ( i ) = W T X ( i ) z^{(i)} = W^TX^{(i)} z(i)=WTX(i) ,就可把原始数据集降维到最小投影距离的 n ′ n' n 维数据集。

​ 基于最大投影方差的推导,这里就不再赘述,有兴趣的同仁可自行查阅资料。

2.15.4 PCA算法流程总结

输入: n ​ n​ n 维样本集 D = ( x ( 1 ) , x ( 2 ) , . . . , x ( m ) ) ​ D = \left( x^{(1)},x^{(2)},...,x^{(m)} \right)​ D=(x(1),x(2),...,x(m)) ,目标降维的维数 n ′ ​ n'​ n

输出:降维后的新样本集 D ′ = ( z ( 1 ) , z ( 2 ) , . . . , z ( m ) ) D' = \left( z^{(1)},z^{(2)},...,z^{(m)} \right) D=(z(1),z(2),...,z(m))

主要步骤如下:

  1. 对所有的样本进行中心化,$ x^{(i)} = x^{(i)} - \frac{1}{m} \sum^m_{j=1} x^{(j)} $ 。
  2. 计算样本的协方差矩阵 X X T ​ XX^T​ XXT
  3. 对协方差矩阵 X X T XX^T XXT 进行特征值分解。
  4. 取出最大的 $n’ $ 个特征值对应的特征向量 { w 1 , w 2 , . . . , w n ′ } \{ w_1,w_2,...,w_{n'} \} {w1,w2,...,wn}
  5. 标准化特征向量,得到特征向量矩阵 W W W
  6. 转化样本集中的每个样本 z ( i ) = W T x ( i ) z^{(i)} = W^T x^{(i)} z(i)=WTx(i)
  7. 得到输出矩阵 D ′ = ( z ( 1 ) , z ( 2 ) , . . . , z ( n ) ) ​ D' = \left( z^{(1)},z^{(2)},...,z^{(n)} \right)​ D=(z(1),z(2),...,z(n))
    :在降维时,有时不明确目标维数,而是指定降维到的主成分比重阈值 k ( k ϵ ( 0 , 1 ] ) ​ k(k \epsilon(0,1])​ k(kϵ(0,1]) 。假设 n ​ n​ n 个特征值为 λ 1 ⩾ λ 2 ⩾ . . . ⩾ λ n ​ \lambda_1 \geqslant \lambda_2 \geqslant ... \geqslant \lambda_n​ λ1λ2...λn ,则 n ′ ​ n'​ n 可从 ∑ i = 1 n ′ λ i ⩾ k × ∑ i = 1 n λ i ​ \sum^{n'}_{i=1} \lambda_i \geqslant k \times \sum^n_{i=1} \lambda_i ​ i=1nλik×i=1nλi 得到。

2.15.5 PCA算法主要优缺点

优缺点 简要说明
优点 1. 仅仅需要以方差衡量信息量,不受数据集以外的因素影响。 2.各主成分之间正交,可消除原始数据成分间的相互影响的因素。3. 计算方法简单,主要运算是特征值分解,易于实现。
缺点 1.主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。2. 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

2.15.6 降维的必要性及目的

降维的必要性

  1. 多重共线性和预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯。
  2. 高维空间本身具有稀疏性。一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有2%。
  3. 过多的变量,对查找规律造成冗余麻烦。
  4. 仅在变量层面上分析可能会忽略变量之间的潜在联系。例如几个预测变量可能落入仅反映数据某一方面特征的一个组内。

降维的目的

  1. 减少预测变量的个数。
  2. 确保这些变量是相互独立的。
  3. 提供一个框架来解释结果。相关特征,特别是重要特征更能在数据中明确的显示出来;如果只有两维或者三维的话,更便于可视化展示。
  4. 数据在低维下更容易处理、更容易使用。
  5. 去除数据噪声。
  6. 降低算法运算开销。

2.15.7 KPCA与PCA的区别?

​ 应用PCA算法前提是假设存在一个线性超平面,进而投影。那如果数据不是线性的呢?该怎么办?这时候就需要KPCA,数据集从 n n n 维映射到线性可分的高维 N > n N >n N>n,然后再从 N N N 维降维到一个低维度 n ′ ( n ′ < n < N ) n'(n'<n<N) n(n<n<N)

​ KPCA用到了核函数思想,使用了核函数的主成分分析一般称为核主成分分析(Kernelized PCA, 简称KPCA)。

假设高维空间数据由 n ​ n​ n 维空间的数据通过映射 ϕ ​ \phi​ ϕ 产生。

n n n 维空间的特征分解为:
∑ i = 1 m x ( i ) ( x ( i ) ) T W = λ W \sum^m_{i=1} x^{(i)} \left( x^{(i)} \right)^T W = \lambda W i=1mx(i)(x(i))TW=λW

​ 其映射为
∑ i = 1 m ϕ ( x ( i ) ) ϕ ( x ( i ) ) T W = λ W \sum^m_{i=1} \phi \left( x^{(i)} \right) \phi \left( x^{(i)} \right)^T W = \lambda W i=1mϕ(x(i))ϕ(x(i))TW=λW

​ 通过在高维空间进行协方差矩阵的特征值分解,然后用和PCA一样的方法进行降维。由于KPCA需要核函数的运算,因此它的计算量要比PCA大很多。

2.16 模型评估

2.16.1 模型评估常用方法?

​ 一般情况来说,单一评分标准无法完全评估一个机器学习模型。只用good和bad偏离真实场景去评估某个模型,都是一种欠妥的评估方式。下面介绍常用的分类模型和回归模型评估方法。

分类模型常用评估方法:

指标 描述
Accuracy 准确率
Precision 精准度/查准率
Recall 召回率/查全率
P-R曲线 查准率为纵轴,查全率为横轴,作图
F1 F1值
Confusion Matrix 混淆矩阵
ROC ROC曲线
AUC ROC曲线下的面积

回归模型常用评估方法:

指标 描述
Mean Square Error (MSE, RMSE) 平均方差
Absolute Error (MAE, RAE) 绝对误差
R-Squared R平方值

2.16.2 误差、偏差和方差有什么区别和联系?

在机器学习中,Bias(偏差),Error(误差),和Variance(方差)存在以下区别和联系:

**对于Error **:

  • 误差(error):一般地,我们把学习器的实际预测输出与样本的真是输出之间的差异称为“误差”。

  • Error = Bias + Variance + Noise,Error反映的是整个模型的准确度。

对于Noise:

噪声:描述了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

对于Bias:

  • Bias衡量模型拟合训练数据的能力(训练数据不一定是整个 training dataset,而是只用于训练它的那一部分数据,例如:mini-batch),Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度。
  • Bias 越小,拟合能力越高(可能产生overfitting);反之,拟合能力越低(可能产生underfitting)。
  • 偏差越大,越偏离真实数据,如下图第二行所示。

对于Variance:

  • 方差公式: S N 2 = 1 N ∑ i = 1 N ( x i − x ˉ ) 2 S_{N}^{2}=\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2} SN2=N1i=1N(xixˉ)2

  • Variance描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散,模型的稳定程度越差。

  • Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。

  • Variance越小,模型的泛化的能力越高;反之,模型的泛化的能力越低。

  • 如果模型在训练集上拟合效果比较优秀,但是在测试集上拟合效果比较差劣,则方差较大,说明模型的稳定程度较差,出现这种现象可能是由于模型对训练集过拟合造成的。 如下图右列所示。

[外链图片转存失败(img-4sJcgihM-1563801132615)(./img/ch2/2.16.20.1.png)]

2.16.3 经验误差与泛化误差

经验误差(empirical error):也叫训练误差(training error),模型在训练集上的误差。

泛化误差(generalization error):模型在新样本集(测试集)上的误差称为“泛化误差”。

2.16.4 图解欠拟合、过拟合

根据不同的坐标方式,欠拟合与过拟合图解不同。

  1. 横轴为训练样本数量,纵轴为误差

[外链图片转存失败(img-B3eAZB9F-1563801132616)(./img/ch2/2.16.4.1.jpg)]

如上图所示,我们可以直观看出欠拟合和过拟合的区别:

​ 模型欠拟合:在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大;

​ 模型过拟合:在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。

​ 模型正常:在训练集以及测试集上,同时具有相对较低的偏差以及方差。

  1. 横轴为模型复杂程度,纵轴为误差

[外链图片转存失败(img-jWmIqvFs-1563801132616)(./img/ch2/2.16.4.2.png)]

​ 红线为测试集上的Error,蓝线为训练集上的Error

​ 模型欠拟合:模型在点A处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。

​ 模型过拟合:模型在点C处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。

​ 模型正常:模型复杂程度控制在点B处为最优。

  1. 横轴为正则项系数,纵轴为误差

[外链图片转存失败(img-D0E5GDf5-1563801132616)(./img/ch2/2.16.4.3.png)]

​ 红线为测试集上的Error,蓝线为训练集上的Error

​ 模型欠拟合:模型在点C处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。

​ 模型过拟合:模型在点A处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。 它通常发生在模型过于复杂的情况下,如参数过多等,会使得模型的预测性能变弱,并且增加数据的波动性。虽然模型在训练时的效果可以表现的很完美,基本上记住了数据的全部特点,但这种模型在未知数据的表现能力会大减折扣,因为简单的模型泛化能力通常都是很弱的。

​ 模型正常:模型复杂程度控制在点B处为最优。

2.16.5 如何解决过拟合与欠拟合?

如何解决欠拟合:

  1. 添加其他特征项。组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段,有时候特征项不够会导致模型欠拟合。
  2. 添加多项式特征。例如将线性模型添加二次项或三次项使模型泛化能力更强。例如,FM(Factorization Machine)模型、FFM(Field-aware Factorization Machine)模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。
  3. 可以增加模型的复杂程度。
  4. 减小正则化系数。正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

如何解决过拟合:

  1. 重新清洗数据,数据不纯会导致过拟合,此类情况需要重新清洗数据。
  2. 增加训练样本数量。
  3. 降低模型复杂程度。
  4. 增大正则项系数。
  5. 采用dropout方法,dropout方法,通俗的讲就是在训练的时候让神经元以一定的概率不工作。
  6. early stopping。
  7. 减少迭代次数。
  8. 增大学习率。
  9. 添加噪声数据。
  10. 树结构中,可以对树进行剪枝。
  11. 减少特征项。

欠拟合和过拟合这些方法,需要根据实际问题,实际模型,进行选择。

2.16.6 交叉验证的主要作用

​ 为了得到更为稳健可靠的模型,对模型的泛化误差进行评估,得到模型泛化误差的近似值。当有多个模型可以选择时,我们通常选择“泛化误差”最小的模型。

​ 交叉验证的方法有许多种,但是最常用的是:留一交叉验证、k折交叉验证。

2.16.7 理解k折交叉验证

  1. 将含有N个样本的数据集,分成K份,每份含有N/K个样本。选择其中1份作为测试集,另外K-1份作为训练集,测试集就有K种情况。
  2. 在每种情况中,用训练集训练模型,用测试集测试模型,计算模型的泛化误差。
  3. 交叉验证重复K次,每份验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测,得到模型最终的泛化误差。
  4. 将K种情况下,模型的泛化误差取均值,得到模型最终的泛化误差。
  5. 一般 2 ⩽ K ⩽ 10 2\leqslant K \leqslant10 2K10。 k折交叉验证的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。
  6. 训练集中样本数量要足够多,一般至少大于总样本数的50%。
  7. 训练集和测试集必须从完整的数据集中均匀取样。均匀取样的目的是希望减少训练集、测试集与原数据集之间的偏差。当样本数量足够多时,通过随机取样,便可以实现均匀取样的效果。

2.16.8 混淆矩阵

第一种混淆矩阵:

真实情况T or F 预测为正例1,P 预测为负例0,N
本来label标记为1,预测结果真为T、假为F TP(预测为1,实际为1) FN(预测为0,实际为1)
本来label标记为0,预测结果真为T、假为F FP(预测为1,实际为0) TN(预测为0,实际也为0)

第二种混淆矩阵:

预测情况P or N 实际label为1,预测对了为T 实际label为0,预测对了为T
预测为正例1,P TP(预测为1,实际为1) FP(预测为1,实际为0)
预测为负例0,N FN(预测为0,实际为1) TN(预测为0,实际也为0)

2.16.9 错误率及精度

  1. 错误率(Error Rate):分类错误的样本数占样本总数的比例。
  2. 精度(accuracy):分类正确的样本数占样本总数的比例。

2.16.10 查准率与查全率

将算法预测的结果分成四种情况:

  1. 正确肯定(True Positive,TP):预测为真,实际为真
  2. 正确否定(True Negative,TN):预测为假,实际为假
  3. 错误肯定(False Positive,FP):预测为真,实际为假
  4. 错误否定(False Negative,FN):预测为假,实际为真

则:

查准率(Precision)=TP/(TP+FP)

理解:预测出为阳性的样本中,正确的有多少。区别准确率(正确预测出的样本,包括正确预测为阳性、阴性,占总样本比例)。
例,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。

查全率(Recall)=TP/(TP+FN)

理解:正确预测为阳性的数量占总样本中阳性数量的比例。
例,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。

2.16.11 ROC与AUC

​ ROC全称是“受试者工作特征”(Receiver Operating Characteristic)。

​ ROC曲线的面积就是AUC(Area Under Curve)。

​ AUC用于衡量“二分类问题”机器学习算法性能(泛化能力)。

​ ROC曲线,通过将连续变量设定出多个不同的临界值,从而计算出一系列真正率和假正率,再以假正率为横坐标、真正率为纵坐标绘制成曲线,曲线下面积越大,推断准确性越高。在ROC曲线上,最靠近坐标图左上方的点为假正率和真正率均较高的临界值。

​ 对于分类器,或者说分类算法,评价指标主要有Precision,Recall,F-score。下图是一个ROC曲线的示例。

[外链图片转存失败(img-znCyheaS-1563801132616)(./img/ch2/2.40.10/1.png)]

ROC曲线的横坐标为False Positive Rate(FPR),纵坐标为True Positive Rate(TPR)。其中
T P R = T P T P + F N , F P R = F P F P + T N TPR = \frac{TP}{TP+FN} ,FPR = \frac{FP}{FP+TN} TPR=TP+FNTP,FPR=FP+TNFP

​ 下面着重介绍ROC曲线图中的四个点和一条线。
​ 第一个点(0,1),即FPR=0, TPR=1,这意味着FN(False Negative)=0,并且FP(False Positive)=0。意味着这是一个完美的分类器,它将所有的样本都正确分类。
​ 第二个点(1,0),即FPR=1,TPR=0,意味着这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。
​ 第三个点(0,0),即FPR=TPR=0,即FP(False Positive)=TP(True Positive)=0,可以发现该分类器预测所有的样本都为负样本(Negative)。
​ 第四个点(1,1),即FPR=TPR=1,分类器实际上预测所有的样本都为正样本。
​ 经过以上分析,ROC曲线越接近左上角,该分类器的性能越好。

​ ROC曲线所覆盖的面积称为AUC(Area Under Curve),可以更直观的判断学习器的性能,AUC越大则性能越好。

2.16.12 如何画ROC曲线?

​ 下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。

步骤:
1、假设已经得出一系列样本被划分为正类的概率,按照大小排序。
2、从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。
3、每次选取一个不同的threshold,得到一组FPR和TPR,即ROC曲线上的一点。以此共得到20组FPR和TPR的值。
4、根据3、中的每个坐标点,画图。

[外链图片转存失败(img-8NCCtRW0-1563801132616)(./img/ch2/2.40.11/1.jpg)]

2.16.13 如何计算TPR,FPR?

1、分析数据
y_true = [0, 0, 1, 1];scores = [0.1, 0.4, 0.35, 0.8];
2、列表

样本 预测属于P的概率(score) 真实类别
y[0] 0.1 N
y[1] 0.4 N
y[2] 0.35 P
y[3] 0.8 P

3、将截断点依次取为score值,计算TPR和FPR。
当截断点为0.1时:
说明只要score>=0.1,它的预测类别就是正例。 因为4个样本的score都大于等于0.1,所以,所有样本的预测类别都为P。
scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [1, 1, 1, 1];
正例与反例信息如下:

正例 反例
正例 TP=2 FN=0
反例 FP=2 TN=0

由此可得:
TPR = TP/(TP+FN) = 1; FPR = FP/(TN+FP) = 1;

当截断点为0.35时:
scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 1, 1, 1];
正例与反例信息如下:

正例 反例
正例 TP=2 FN=0
反例 FP=1 TN=1

由此可得:
TPR = TP/(TP+FN) = 1; FPR = FP/(TN+FP) = 0.5;

当截断点为0.4时:
scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 1, 0, 1];
正例与反例信息如下:

正例 反例
正例 TP=1 FN=1
反例 FP=1 TN=1

由此可得:
TPR = TP/(TP+FN) = 0.5; FPR = FP/(TN+FP) = 0.5;

当截断点为0.8时:
scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 0, 0, 1];

正例与反例信息如下:

正例 反例
正例 TP=1 FN=1
反例 FP=0 TN=2

由此可得:
TPR = TP/(TP+FN) = 0.5; FPR = FP/(TN+FP) = 0;

4、根据TPR、FPR值,以FPR为横轴,TPR为纵轴画图。

2.16.14 如何计算AUC?

  • 将坐标点按照横坐标FPR排序 。
  • 计算第 i i i个坐标点和第 i + 1 i+1 i+1个坐标点的间距 d x dx dx
  • 获取第 i i i或者 i + 1 i+1 i+1个坐标点的纵坐标y。
  • 计算面积微元 d s = y d x ds=ydx ds=ydx
  • 对面积微元进行累加,得到AUC。

2.16.15 为什么使用Roc和Auc评价分类器?

​ 模型有很多评估方法,为什么还要使用ROC和AUC呢?
​ 因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。

2.16.16 直观理解AUC

​ 下图展现了三种AUC的值:

[外链图片转存失败(img-hzBr5PHy-1563801132616)(./img/ch2/2.40.15/1.png)]

​ AUC是衡量二分类模型优劣的一种评价指标,表示正例排在负例前面的概率。其他评价指标有精确度、准确率、召回率,而AUC比这三者更为常用。
​ 一般在分类模型中,预测结果都是以概率的形式表现,如果要计算准确率,通常都会手动设置一个阈值来将对应的概率转化成类别,这个阈值也就很大程度上影响了模型准确率的计算。
​ 举例:
​ 现在假设有一个训练好的二分类器对10个正负样本(正例5个,负例5个)预测,得分按高到低排序得到的最好预测结果为[1, 1, 1, 1, 1, 0, 0, 0, 0, 0],即5个正例均排在5个负例前面,正例排在负例前面的概率为100%。然后绘制其ROC曲线,由于是10个样本,除去原点我们需要描10个点,如下:

[外链图片转存失败(img-jHrTEOyB-1563801132617)(./img/ch2/2.16.17-1.png)]

​ 描点方式按照样本预测结果的得分高低从左至右开始遍历。从原点开始,每遇到1便向y轴正方向移动y轴最小步长1个单位,这里是1/5=0.2;每遇到0则向x轴正方向移动x轴最小步长1个单位,这里也是0.2。不难看出,上图的AUC等于1,印证了正例排在负例前面的概率的确为100%。

​ 假设预测结果序列为[1, 1, 1, 1, 0, 1, 0, 0, 0, 0]。

[外链图片转存失败(img-O68bWk8i-1563801132617)(./img/ch2/2.16.17-2.png)]

​ 计算上图的AUC为0.96与计算正例与排在负例前面的概率0.8 × 1 + 0.2 × 0.8 = 0.96相等,而左上角阴影部分的面积则是负例排在正例前面的概率0.2 × 0.2 = 0.04。

​ 假设预测结果序列为[1, 1, 1, 0, 1, 0, 1, 0, 0, 0]。

[外链图片转存失败(img-gdnCnByQ-1563801132617)(./img/ch2/2.16.17-3.png)]

​ 计算上图的AUC为0.88与计算正例与排在负例前面的概率0.6 × 1 + 0.2 × 0.8 + 0.2 × 0.6 = 0.88相等,左上角阴影部分的面积是负例排在正例前面的概率0.2 × 0.2 × 3 = 0.12。

2.16.17 代价敏感错误率与代价曲线

不同的错误会产生不同代价。以二分法为例,设置代价矩阵如下:

[外链图片转存失败(img-CHSbS96e-1563801132617)(./img/ch2/2-1.png)]

当判断正确的时候,值为0,不正确的时候,分别为 C o s t 01 ​ Cost_{01}​ Cost01 C o s t 10 ​ Cost_{10}​ Cost10

C o s t 10 Cost_{10} Cost10:表示实际为反例但预测成正例的代价。

C o s t 01 Cost_{01} Cost01:表示实际为正例但是预测为反例的代价。

代价敏感错误率=样本中由模型得到的错误值与代价乘积之和 / 总样本。
其数学表达式为:
E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∈ D + ( f ( x i ) ≠ y i ) × C o s t 01 + ∑ x i ∈ D − ( f ( x i ) ≠ y i ) × C o s t 10 ) E(f;D;cost)=\frac{1}{m}\left( \sum_{x_{i} \in D^{+}}({f(x_i)\neq y_i})\times Cost_{01}+ \sum_{x_{i} \in D^{-}}({f(x_i)\neq y_i})\times Cost_{10}\right) E(f;D;cost)=m1(xiD+(f(xi)̸=yi)×Cost01+xiD(f(xi)̸=yi)×Cost10)
D + 、 D − ​ D^{+}、D^{-}​ D+D分别代表样例集的正例子集和反例子集,x是预测值,y是真实值。

代价曲线
在均等代价时,ROC曲线不能直接反应出模型的期望总体代价,而代价曲线可以。
代价曲线横轴为[0,1]的正例函数代价:
P ( + ) C o s t = p ∗ C o s t 01 p ∗ C o s t 01 + ( 1 − p ) ∗ C o s t 10 P(+)Cost=\frac{p*Cost_{01}}{p*Cost_{01}+(1-p)*Cost_{10}} P(+)Cost=pCost01+(1p)Cost10pCost01
其中p是样本为正例的概率。

代价曲线纵轴维[0,1]的归一化代价:
C o s t n o r m = F N R ∗ p ∗ C o s t 01 + F N R ∗ ( 1 − p ) ∗ C o s t 10 p ∗ C o s t 01 + ( 1 − p ) ∗ C o s t 10 Cost_{norm}=\frac{FNR*p*Cost_{01}+FNR*(1-p)*Cost_{10}}{p*Cost_{01}+(1-p)*Cost_{10}} Costnorm=pCost01+(1p)Cost10FNRpCost01+FNR(1p)Cost10

其中FPR为假阳率,FNR=1-TPR为假阴率。

注:ROC每个点,对应代价平面上一条线。

例如,ROC上(TPR,FPR),计算出FNR=1-TPR,在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,面积则为该条件下期望的总体代价。所有线段下界面积,所有条件下学习器的期望总体代价。

[外链图片转存失败(img-2r2JOTyT-1563801132618)(./img/ch2/2.16.18.1.png)]

2.16.18 模型有哪些比较检验方法

正确性分析:模型稳定性分析,稳健性分析,收敛性分析,变化趋势分析,极值分析等。
有效性分析:误差分析,参数敏感性分析,模型对比检验等。
有用性分析:关键数据求解,极值点,拐点,变化趋势分析,用数据验证动态模拟等。
高效性分析:时空复杂度分析与现有进行比较等。

2.16.19 为什么使用标准差?

方差公式为: S N 2 = 1 N ∑ i = 1 N ( x i − x ˉ ) 2 ​ S^2_{N}=\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}​ SN2=N1i=1N(xixˉ)2

标准差公式为: S N = 1 N ∑ i = 1 N ( x i − x ˉ ) 2 ​ S_{N}=\sqrt{\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}}​ SN=N1i=1N(xixˉ)2

样本标准差公式为: S N = 1 N − 1 ∑ i = 1 N ( x i − x ˉ ) 2 ​ S_{N}=\sqrt{\frac{1}{N-1}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}}​ SN=N11i=1N(xixˉ)2

与方差相比,使用标准差来表示数据点的离散程度有3个好处:
1、表示离散程度的数字与样本数据点的数量级一致,更适合对数据样本形成感性认知。

2、表示离散程度的数字单位与样本数据的单位一致,更方便做后续的分析运算。

3、在样本数据大致符合正态分布的情况下,标准差具有方便估算的特性:68%的数据点落在平均值前后1个标准差的范围内、95%的数据点落在平均值前后2个标准差的范围内,而99%的数据点将会落在平均值前后3个标准差的范围内。

2.16.20 类别不平衡产生原因?

​ 类别不平衡(class-imbalance)是指分类任务中不同类别的训练样例数目差别很大的情况。

产生原因:

​ 分类学习算法通常都会假设不同类别的训练样例数目基本相同。如果不同类别的训练样例数目差别很大,则会影响学习结果,测试结果变差。例如二分类问题中有998个反例,正例有2个,那学习方法只需返回一个永远将新样本预测为反例的分类器,就能达到99.8%的精度;然而这样的分类器没有价值。

2.16.21 常见的类别不平衡问题解决方法

防止类别不平衡对学习造成的影响,在构建分类模型之前,需要对分类不平衡性问题进行处理。主要解决方法有:

1、扩大数据集

​ 增加包含小类样本数据的数据,更多的数据能得到更多的分布信息。

2、对大类数据欠采样

​ 减少大类数据样本个数,使与小样本个数接近。
​ 缺点:欠采样操作时若随机丢弃大类样本,可能会丢失重要信息。
​ 代表算法:EasyEnsemble。其思想是利用集成学习机制,将大类划分为若干个集合供不同的学习器使用。相当于对每个学习器都进行欠采样,但对于全局则不会丢失重要信息。

3、对小类数据过采样

​ 过采样:对小类的数据样本进行采样来增加小类的数据样本个数。

​ 代表算法:SMOTE和ADASYN。

​ SMOTE:通过对训练集中的小类数据进行插值来产生额外的小类样本数据。

​ 新的少数类样本产生的策略:对每个少数类样本a,在a的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。
​ ADASYN:根据学习难度的不同,对不同的少数类别的样本使用加权分布,对于难以学习的少数类的样本,产生更多的综合数据。 通过减少类不平衡引入的偏差和将分类决策边界自适应地转移到困难的样本两种手段,改善了数据分布。

4、使用新评价指标

​ 如果当前评价指标不适用,则应寻找其他具有说服力的评价指标。比如准确度这个评价指标在类别不均衡的分类任务中并不适用,甚至进行误导。因此在类别不均衡分类任务中,需要使用更有说服力的评价指标来对分类器进行评价。

5、选择新算法

​ 不同的算法适用于不同的任务与数据,应该使用不同的算法进行比较。

6、数据代价加权

​ 例如当分类任务是识别小类,那么可以对分类器的小类样本数据增加权值,降低大类样本的权值,从而使得分类器将重点集中在小类样本身上。

7、转化问题思考角度

​ 例如在分类问题时,把小类的样本作为异常点,将问题转化为异常点检测或变化趋势检测问题。 异常点检测即是对那些罕见事件进行识别。变化趋势检测区别于异常点检测在于其通过检测不寻常的变化趋势来识别。

8、将问题细化分析

​ 对问题进行分析与挖掘,将问题划分成多个更小的问题,看这些小问题是否更容易解决。

2.17 决策树

2.17.1 决策树的基本原理

​ 决策树(Decision Tree)是一种分而治之的决策过程。一个困难的预测问题,通过树的分支节点,被划分成两个或多个较为简单的子集,从结构上划分为不同的子问题。将依规则分割数据集的过程不断递归下去(Recursive Partitioning)。随着树的深度不断增加,分支节点的子集越来越小,所需要提的问题数也逐渐简化。当分支节点的深度或者问题的简单程度满足一定的停止规则(Stopping Rule)时, 该分支节点会停止分裂,此为自上而下的停止阈值(Cutoff Threshold)法;有些决策树也使用自下而上的剪枝(Pruning)法。

2.17.2 决策树的三要素?

​ 一棵决策树的生成过程主要分为以下3个部分:

​ 1、特征选择:从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准,从而衍生出不同的决策树算法。

​ 2、决策树生成:根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则决策树停止生长。树结构来说,递归结构是最容易理解的方式。

​ 3、剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。

2.17.3 决策树学习基本算法

[外链图片转存失败(img-yPEB3Z2p-1563801132618)(./img/ch2/2-5.png)]

2.17.4 决策树算法优缺点

决策树算法的优点

1、决策树算法易理解,机理解释起来简单。

2、决策树算法可以用于小数据集。

3、决策树算法的时间复杂度较小,为用于训练决策树的数据点的对数。

4、相比于其他算法智能分析一种类型变量,决策树算法可处理数字和数据的类别。

5、能够处理多输出的问题。

6、对缺失值不敏感。

7、可以处理不相关特征数据。

8、效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。

决策树算法的缺点

1、对连续性的字段比较难预测。

2、容易出现过拟合。

3、当类别太多时,错误可能就会增加的比较快。

4、在处理特征关联性比较强的数据时表现得不是太好。

5、对于各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征。

2.17.5 熵的概念以及理解

​ 熵:度量随机变量的不确定性。
​ 定义:假设随机变量X的可能取值有 x 1 , x 2 , . . . , x n x_{1},x_{2},...,x_{n} x1,x2,...,xn,对于每一个可能的取值 x i x_{i} xi,其概率为 P ( X = x i ) = p i , i = 1 , 2... , n P(X=x_{i})=p_{i},i=1,2...,n P(X=xi)=pi,i=1,2...,n。随机变量的熵为:
H ( X ) = − ∑ i = 1 n p i l o g 2 p i H(X)=-\sum_{i=1}^{n}p_{i}log_{2}p_{i} H(X)=i=1npilog2pi
​ 对于样本集合,假设样本有k个类别,每个类别的概率为 ∣ C k ∣ ∣ D ∣ \frac{|C_{k}|}{|D|} DCk,其中 ∣ C k ∣ ∣ D ∣ {|C_{k}|}{|D|} CkD为类别为k的样本个数, ∣ D ∣ ​ |D|​ D为样本总数。样本集合D的熵为:
H ( D ) = − ∑ k = 1 k ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^{k}\frac{|C_{k}|}{|D|}log_{2}\frac{|C_{k}|}{|D|} H(D)=k=1kDCklog2DCk

2.17.6 信息增益的理解

​ 定义:以某特征划分数据集前后的熵的差值。
​ 熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏。 ​ 假设划分前样本集合D的熵为H(D)。使用某个特征A划分数据集D,计算划分后的数据子集的熵为H(D|A)。
​ 则信息增益为:
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)H(DA)
​ *注:*在决策树构建的过程中我们总是希望集合往最快到达纯度更高的子集合方向发展,因此我们总是选择使得信息增益最大的特征来划分当前数据集D。
​ 思想:计算所有特征划分数据集D,得到多个特征划分数据集D的信息增益,从这些信息增益中选择最大的,因而当前结点的划分特征便是使信息增益最大的划分所使用的特征。
​ 另外这里提一下信息增益比相关知识:
信 息 增 益 比 = 惩 罚 参 数 × 信 息 增 益 信息增益比=惩罚参数\times信息增益 =×
​ 信息增益比本质:在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。
​ 惩罚参数:数据集D以特征A作为随机变量的熵的倒数。

2.17.7 剪枝处理的作用及策略?

​ 剪枝处理是决策树学习算法用来解决过拟合问题的一种办法。

​ 在决策树算法中,为了尽可能正确分类训练样本, 节点划分过程不断重复, 有时候会造成决策树分支过多,以至于将训练样本集自身特点当作泛化特点, 而导致过拟合。 因此可以采用剪枝处理来去掉一些分支来降低过拟合的风险。

​ 剪枝的基本策略有预剪枝(pre-pruning)和后剪枝(post-pruning)。

​ 预剪枝:在决策树生成过程中,在每个节点划分前先估计其划分后的泛化性能, 如果不能提升,则停止划分,将当前节点标记为叶结点。

​ 后剪枝:生成决策树以后,再自下而上对非叶结点进行考察, 若将此节点标记为叶结点可以带来泛化性能提升,则修改之。

2.18 支持向量机

2.18.1 什么是支持向量机

​ 支持向量:在求解的过程中,会发现只根据部分数据就可以确定分类器,这些数据称为支持向量。

​ 支持向量机(Support Vector Machine,SVM):其含义是通过支持向量运算的分类器。

​ 在一个二维环境中,其中点R,S,G点和其它靠近中间黑线的点可以看作为支持向量,它们可以决定分类器,即黑线的具体参数。

[外链图片转存失败(img-NCdJPJk1-1563801132619)(./img/ch2/2-6.png)]

​ 支持向量机是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是边界最大化,最终转化为一个凸二次规划问题来求解。由简至繁的模型包括:

​ 当训练样本线性可分时,通过硬边界(hard margin)最大化,学习一个线性可分支持向量机;

​ 当训练样本近似线性可分时,通过软边界(soft margin)最大化,学习一个线性支持向量机;

​ 当训练样本线性不可分时,通过核技巧和软边界最大化,学习一个非线性支持向量机;

2.18.2 支持向量机能解决哪些问题?

线性分类

​ 在训练数据中,每个数据都有n个的属性和一个二分类类别标志,我们可以认为这些数据在一个n维空间里。我们的目标是找到一个n-1维的超平面,这个超平面可以将数据分成两部分,每部分数据都属于同一个类别。

​ 这样的超平面有很多,假如我们要找到一个最佳的超平面。此时,增加一个约束条件:要求这个超平面到每边最近数据点的距离是最大的,成为最大边距超平面。这个分类器即为最大边距分类器。

非线性分类

​ SVM的一个优势是支持非线性分类。它结合使用拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件,以及核函数可以生成非线性分类器。

2.18.3 核函数特点及其作用?

​ 引入核函数目的:把原坐标系里线性不可分的数据用核函数Kernel投影到另一个空间,尽量使得数据在新的空间里线性可分。
​ 核函数方法的广泛应用,与其特点是分不开的:

1)核函数的引入避免了“维数灾难”,大大减小了计算量。而输入空间的维数n对核函数矩阵无影响。因此,核函数方法可以有效处理高维输入。

2)无需知道非线性变换函数Φ的形式和参数。

3)核函数的形式和参数的变化会隐式地改变从输入空间到特征空间的映射,进而对特征空间的性质产生影响,最终改变各种核函数方法的性能。

4)核函数方法可以和不同的算法相结合,形成多种不同的基于核函数技术的方法,且这两部分的设计可以单独进行,并可以为不同的应用选择不同的核函数和算法。

2.18.4 SVM为什么引入对偶问题?

1,对偶问题将原始问题中的约束转为了对偶问题中的等式约束,对偶问题往往更加容易求解。

2,可以很自然的引用核函数(拉格朗日表达式里面有内积,而核函数也是通过内积进行映射的)。

3,在优化理论中,目标函数 f(x) 会有多种形式:如果目标函数和约束条件都为变量 x 的线性函数,称该问题为线性规划;如果目标函数为二次函数,约束条件为线性函数,称该最优化问题为二次规划;如果目标函数或者约束条件均为非线性函数,称该最优化问题为非线性规划。每个线性规划问题都有一个与之对应的对偶问题,对偶问题有非常良好的性质,以下列举几个:

​ a, 对偶问题的对偶是原问题;

​ b, 无论原始问题是否是凸的,对偶问题都是凸优化问题;

​ c, 对偶问题可以给出原始问题一个下界;

​ d, 当满足一定条件时,原始问题与对偶问题的解是完全等价的。

2.18.5 如何理解SVM中的对偶问题

在硬边界支持向量机中,问题的求解可以转化为凸二次规划问题。

​ 假设优化目标为
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ &\min_{\boldsy…
step 1. 转化问题:
(2) min ⁡ w , b max ⁡ α i ⩾ 0 { 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) } \min_{\boldsymbol w, b} \max_{\alpha_i \geqslant 0} \left\{\frac{1}{2}||\boldsymbol w||^2 + \sum_{i=1}^m\alpha_i(1 - y_i(\boldsymbol w^T\boldsymbol x_i+b))\right\} \tag{2} w,bminαi0max{21w2+i=1mαi(1yi(wTxi+b))}(2)
上式等价于原问题,因为若满足(1)中不等式约束,则(2)式求max时, α i ( 1 − y i ( w T x i + b ) ) \alpha_i(1 - y_i(\boldsymbol w^T\boldsymbol x_i+b)) αi(1yi(wTxi+b))必须取0,与(1)等价;若不满足(1)中不等式约束,(2)中求max会得到无穷大。 交换min和max获得其对偶问题:
max ⁡ α i ⩾ 0 min ⁡ w , b { 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) } \max_{\alpha_i \geqslant 0} \min_{\boldsymbol w, b} \left\{\frac{1}{2}||\boldsymbol w||^2 + \sum_{i=1}^m\alpha_i(1 - y_i(\boldsymbol w^T\boldsymbol x_i+b))\right\} αi0maxw,bmin{21w2+i=1mαi(1yi(wTxi+b))}
交换之后的对偶问题和原问题并不相等,上式的解小于等于原问题的解。

step 2.现在的问题是如何找到问题(1) 的最优值的一个最好的下界?
(3) 1 2 ∣ ∣ w ∣ ∣ 2 < v 1 − y i ( w T x i + b ) ⩽ 0 \frac{1}{2}||\boldsymbol w||^2 < v\\ 1 - y_i(\boldsymbol w^T\boldsymbol x_i+b) \leqslant 0\tag{3} 21w2<v1yi(wTxi+b)0(3)
若方程组(3)无解, 则v是问题(1)的一个下界。若(3)有解, 则
∀ α > 0 ,   min ⁡ w , b { 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) } < v \forall \boldsymbol \alpha > 0 , \ \min_{\boldsymbol w, b} \left\{\frac{1}{2}||\boldsymbol w||^2 + \sum_{i=1}^m\alpha_i(1 - y_i(\boldsymbol w^T\boldsymbol x_i+b))\right\} < v α>0, w,bmin{21w2+i=1mαi(1yi(wTxi+b))}<v
由逆否命题得:若
∃ α > 0 ,   min ⁡ w , b { 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) } ⩾ v \exists \boldsymbol \alpha > 0 , \ \min_{\boldsymbo

你可能感兴趣的:(AI)