文章目录

  • 参考资料
  • 1. 概述
  • 1.1 机器学习定义
  • 1.2 基本术语
  • 2. 模型的评估与选择
  • 2.1 误差与过/欠拟合
  • 2.2 评估方法
  • 2.3 训练集与测试集的划分方法
  • 2.3.1 留出法
  • 2.3.2 交叉验证法
  • 2.3.3 自助法
  • 2.4 调参
  • 2.5 性能度量
  • 2.5.1 最常见的性能度量
  • 2.5.2 查准率(精确率)/查全率(召回率)/F1
  • 2.5.3 ROC与AUC
  • 2.5.4 代价敏感错误率与代价曲线
  • 3. 特征工程
  • 3.1 特征归一化
  • 3.2 类别型特征
  • 3.3 高维组合特征的处理
  • 3.4 文本表示模型
  • 3.5 其它特征工程
  • 3.6 特征工程脑图
  • 4. 优化方法
  • 4.1 机器学习常用损失函数
  • 4.2 凸优化
  • 4.3 正则化项
  • 4.4 常见的几种最优化方法
  • 1. 梯度下降法
  • 2. 牛顿法
  • 3. 拟牛顿法
  • 4. 共轭梯度法
  • 5. 降维方法
  • 5.1 线性判别分析(LDA)
  • 5.2 主成分分析(PCA)
  • 5.3 LDA vs PCA
  • 6. 超参数调优
  • 7. 检验方法
  • 7.1 KS检验
  • 7.2 T检验
  • 7.3 F检验
  • 7.4 Grubbs检验
  • 7.5 卡方检验


参考资料

  1. Machine-learning-learning-notes
  2. LeeML-Notes

本博客为作者根据周志华的西瓜书和参考资料1、2所做的笔记,主要用于学习,非技术类博客,因此存在大量复制粘贴,请见谅。

1. 概述

机器学习 机器学习 周志华 pdf_人工智能

1.1 机器学习定义

机器学习正是这样的一门学科,人的“经验”对应计算机中的“数据”,让计算机来学习这些经验数据,生成一个算法模型,在面对新的情况中,计算机便能作出有效的判断,这便是机器学习。

另一本经典教材的作者Mitchell给出了一个形式化的定义,假设:

  • P:计算机程序在某任务类T上的性能。
  • T:计算机程序希望实现的任务类。
  • E:表示经验,即历史的数据集。

若该计算机程序通过利用经验E在任务T上获得了性能P的改善,则称该程序对E进行了学习

1.2 基本术语

  • 所有记录的集合为:数据集。
  • 每一条记录为:一个实例(instance)或样本(sample)。
    例如:西瓜的色泽或敲声,单个的特点为特征(feature)或属性(attribute)
    对于一条记录,如果在坐标轴上表示,每个西瓜都可以用坐标轴中的一个点表示,一个点也是一个向量,例如(青绿,蜷缩,浊响),即每个西瓜为:一个特征向量(feature vector)。
  • 一个样本的特征数为:维数(dimensionality),当维数非常大时,也就是现在说的“维数灾难”。
  • 计算机程序学习经验数据生成算法模型的过程中,每一条记录称为一个“训练样本”,同时在训练好模型后,我们希望使用新的样本来测试模型的效果,则每一个新的样本称为一个“测试样本”。
  • 所有训练样本的集合为:训练集(trainning set)——特殊。
  • 所有测试样本的集合为:测试集(test set)——一般。
  • 机器学习出来的模型适用于新样本的能力称为:泛化能力(generalization),即从特殊到一般。
  • 预测值为离散值的问题为:分类(classification)。
  • 预测值为连续值的问题为:回归(regression)。
  • 训练数据有标记信息的学习任务为:监督学习(supervised learning),分类和回归都是监督学习的范畴。
  • 训练数据没有标记信息的学习任务为:无监督学习(unsupervised learning),常见的有聚类和关联规则。

2. 模型的评估与选择

2.1 误差与过/欠拟合

误差(error)

