2018-12-07 16:20:02 weixin_42633269 阅读数 158

我们在上文小白机器学习基础算法学习必经之路(上)简述了线性回归 (Linear Regression) ,逻辑回归 (Logistic Regression) ,决策树 (Decision Tree) ,支持向量机(SVM) ,朴素贝叶斯 (Naive Bayes) 现在我们接着继续学习另五个算法:


K邻近算法(KNN)

k-NN算法是最简单的分类算法,主要的思想是计算待分类样本与训练样本之间的差异性,并将差异按照由小到大排序,选出前面K个差异最小的类别,并统计在K个中类别出现次数最多的类别为最相似的类,最终将待分类样本分到最相似的训练样本的类中。与投票(Vote)的机制类似。


k-近邻算法是基于实例的学习,使用算法时我们必须有接近实际数据的训练样本数据。

  • 优点:精度高,对异常值不敏感,无数据输入假定
  • 缺点:时间和空间复杂度高,无法获取样本特征
  • 数据:数值型和标称型

k-均值算法(K-means)

KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且**的簇作为最终目标。


K个初始聚类中心点的选取对聚类结果具有较大的影响,因为在该算法第一步中是随机地选取任意k个对象作为初始聚类中心,初始地代表一个簇。该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离赋给最近的簇。当考查完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。


基本步骤
(1) 从 n个数据对象任意选择 k 个对象作为初始聚类中心;

(2) 根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;

(3) 重新计算每个(有变化)聚类的均值(中心对象);

(4) 计算标准测度函数,当满足一定条件,如函数收敛时,则算法终止;如果条件不满足则回到步骤(2)。


随机森林 (Random Forest)

随机森林是指利用多棵决策树对样本进行训练并预测的一种算法。也就是说随机森林算法是一个包含多个决策树的算法,其输出的类别是由个别决策树输出的类别的众树来决定的。在Sklearn模块库中,与随机森林算法相关的函数都位于集成算法模块ensemble中,相关的算法函数包括随机森林算法(RandomForestClassifier)、袋装算法(BaggingClassifier)、完全随机树算法(ExtraTreesClassifier)、迭代算法(Adaboost)、GBT梯度Boosting树算法(GradientBoostingClassifier)、梯度回归算法(GradientBoostingRegressor)、投票算法(VotingClassifier)。

随机森林

随机森林的特点

它有如下几个特点:
在当前所有算法中,具有极好的准确率
能够有效地运行在大数据集上
能够处理具有高维特征的输入样本,而且不需要降维
能够评估各个特征在分类问题上的重要性
在生成过程中,能够获取到内部生成误差的一种无偏估计
对于缺省值问题也能够获得很好得结果


实际上,随机森林的特点不只有这六点,它就相当于机器学习领域的Leatherman(多面手),你几乎可以把任何东西扔进去,它基本上都是可供使用的。在估计推断映射方面特别好用,以致都不需要像SVM那样做很多参数的调试。


GradientBoost和Adaboost算法

AdaBoost分类器就是一种元算法分类器,adaBoost分类器利用同一种基分类器(弱分类器),基于分类器的错误率分配不同的权重参数,最后累加加权的预测结果作为输出。


adaboost算法的一些实际可以使用的场景:

1)用于二分类或多分类的应用场景

2)用于做分类任务的baseline无脑化,简单,不会overfitting,不用调分类器

3)用于特征选择(feature selection)

4)Boosting框架用于对badcase的修正


只需要增加新的分类器,不需要变动原有分类器


由于adaboost算法是一种实现简单,应用也很简单的算法。Adaboost算法通过组合弱分类器而得到强分类器,同时具有分类错误率上界随着训练增加而稳定下降,不会过拟合等的性质,应该说是一种很适合于在各种分类场景下应用的算法。


GradientBoost算法

和Adaboost不同,Gradient Boosting 在迭代的时候选择梯度下降的方向来保证最后的结果最好。损失函数用来描述模型的“靠谱”程度,假设模型没有过拟合,损失函数越大,模型的错误率越高如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度方向上下降。


下面这个流程图是Gradient Boosting的经典图了,数学推导并不复杂,只要理解了Boosting的思想,不难看懂

GradientBoost算法

这里是直接对模型的函数进行更新,利用了参数可加性推广到函数空间。训练F0-Fm一共m个基学习器,沿着梯度下降的方向不断更新ρm和am。

完…

2019-03-29 18:46:10 p515659704 阅读数 132

机器学习基础算法梳理

一、机器学习基本概念

1.1 监督学习(Supervised Learning)

简述:通过学习一组给定标签输入与输出的数据,对其相应的输出做一个预测,称为监督学习

例子:小明目前有一批患者肠镜的影片,通过影片数据的学习来预测该病人是否患有结直肠。该问题有且只有两个回答 【有】 【没有】。 而我们学习的对象可以是患者肠镜颜色的深浅,患者年龄,影片上小肠粘膜光滑程度、肝区、横结肠是否有扁平息肉等特征进行判断。这里的特征均由我们主观意识给定。在给定数据与学习的样本的特征,此称为监督学习。

1.2 无监督学习(Unsupervised Learning)

简述:通过学习一组无标签的数据,来达到对同类数据相似的输出,称为无监督学习

例子:小明目前有一大批猫相片的数据,但是这批数据没有任何特征,也就是我们不能通过图片中猫的颜色、毛发、长短、光影、形状等等来进行判断。可以把其理解为这是一个黑盒测试,我们对数据的属性一无所知,只知道达到的结果是通过学习这批数据判断一张新的图片是否为期望的对象,此称为无监督学习。

1.3 泛化能力(Generalization Ability)

简述:指由某种方法学习到的模型对未知数据的预测能力

