暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

机器学习

高級白 2021-08-16
892

什么是机器学习?

机器学习是人工智能的一个分支。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论

机器学习流程

  1. 理解实际问题,抽象为机器学习能处理的数学问题

  2. 获取数据

  3. 特征工程

  4. 模型训练、诊断与调优

  5. 模型验证、误差分析

  6. 模型融合

  7. 上线运行

机器学习分类

基本分类

机器学习算法可以分为三个大类 —— 监督学习、无监督学习和强化学习。

  • 监督学习:从给定的有标签的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。
  • 无监督学习:与监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有生成对抗网络(GAN)、聚类。
  • 强化学习:机器为了达成目标,随着环境的变动,而逐步调整其行为,并评估每一个行动之后所到的回馈是正向的或负向的。
  • 半监督学习
  • 主动学习

按模型分类

概率模型与非概率模型

监督学习中,概率模型取条件概率分布形式,非概率模型取函数形式为输入,为输出。

生成模型:由数据学习联合概率密度分布,然后求出条件概率分布作为预测的模型,即生成模型:(贝叶斯概率)。基本思想是首先建立样本的联合概率概率密度模型,然后再得到后验概率,再利用它进行分类。

判别模型:由数据直接学习决策函数或者条件概率分布作为预测的模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。

举例:

判别式模型举例:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。

生成式模型举例:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型。然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。

生成模型:朴素贝叶斯、隐马尔科夫模型、高斯混合模型等。

判别模型:感知机、决策树、逻辑斯蒂回归、支持向量机、kNN、AdaBoost、条件随机场、神经网络。

线性模型与非线性模型

如果函数是线性函数,则模型是线性模型,否则称模型为非线性模型。

参数化模型与非参数化模型

参数化模型假设模型参数的维度固定,模型可以由有限维参数完全刻画;非参数模型假设模型参数的维度不固定或者无穷大,随着训练数据量的增加而不断增加。

模型评估与模型选择

分类模型常用评估方法:

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

回归模型常用评估方法:

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

偏差和方差

偏差: 描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据。

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

欠拟合与过拟合

模型欠拟合:在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大;
模型过拟合:在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。
模型正常:在训练集以及测试集上,同时具有相对较低的偏差以及方差。

如何解决欠拟合:

  1. 添加其他特征项。组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段。
  2. 添加多项式特征。例如将线性模型添加二次项或三次项使模型泛化能力更强。
  3. 可以增加模型的复杂程度。
  4. 减小正则化系数。正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

如何解决过拟合:

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

交叉验证

样本充足情况下,模型选择的简单方法有随机将数据集分为三部分,即训练集(训练模型)、验证集(模型的选择)和测试集(学习方法的评估)。
当样本数据不充足,可采用交叉验证的方法。即将给定的数据进行切分,将切分的数据集组合为训练集和测试集,在此基础上反复训练、测试以及模型选择。常用的有:留一交叉验证、K折交叉验证。

K折交叉验证

  1. 将含有N个样本的数据集,分成K份,每份含有N/K个样本。选择其中1份作为测试集,另外K-1份作为训练集,测试集就有K种情况。
  2. 在每种情况中,用训练集训练模型,用测试集测试模型,计算模型的泛化误差。
  3. 交叉验证重复K次,每份验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测,得到模型最终的泛化误差。
  4. 将K种情况下,模型的泛化误差取均值,得到模型最终的泛化误差。

查准率(精确率) 查全率(召回率)

在样本不均衡的情况下,假设测试集有100个样本,99个反例,只有1个正例。如果模型对任意一个样本都预测是反例,那么模型的Accuracy是 正确的个数/总个数 = 99/100 = 99%。
在垃圾邮件过滤中,我们希望重要的邮件永远不要被误判为垃圾邮件。在癌症检测中,宁愿误判也不漏判。在这种情况下,仅仅使用分类错误率来度量是不充分的,这样的度量错误掩盖了样本如何被错分的事实。所以,在分类中,当某个类别的重要性高于其他类别时,可以使用查准率(Precison)和查全率(Recall)多个比分类错误率更好的新指标。

混淆矩阵


(1)  真阳性(True Positive,TP):预测为真,且结果为真。
(2)  假阳性(False Positive,FP):预测为真,且结果为假。
(3)  真阴性(True Negative,TN):预测为假,且结果为假。
(4)  假阴性(False Negative,FN):预测为假,且结果为真。

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

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

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

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

查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
如果你的模型很贪婪,想要覆盖更多的sample,那么它就更有可能犯错。在这种情况下,你会有很高的recall,但是较低的precision。如果你的模型很保守,只对它很sure的sample作出预测,那么你的precision会很高,但是recall会相对低。

F1 Score是一个综合考量查准率和查全率的度量,其中P和R分别为 Precision 和 Recall。

ROC与AUC