学习器对样本的实际预测结果与样本的真实值之间的差异。

  • 在训练集上的误差称为训练误差(training error)或经验误差(empirical error)。
  • 在测试集上的误差称为测试误差(test error)。
  • 学习器在所有新样本上的误差称为泛化误差(generalization error)。

显然,我们希望得到的是在新样本上表现得很好的学习器,即泛化误差小的学习器。因此,我们应该让学习器尽可能地从训练集中学出普适性的“一般特征”,这样在遇到新样本时才能做出正确的判别。

  • 当学习器把训练集学得“太好”的时候,即把一些训练样本的自身特点当做了普遍特征;
    学习能力过强,以至于把训练样本所包含的不太一般的特性都学到了,称为:过拟合(overfitting)
  • 同时也有学习能力不足的情况,即训练集的基本特征都没有学习出来。
    学习能太差,训练样本的一般性质尚未学好,称为:欠拟合(underfitting)

机器学习 机器学习 周志华 pdf_机器学习_02

可以得知:在过拟合问题中,训练误差十分小,但测试误差较大;

在欠拟合问题中,训练误差和测试误差都比较大。

目前,欠拟合问题比较容易克服,例如增加迭代次数等,但过拟合问题还没有十分好的解决方案,过拟合是机器学习面临的关键障碍。

2.2 评估方法

我们希望得到的是泛化误差小的学习器,理想的解决方案是对模型的泛化误差进行评估,然后选择泛化误差最小的那个学习器。但是,泛化误差指的是模型在所有新样本上的适用能力,我们无法直接获得泛化误差。

因此,通常我们采用一个“测试集”来测试学习器对新样本的判别能力,然后以“测试集”上的“测试误差”作为“泛化误差”的近似。

我们选取的测试集应尽可能与训练集互斥

原因:

假设老师出了10 道习题供同学们练习,考试时老师又用同样的这10道题作为试题,可能有的童鞋只会做这10 道题却能得高分,很明显:这个考试成绩并不能有效地反映出真实水平。
回到我们的问题上来,我们希望得到泛化性能好的模型,好比希望同学们课程学得好并获得了对所学知识"举一反三"的能力;训练样本相当于给同学们练习的习题,测试过程则相当于考试。显然,若测试样本被用作训练了,则得到的将是过于"乐观"的估计结果。

2.3 训练集与测试集的划分方法

如上所述:我们希望用一个“测试集”的“测试误差”来作为“泛化误差”的近似,因此我们需要对初始数据集进行有效划分,划分出互斥的“训练集”和“测试集”。下面介绍几种常用的划分方法。

2.3.1 留出法

将数据集D划分为两个互斥的集合,一个作为训练集S,一个作为测试集T,满足机器学习 机器学习 周志华 pdf_泛化_03机器学习 机器学习 周志华 pdf_数据集_04,常见的划分为:大约2/3-4/5的样本用作训练,剩下的用作测试。

需要注意的是:训练/测试集的划分要尽可能保持数据分布的一致性,以避免由于分布的差异引入额外的偏差,常见的做法是采取分层抽样。同时,由于划分的随机性,单次的留出法结果往往不够稳定,一般要采用若干次随机划分,重复实验取平均值的做法

2.3.2 交叉验证法

将数据集D划分为k个大小相同的互斥子集,满足机器学习 机器学习 周志华 pdf_机器学习_05,同样地尽可能保持数据分布的一致性,即采用分层抽样的方法获得这些子集。

交叉验证法的思想是:每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就有K种训练集/测试集划分的情况,从而可进行k次训练和测试,最终返回k次测试结果的均值。交叉验证法也称“k折交叉验证”,k最常用的取值是10,下图给出了10折交叉验证的示意图。

机器学习 机器学习 周志华 pdf_数据集_06

与留出法类似,将数据集D划分为K个子集的过程具有随机性,因此K折交叉验证通常也要重复p次,称为p次k折交叉验证,常见的是10次10折交叉验证,即进行了100次训练/测试。特殊地当划分的k个子集的每个子集中只有一个样本时,称为“留一法”,显然,留一法的评估结果比较准确,但对计算机的消耗也是巨大的。