详解:这种评价是针对于训练集与测试集而言的,所以效果未必能泛化,模型的泛化指在对数据集之外的数据进行评估的能力。在此引申出两种泛化的常见问题与解决思路:过拟合与欠拟合,交叉验证

1.4 过拟合(Overfitting)

简述:模型对于训练集的数据过于敏感,也就是在训练的时候达到的正确率非常高,导致在测试集合与数据集之外的数据预测准确率低下的现象叫做过拟合

常见解决思路:正则化、交叉验证、dropout、扩大训练集、学习率衰减等等

1.5 欠拟合(Underfitting)

简述:模型对于训练集的数据不够敏感,无法通过现有的特征与数据给出准确的预测,导致预测结果偏低的现象叫做欠拟合。

常见解决思路:添加特征项、添加多项式特征、减少正则化参数等等。

1.6 估计泛化能力(Bias-Variance Decomposition)

通常我们在评估一个算的时候需要了解具体的 ”为什么“ 具有这样的性能,”偏差-方差分解“就是解释学习算法泛化性能的一种重要工具

此处不对公式进行过多推导,最终得到的泛化误差为:

​ E(f; D) = bias ^ 2(x) + var(x) + e ^ 2

等价于,泛化误差分解为偏差、方差与噪声之和。偏差度量的是算法的期望预测与真是结果的偏离程度,也就是算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了再当前任务上任何学习算法所能达到的预期泛化的下界,即刻画了学习问题本身的难度。

二、线性回归相关概念

2.1 线性回归原理(Linear Regression)

简述:回归是基于已有的数据对新的数据进行预测,根据线性代数,我们定义线性方程组:

​ Xw = y,

在线性回归问题中,X为样本数据矩阵,y是期值向量。也就是说,对于线性回归的问题中,X与y是已知的,我们要解决的问题是取得最合适的一个向量W,使方程组中的能够尽量满足样本点的线性分布,之后就可以基于W对新的样本进行预测。

2.2 损失函数(Loss Function)

简述:用来量化预测分类标签的得分与真实标签之间的一致性,算的是一个样本的误差

2.3 代价函数(评分函数 Score Function)

简述:原始数据到类别分值的映射,是所有样本误差的平均,也就是损失函数的平均

2.4 目标函数(target function)

简述:在代价函数中寻找最小化的损失函数。可理解为也就是代价函数 + 正则化项

总结:

​ 线性回归中的定义了方程组: Xw = y,其中(xi,yi)是给定的,不能修改,但是我们可以基于数据不断的调整W矩阵中每一个参数,使得这个函数得到的结果与训练集中的图像的真实类别一致,即评分函数或称为代价函数在正确的分类的位置上应该得到较高的的得分。

2.5 优化方法

2.5.1 梯度下降法(Gradient Descent)

简述:梯度下降是一种迭代算法,迭代中寻找使目标函数极小化的x值。此处的f(x)是具有一阶连续偏导数的函数。而在实际应用中,由于负梯度方向是使函数值下降最快的方法,于是我们的目标就是在每次迭代之后,以负梯度更新x的值,从而达到减少函数值的目的。

2.5.2 牛顿法(Newton’s Method)

简述:核心与梯度下降法类似,不同之处在于f(x)具有二阶连续偏导数。每次迭代计算完梯度值后求解目标函数的海赛矩阵的逆矩阵。
对比梯度下降法
优点:

  1. 收敛速度快
  2. 二阶收敛

缺点:

  1. 要计算Hessian矩阵,而矩阵有可能是非正定的
  2. 计算量巨大,设计矩阵
  3. 可能导致牛顿方向不是下降的。

对比图片:

红色的是牛顿法的迭代路径
绿色的是梯度下降法的迭代路径

2.5.3 拟牛顿法(Quasi-Newton Methods)

简述:核心与牛顿法相似,因为牛顿法需要计算海赛矩阵的逆矩阵较为复杂,此方法则用一个n阶矩阵近似的代替海赛矩阵的计算。

2.6 线性回归的评估指标

2.6.1 均方误差MSE(Mean Squared Error)

对于简单的线性回归,目标是找到a,b 使 img 尽可能小,最终得到的衡量标准是:

img

实际上就是 真实值 - 预测值 然后平方之后求和。

2.6.2 均方根误差RMSE(Root Mean Squared Error)

对于2.6.1的公式有一个问题就是会导致量纲的问题,因为对其做了平方的缘故,例如万元的房价变成万元平方的房价导致数据极大,这里对均方误差进行开根,使量纲相同

img

2.6.3 平均绝对误差MAE(Mean Absolute Error)

最后这个是另一种思路,用绝对值代替平方的形式,有点类似p1 与 p2 正则化的区别,不过没有平方:

img

三、Sitkit-learn 参数详解

这里拿最简单鸢尾花(IRIS)数据做最基础的讲解对象

简述一下操作步骤:

1. 导入数据。
2. 查看数据格式,分析其属性,选取特征,也可以称为简易版的特征工程。
3. 将数据分成训练集和测试集。简单的做法用交叉验证降低过拟合问题。
4. 查看数据是否有缺失或者离群样本,对这类数据进行剔除或者替换。
5. 建立学习模型并设置好参数,对训练集数据进行学习。
6. 模型完成之后,对训练集与测试集都计算其准确率。
7. 若有需要,则可以进行模型替换、优化等等进阶操作
8. 预测新样本。
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

X_train, X_test, y_train, y_test = train_test_split(
    iris_dataset['data'], iris_dataset['target'], random_state=0)
print('X_train.shape:', X_train.shape)
print('y_train.shape:', y_train.shape)
print('X_test.shape:', X_test.shape)
print('y_test.shape:', y_test.shape)

# create dataframe from data in X_train
# label the columns using the strings in iris_dataset.feature_names
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
print('iris_dataframe:\n', iris_dataframe.head())
# create a scatter matrix from the dataframe, color by y_train
pd.plotting.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15),
                          marker='o', hist_kwds={'bins': 20}, s=60,
                          alpha=.8)


knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)

print("Test set score: {:.2f}".format(knn.score(X_test, y_test)))
2019-03-29 22:08:34 qq_33228909 阅读数 32

1 机器学习的概念

1.1 监督学习(Supervised Learning)

概念:从有标记的训练数据中推导出预测函数。(有标记的训练函数:每个训练实力都包括输入和期望的输出)。

理解:在监督学习中,给定一组数据,我们知道正确的输出结果应该是什么样子,并且知道在输入和输出之间有着一个特定的关系。
通过已有的训练样本(即已知数据及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优表示某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的。
监督学习的目标往往是让计算机去学习我们已经创建好的分类系统(模型)。

应用:监督学习是训练神经网络和决策树的常见技术。这两种技术高度依赖事先确定的分类系统给出的信息,对于神经网络,分类系统利用信息判断网络的错误,然后不断调整网络参数。对于决策树,分类系统用它来判断哪些属性提供了最多的信息。

常见的有监督学习算法:回归分析和统计分类。最典型的算法是KNN和SVM。
有监督学习最常见的就是:regression&classification

1.2 无监督学习(Unsupervised Learning)

概念:训练数据没有标记信息的学习。输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。

理解:在无监督学习中,我们基本上不知道结果会是什么样子,但我们可以通过聚类的方式从数据中提取一个特殊的结构。
实际应用中,不少情况下无法预先知道样本的标签,也就是说没有训练样本对应的类别,因而只能从原先没有样本标签的样本集开始学习分类器设计。
非监督学习目标不是告诉计算机怎么做,而是让它(计算机)自己去学习怎样做事情。非监督学习有两种思路。第一种思路是在指导Agent时不为其指定明确分类,而是在成功时,采用某种形式的激励制度。需要注意的是,这类训练通常会置于决策问题的框架里,因为它的目标不是为了产生一个分类系统,而是做出最大回报的决定,这种思路很好的概括了现实世界,agent可以对正确的行为做出激励,而对错误行为做出惩罚。

分类:无监督学习的方法分为两大类:
(1) 一类为基于概率密度函数估计的直接方法:指设法找到各类别在特征空间的分布参数,再进行分类。
(2) 另一类是称为基于样本间相似性度量的简洁聚类方法:其原理是设法定出不同类别的核心或初始内核,然后依据样本与核心之间的相似性度量将样本聚集成不同的类别。

应用:利用聚类结果,可以提取数据集中隐藏信息,对未来数据进行分类和预测。应用于数据挖掘,模式识别,图像处理等。

PCA和很多deep learning算法都属于无监督学习。
两者比较

  1. 有监督学习方法必须要有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律。而非监督学习没有训练集,只有一组数据,在该组数据集内寻找规律。
  2. 有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。而非监督学习方法只有要分析的数据集的本身,预先没有什么标签。如果发现数据集呈现某种聚集性,则可按自然的聚集性分类,但不予以某种预先分类标签对上号为目的。
  3. 非监督学习方法在寻找数据集中的规律性,这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。

1.3 泛化能力(Generalization Ability)

概念:机器学习算法对新鲜样本的适应能力。
学习的目的是学到数据背后隐含的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力被称为模型或算法的泛化能力。

1.4 过拟合

概念:过度拟合,模型把训练数据学习的太彻底,以至于把噪声数据的特征也学习了。
后果:后期测试的时候不能很好地识别数据,既不能正确的分类,又对新数据的适应性很差,模型的泛化能力太差。
解决方案:
1.重新清洗数据 2.增大数据的训练量 3.采用正则化惩罚项 4.采用dropout方法

1.5 欠拟合

概念:和欠拟合相反,模型没有很好地捕捉到数据特征,不能很好地拟合数据。
解决方案:
1.添加其他特征项 2.增加多项式特征 3.减少正则化参数

1.6 偏差(Variance)和方差(Bias)

偏差概念:描述的预测值(估计值)的期望与真实值之间的差距,表征预测值的准确性。偏差越大,越偏离真实数据。
高偏差解决方法:

  1. 采集更多的样本数据
  2. 减少特征数量,去除非主要的特征
  3. 增大正则化参数

方差概念:描述预测值的变化范围,离散程度,也就是离其期望值的距离,表征预测值的稳定性。方差越大,数据的分布越分散。
高方差解决方法:

  1. 引入更多的相关特征
  2. 采用多项式特征
  3. 减少正则化参数

偏差和方差的图形显示如下:
偏差和方差的图形显示

1.7 交叉验证

概念:把原始数据进行分组,一部分作为训练集,另一部分作为验证集。首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此来作为评价分类器的性能指标。

2 线性回归的原理

概念:线性回归,就是能够用一个直线较为精确地描述数据之间的关系。这样当出现新的数据的时候,就能够预测出一个简单的值。线性回归属于有监督学习。
分类:回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

3 损失函数、代价函数和目标函数

损失函数:计算的是一个样本的误差
代价函数:是整个训练集上的所有样本误差的平均
目标函数:代价函数+正则化项

具体理解:损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,举例说明:

在这里插入图片描述
上面三个图的曲线函数依次为f1(x),f2(x),f3(x),我们想用这三个函数分别来拟合真实值Y。

我们给定x,这三个函数都会输出一个f(X),这个输出的f(X)与真实值Y可能是相同的,也可能是不同的,为了表示我们拟合的好坏,我们就用一个函数来度量拟合的程度。这个函数就称为损失函数(loss function),或者叫代价函数(cost function)
在这里插入图片描述
损失函数越小,就代表模型拟合的越好。但不是让loss function越小越好。这个时候还有一个概念叫风险函数(risk function)。风险函数是损失函数的期望,这是由于我们输入输出的(X,Y)遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。但是我们是有历史数据的,就是我们的训练集,f(X)关于训练集的平均损失称作经验风险(empirical risk),所以我们的目标就是最小化经验风险。

在这里插入图片描述
到这里完了吗?还没有。

如果到这一步就完了的话,那我们看上面的图,那肯定是最右面的f3(x)的经验风险函数最小了,因为它对历史的数据拟合的最好嘛。但是我们从图上来看它肯定不是最好的,因为它过度学习历史数据,导致它在真正预测时效果会很不好,这种情况称为过拟合(over-fitting)。为什么会造成这种结果?大白话说就是它的函数太复杂了,都有四次方了,这就引出了下面的概念,我们不仅要让经验风险最小化,还要让结构风险最小化。

这个时候就定义了一个函数J(f),这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化(regularization)。常用的有L1, L2范数。到这一步我们就可以说我们最终的优化函数是:
在这里插入图片描述
即最优化经验风险和结构风险,而这个函数就被称为目标函数
本段采用[link]https://blog.csdn.net/qq_28448117/article/details/79199835 作者的解释

4 优化方法(梯度下降法、牛顿法、拟牛顿法)

4.1 梯度下降法(Gradient Descent)

概念:梯度下降法的核心思想:它通过每次在当前梯度方向(最陡峭的方向)向前“迈”一步,来逐渐逼近函数的最小值。
应用:梯度下降是机器学习中用来求最小值的算法,它被广泛应用于像逻辑回归、线性回归和神经网络的模型中。
问题:每一步走的距离在极值点附近非常重要,如果走的步子过大,容易在极值点附近震荡而无法收敛。
解决方法:将alpha设定为随着迭代次数而不断减小的变量,但是也不能完全减为零。

迭代过程为
在这里插入图片描述

4.2 牛顿法

概念:牛顿法是为了求解函数值为零的时候变量的取值问题的。
具体地,当要求解 f(θ)=0时,如果 f可导,那么可以通过迭代公式。
在这里插入图片描述
当θ是向量时,牛顿法可以使用下面式子表示:
在这里插入图片描述
其中H叫做海森矩阵,H (-1) 表示的是海森矩阵的逆矩阵 ,其实就是目标函数对参数θ的二阶导数。
优点
牛顿法收敛速度相比梯度下降法很快,而且由于海森矩阵的的逆在迭代中不断减小,起到逐渐缩小步长的效果。
缺点
牛顿法的缺点就是计算海森矩阵的逆比较困难,消耗时间和计算资源。因此有了拟牛顿法。

4.3 拟牛顿法

牛顿法需要求海森矩阵,这个矩阵需要计算二阶偏导数,比较复杂。为了改良这个问题,提出了拟牛顿法。
概念:不求二阶偏导数,构造出一个近似的海森矩阵。
参考[link]https://www.jianshu.com/p/0f864a4c3b38 作者观点

5 线性回归的评估指标

评价线性回归的指标有四种,均方误差(Mean Squared Error)、均方根误差(Root Mean Squared Error)、平均绝对值误差(Mean Absolute Error)以及R Squared方法。sklearnz中使用的是R Squared方法。

  1. 均方误差 MSE
    在这里插入图片描述
    MSE的值越小,说明预测模型描述实验数据具有更好的精确度
  2. 均方根误差 RMSE
    在这里插入图片描述
  3. 平均绝对值误差 MAE
    在这里插入图片描述
  4. 最好的衡量线性回归法的指标:R Squared
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

6 sklearn参数详解

概念:Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一.
Sklearn 包含了很多种机器学习的方式:
Classification 分类
Regression 回归
Clustering 非监督分类
Dimensionality reduction 数据降维
Model Selection 模型选择
Preprocessing 数据预处理

Sklearn中SVM,SVM主要有LinearSVC、NuSVC和SVC三种方法,在这里,主要说一下LinearSVC都有哪些参数值以及不同参数值的含义。

class sklearn.svm.LinearSVC(penalty=‘l2’, loss=‘squared_hinge’, dual=True, tol=0.0001, C=1.0, multi_class=‘ovr’, fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0, random_state=None, max_iter=1000)

penalty:则化参数,L1和L2两种参数可选,仅LinearSVC有。

loss:损失函数,有‘hinge’和‘squared_hinge’两种可选,前者又称L1损失,后者称为L2损失,默认是是’squared_hinge’,其中hinge是SVM的标准损失,squared_hinge是hinge的平方。dual:是否转化为对偶问题求解,默认是True。

tol:残差收敛条件,默认是0.0001,与LR中的一致。

C:惩罚系数,用来控制损失函数的惩罚系数,类似于LR中的正则化系数。

multi_class:负责多分类问题中分类策略制定,有‘ovr’和‘crammer_singer’ 两种参数值可选,默认值是’ovr’,'ovr’的分类原则是将待分类中的某一类当作正类,其他全部归为负类,通过这样求取得到每个类别作为正类时的正确率,取正确率最高的那个类别为正类;

‘crammer_singer’ :是直接针对目标函数设置多个参数值,最后进行优化,得到不同类别的参数值大小。

fit_intercept:是否计算截距,与LR模型中的意思一致。

class_weight:与其他模型中参数含义一样,也是用来处理不平衡样本数据的,可以直接以字典的形式指定不同类别的权重,也可以使用balanced参数值。

verbose:是否冗余,默认是False。

random_state:随机种子的大小。

max_iter:最大迭代次数,默认是1000。

对象
coef_:各特征的系数(重要性)。

intercept_:截距的大小(常数值)。

本文简化了公式的推导,只阐述了相关概念。

2017-02-08 19:06:11 yangzhiyouvl 阅读数 837

机器学习的问题更多的对算法模型的优化,特征工程也属于对算法模型的优化,这一点在后面均有体现。

说明:本文是对部分机器学习的算法模型的思想进行抽取,不会出现详细的推导。

先看一下要掌握的算法有哪些,我个人觉得部分算法有点偏,不过应该是在某个领域里有应用而且效果很好,否则不会成为必掌握的算法。
WechatIMG3.jpeg

线性回归

1、线性函数的表示:

f(x)=θ0x0+θ1x1++θnxn

向量形式:
f(x)=θ⃗ TX⃗ 

其中:
θ⃗ =(θ1;θ2;θn)

当 Θ 确定后,模型就确定了,Θ = 0是可得截距项 b。

2、cost function,亦即最小二乘法估计:

J(θi)=12mi=1m(hθ(xi)yi)2

记得前面说过的机器学习的大部分问题都是优化模型吗?开始,使用梯度下降优化代价函数,这也是线性回归算法思想的精髓。
θj:=θjαθjJ(θ)

α 为学习率。

3、为防止过拟合,加入正则化

J(θi)=argminθ12mi=1m(hθ(xi)yi)2+λj=1nθ2j

优点:易于理解,计算简单;
缺点:不能拟合非线性数据;

logistic回归

首先明确logistic回归不是回归,而是线性分类器。
1、logistic函数表达式为:

hθ(x)=g(θTx)=11+eθTx

其中:
g(z)=11+ez

经变形后得:
lnhθ1hθ=θTx

2、logistic回归主要是通过极大似然来估计待求参数 Θ 的值,样本的后验概率为:

L(θ)=p(y⃗ X;θ)=i=1mp(y(i)x(i);θ)

=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)