ROC全称是“受试者工作特征”(Receiver Operating Characteristic)。ROC曲线的面积就是AUC(Area Under Curve)。AUC用于衡量“二分类问题”机器学习算法性能(泛化能力)。
多数学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值则分为正类,否则为反类。在不同任务中,可以根据任务需求采用不同的截断点,如更重视“查准率”,则可选择排序中靠前的位置进行截断;若更重视“查全率”,则可选择靠后的位置进行截断。
ROC曲线通过不断移动分类器的“截断点”来生成曲线上的一组关键点。

ROC曲线的横坐标为False Positive Rate(FPR),纵坐标为True Positive Rate(TPR)。其中

点(0,1),即FPR=0, TPR=1,这意味着FN(False Negative)=0,并且FP(False Positive)=0。意味着这是一个完美的分类器,它将所有的样本都正确分类。ROC曲线越接近左上角,该分类器的性能越好。
ROC曲线所覆盖的面积称为AUC(Area Under Curve),可以更直观的判断学习器的性能,AUC越大则性能越好。
ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。ROC曲线能够尽量降低不同测试集带来的干扰,更加客观的衡量模型模型本身的性能。

类别不均衡的解决

扩大数据集、对大类数据欠采样、对小类数据过采样、使用新评价指标、选择新算法、数据代价加权、将问题细化分析。

标准化和归一化

归一化:就是将训练集中某一列数值特征(假设是第i列)的值缩放到0和1之间

标准化:就是将训练集中某一列数值特征(假设是第i列)的值缩放成均值为0,方差为1的状态

对于线性model来说,数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。

前者是没有经过归一化的,在梯度下降的过程中,走的路径更加的曲折,而第二个图明显路径更加平缓,收敛速度更快。

降维

机器学习中,数据通常被表示成向量形式以输入模型进行训练。对高维度向量进行处理和分析的时候,会极大的消耗系统资源,甚至产生维度灾难。因此,用一个低维度的向量表示原始高维度的特征就显得尤为重要。
在很多时候,人们观测或收集到的数据样本虽然是高维的,但是与学习任务密切相关的也许仅是某个低维分布,即高维空间中的一个低维“嵌入”。

常见的降维方法有主成分分析、线性判别分析、等距映射、局部线性嵌入、拉普拉斯特征映射、局部保留投影等。

线性判别分析(LDA)

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

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

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

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

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

左图和右图是两种不同的投影方式。
左图思路:让不同类别的平均点距离最远的投影方式。
右图思路:让同类别的数据挨得最近的投影方式。
从上图直观看出,右图红色数据和蓝色数据在各自的区域来说相对集中,根据数据分布直方图也可看出,所以右图的投影效果好于左图,左图中间直方图部分有明显交集。
以上例子是基于数据是二维的,分类后的投影是一条直线。如果原始数据是多维的,则投影后的分类面是一低维的超平面。

LDA算法降维流程如下:

输入:数据集 ,其中样本 是n维向量,,降维后的目标维度

输出:降维后的数据集

步骤:

  1. 计算类内散度矩阵
  2. 计算类间散度矩阵
  3. 计算矩阵
  4. 计算矩阵 的最大的 d 个特征值。
  5. 计算 d 个特征值对应的 d 个特征向量,记投影矩阵为 W 。
  6. 转化样本集的每个样本,得到新样本
  7. 输出新样本集

主成分分析(PCA)

PCA在于找到数据的主成分,并利用这些主成分表征原始数据,从而达到降维的目的。

  1. PCA就是将高维的数据通过线性变换投影到低维空间上去。

  2. 投影思想:找出最能够代表原始数据的投影方法。被PCA降掉的那些维度只能是那些噪声或是冗余的数据。

  3. 去冗余:去除可以被其他向量代表的线性相关向量,这部分信息量是多余的。

  4. 去噪声,去除较小特征值对应的特征向量,特征值的大小反映了变换后在特征向量方向上变换的幅度,幅度越大,说明这个方向上的元素差异也越大,要保留。

  5. 对角化矩阵,寻找极大线性无关组,保留较大的特征值,去除较小特征值,组成一个投影矩阵,对原始样本矩阵进行投影,得到降维后的新样本矩阵。

  6. 完成PCA的关键是——协方差矩阵。协方差矩阵,能同时表现不同维度间的相关性以及各个维度上的方差。协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。

  7. 之所以对角化,因为对角化之后非对角上的元素都是0,达到去噪声的目的。对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。所以我们只取那些含有较大能量(特征值)的维度,其余的就舍掉,即去冗余。

假设数据集是m个n维,。如果,需要降维到,现在想找到某一维度方向代表这两个维度的数据。下图有两个向量方向,但是哪个向量才是我们所想要的,可以更好代表原始数据集的呢?