2.3.3 自助法

我们希望评估的是用整个D训练出的模型。但在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模变化的影响较小,但计算复杂度又太高了。“自助法”正是解决了这样的问题

自助法的基本思想是:给定包含m个样本的数据集D,每次随机从D 中挑选一个样本,将其拷贝放入机器学习 机器学习 周志华 pdf_正例_07,然后再将该样本放回初始数据集D 中,使得该样本在下次采样时仍有可能被采到。重复执行m 次,就可以得到了包含m个样本的数据集机器学习 机器学习 周志华 pdf_正例_07。可以得知在m次采样中,样本始终不被采到的概率取极限为:

机器学习 机器学习 周志华 pdf_数据集_09

这样,通过自助采样,初始样本集D中大约有36.8%的样本没有出现在机器学习 机器学习 周志华 pdf_正例_07中,于是可以将机器学习 机器学习 周志华 pdf_正例_07作为训练集,机器学习 机器学习 周志华 pdf_正例_12作为测试集。

自助法在数据集较小,难以有效划分训练集/测试集时很有用;

但由于自助法产生的数据集(随机抽样)改变了初始数据集的分布,因此引入了估计偏差。在初始数据集足够时,留出法和交叉验证法更加常用。

2.4 调参

大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模型的性能往往有显著差别,这就是通常所说的"参数调节"或简称"调参" (parameter tuning)。

学习算法的很多参数是在实数范围内取值,因此,对每种参数取值都训练出模型来是不可行的。

常用的做法是:对每个参数选定一个范围和步长机器学习 机器学习 周志华 pdf_数据集_13,这样使得学习的过程变得可行。例如:假定算法有3 个参数,每个参数仅考虑5 个候选值,这样对每一组训练/测试集就有555= 125 个模型需考察,由此可见:选对一个参数(即经验值)对于算法人员来说是有多么的happy。

最后需要注意的是:当选定好模型和调参完成后,我们需要使用初始的数据集D重新训练模型,即让最初划分出来用于评估的测试集也被模型学习,增强模型的学习效果。用上面考试的例子来比喻:就像高中时大家每次考试完,要将考卷的题目消化掉。

2.5 性能度量

性能度量(performance measure)是衡量模型泛化能力的评价标准,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果.

2.5.1 最常见的性能度量

回归任务中,即预测连续值的问题,最常用的性能度量是“均方误差”(mean squared error),很多的经典算法都是采用了MSE作为评价函数

机器学习 机器学习 周志华 pdf_泛化_14

分类任务中,即预测离散值的问题,最常用的是错误率和精度

错误率是分类错误的样本数占样本总数的比例,

精度则是分类正确的样本数占样本总数的比例,易知:错误率+精度=1。

机器学习 机器学习 周志华 pdf_正例_15

2.5.2 查准率(精确率)/查全率(召回率)/F1

错误率和精度虽然常用,但不能满足所有的需求,例如:在推荐系统中,我们只关心推送给用户的内容用户是否感兴趣(即查准率/精确率),或者说所有用户感兴趣的内容我们推送出来了多少(即查全率/召回率)。因此,使用查准/查全率更适合描述这类问题。

对于二分类问题,分类结果混淆矩阵与查准/查全率定义如下:

机器学习 机器学习 周志华 pdf_泛化_16


初次接触时,FN与FP很难正确的理解,按照惯性思维容易把FN理解成:False->Negtive,即将错的预测为错的,这样FN和TN就反了,后来找到一张图,描述得很详细,为方便理解,把这张图也贴在了下边:

机器学习 机器学习 周志华 pdf_泛化_17

正如天下没有免费的午餐,查准率和查全率是一对矛盾的度量。例如我们想让推送的内容尽可能用户全都感兴趣,那只能推送我们把握高的内容,这样就漏掉了一些用户感兴趣的内容,查全率就低了;如果想让用户感兴趣的内容都被推送,那只有将所有内容都推送上,宁可错杀一千,不可放过一个,这样查准率就很低了。