其中:
P(y=1x;θ)=hθ(x)

P(y=0x;θ)=1hθ(x)

对该式取似然对数可得cost function:
J(θ)=1mi=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

对cost function添加正则项后:
J(θ)=1mi=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθ2j

3、可用凸优化理论中的牛顿法,梯度下降法等方法最小化cost function,此处使用梯度下降法求最优解:

θj:=θjJ(θ)θj

优点:
* 实现简单,易于理解;
* 分类时计算量非常小,速度很快,存储资源低;

缺点:
* 容易欠拟合,一般准确度不太高;
* 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分。

决策树

决策树中关键点就是选择一个最优属性进行分枝,位于决策树上属性的重要度依次递减,信息增益可用于度量属性的重要度,因此要深入理解信息增益及其计算。

1、信息熵定义,n表示有n个分类类别:

Ent(D)=k=1npklog2pk

信息增益(information gain):
Gain(D,a)=Ent(D)v=1VDvDEnt(Dv)

其中:属性a产生V个可能分支,|D^v|/|D|为权重,即样本数越多的分支影响越大;信息增益越大的属性a划分效果越好,ID3决策算法以此为划分标准。

2、增益率

Gain_ratio(D,a)=Gain(D,a)IV(a),

其中:
IV(a)=v=1VDvDlog2DvD