从图可看出,好,为什么呢?有以下两个主要评价指标:

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

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

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

PCA算法流程:

输入: 维样本集 ,目标降维的维数

输出:降维后的新样本集

步骤:

  1. 对所有的样本进行中心化,
  2. 计算样本的协方差矩阵
  3. 对协方差矩阵 进行特征值分解。
  4. 取出最大的 个特征值对应的特征向量
  5. 标准化特征向量,得到特征向量矩阵
  6. 转化样本集中的每个样本
  7. 得到输出矩阵 :在降维时,有时不明确目标维数,而是指定降维到的主成分比重阈值 。假设 个特征值为 ,则 可从 $\sum^{n'}{i=1} \lambda_i \geqslant k \times \sum^n{i=1} \lambda_i $ 得到。

LDA和PCA的区别

异同点LDAPCA
相同点1. 两者均可以对数据进行降维;
2. 两者在降维时均使用了矩阵特征分解的思想;
3. 两者都假设数据符合高斯分布;

不同点有监督的降维方法;无监督的降维方法;

降维最多降到k-1维;降维多少没有限制;

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

选择分类性能最好的投影方向;选择样本点投影具有最大方差的方向;

更明确,更能反映样本间差异;目的较为模糊;

降维的必要性和目的

降维的必要性

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

降维的目的

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

KNN

KNN(K-Nearest Neighbors,邻近算法):给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的个实例,这个实例的多数属于某个类,就把该输入实例分为这个类。
对于分类问题,离样本最近的k个邻居中占多数的类别作为该样本的类别,如果k=1,则选取最近邻居的类别作为该样本的类别。对于回归问题,样本的预测值是最近的k个邻居的平均值。

KNN的计算步骤如下:

1)计算测试样本与训练集中所有(或大部分)样本的距离,该距离可以是欧氏距离、余弦距离等,较常用的是欧氏距离。

2)找到步骤1中距离最短的k个样本,作为预测样本的邻居。

3)对于分类问题,通过投票机制选出k个邻居中最多的类别作为预测样本的预测值。对于回归问题,则采用k个邻居的平均值。

KNN的关键因素包括度量距离、k值选择、决策规则和归一化:

1. 度量距离

KNN的第一个关键因素是度量距离,因为KNN算法是基于特征相似性的,特征相似性越高,样本属于同一类别的可能性越大,而评估特征相似性的指标即度量距离。常用的度量距离如下。

  • 欧氏距离:多维空间中各点之间的绝对距离。

  • 明可夫斯基距离:也称明氏距离,是欧氏距离的一般形式,当p=2时即为欧氏距离。

  • 曼哈顿距离:当明氏距离中的p=1时即为曼哈顿距离。

  • 余弦相似度:向量空间中两个向量的余弦值。

2. k值选择

K值的选择是影响KNN模型预测结果的另一个关键因素。K值较小的话,会选取比较小的邻域内的样本与输入样本进行比较,降低了近似误差,即只有在邻域规模和输入样本特别相似的样本才会对预测结果起作用,但是较小的K值会增加估计误差,预测结果对非常近似的点异常敏感,如果这些点是噪声点,则预测结果会非常不准确。相反,如果K值较大,则会降低估计误差,增加近似误差。K值一般通过交叉检验来确定。

3. 决策规则

决策规则主要应用于分类问题,目前KNN采取的决策规则多为投票表决,多数票所属的类别作为预测样本的预测类别。

4. 归一化

如果KNN中某一特征值域非常大,那么在做距离计算时,该特征会占据很大比重,这可能与实际情况并不相符,此时需要对该特征做归一化。归一化就是把需要处理的数据(通过某种算法)限制在一定范围内,一般为0~1。

线性回归

回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。通常使用曲线/线来拟合数据点,目标是使曲线到数据点的距离差异最小。

线性回归是回归问题中的一种,线性回归假设目标值与特征之间线性相关,即满足一个多元一次方程。通过构建损失函数,来求解损失函数最小时的参数

统计学中,线性回归是一种线性方法,用于对因变量y和一个或多个自变量之间的线性关系进行建模。当只有一个自变量时,这种回归分析称为一元回归分析;当有两个或两个以上的自变量时,则称这种回归分析为多元回归分析。

线性回归主要解决回归问题,即对连续型的数据进行预测,比如预测房价、销售量等。线性回归的目标是,对于输入向量,预测其目标值。例如,预测房屋价格,以y表示要预测的房屋价格,以向量中的元素表示房屋的特征(如房屋面积、卧室数量等)。已知的很多房屋数据中,用表示第个房屋的特征,用表示其房屋价格。

1.  线性回归公式

为预测值,自变量和因变量是已知的,目标是通过已知数据点,求解线性模型中两个参数。

2. 损失函数

求解最佳参数,需要一个标准来对结果进行衡量,为此我们需要定量化一个目标函数式,使得计算机可以在求解过程中不断地优化。