P-R曲线”正是描述查准/查全率变化的曲线,P-R曲线定义如下:根据学习器的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是“正例”的样本排在前面,最不可能是“正例”的排在后面,按此顺序逐个把样本作为“正例”进行预测,每次计算出当前的P值和R值,如下图所示:

机器学习 机器学习 周志华 pdf_泛化_18


P-R曲线如何评估呢?

若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优。P和R指标有时会出现矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure,又称F-Score。F-Measure是P和R的加权调和平均,即:

机器学习 机器学习 周志华 pdf_机器学习_19


特别地,当β=1时,也就是常见的F1度量,是P和R的调和平均(F1值为算数平均数除以几何平均数,且越大越好),当F1较高时,模型的性能越好。

机器学习 机器学习 周志华 pdf_机器学习_20

有时候我们会有多个二分类混淆矩阵,例如:多次训练或者在多个数据集上训练,那么估算全局性能的方法有两种,分为宏观和微观。简单理解,宏观就是先算出每个混淆矩阵的P值和R值,然后取得平均P值macro-P和平均R值macro-R,再算出Fβ或F1;而微观则是计算出混淆矩阵的平均TP、FP、TN、FN,接着进行计算P、R,进而求出Fβ或F1。

机器学习 机器学习 周志华 pdf_机器学习_21

2.5.3 ROC与AUC

如上所述:学习器对测试样本的评估结果一般为一个实值或概率,设定一个阈值,大于阈值为正例,小于阈值为负例,因此这个实值的好坏直接决定了学习器的泛化性能,若将这些实值排序,则排序的好坏决定了学习器的性能高低。ROC曲线正是从这个角度出发来研究学习器的泛化性能,ROC曲线与P-R曲线十分类似,都是按照排序的顺序逐一按照正例预测,不同的是ROC曲线以“真正例率”(True Positive Rate,简称TPR)为横轴,纵轴为“假正例率”(False Positive Rate,简称FPR),ROC偏重研究基于测试样本评估值的排序好坏

机器学习 机器学习 周志华 pdf_泛化_22

机器学习 机器学习 周志华 pdf_机器学习_23


简单分析图像,可以得知:当FN=0时,TN也必须为0,反之也成立,我们可以画一个队列,试着使用不同的截断点(即阈值)去分割队列,来分析曲线的形状,(0,0)表示将所有的样本预测为负例,(1,1)则表示将所有的样本预测为正例,(0,1)表示正例全部出现在负例之前的理想情况,(1,0)则表示负例全部出现在正例之前的最差情况。

现实中的任务通常都是有限个测试样本,因此只能绘制出近似ROC曲线。

绘制方法
首先根据测试样本的评估值对测试样本排序,接着按照以下规则进行绘制。

绘制出如图(b)所示的近似ROC曲线.绘图过程很简单:给定机器学习 机器学习 周志华 pdf_泛化_24个正例和机器学习 机器学习 周志华 pdf_人工智能_25个反例,根据学习器预测结果对样例进行排序,然后把分类阅值设为最大,即把所有样例均预测为反例,此时真正例率和假正例率均为0,在坐标(0,0)处标记一个点,然后将分类阙值依次设为每个样例的预测值,即依次将每个样例划分为正例,设前一个标记点坐标为(x,y),当前若为真正例,则对应标记点的坐标为机器学习 机器学习 周志华 pdf_数据集_26;当前若为假正例,则对应标记点的坐标为机器学习 机器学习 周志华 pdf_泛化_27,然后用线段连接相邻点即得.

同样地,进行模型的性能比较时,若一个学习器A的ROC曲线被另一个学习器B的ROC曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。

ROC曲线下的面积定义为AUC(Area Uder ROC Curve),不同于P-R的是,这里的AUC是可估算的,即AOC曲线下每一个小矩形的面积之和。

易知:AUC越大,证明排序的质量越好,AUC为1时,证明所有正例排在了负例的前面,AUC为0时,所有的负例排在了正例的前面

机器学习 机器学习 周志华 pdf_人工智能_28

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