注意:C4.5算法先从划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的属性。

3、基尼指数–CART决策树选择属性的标准
基尼值:

Gini(D)=k=1nkkpkpk=1k=1np2k

Gini(D)越小,数据集D的纯度越高,属性a的基尼指数定义:
Gini_index(D,a)=v=1VDvDGini(Dv)

在候选属性集合A中,选择那个能使划分后基尼指数最小的作为最优划分属性。

优点:计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;
缺点:容易过拟合,对决策树进行剪枝处理以及使用随机森林算法都能减小过拟合现象。

朴素贝叶斯

1、贝叶斯计算公式:

P(cx)=P(c)P(xc)P(x)

这只是一个理论公式,因为该公式存在一个问题:类条件概率P(x|c)是所有属性的联合概率,计算时会出现组合爆炸,当样本稀疏、属性较多时问题更加严重。

2、为避开上面的问题,朴素贝叶斯分类器基于属性条件独立性假设,将上式变为:

P(cx)=P(c)P(xc)P(x)=P(c)P(x)i=1dP(xic)

其中d为属性数目,x(i)为x在第i个属性上的取值。
对所有的类别来说P(x)相同,所以朴素贝叶斯分类器的表达式:
hnb(x)=argmaxcyP(c)i=1dP(xic)

3、Laplacian correction,如果P(x|c)中的某一项为0,则其联合概率的乘积也可能为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k, 分母加k的原因是使之满足全概率公式)。

优点:对小规模的数据表现很好,适合多分类任务,适合增量式训练。
缺点:对输入数据的表达形式很敏感。

EM算法

有时候因为样本的产生和隐含变量有关(隐含变量是不能被观察出的变量)。

LL(ΘX,Z)=lnP(X,ZΘ)

而求模型的参数时一般采用最大化已观测数据的对数“边际似然”:
LL(ΘX)=lnP(XΘ)=lnZP(X,ZΘ)

可使用梯度下降对隐变量进行估计,但求和的项数会随隐变量的数量以指数形式上升,这时可以采用EM算法来求模型的参数(对应模型参数个数可能有多个),EM算法一般分为2步,迭代至收敛:
1. 基于\Theta^{t}推断隐变量Z的期望,记为Zt
2. 再基于已观测变量X和Zt对参数Θ做极大似然估计,记为Θt+1.

若基于Θt计算隐变量Z的概率分布P(Z|X,Θt),则EM为:
* E步(Expectation):用参数Θt推断隐变量发布P(Z|X,Θt),并计算对数似然关于Z的期望;

Q(ΘΘt)=EZX,ΘtLL(ΘX,Z)

* M步(Maximization):寻找参数最大化期望似然;
Θt+1=argmaxΘQ(ΘΘt).

KNN算法

1、KNN的主要内容如下:
1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);
2. 对上面所有的距离值进行排序;
3. 选前k个最小距离的样本;
4. 根据这k个样本的标签进行投票,得到最后的分类类别;