针对任何模型求解问题,都是最终都是可以得到一组预测值,对比已有的真实值 ,数据行数为 ,可以将损失函数定义如下:

即预测值与真实值之间的平均的平方距离,一般称MAE均方误差。将之前函数式带入损失函数,并将需要求解的参数看做目标函数的自变量,可得:

求解最小化的值,求解方法有最小二乘法和梯度下降法。

梯度下降核心内容是对自变量进行不断的更新(针对w和b求偏导),使得目标函数不断逼近最小值的过程:

逻辑回归

逻辑回归虽然被称为回归,但其实际上是分类模型,并常用于二分类。逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 服从伯努利分布,而线性回归假设因变量 服从高斯分布。因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。

Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。逻辑回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。

线性回归:

逻辑回归:,其中,

假设函数(Hypothesis function)

Sigmoid函数:

  1. 最简单的,可导的,0-1阶跃函数
  2. Sigmoid函数连续,单调递增
  3. 对Sigmoid函数求导非常的方便

函数曲线

Sigmoid函数取值在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1。

逻辑回归的假设函数:

所以:

其中为输入,为所要求取的参数。

为给定的条件下的概率。

就相当于是1类和0类的决策边界:

,则y>0.5;若,则,即y为1类;

,则y<0.5;若,则,即y为0类;

这个时候就能看出区别,在线性回归中为预测值的拟合函数;而在逻辑回归中为决策边界。

因此逻辑回归的思路是,先拟合决策边界(不局限于线性,还可以是多项式),再建立这个边界与分类的概率联系,从而得到了二分类情况下的概率。

决策边界(Decision Boundary),也称为决策面,是用于在N维空间,将不同类别样本分开的平面或曲面。(决策边界是假设函数的属性,由参数决定,而不是由数据集的特征决定。)

代价函数(Cost Function)

在逻辑回归中,最常用的是代价函数是交叉熵(Cross Entropy),即:

  • :训练样本的个数;

  • :用参数预测出来的值;

  • :原训练样本中的 值,也就是标准答案;

  • 上角标:第个样本

在统计学中,常常使用极大似然估计法来求解,即找到一组参数,使得在这组参数下,数据的似然度(概率)最大。

设:

似然函数:

对等式两边同取对数,写成对数似然函数:

取整个数据集上的平均对数似然损失,可以得到:

即在逻辑回归模型中,最大化似然函数最小化损失函数实际上是等价的。

梯度下降求解

梯度下降中的梯度指的是代价函数对各个参数的偏导数,偏导数的方向决定了在学习过程中参数下降的方向,学习率(通常用α表示)决定了每步变化的步长,有了导数和学习率就可以使用梯度下降算法(Gradient Descent Algorithm)更新参数了, 即求解使最小的参数.

支持向量机

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

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

SVM 适合中小型数据样本、非线性、高维的分类问题。

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

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

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

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

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

线性可区分和线性不可区分

能够用一条直线对样本点进行分类的属于线性可区分(linear separable),否则为线性不可区分(linear inseparable)。

解决方案:

  • 利用一个非线性的映射把原数据集中的向量点转化到一个更高维度的空间中(比如下图将二维空间中的点映射到三维空间)
  • 在这个高维度的空间中找一个线性的超平面来根据线性可分的情况处理

对于输入空间中的非线性分类问题,可以通过非线性变换将它转化为某个维特征空间中的线性分类问题,在高维特征空间中学习线性支持向量机。由于在线性支持向量机学习的对偶问题里,目标函数和分类决策函数都只涉及实例和实例之间的内积,所以不需要显式地指定非线性变换而是用核函数替换当中的内积。核函数表示,通过一个非线性转换后的两个实例间的内积。

核函数

核函数表达式备注
Linear Kernel线性核

Polynomial Kernel多项式核
为多项式的次数
Exponential Kernel指数核

Gaussian Kernel高斯核
为高斯核的带宽,,
Laplacian Kernel拉普拉斯核

ANOVA Kernel

Sigmoid Kernel
为双曲正切函数,

贝叶斯分类器

极大似然估计

例:有两个外形完全相同的箱子,1号箱有99只白球,1只黑球;2号箱有1只白球,99只黑球。在一次实验中,取出的是黑球,请问是从哪个箱子中取出的?

一般的根据经验想法,会猜测这只黑球最像是从2号箱取出,此时描述的“最像”就有“最大似然”的意思,这种想法常称为“最大似然原理”。

总结起来,最大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。

极大似然估计是建立在极大似然原理的基础上的一个统计方法。极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。

贝叶斯公式

可理解为:

朴素贝叶斯推断,是在贝叶斯推断的基础上,对条件概率分布做了条件独立性的假设。因此可得朴素贝叶斯分类器的表达式。