在现实生活中,将正例预测成假例与将假例预测成正例的代价常常是不一样的,例如:将无疾病–>有疾病只是增多了检查,但有疾病–>无疾病却是增加了生命危险。以二分类为例,由此引入了“代价矩阵”(cost matrix)。

机器学习 机器学习 周志华 pdf_泛化_29

在非均等错误代价下,我们希望的是最小化“总体代价”,这样“代价敏感”的错误率为:

机器学习 机器学习 周志华 pdf_数据集_30

同样对于ROC曲线,在非均等错误代价下,演变成了“代价曲线”,代价曲线横轴是取值在[0,1]之间的正例概率代价,式中p表示正例的概率,纵轴是取值为[0,1]的归一化代价。

机器学习 机器学习 周志华 pdf_泛化_31


代价曲线的绘制:设ROC曲线上一点的坐标为(TPR,FPR) ,则可相应计算出FNR,然后在代价平面上绘制一条从(0,FPR) 到(1,FNR) 的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC 曲线土的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价,如图所示:

机器学习 机器学习 周志华 pdf_正例_32

3. 特征工程

特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。从本质上来讲,特征工程是一个表示和展现数 据的过程。在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。

主要讨论以下两种常用的数据类型。

  1. 结构化数据。结构化数据类型可以看作关系型数据库的一张表,每列都有清晰的定义,包含了数值型、类别型两种基本类型;每一行数据表示一个样本 的信息。
  2. 非结构化数据。非结构化数据主要包括文本、图像、音频、视频数据, 其包含的信息无法用一个简单的数值表示,也没有清晰的类别定义,并且每条数 据的大小各不相同。

3.1 特征归一化

为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得 不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响,如果 使用米(m)和千克(kg)作为单位,那么身高特征会在1.6~1.8m的数值范围 内,体重特征会在50~100kg的范围内,分析出来的结果显然会倾向于数值差别比 较大的体重特征。想要得到更为准确的结果,就需要进行特征归一化 (Normalization)处理,使各指标处于同一数值量级,以便进行分析。

对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值 区间内。最常用的方法主要有以下两种。

  1. 线性函数归一化(Min-Max Scaling)。它对原始数据进行线性变换,使 结果映射到[0, 1]的范围,实现对原始数据的等比缩放。归一化公式如下,其中X为原始数据, 机器学习 机器学习 周志华 pdf_人工智能_33分别为数据最大值和最小值。

机器学习 机器学习 周志华 pdf_正例_34

  1. 零均值归一化(Z-Score Normalization)。它会将原始数据映射到均值为 0、标准差为1的分布上。具体来说,假设原始特征的均值为μ、标准差为σ,那么 归一化公式定义为

机器学习 机器学习 周志华 pdf_泛化_35

优点:训练数据归一化后,容易更快地通过梯度下降找 到最优解。

机器学习 机器学习 周志华 pdf_人工智能_36

当然,数据归一化并不是万能的。在实际应用中,通过梯度下降法求解的模 型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模 型。但对于决策树模型则并不适用。

3.2 类别型特征

类别型特征(Categorical Feature)主要是指性别(男、女)、血型(A、B、 AB、O)等只在有限选项内取值的特征。类别型特征原始输入通常是字符串形 式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持 向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。

  1. 序号编码
    序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为 低、中、高三档,并且存在“高>中>低”的排序关系。序号编码会按照大小关系对 类别型特征赋予一个数值ID,例如高表示为3、中表示为2、低表示为1,转换后依 然保留了大小关系。
  2. 独热编码(one-hot)
    独热编码通常用于处理类别间不具有大小关系的特征。例如血型,一共有4个 取值(A型血、B型血、AB型血、O型血),独热编码会把血型变成一个4维稀疏 向量,A型血表示为(1, 0, 0, 0),B型血表示为(0, 1, 0, 0),AB型表示为(0, 0, 1, 0),O型血表示为(0, 0, 0, 1)。对于类别取值较多的情况下使用独热编码。
  3. 二进制编码
    二进制编码主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后 将类别ID对应的二进制编码作为结果。以A、B、AB、O血型为例,下图是二进制编码的过程。A型血的ID为1,二进制表示为001;B型血的ID为2,二进制表示为 010;以此类推可以得到AB型血和O型血的二进制表示。