2、如何选择一个最佳的K值,这取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的K值可通过交叉验证获取。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。KNN算法对距离公式较为“敏感”;

3、近邻算法具有较强的一致性结果。随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。

优点:
1. 思想简单,理论成熟,既可以用来做分类也可以用来做回归;
2. 可用于非线性分类;
3. 训练时间复杂度为O(n);
4. 准确度高,对数据没有假设,对outlier不敏感;

缺点:
1. 计算量大,容易造成内存溢出,需要大量的内存;
2. 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);

SVM

SVM 和 LDA 模型可谓是对数学能力和思维的极大考验,它的推导过程有必要理解掌握。
1、SVM核心思想一:最大间隔
将训练集中的正负样本最大程度的分隔开,那么该分隔线应位于训练样本中距离分隔边界垂直距离最近的样本点的“正中间”,这样的分割线具有最好的鲁棒性和泛化能力。

{w⃗ Txi+b1,yi=1;w⃗ Txi+b1,yi=1

2、SVM核心思想二:决策公式
将上面的最大间隔公式统一起来,且决策边界上的点(support vector)要满足最大间隔要求,因为y只能取1或-1,所以决策公式为:

yi(w⃗ Txi+b)1=0

3、SVM核心思想三:目标函数
取决策边界上的正负样本点做向量运算,可得决策边界之间的距离为:

r===(x⃗ +x⃗ )w⃗ w1w[1b(1b)]2w

下一步当然是最大优目标函数:
maxw⃗ ,b2w=minw⃗ ,b12w2s.t. yi(w⃗ Txi+b)1, i=1,2,,m.

4、SVM核心思想四:优化理论
对下式进行优化,它本身就是一个convex quadratic programming–凸二次规划问题,能直接优化。

minw⃗ ,b12w2s.t. yi(w⃗ Txi+b)1, i=1,2,,m.

但还有一种方法优化方法是对机器学习本身而言很有效的方法(后面感受),那就是对下式使用拉格朗日乘子约束,可写为:
L(w⃗ ,b,α⃗ )=12w2+i=1mαi(1yi(w⃗ Txi+b)), α⃗ =(α1;α2;;αm).

使 L 对 ω 和 b 求偏导为0得:
w⃗ =1mαiyixi,0=1mαiyi.

把上面得2个式子带回 L 得:
maxα⃗ i=1mαi12i=1mj=1mαiαjyiyjx⃗ Tixj ,s.t. i=1mαiαj=0, αi0,i=1,2,,m .

解得 α ,ω,b 后,可得模型为:
f(x⃗ )==w⃗ Tx⃗ +bi=1mαiyix⃗ Tix⃗ +b

此式得约束条件即为KKT条件:
αi0;yif(x⃗ i)10;αi(yif(x⃗ i)1)=0.

于是,对任意得训练样本,总有 α = 0或 α ﹥ 0。若 α = 0时,对f(x)无影响;若α ﹥ 0,则对应得样本位于决策边界上,是支持向量。这就表明:当使用SVM训练完成后,只有最终得支持向量对模型有影响。支持向量的美妙就在此。

5、再回决策公式
现在得决策公式变为:

i=1mαiyix⃗ i,u⃗ +b0

由此可见,当在做决策时,不需要知道x是什么,主要知道训练集中得x与测试集中得u点乘后结果就行。当样本不能线性可分时,将点乘部分换为非线性核即可。

6、SVM的终极杀器:核方法–kernel
当样本线性不可分时,将样本映射到高维空间使其能线性可分,将﹤x, u﹥替换为其他核方法即可实现,其余部分推导类似。核函数:

k(xi,xj)=Φ(xi),Φ(xj)=Φ(xi)TΦ(xj)

7、SMO
发现我们还有 α 没有求出,这就是SMO存在得理由。SMO的思想:
* 选取一对需要更新的 αiαj,固定其他 α 参数;
* 求解更新后的 α 。

代入下式循环迭代直至满足要求。

maxα⃗ i=1mαi12i=1mj=1mαiαjyiyjx⃗ Tixj ,s.t. i=1mαiαj=0, αi0,i=1,2,,m .

8、Hinge loss
Hinge loss与logistic回归有关,线性版的SVM。

优点:
* 可用于线性/非线性分类,也可以用于回归;
* 低泛化误差;
* 容易解释;

缺点:
* 对参数和核函数的选择比较敏感;
* 原始的SVM只比较擅长处理二分类问题;
* 时间复杂度高O(n^3),不能承载大数据的要求.

SVM的终极核心是最大间隔,它的思想很重要。此处我并没有给图,不过结合资料看时没有问题的。
参考:
支持向量机通俗导论(理解SVM的三层境界)
周志华老师的《机器学习》
Ng老师的《machine learning》视频
林轩田老师的《机器学习技法》视频
七月在线冯老师的视频

聚类

在做特征工程时,id 一般都不用,这时可以根据id对数据进行聚类,然后再根据聚类结果给一个clustering id。在社交网络中对某人的社交关系也会使用聚类。
优点:
* (1)k-means算法是解决聚类问题的一种经典算法,算法简单、快速;
* (2)对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<

降维

我们都知道当属性太多、维度过高会使得数据变稀疏从而加大计算的开销,有效信息被“埋藏得”更深,此时通过降低维度来缓解该情况,最常见的降维算法是:PCA算法和LDA算法,这里有一篇文章对此有详细的说明,再加上书籍的补充就很容易理解。四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

在这篇文章里面还介绍了另外的两种降维方法。

ensemble learning – 集成学习

到此处,我们看到了每个算法都有各自的优缺点,那我们有什么办法可以尽量的避免一部分算法的缺陷吗?都这么说啦!肯定有的,但不能完全避免,只是减小算法缺陷在使用的过程中所造成的影响。下图是集成学习器的图示。
Untitled.jpg
个体学习器之间依赖性强、必须串行生成的序列化方法,代表是Boosting;另一个是个体学习器之间的依赖性不强、可以同时生成的并行化方法,代表是Bagging和Random Forest。

1、Boosting的代表AdaBoost
Gradient Boosted Decision Tree(GBDT)的特点:
1. Adaboost的Regression版本;
2. 把残差作为下一轮的学习目标;
3. 最终的结果有加权和值得到,不再是简单的多数投票:

G(x)=amGm(x).

2、Bagging和Random Forest
Bagging对分类任务使用简单投票法,对回归问题使用简单的平均法。Bagging可以不用修改就可用于多分类、回归任务中,这点与AdaBoost不同。在像决策树和神经网络等易受样本扰动的学习器上效果较为明显。
Random Forest会随着个体学习器的增多,通常会收敛到更低的泛化误差,而且它的训练效率优于Bagging。

XGBoost可谓是kaggle比赛神奇啊,最近Microsoft开源了功能与XGBoost相同的库,叫LightGBM,它的速度和准确度稍优于XGBoost。

pLSA & LDA

pLSA跟LDA的本质区别就在于它们去估计未知参数所采用的思想不同,前者采用的是频率派思想,后者采用的是贝叶斯派思想。LDA就是在pLSA的基础上加层贝叶斯框架,即LDA就是pLSA的贝叶斯版本。

1、pLSA
Image from 主体模型, page 38.png

2、LDA
Image from 主体模型, page 39.png

LDA模型得公式推导很麻烦,但模型思路和我们的思维过程类似。拆分后可变为以下得5步骤:
1. 一个函数:gamma函数;
2. 四个分布:二项分布、多项分布、beta分布、Dirichlet分布;
3. 一个概念和一个理念:共轭先验和贝叶斯框架;
4. 两个模型:pLSA、LDA;
5. 一个采样:Gibbs采样

具体推导过程参考 通俗理解LDA主题模型

Regularization

1、以下是两种常用的归一化方法:
1、min-max标准化(Min-Max Normalization)
也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:

χ=Xminmaxmin

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
2、Z-score标准化方法
这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:
χ=Xμσ

其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

2、归一化的作用
1. 去掉量纲和数值跨越幅度太大的影响;
2. 控制模型的复杂度,光滑性。复杂性越小且越光滑的目标函数泛化能力越强。而加入规则项能使目标函数复杂度减小,且更光滑。如梯度下降法;
3. 系数越小,模型越简单,而模型越简单则泛化能力越强(Ng宏观上给出的解释);
4. 可以看成是权值的高斯先验。

异常检测

异常检测算法思路如下:
1. 选定容易出错的n个特征{x(i)1,x(i)2,…,x(i)n}作为变量;
2. 计算m个样本的平均值和方差:

μj=1mi=1mx(x)jσ2j=1mi=1m(x(x)jμj)2

3. 给定监测点x,计算p(x):
P(x)=j=1np(xj;μj;σj2)=j=1n12πσjexp((xjμj)22σ2j)

4. 如果 p(x) < ϵ,则为异常值;反之亦成立。

其中的 ε 也是通过交叉验证得到的,也就是说在进行异常检测时,前面的 p(x) 的学习是用的无监督,后面的参数 ε 学习是用的有监督。那么为什么不全部使用普通有监督的方法来学习呢(即把它看做是一个普通的二分类问题)?主要是因为在异常检测中,异常的样本数量非常少而正常样本数量非常多,因此不足以学习到好的异常行为模型的参数,因为后面新来的异常样本可能完全是与训练样本中的模式不同。另外,上面是将特征的每一维看成是相互独立的高斯分布,其实这样的近似并不是最好的,但是它的计算量较小,因此也常被使用。更好的方法应该是将特征拟合成多维高斯分布,这时有特征之间的相关性,但随之计算量会变复杂,且样本的协方差矩阵还可能出现不可逆的情况(主要在样本数比特征数小,或者样本特征维数之间有线性关系时)。

常见对分布的处理
* 对于高斯分布的数据,直接运用以上算法就好;
* 但是对于非高斯分布的数据,虽然也可是使用上面的算法,但是效果不是很好,所以我们尽量将非高斯分布转化成(近似)高斯分布,然后再进行处理;
* 数据整体偏小,可以求ln(x)或者xa,0

Apriori & FP Growth

Apriori是关联分析中比较早的一种方法,主要用来挖掘那些频繁项集合。其核心思想是:
1. 如果一个项目集合不是频繁集合,那么任何包含它的项目集合也一定不是频繁集合;
2. 如果一个项目集合是频繁集合,那么它的任何非空子集也是频繁集合。

这两句话看起来很简单,不过要体会到其中的深层次的含义可以去看看当时提出该算法的paper。

Aprioir需要扫描项目表多遍,从一个项目开始扫描,舍去掉那些不是频繁的项目,得到的集合称为L,然后对L中的每个元素进行自组合,生成比上次扫描多一个项目的集合,该集合称为C,接着又扫描去掉那些非频繁的项目,重复… 这样扫描其时间复杂度和数据库的I/O开销会很大。

具体的做法参考:《machine learning in action》这本书。

FP Growth是一种比Apriori更高效的频繁项挖掘方法,它只需要扫描项目表2次。其中第1次扫描获得当个项目的频率,去掉不符合支持度要求的项,并对剩下的项排序。第2遍扫描是建立一颗FP-Tree(frequent-patten tree)。这篇文章的讲解还是不错的:频繁项集挖掘算法之FPGrowth

参考

博文:
整理本文的起点来源于该博文:机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

支持向量机通俗导论(理解SVM的三层境界)

四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

通俗理解LDA主题模型

该文档由Microsoft为使用自家的Azure云平台而写,但内容都是通用的。How to choose algorithms for Microsoft Azure Machine Learning

异常检测部分:机器学习——异常检测

频繁项集挖掘算法之FPGrowth

书籍部分:
《machine learning in action》–> 中文版《机器学习实战》
周志华《机器学习》
《PRML》

视频:
Ng老师的《machine learning》视频
林轩田老师的《机器学习技法》视频
七月在线冯老师的视频

2019-04-02 09:22:50 Wang_Jiankun 阅读数 121

机器学习基础算法


机器学习基础
线性模型
决策树
朴素贝叶斯
SVM
集成学习(Boosting、随机森林)


一、机器学习概述

1、机器学习

定义: 假设用 P 来评估计算机程序在某任务类 T 上的性能,若一个程序通过利用经验 ET 中任务上获得了性能改善,则我们就说关于 TP,该程序对 E 进行了学习。

术语:

  • 示例(instance)/ 样本(sample): 一个对象。
  • 数据集(data set):一组对象的集合。
  • 属性(attribute)/ 特征(feature):对象在某方面的表现或性质的事项。
  • 属性值 / 特征值:对象的属性/特征的取值。
  • 样本空间(sample space):属性张成的空间,空间大小=各属性可能取值个数的乘积。
  • 假设空间(hypothesis):各属性的可能取值的组合,各属性的取值可能为 *(通配),空集也是一种可能的取值组合。
  • 泛化(generalization): 学得的模型适用于新样本的能力。
  • 监督学习(supervised learning):训练样本有标记,分类和回归。
  • 无监督学习(unsupervised learning):训练样本无标记,聚类。

可以把学习的过程看作一个在假设空间进行搜索的过程,搜索的目标是找到与训练集匹配(fit)的假设。可能存在多个匹配的假设,称为版本空间(version space)。根据归纳偏好(尽可能特殊 / 尽可能一般)选择符合的假设作为模型。

2、模型评估与选择

过拟合与欠拟合:有学习算法和数据内涵共同决定

  • 过拟合:算法学习能力强,数据量/特征少,把个别样本的特征总结为数据集的普遍规律,泛化性能差。
  • 欠拟合:算法学习能力差,数据量/特征多,学习到的规律过于普遍,训练集的预测结果差。

评估方法:训练集、验证集

  • 留出法:把数据集拆分成训练集、验证集
  • 自助法:有放回的随机采样
  • 交叉验证法:
    在这里插入图片描述

调参和最终模型:

  • 调参:网络搜索,或者用指数法不断缩小调参的范围。
  • 最终模型:划分测试集,在验证集上对不同模型进行评估选出最优的,然后在测试集上测试最终模型的性能。

偏差与方差:

  • 偏差:度量学习算法的期望预测与真实结果的偏离程度,即拟合能力。偏差大钱拟合。
  • 方差:度量同样大小的训练集的变动所导致的学习性能的变化,即数据扰动所造成的影响。方差大过拟合。
  • 偏差和方差是冲突的。

二、线性模型

1、基本形式

在这里插入图片描述

2、线性回归(linear regression)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、逻辑回归(logistic regression)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、多分类

在这里插入图片描述
在这里插入图片描述

5、样本不平衡

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


三、决策树(Decision Tree)

1、决策树算法

在这里插入图片描述
在这里插入图片描述

2、信息熵(ID3、C4.5)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、基尼系数

在这里插入图片描述

4、剪枝

在这里插入图片描述
在这里插入图片描述


四、朴素贝叶斯(Navie Bayes)

在这里插入图片描述
在这里插入图片描述


五、SVM

1、SVM基本型

基于训练集 D 在样本空间中找到一个划分超平面,将不同类别的样本分开,这样的超平面可能有很多。SVM 功能是找到那个对训练样本局部扰动的容忍性最好的那个超平面,即划分超平面产生的分类结果最鲁棒,泛化能力最强。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、核函数

现实任务中,训练样本不一定是线性可分的(即一个划分超平面能将训练样本正确分类),通常是线性不可分。对于这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在新的特征空间内线性可分。如果原始空间是有限维的(属性有限),那么一定存在一个高维特征空间使样本可分。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、软间隔和正则化

在这里插入图片描述
所有样本都必须划分正确,这称为硬间隔(hard margin),而软间隔则是允许某些样本不满足约束条件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、SVR

在这里插入图片描述
在这里插入图片描述


六、集成学习

1、个体与集成

在这里插入图片描述
弱学习器的性能应好于随机预测,通常使用的是较强的弱学习器。

在这里插入图片描述

2、Boosting

在这里插入图片描述

  • 根据上一轮各样本的预测情况调整该轮各样本的权重,上一轮分错的样本权重加大
  • 根据该弱学习器的预测效果分配最后预测的权重,预测效果越好权重越大

3、Bagging

在这里插入图片描述

  • 采样剩余的36.8%的样本可用来做验证集对弱学习器的泛化性能进行估计。

4、随机森林

在这里插入图片描述
在这里插入图片描述

  • 样本哟放回的随机采样
  • 从决策树每个节点的属性集合随机选择 k 个

5、结合策略

数值型输出:

  • 平均法:各个弱学习器的权重一样,对结果进行简单的平均
  • 加权平均法:各个弱学习器的权重不一样,对结果进行加权平均

分类任务:

  • 绝对多数投票法:任一类的得票超过半数则预测为该类,否则拒绝预测
  • 相对多数投票法:预测为得票最多的类别
  • 加权投票法:弱学习器的分类结果进行加权投票

学习法:
通过另一个学习器来学习如何结合,代表算法是Stacking。
在这里插入图片描述


GOOD LUCK!


学习机器学习的基本算法的时候

博文 来自: njustzj001
没有更多推荐了,返回首页