朴素贝叶斯的思想基础:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

例子

编号色泽根蒂敲声纹理脐部触感密度含糖率好瓜
1青绿蜷缩浊响清晰凹陷硬滑0.6970.460
2乌黑蜷缩沉闷清晰凹陷硬滑0.7740.376
3乌黑蜷缩浊响清晰凹陷硬滑0.6340.264
4青绿蜷缩沉闷清晰凹陷硬滑0.6080.318
5浅白蜷缩浊响清晰凹陷硬滑0.5560.215
6青绿稍蜷浊响清晰稍凹软粘0.4030.237
7乌黑稍蜷浊响稍糊稍凹软粘0.4810.149
8乌黑稍蜷浊响清晰稍凹硬滑0.4370.211
9乌黑稍蜷沉闷稍糊稍凹硬滑0.6660.091
10青绿硬挺清脆清晰平坦软粘0.2430.267
11浅白硬挺清脆模糊平坦硬滑0.2450.057
12浅白蜷缩浊响模糊平坦软粘0.3430.099
13青绿稍蜷浊响稍糊凹陷硬滑0.6390.161
14浅白稍蜷沉闷稍糊凹陷硬滑0.6570.198
15乌黑稍蜷浊响清晰稍凹软粘0.3600.370
16浅白蜷缩浊响模糊平坦硬滑0.5930.042
17青绿蜷缩沉闷稍糊稍凹硬滑0.7190.103

对下面的测试例“测1”进行 分类:

编号色泽根蒂敲声纹理脐部触感密度含糖率好瓜
测1青绿蜷缩浊响清晰凹陷硬滑0.6970.460

首先,估计类先验概率,有

然后,为每个属性估计条件概率(这里,对于连续属性,假定它们服从正态分布)

绿绿
绿绿

于是有

由于,因此,朴素贝叶斯分类器将测试样本“测1”判别为“好瓜”。

决策树

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

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

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

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

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

假如有一批人的特征数据,特征包括头发长度、体重、身高。现在需要通过这些特征判定这些人的性别,此时便可以采用决策树:

如果一个人的头发长度小于12cm并且体重大于55kg,那这个人有80%的概率是一名男性,有20%的概率是一名女性。

不同的决策树算法选择不同的方法作特征选择,常用的决策树算法有ID3、C4.5、CART等。

1. ID3

该算法根据最大信息增益的原则对数据集进行划分。从根节点开始,遍历所有未被使用的特征,计算特征的信息增益,选取信息增益最大的特征作为节点分裂的特征,然后为该特征的每一个可能取值分别生成子节点,再对子节点递归调用上述方法,直到所有特征的信息增益均小于某阈值或没有特征可以选择。最终,对于每个叶子节点,将其中样本数量最多的类作为该节点的类标签。

信息熵,简称熵(entropy),是信息的期望值,表示随机变量不确定性的度量:

其中,为事件i发生的概率。熵只依赖于随机变量的分布,而不依赖其取值,熵越大,表示随机变量的不确定性越大。

假设样本集合为表示集合中样本的数量,样本集合中共有个分类,每个分类的概率为,其中表示属于第类的样本数量,则该样本集合的熵为:

当通过某一特征对样本集合进行划分时,可通过划分前后熵的差值来衡量该特征对样本集合划分的好坏,差值越大表示不确定性降低越多,则信息增益越大。假设划分前样本集合的熵为,按特征A划分后样本集合的熵为,则信息增益为:

信息增益表示用特征A对样本集合进行划分时不确定性的减少程度。换句话说,按照特征A对样本进行分类,分类后数据的确定性是否比之前更高。通过计算信息增益,选择合适的特征作为决策树节点分裂的依据。

2. C4.5

ID3算法存在一个问题,就是偏向于多值属性,例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图克服这个偏倚。

信息增益比,是在信息增益的基础上乘以一个调节参数,特征的取值个数越多,该参数越小,反之则越大。信息增益比定义如下:

表示数据集以特征作为随机变量的熵,其中为特征的取值个数。定义如下:

3. CART

CART采用的是二分递归分裂的思想,因此生成的决策树均为二叉树。CART包含两种类型的决策树:分类树和回归树。分类树的预测值是离散的,通常会将叶子节点中多数样本的类别作为该节点的预测类别。回归树的预测值是连续的,通常会将叶子节点中多数样本的平均值作为该节点的预测值。分类树采用基尼系数进行特征选择,而回归树采用均方误差。

数据集的纯度可用基尼值来度量:

越小,则数据集的纯度越高。

决策树剪枝

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

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

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

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

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

集成学习

集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,集成学习就是组合多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。

集成学习的一般结构为:先产生一组“个体学习器”,再用某种策略将它们结合起来。集成中只包含同种类型的个体学习器,称为同质,当中的个体学习器亦称为“基学习器”,相应的算法称为“基学习算法”。集成中包含不同类型的个体学习器,称为“异质”,当中的个体学习器称为“组建学习器”。