3.3 高维组合特征的处理

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。以广告点击预估问题为例,原始数据有语言和类型两种离散特征,第一张图是语言和类型对点击的影响。为了提高拟合能力,语言和类型可以组成二阶特征,第二张图是语言和类型的组合特征对点击的影响。

机器学习 机器学习 周志华 pdf_泛化_37

3.4 文本表示模型

文本是一类非常重要的非结构化数据,如何表示文本数据一直是机器学习领 域的一个重要研究方向。

  1. 词袋模型和N-gram模型
    最基础的文本表示模型是词袋模型。顾名思义,就是将每篇文章看成一袋子 词,并忽略每个词出现的顺序。具体地说,就是将整段文本以词为单位切分开, 然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对 应的权重则反映了这个词在原文章中的重要程度。常用TF-IDF来计算权重。
  2. 主题模型
    主题模型用于从文本库中发现有代表性的主题(得到每个主题上面词的分布 特性),并且能够计算出每篇文章的主题分布。
  3. 词嵌入与深度学习模型
    词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射成低维 空间(通常K=50~300维)上的一个稠密向量(Dense Vector)。K维空间的每一 维也可以看作一个隐含的主题,只不过不像主题模型中的主题那样直观。

3.5 其它特征工程

  1. 如果某个特征当中有缺失值,缺失比较少的话,可以使用该特征的平均值或者其它比较靠谱的数据进行填充;缺失比较多的话可以考虑删除该特征。
  2. 可以分析特征与结果的相关性,把相关性小的特征去掉。

3.6 特征工程脑图

机器学习 机器学习 周志华 pdf_人工智能_38

4. 优化方法

优化是应用数学的一个分支,也是机器学习的核心组成部分。实际上,机器 学习算法 = 模型表征 + 模型评估 + 优化算法。其中,优化算法所做的事情就是在 模型表征空间中找到模型评估指标最好的模型。不同的优化算法对应的模型表征 和评估指标不尽相同。

4.1 机器学习常用损失函数

损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数。损失函数越小,模型的鲁棒性就越好。常见的损失函数如下:

  1. 平方损失函数

    机器学习 机器学习 周志华 pdf_人工智能_39表示的是残差,整个式子表示的是残差的平方和,而我们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和。而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,公式如下:

机器学习 机器学习 周志华 pdf_人工智能_40

该损失函数一般使用在线性回归当中。

  1. log损失函数

公式中的 y=1 表示的是真实值为1时用第一个公式,真实 y=0 用第二个公式计算损失。为什么要加上log函数呢?可以试想一下,当真实样本为1是,但h=0概率,那么log0=∞,这就对模型最大的惩罚力度;当h=1时,那么log1=0,相当于没有惩罚,也就是没有损失,达到最优结果。所以数学家就想出了用log函数来表示损失函数。

最后按照梯度下降法一样,求解极小值点,得到想要的模型效果。该损失函数一般使用在逻辑回归中。

机器学习 机器学习 周志华 pdf_泛化_41

  1. Hinge损失函数

机器学习 机器学习 周志华 pdf_人工智能_42

SVM采用的就是Hinge Loss,用于“最大间隔(max-margin)”分类。

机器学习 机器学习 周志华 pdf_机器学习_43

4.2 凸优化

凸函数的严格定义为,函数L(·) 是凸函数当且仅当对定义域中的任意两点x,y和任意实数λ∈[0,1]总有:

机器学习 机器学习 周志华 pdf_人工智能_44

该不等式的一个直观解释是,凸函数曲面上任意两点连接而成的线段,其上的任 意一点都不会处于该函数曲面的下方,如下图所示所示。

机器学习 机器学习 周志华 pdf_数据集_45

凸优化问题的例子包括支持向量机、线性回归等 线性模型,非凸优化问题的例子包括低秩模型(如矩阵分解)、深度神经网络模型等。

4.3 正则化项

