目录
- 集成学习
- 支持向量机
- 软间隔
- 核函数
- VC维
- 生成式模型
- 判别式模型
- 生成式模型和判别式模型各有什么优缺点?
- 监督学习是判别式方法,无监督学习是生成式方法?
- 分类是判别式方法,聚类是生成式方法?KNN,K-means分别是什么方法?
-
集成学习
集成学习是一种技术框架,其按照不同的思路来组合基础模型,从而达到更好的目的。集成学习有两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。
集成学习基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。
历史上, Kearns和Valiant首先提出了“强可学习(Strongly Learnable)”和“弱可学习(Weakly Learnable)”的概念。他们指出:在概率近似正确(Probably approximately correct, PAC)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的;一个概念,如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。非常有趣的是,Schapire后来证明强可学习与弱可学习是等价的,也就是说,在PAC学习的框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。
集成学习 (Ensemble Learning)就是通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统( Multi-classifier System)、基于委员会的学习( Committee-based Learning)。
-
支持向量机
支持向量机是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题。与逻辑回归和神经网络相比,支持向量机,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。
具体来说就是在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维度空间使其变为线性可分,这样就可以在该特征空间中寻找最优分类超平面。
SVM使用准则: 为特征数,
为训练样本数。
- 如果相较于
而言,
要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。
- 如果
较小,而且
大小中等,例如
在 1-1000 之间,而
在10-10000之间,使用高斯核函数的支持向量机。
-
如果
较小,而
较大,例如
在1-1000之间,而𝑚大于50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。
支持向量机的优缺点:
优点:
- 支持向量机算法可以解决小样本情况下的机器学习问题,简化了通常的分类和回归等问题。
- 由于采用核函数方法克服了维数灾难和非线性可分的问题,所以向高维空间映射时没有增加计算的复杂性。换句话说,由于支持向量计算法的最终决策函数只由少数的支持向量所确定,所以计算的复杂性取决于支持向量的数目,而不是样本空间的维数。
- 支持向量机算法利用松弛变量可以允许一些点到分类平面的距离不满足原先要求,从而避免这些点对模型学习的影响。
缺点:
- 支持向量机算法对大规模训练样本难以实施。这是因为支持向量机算法借助二次规划求解支持向量,这其中会涉及m阶矩阵的计算,所以矩阵阶数很大时将耗费大量的机器内存和运算时间。
- 经典的支持向量机算法只给出了二分类的算法,而在数据挖掘的实际应用中,一般要解决多分类问题,但支持向量机对于多分类问题解决效果并不理想。
- SVM算法效果与核函数的选择关系很大,往往需要尝试多种核函数,即使选择了效果比较好的高斯核函数,也要调参选择恰当的
参数。另一方面就是现在常用的SVM理论都是使用固定惩罚系数C,但正负样本的两种错误造成的损失是不一样的。
-
软间隔
即在支撑向量围成区域内还有其他数据点,这些数据点在优化函数计算时也会被考虑。因此本质上也是支撑向量。这种支撑向量和超平面之间距离不稳定为b的情况就是软间隔。
在这种部分样本不满足约束条件的情况下,k引进一个松弛变量θi>0:
这个问题就变成了一个软间隔的问题,优化目标就变成了:
首先构造拉格朗日函数:
其实和硬间隔相比,只是多了一个参数,在利用SMO求解拉格朗日乘子中并没有什么改变,因此后续这个问题时可以理解为求解一个硬间隔的问题了。
-
核函数
有的时候样本线性不可分,采用线性模型可能会导致一些问题,在python编程中常常会结合isotonic或者sigmoid进行模型调优,简化模型的同时保证模型尽可能的线性可分。但是遇到线性分类下准确率极低的情况就要考虑核方法。
如上图,这种时候就需要使用其他的分类函数。
在python编程中,提供了线性“linear“,多项式”poly”,高斯”rbf”,逻辑回归”sigmoid”,提前终止”precomputed”这几种核函数,默认的核方法是rbf,当处理简单问题时,可以从线性开始尝试。
采用了核函数之后,超平面可以表示为:
实际上就是将x换成了带参数的x,在求解释将核函数展开即可。
-
VC维
VC维,全称为Vapnik-Chervonenkis Dimension,它反映了模型的学习能力,VC维越大,则模型的容量越大。
VC维的通俗定义是:对于一个指示函数集,如果存在个样本能够被函数集中的函数按所有可能的
种形式分开,则称函数集能够将
个样本打散,函数集的VC维就是它能够打散的最大样本数目
。如果对任意数目的样本,在该函数集中都能找到函数将它们打散,则称该函数集的VC维是无穷大。
我们知道,在机器学习中,常常用到“模型”的概念,实际上,模型就是假设空间中的一个函数。假设空间代表了一系列的函数,而我们的训练过程就是在这个集合中找到一个最优或近似最优的函数,来完成我们的任务。一般而言,VC维与模型容量成正相关关系。并不是与假设空间中模型个数正相关哦,比如说上面的二维线性函数集合,其中有无数个线性函数,但是其VC维仍然为3。
-
生成式模型
生成式模型(Generative Models)
有时候不想要一个值,我们想学习一个分布(Distribution),这个时候就需要生成式模型。总之,生成式模型就是学习到一个分布。
如何表示一个分布?可以用概率密度函数来表示。所以当然可以设计一个模型去学习一个概率密度函数。有了概率密度函数之后,如何从概率密度函数中采样得到一个样本又是另一个难题。所以,为什么不直接学习一个模型,这个模型隐式地学习到一个分布,我们可以直接从这个模型中输出采样样本,且这些输出的样本就是从我们需要的分布中采样出来的呢?
GAN就是按这样的思路来设计的模型。一个GAN模型就代表了一个分布。那么如何从分布中采样?需要告诉GAN在分布的哪个位置采样,这就是输入GAN的z。从一个简单的分布中采样得到z,把z输入GAN,GAN根据z的值有样学样的在自己的分布中采样得到输出。z是GAN去做采样的锚点,如果没有z,GAN就不知道在这个分布中要采哪个位置。生成z的分布可以随便取,最简单的就是取高斯分布。实际上,取其他任何分布都是可以的。
所以,GAN是一种基于采样的生成式模型,它不会去学习这个分布的概率密度函数,它只要知道怎么采样就可以了。它有个输入z,告诉GAN采哪个样本。
今天,基于采样的生成式模型非常流行。大概可以分成3种:
- Variational Autoencoder(VAE)
- GAN
- Flow Based Models
-
判别式模型
判别式模型就是给出一个判断,比如是哪个类别,是多少值。也就是说,判别式模型给出的是一个值。是直接对条件概率p(y|x;θ)建模。常见的判别式模型有线性回归模型、线性判别分析、支持向量机SVM、神经网络、boosting、条件随机场等。
判别式模型根据训练数据得到分类函数和分界面,比如说根据SVM模型得到一个分界面,然后直接计算条件概率 ,我们将最大的 作为新样本的分类。判别式模型是对条件概率建模,学习不同类别之间的最优边界,无法反映训练数据本身的特性,能力有限,其只能告诉我们分类的类别。
-
生成式模型和判别式模型各有什么优缺点?
- 生成式模型
优点:
- 可以还原联合分布率(判别式模型不可以)
- 学习的收敛速度更快,即:当样本容量增加的时候,学到的模型可以更快地收敛于真实模型
- 可以应付存在隐变量的情况,比如混合高斯模型就是含有隐变量的生成方法。
缺点:
- 浪费计算资源。联合分布是能提供更多的信息,但也需要更多的样本和更多计算,尤其是为了更准确估计类别条件分布,需要增加样本的数目,而且类别条件概率的许多信息是我们做分类用不到,因而如果我们只需要做分类任务,就浪费了计算资源。
- 实践中多数情况下判别模型效果更好
2.判别式模型
优点:
- 节约了计算资源,相比较于生成模型而言
- 直接学习条件概率或者决策函数,学习效率更高
- 直接学习可以对数据进行各种程度上的的抽象、定义特征并使用特征,因此可以简化学习问题
缺点:
- 不能反映训练数据本身的特性。能力有限,可以告诉你的是1还是2,但没有办法把整个场景描述出来。
- Lack elegance of generative: Priors, 结构, 不确定性
Alternative notions of penalty functions, regularization, 核函数 - 黑盒操作: 变量间的关系不清楚,不可视
- 由生成模型可以得到判别模型,但由判别模型得不到生成模型。
- 当存在隐变量(当我们找不到引起某一现象的原因的时候,我们就把这个在起作用,但是,无法确定的因素,叫“隐变量”) 时,仍可以利用生成方法学习,此时判别方法不能用。
-
监督学习是判别式方法,无监督学习是生成式方法?
- 监督学习分为两类模型:判别模型 和 生成模型。
- 无监督学习中的生成式模型跟前面提到的监督学习中的生成式模型是不一样的。
无监督学习的生成式模型的目标:希望构建一个从隐向量z生成目标数据x的模型(Generator)
,这样我们只要不断从隐向量z的分布中采样z,就能生成很多与真实图像极为相似的图片。
- 简单地说,判别式模型是针对条件分布建模,而生成式模型则针对联合分布进行建模。
-
分类是判别式方法,聚类是生成式方法?KNN,K-means分别是什么方法?