一般来说集成学习可以分为三大类:

  • 用于减少方差的bagging
  • 用于减少偏差的boosting
  • 用于提升预测结果的stacking

集成学习方法也可以归为如下两大类:

  • 串行集成方法,这种方法串行地生成基础模型(如AdaBoost)。串行集成的基本动机是利用基础模型之间的依赖。通过给错分样本一个较大的权重来提升性能。
  • 并行集成方法,这种方法并行地生成基础模型(如Random Forest)。并行集成的基本动机是利用基础模型的独立性,因为通过平均能够较大地降低误差。

Bagging

算法流程

  1. 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
  2. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
  3. 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

大部分情况下,经过 Bagging 得到的结果**方差(Variance)**更小。

自助法(Booststraping)

在含有 m 个样本的数据集中,每次随机挑选一个样本, 将其作为训练样本,再将此样本放回到数据集中,这样有放回地抽样 m 次,生成一个与原数据集大小相同的数据集,这个新数据集就是训练集。这样有些样本可能在训练集中出现多次,有些则可能从未出现。原数据集中大概有 36.8% 的样本不会出现在新数据集中。因此,我们把这些未出现在新数据集中的样本作为验证集。把前面的步骤重复进行多次,这样就可以训练出多个模型并得到它们的验证误差,然后取平均值,作为该模型的验证误差。

随机森林(Random Forest)

随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。

Stacking

Stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的Stacking模型。

Boosting

算法流程

先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此反复进行,直至基学习器数目达到事先指定的值,最终将这个基学习器进行加权结合。

大部分情况下,经过 Boosting 得到的结果**偏差(Bias)**更小。

AdaBoost

AdaBoost,是英文”Adaptive Boosting”(自适应增强)的缩写。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

  1. 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
  2. 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
  3. 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

GBDT(Gradient Boost Decision Tree)

Gradient Boosting是一种Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向。

与AdaBoost不同,GBDT每一次的计算是都为了减少上一次的残差,进而在残差减少(负梯度)的方向上建立一个新的模型。

GBDT以CART回归树作为基学习器,通过迭代,每次通过拟合负梯度来构建新的CART回归树,通过构建多颗CART树来降低模型的偏差,实现更好的分类性能。GBDT的核心思想是在每次创建新的CART回归树时,通过拟合当前模型损失函数的负梯度,来最小化损失函数。

举一个非常简单的例子,比如我今年30岁了,但计算机或者模型GBDT并不知道我今年多少岁,那GBDT咋办呢?

  • 它会在第一个弱分类器(或第一棵树中)随便用一个年龄比如20岁来拟合,然后发现误差有10岁;
  • 接下来在第二棵树中,用6岁去拟合剩下的损失,发现差距还有4岁;
  • 接着在第三棵树中用3岁拟合剩下的差距,发现差距只有1岁了;
  • 最后在第四课树中用1岁拟合剩下的残差,完美。
  • 最终,四棵树的结论加起来,就是真实年龄30岁(实际工程中,gbdt是计算负梯度,用负梯度近似残差)。

XGBoost

Kaggle比赛大杀器

陈天奇PPT:

预测一家人对电子游戏的喜好程度,考虑到年轻和年老相比,年轻更可能喜欢电子游戏,以及男性和女性相比,男性更喜欢电子游戏,故先根据年龄大小区分小孩和大人,然后再通过性别区分开是男是女,逐一给各人在电子游戏喜好程度上打分

训练出了2棵树tree1和tree2,类似之前GBDT的原理,两棵树的结论累加起来便是最终的结论,所以小孩的预测分数就是两棵树中小孩所落到的结点的分数相加:2 + 0.9 = 2.9。爷爷的预测分数同理:-1 + (-0.9)= -1.9。

XGBoost与GBDT比较大的不同就是目标函数的定义。

目标函数

XGBoost是由个基模型组成的一个加法运算式:

其中为第个基模型,为第个样本的预测值。

损失函数可由预测值与真实值进行表示:

其中为样本数量。

我们知道模型的预测精度由模型的偏差和方差共同决定,损失函数代表了模型的偏差,想要方差小则需要简单的模型,所以目标函数由模型的损失函数与抑制模型复杂度的正则项组成,所以有:

为模型的正则项。

Boosting 模型是前向加法,以第步的模型为例,模型对第个样本的预测为:

其中由第步的模型给出的预测值,是已知常数,是我们这次需要加入的新模型的预测值,此时,目标函数可以写成:

求此时最优化目标函数,就相当于求解

根据泰勒公式我们把函数在点处进行泰勒的二阶展开,可得:

我们把视为视为,故可将目标函数写为:

其中为损失函数的一阶导,为损失函数的二阶导,这里的导是对求导。

以平方损失函数为例:

则:

由于在第步时其实是一个已知的值,所以是一个常数,其对函数的优化不会产生影响,因此目标函数可以写成:

所以我们只需要求出每一步损失函数的一阶导和二阶导的值(由于前一步的是已知的,所以这两个值就是常数),然后最优化目标函数,就可以得到每一步的,最后根据加法模型得到一个整体模型。

最优切分点划分算法

XGBoost的核心算法:

  1. 不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数f(x),去拟合上次预测的残差。
  2. 当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数
  3. 最后只需要将每棵树对应的分数加起来就是该样本的预测值。

在决策树的生长过程中,一个非常关键的问题是如何找到叶子的节点的最优切分点,Xgboost 支持两种分裂节点的方法——贪心算法和近似算法。

1)贪心算法

  1. 从深度为0的树开始,对每个叶节点枚举所有的可用特征;

  2. 针对每个特征,把属于该节点的训练样本根据该特征值进行升序排列,通过线性扫描的方式来决定该特征的最佳分裂点,并记录该特征的分裂收益;

  3. 选择收益最大的特征作为分裂特征,用该特征的最佳分裂点作为分裂位置,在该节点上分裂出左右两个新的叶节点,并为每个新节点关联对应的样本集;

  4. 回到第 1 步,递归执行到满足特定条件为止。

2)近似算法

贪婪算法可以的到最优解,但当数据量太大时则无法读入内存进行计算,近似算法主要针对贪婪算法这一缺点给出了近似最优解。

对于每个特征,只考察分位点可以减少计算复杂度。

该算法会首先根据特征分布的分位数提出候选划分点,然后将连续型特征映射到由这些候选点划分的桶中,然后聚合统计信息找到所有区间的最佳分裂点。

在提出候选切分点时有两种策略:

  • Global:学习每棵树前就提出候选切分点,并在每次分裂时都采用这种分割;
  • Local:每次分裂前将重新提出候选切分点。

直观上来看,Local 策略需要更多的计算步骤,而 Global 策略因为节点没有划分所以需要更多的候选点。

优缺点

优点

  1. 精度更高: GBDT 只用到一阶泰勒展开,而 XGBoost  对损失函数进行了二阶泰勒展开。XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数;
  2. 灵活性更强: GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART 还支持线性分类器,(使用线性分类器的 XGBoost 相当于带 L1 和 L2 正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题))。此外,XGBoost 工具支持自定义损失函数,只需函数支持一阶和二阶求导;
  3. 正则化: XGBoost 在目标函数中加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、叶子节点权重的 L2 范式。正则项降低了模型的方差,使学习出来的模型更加简单,有助于防止过拟合;
  4. Shrinkage(缩减): 相当于学习速率。XGBoost 在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间;
  5. 列抽样: XGBoost 借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算;
  6. 缺失值处理: XGBoost 采用的稀疏感知算法极大的加快了节点分裂的速度;
  7. 可以并行化操作: 块结构可以很好的支持并行计算。

缺点

  1. 虽然利用预排序和近似算法可以降低寻找最佳分裂点的计算量,但在节点分裂过程中仍需要遍历数据集;
  2. 预排序过程的空间复杂度过高,不仅需要存储特征值,还需要存储特征对应样本的梯度统计值的索引,相当于消耗了两倍的内存。

优化算法

损失函数

损失函数(Loss Function)又叫做误差函数,用来衡量算法的运行情况,估量模型的预测值与真实值的不一致程度,是一个非负实值函数,通常使用

来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。


损失函数可分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是在经验风险损失函数上加上正则项。

常用的损失函数:

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

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

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

(3)平方损失函数

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

(4)对数损失函数

其中, Y 为输出变量, X为输入变量, L 为损失函数. N为输入样本量, M为可能的类别数, 是一个二值指标, 表示类别 j 是否是输入实例 xi 的真实类别. 为模型或分类器预测输入实例 xi 属于类别 j 的概率。

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

(6)指数损失函数指数损失函数的标准形式为:

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

(7)Hinge损失函数Hinge损失函数的标准形式如下:

统一的形式:

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

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

上式相似于下式

其中是Hinge损失函数,可看做为正则化项。

梯度下降

梯度下降是机器学习中常见优化算法之一,梯度下降法有以下几个作用:

(1)梯度下降是迭代法的一种,可以用于求解最小二乘问题。

(2)在求解机器学习算法的模型参数,即无约束优化问题时,主要有梯度下降法(Gradient Descent)和最小二乘法。

(3)在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。

(4)如果我们需要求解损失函数的最大值,可通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换。

(5)在机器学习中,梯度下降法主要有随机梯度下降法和批量梯度下降法。

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

算法步骤:

(1)确定优化模型的假设函数及损失函数。 举例,对于线性回归,假设函数为:

其中,分别为模型参数、每个样本的特征值。对于假设函数,损失函数为:

(2)相关参数初始化。 主要初始化、算法迭代步长、终止距离。初始化时可以根据经验初始化,即初始化为0,步长初始化为1。当前步长记为。当然,也可随机初始化。

(3)迭代计算。

1)计算当前位置时损失函数的梯度,对,其梯度表示为:

2)计算当前位置下降的距离。

3)判断是否终止。 确定是否所有梯度下降的距离都小于终止距离,如果都小于,则算法终止,当然的值即为最终结果,否则进入下一步。 4)更新所有的,更新后的表达式为:

5)令上式,更新完毕后转入1)。 由此,可看出,当前位置的梯度方向由所有样本决定,上式中 的目的是为了便于理解。

不同的梯度下降法:

正则化

正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束、调整或缩小。也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险。

一般目标函数:

为误差函数,为正则化项。

其中,误差/损失函数鼓励我们的模型尽量去拟合训练数据,使得最后的模型会有比较少的 bias。而正则化项则鼓励更加简单的模型。因为当模型简单之后,有限数据拟合出来结果的随机性比较小,不容易过拟合,使得最后模型的预测更加稳定。

常用的正则化项有两个:L1正则化(L1范数)、L2正则化(L2范数)

  • L1正则化是指权值向量中各个元素的绝对值之和,通常表示为;

  • L2正则化是指权值向量中各个元素的平方和然后再求平方根,通常表示为

L1和L2正则化的作用:

  • L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择;
  • L2正则化可以防止模型过拟合;一定程度上,L1也可以防止过拟合。

稀疏模型和特征选择:

稀疏矩阵指的是很多元素为0,只有少数元素是非零值的矩阵,即得到的线性回归模型的大部分系数都是0。通常机器学习中特征数量很多,例如文本处理时,如果将一个词组(term)作为一个特征,那么特征数量会达到上万个(bigram)。在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。

直观理解

无监督学习

无监督学习是一类用于在数据中寻找模式的机器学习技术。无监督学习算法使用的输入数据都是没有标注过的,这意味着数据只给出了输入变量(自变量 X)而没有给出相应的输出变量(因变量)。

非监督学习主要包含两大类学习方法:数据聚类和特征变量关联。其中,聚类算法往往是通过多次迭代来找到数据的最优分割,而特征变量关联则是利用各种相关性分析方法来找到变量之间的关系。

一个常见的无监督学习是数据聚类。在人工神经网络中,生成对抗网络(GAN)、自组织映射(SOM)和适应性共振理论(ART)则是最常用的非监督式学习。

K均值聚类

K均值聚类就是制定分组的数量为K,自动进行分组。

K 均值聚类的步骤如下:

  1. 定义 K 个重心。一开始这些重心是随机的(也有一些更加有效的用于初始化重心的算法)
  2. 寻找最近的重心并且更新聚类分配。将每个数据点都分配给这 K 个聚类中的一个。每个数据点都被分配给离它们最近的重心的聚类。这里的「接近程度」的度量是一个超参数——通常是欧几里得距离(Euclidean distance)。
  3. 将重心移动到它们的聚类的中心。每个聚类的重心的新位置是通过计算该聚类中所有数据点的平均位置得到的。

重复第 2 和 3 步,直到每次迭代时重心的位置不再显著变化(即直到该算法收敛)。

高斯混合模型

高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法,该方法使用了高斯分布作为参数模型,并使用了期望最大(Expectation Maximization,简称EM)算法进行训练。

高斯分布(Gaussian distribution)有时也被称为正态分布(normal distribution),是一种在自然界大量的存在的、最为常见的分布形式。

混合模型是一个可以用来表示在总体分布(distribution)中含有 K 个子分布的概率模型,换句话说,混合模型表示了观测数据在总体中的概率分布,它是一个由 K 个子分布组成的混合分布。混合模型不要求观测数据提供关于子分布的信息,来计算观测数据在总体分布中的概率。

上图左面用单一高斯分布去描述,显然没有右图用两个高斯分布去描述的效果好。

EM算法( 最大期望算法)是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量。

最大期望算法经过两个步骤交替进行计算:

  • 第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;

  • 第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。

实战

泰坦尼克号乘客获救预测

比赛

Kaggle

Kaggle是一个数据建模和数据分析竞赛平台。企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛以产生最好的模型。这一众包模式依赖于这一事实,即有众多策略可以用于解决几乎所有预测建模的问题,而研究者不可能在一开始就了解什么方法对于特定问题是最为有效的。Kaggle的目标则是试图通过众包的形式来解决这一难题,进而使数据科学成为一场运动。2017年3月8日谷歌官方博客宣布收购Kaggle。

阿里天池


文章转载自高級白,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论