使用正则化项,也就是给loss function加上一个参数项,正则化项有L1正则化、L2正则化、ElasticNet。加入这个正则化项好处:

  • 控制参数幅度,不让模型“无法无天”。
  • 限制参数搜索空间
  • 解决欠拟合与过拟合的问题。


4.4 常见的几种最优化方法

可以辅助阅读知乎

1. 梯度下降法

梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。梯度下降法的搜索迭代示意图如下图所示:

机器学习 机器学习 周志华 pdf_正例_46

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

2. 牛顿法

牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数f (x)的泰勒级数的前面几项来寻找方程f (x) = 0的根。牛顿法最大的特点就在于它的收敛速度很快。具体步骤:

  • 首先,选择一个接近函数 f (x)零点的 x0,计算相应的 f (x0) 和切线斜率f’ (x0)(这里f ’ 表示函数 f 的导数)。
  • 然后我们计算穿过点(x0, f (x0)) 并且斜率为f '(x0)的直线和 x 轴的交点的x坐标,也就是求如下方程的解:
    机器学习 机器学习 周志华 pdf_正例_47
  • 我们将新求得的点的 x 坐标命名为x1,通常x1会比x0更接近方程f (x) = 0的解。因此我们现在可以利用x1开始下一轮迭代。

由于牛顿法是基于当前位置的切线来确定下一次的位置,所以牛顿法又被很形象地称为是"切线法"。牛顿法搜索动态示例图:

机器学习 机器学习 周志华 pdf_人工智能_48


从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。缺点:

  • 牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。
  • 在高维情况下这个矩阵非常大,计算和存储都是问题。
  • 在小批量的情况下,牛顿法对于二阶导数的估计噪声太大。
  • 目标函数非凸的时候,牛顿法容易受到鞍点或者最大值点的吸引。

3. 拟牛顿法

拟牛顿法是求解非线性优化问题最有效的方法之一,**本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。**拟牛顿法和梯度下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于梯度下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。

4. 共轭梯度法

共轭梯度法是介于梯度下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了梯度下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。 在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。

具体的实现步骤请参加wiki百科共轭梯度法。下图为共轭梯度法和梯度下降法搜索最优解的路径对比示意图:

机器学习 机器学习 周志华 pdf_机器学习_49

5. 降维方法

5.1 线性判别分析(LDA)

可结合另一篇博客学习。

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

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

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

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

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

机器学习 机器学习 周志华 pdf_泛化_50

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

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

优缺点

优缺点

简要说明

优点

1. 可以使用类别的先验知识;

2. 以标签、类别衡量差异性的有监督降维方式,相对于PCA的模糊性,其目的更明确,更能反映样本间的差异;

缺点

1. LDA不适合对非高斯分布样本进行降维;

2. LDA降维最多降到分类数k-1维;

3. LDA在样本分类信息依赖方差而不是均值时,降维效果不好;

4. LDA可能过度拟合数据。

5.2 主成分分析(PCA)

PCA结合博客学习。

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

优缺点

优缺点

简要说明

优点

1. 仅仅需要以方差衡量信息量,不受数据集以外的因素影响。 

2.各主成分之间正交,可消除原始数据成分间的相互影响的因素。

3. 计算方法简单,主要运算是特征值分解,易于实现。

缺点

1.主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。

2. 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

5.3 LDA vs PCA

降维的必要性

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

降维的目的

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

LDA和PCA区别

异同点

LDA

PCA

相同点

1. 两者均可以对数据进行降维;

2. 两者在降维时均使用了矩阵特征分解的思想;

3. 两者都假设数据符合高斯分布;

不同点

有监督的降维方法;

无监督的降维方法;

降维最多降到k-1维;

降维多少没有限制;

可以用于降维,还可以用于分类;

只用于降维;

选择分类性能最好的投影方向;

选择样本点投影具有最大方差的方向;

更明确,更能反映样本间差异;

目的较为模糊;

6. 超参数调优

为了进行超参数调优,我们一般会采用网格搜索、随机搜索、贝叶斯优化等 算法。在具体介绍算法之前,需要明确超参数搜索算法一般包括哪几个要素。一 是目标函数,即算法需要最大化/最小化的目标;二是搜索范围,一般通过上限和 下限来确定;三是算法的其他参数,如搜索步长。

  • 网格搜索,可能是最简单、应用最广泛的超参数搜索算法,它通过查找搜索范 围内的所有的点来确定最优值。如果采用较大的搜索范围以及较小的步长,网格 搜索有很大概率找到全局最优值。然而,这种搜索方案十分消耗计算资源和时间,特别是需要调优的超参数比较多的时候。因此,在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然 后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种操作方案可以降低 所需的时间和计算量,但由于目标函数一般是非凸的,所以很可能会错过全局最 优值。
  • 随机搜索,随机搜索的思想与网格搜索比较相似,只是不再测试上界和下界之间的所有 值,而是在搜索范围中随机选取样本点。它的理论依据是,如果样本点集足够 大,那么通过随机采样也能大概率地找到全局最优值,或其近似值。随机搜索一 般会比网格搜索要快一些,但是和网格搜索的快速版一样,它的结果也是没法保证的。
  • 贝叶斯优化算法,贝叶斯优化算法在寻找最优最值参数时,采用了与网格搜索、随机搜索完全 不同的方法。网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息; 而贝叶斯优化算法则充分利用了之前的信息。贝叶斯优化算法通过对目标函数形 状进行学习,找到使目标函数向全局最优值提升的参数。

7. 检验方法

7.1 KS检验

Kolmogorov-Smirnov检验是基于累计分布函数的,用于检验一个分布是否符合某种理论分布或比较两个经验分布是否有显著差异。

  • 单样本K-S检验是用来检验一个数据的观测经验分布是否符合已知的理论分布。
  • 两样本K-S检验由于对两样本的经验分布函数的位置和形状参数的差异都敏感,所以成为比较两样本的最有用且最常用的非参数方法之一。

检验统计量为:机器学习 机器学习 周志华 pdf_数据集_51

其中 机器学习 机器学习 周志华 pdf_机器学习_52)为观察序列值,机器学习 机器学习 周志华 pdf_正例_53为理论序列值或另一观察序列值。

7.2 T检验

T检验,也称student t检验,主要用户样本含量较小,总体标准差未知的正态分布。

t检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。

t检验分为单总体检验和双总体检验。

7.3 F检验

T检验和F检验的由来:为了确定从样本中的统计结果推论到总体时所犯错的概率。F检验又叫做联合假设检验,也称方差比率检验、方差齐性检验。是由英国统计学家Fisher提出。通过比较两组数据的方差,以确定他们的精密度是否有显著性差异。

7.4 Grubbs检验

一组测量数据中,如果个别数据偏离平均值很远,那么称这个数据为“可疑值”。用格拉布斯法判断,能将“可疑值”从测量数据中剔除。

7.5 卡方检验

卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。

  1. 提出原假设H0:总体X的分布函数F(x);
  2. 将总体x的取值范围分成k个互不相交的小区间A1-Ak;
  3. 把落入第i个区间Ai的样本的个数记做fi,成为组频数,f1+f2+f3+…+fk = n;
  4. 当H0为真时,根据假设的总体理论分布,可算出总体X的值落入第i个小区间Ai的概率pi,于是n*pi就是落入第i个小区间Ai的样本值的理论频数;
  5. 当H0为真时,n次试验中样本落入第i个小区间Ai的频率fi/n与概率pi应该很接近。基于这种思想,皮尔逊引入检测统计量:
    机器学习 机器学习 周志华 pdf_正例_54
    在H0假设成立的情况下服从自由度为k-1的卡方分布。

KS检验与卡方检验

相同点:都采用实际频数和期望频数只差进行检验

不同点:

  • 卡方检验主要用于类别数据,而KS检验主要用于有计量单位的连续和定量数据。
  • 卡方检验也可以用于定量数据,但必须先将数据分组才能获得实际的观测频数,而KS检验能直接对原始数据进行检验,所以它对数据的利用比较完整。