EM:expectation maximization algorithm
MLE:maximum likelihood estimation 最大似然估计 利用已知的样本 估计出最有可能导致这种样本分布的参数 即模型已知参数未知
找出一组参数,使得观察出样本数据结果的概率最大
①、写似然函数(出现样本概率与参数之间的函数)
②、求对数
③、求导数
④、导数为0,解似然方程
贝叶斯估计:利用先验概率和已知分布来估计后验概率
贝叶斯算法中的常见概念:
1、P(A)是事件A的先验概率或者边缘概率。
2、P(A|B)是已知B发生后A发生的条件概率,也称为A的后验概率。
3、P(B|A)是已知A发生后B发生的条件概率,也称为B的后验概率。
4、P(B)是事件B的先验概率或者边缘概率。
例子:现在有五个盒子,假定每个盒子中都有黑白两种球,并且黑白球的比例如下;现已知从这五个盒子中的任意一个盒子中有放回的抽取两个球,且均为白球,问这两个球是从哪个盒子中抽取出来的?
MAP:maximum a posteriori estimation 最大后验概率估计 求在样本结果下出现概率最大的参数
在最右边的argmaxP(θ)P(X|θ)中,MLE是使P(X|θ)最大,而MAP是使P(θ)P(X|θ)最大,相当于MLE假设参数分布的先验概率相同的情况下使似然函数值最大,而MAP在这个基础上要求参数分布本身的先验概率比较大
(该部分参考:EM算法-大纲)
KNN:k-nearest-neighbor 我们可以这样理解这个问题:有一堆已知的点,它们被分为两类:红与绿。它们在坐标纸上的分布如图,给我们一个新的点,我们能否通过这个点的坐标来判断它是红的还是绿的呢?这就是KNN研究的问题。
KNN(K-nearest neighbor)又称K-最近邻,它是通过新的点与已知点之间的坐标关系来进行分类。我们计算新的点与这堆已知的点的欧式距离(就是咱们理解的距离),将其排序得到距离的列表或字典。然后我们看这个列表或字典的前k个距离值,在这些距离里面,如果是红的(属于和红色点的距离)更多,那我们就认为这个新的点是红色,反之就认为是绿色。
PCA:principle component analysis 主成分分析 把高维数据在损失最小的情况下转换为低维数据 在可控的损失范围内提高运算速度
数学表述:当需要从n维数据降为k维数据时,需要找出k个向量u(1)、u(2)、u(k),把n维的数据投射到这k个向量决定的线性空间里,最终使投射误差最小化的过程。
假设有一个数据集,用m x n维的矩阵A表示。矩阵中每一行表示一个样本,每一列表示一个特征,总共有m个样本,每个样本有n个特征。我们的目标是减少特征个数,保留最重要的k个特征。
1.数据归一化和缩放
数据归一化和缩放是一种数学技巧,旨在提高PCA运算时的效率。数据归一化的目标是使特征的均值为0。数据归一化和缩放公式为:
其中,a是第i个样本第j个特征的值,uj是第j个特征的均值,sj是第j个特征的范围(aj max - aj min)
2.计算协方差矩阵的特征向量
针对预处理后的矩阵X,先计算其协方差矩阵(Covariance Matrix):
其中,最左边表示协方差矩阵,用大写的Sigma表示,是一个n * n维的矩阵。接着通过奇异值分解来计算协方差矩阵的特征向量:
其中,svd是奇异值分解(Singular Value Decomposition)运算,是高级线性代数的内容。经过奇异值分解后,有3个返回值,其中矩阵U是一个n * n的矩阵,如果我们选择U的列作为向量,那么我们将得到n个列向量u1、u2、un,这些向量就是协方差矩阵的特征向量。它表示的物理意义是,协方差矩阵可以由这些特征向量进行线性组合得到。
3.数据降维和恢复
其中,Ureduce=u1,u2,...,uk,它选自矩阵U的前k个向量,是数据降维和恢复的关键中间变量。Ureduce是nk的矩阵,其转置为kn,x为n1的矩阵,则z为k1的矩阵。这样即完成了数据的降维。
也可以用矩阵运算一次性转换多个向量,提高效率。假设X是行向量xi组成的矩阵,则Z=X*Ureduce。其中,X是m * n的矩阵,降维后的矩阵Z是一个m * k的矩阵。
图中正方形的点是原始数据经过预处理后(归一化、缩放)的数据,圆形的点是从一维恢复到二维后的数据。同时,我们画出主成分特征向量u1、u2。根据上图,来介绍几个有意思的结论:首先,圆形的点实际上就是方形的点在向量u1所在直线上的投影。所谓PCA数据恢复,并不是真正的恢复,只是把降维后的坐标转换为原坐标系中的坐标而已。针对我们的例子,只是把由向量u1决定的一维坐标系中的坐标转换为原始二维坐标系中的坐标。其次,主成分特征向量u1、u2是相互垂直的。再次,方形点和圆形点之间的距离,就是PCA数据降维后的误差。
PCA这一部分参考:https://www.jianshu.com/p/5761f3be39a3
SVM:support vector machine 支持向量机 这个老哥实在写得太好了我就直接转载了,自SVM常见问题
1 SVM原理
SVM是一种二分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大化是它的独特之处),通过该超平面实现对未知样本集的分类。
当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机。
当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机。
当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
2 SVM核函数意义、种类与选择
意义:原始样本空间中可能不存在这样可以将样本正确分为两类的超平面,但是我们知道如果原始空间的维数是有限的,也就是说属性数是有限的,则一定存在一个高维特征空间能够将样本划分。SVM通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身无法线性可分的数据分开。核函数的真正意义是做到了没有真正映射到高维空间却达到了映射的作用,即减少了大量的映射计算。
选择:
利用专家先验知识选定核函数,例如已经知道问题是线性可分的,就可以使用线性核,不必选用非线性核。
如果特征的数量大到和样本数量差不多,则选用线性核函数SVM或LR。
如果特征的数量小,样本的数量正常,则选用高斯核函数SVM。
如果特征的数量小,样本数量很多,由于求解最优化问题的时候,目标函数涉及两两样本计算内积,使用高斯核明显计算量会大于线性核,所以手动添加一些特征,使得线性可分,然后可以用LR或者线性核的SVM;
利用交叉验证,试用不同的核函数,误差最小的即为效果最好的核函数。
混合核函数方法,将不同的核函数结合起来。
3 为什么要将求解SVM的原始问题转换为其对偶问题
无论原始问题是否是凸的,对偶问题都是凸优化问题;
对偶问题可以给出原始问题一个下界;
当满足一定条件(KKT条件或Slater条件)时,原始问题与对偶问题的解是完全等价的;
可以自然引入核函数。
4 SVM为什么采用间隔最大化
当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机或神经网络等利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。
5 SVM对噪声敏感
少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:
增、删非支持向量样本对模型没有影响;
支持向量样本集具有一定的鲁棒性;
有些成功的应用中,SVM 方法对核的选取不敏感
但当噪声出现的过多,以及当噪声出现并成为支持向量时,那么噪声对模型对影响是巨大的。所以此时SVM对噪声不具备鲁棒性!以下两种情况会增大噪声成为支持向量的概率:
噪声数量太多
噪声以新的分布形式出现,与原先样本集的噪声分布表现的相当不同。此时噪声也有大概率落在最大分类间隔中间,从而成为支持向量,大大影响模型。
所以我们常说的鲁棒性其实是主要是体现在对Outlier(异常点、离群点)上。
6 SVM缺失值影响
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,若存在缺失值它们在该特征维度很难正确的分类(例如SVM要度量距离(distance measurement),高斯核,那么缺失值处理不当就会导致效果很差),所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。
7 SVM在大数据上有哪些缺陷
SVM的空间消耗主要是在存储训练样本和核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的内存和运算时间。如果数据量很大,SVM的训练时间就会比较长,所以SVM在大数据的使用中比较受限。
8 SVM之防止过拟合以及如何调节惩罚因子C
过拟合是什么就不再解释了。SVM其实是一个自带L2正则项的分类器。SVM防止过拟合的主要技巧就在于调整软间隔松弛变量的惩罚因子C。C越大表明越不能容忍错分,当无穷大时则退化为硬间隔分类器。合适的C大小可以照顾到整体数据而不是被一个Outlier给带偏整个判决平面。至于C大小的具体调参通常可以采用交叉验证来获得。每个松弛变量对应的惩罚因子可以不一样。
一般情况下,低偏差,高方差,即遇到过拟合时,减小C;高偏差,低方差,即遇到欠拟合时,增大C。
9 SVM中样本偏斜的处理方法
样本偏斜是指数据集中正负类样本数量不均,比如正类样本有10000个,负类样本只有100个,这就可能使得超平面被“推向”负类(因为负类数量少,分布得不够广),影响结果的准确性。
对于样本偏斜(样本不平衡)的情况,在各种机器学习方法中,我们有针对样本的通用处理办法:如上(下)采样,数据合成,加权等。
仅在SVM中,我们可以通过为正负类样本设置不同的惩罚因子来解决样本偏斜的问题。具体做法是为负类设置大一点的惩罚因子,因为负类本来就少,不能再分错了,然后正负类的惩罚因子遵循一定的比例,比如正负类数量比为100:1,则惩罚因子的比例直接就定为1:100,具体值要通过实验确定。
10 SVM优缺点
优点:
非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;
对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;
支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量;
SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
小样本集上分类效果通常比较好。
少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:
①增、删非支持向量样本对模型没有影响;
②支持向量样本集具有一定的鲁棒性;
③有些成功的应用中,SVM 方法对核的选取不敏感
SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。
缺点:
SVM算法对大规模训练样本难以实施。由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间(上面有讲)。
用SVM解决多分类问题存在困难。传统的SVM就是解决二分类问题的,上面有介绍不少解决多分类问题的SVM技巧,不过各种方法都一定程度上的缺陷。
对缺失值敏感,核函数的选择与调参比较复杂。
11 样本失衡时,如何评价分类器的性能好坏?
答:使用ROC曲线。Roc曲线下的面积,介于0.1和1之间。AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面。Auc作为数值可以直观的评价分类器的好坏,值越大越好,随机情况大概是0.5,所以一般不错的分类器AUC至少要大于0.5。
选择ROC和ROC下曲线面积是因为分类问题经常会碰到正负样本不均衡的问题,此时准确率和召回率不能有效评价分类器的性能,而ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。
12 数据不规范化对SVM的影响?
答:大值特征会掩盖小值特征(内积计算)。高斯核会计算向量间的距离,也会产生同样的问题;多项式核会引起数值问题。影响求解的速度。数据规范化后,会丢失一些信息。预测的时候,也要进行规范化
13 线性核VS多项式核VS径向基核?
答:1)训练速度:线性核只需要调节惩罚因子一个参数,所以速度快;多项式核参数多,难调;径向基核函数还需要调节γ,需要计算e的幂,所以训练速度变慢。【调参一般使用交叉验证,所以速度会慢】
2)训练结果:线性核的得到的权重w可以反映出特征的重要性,从而进行特征选择;多项式核的结果更加直观,解释性强;径向基核得到权重是无法解释的。
3)适应的数据:线性核:样本数量远小于特征数量(n<<m)【此时不需要映射到高维】,或者样本数量与特征数量都很大【此时主要考虑训练速度】;径向基核:样本数量远大于特征数量(n>>m)
14 径向基核函数中参数的物理意义
答:如果σ选得很大的话,高次特征上的权重实际上衰减得非常快,使用泰勒展开就可以发现,当很大的时候,泰勒展开的高次项的系数会变小得很快,所以实际上相当于一个低维的子空间;
如果σ选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题,因为此时泰勒展开式中有效的项将变得非常多,甚至无穷多,那么就相当于映射到了一个无穷维的空间,任意数据都将变得线性可分。
15 LR与SVM的异同
相同
第一,LR和SVM都是分类算法。
第二,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
第三,LR和SVM都是监督学习算法。
第四,LR和SVM都是判别模型。
第五,LR和SVM都有很好的数学理论支撑。
不同
第一,loss function不同。
第二,支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。
第三,在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。
第四,线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。一个计算概率,一个计算距离!
第五,SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项,SVM的目标函数里居然自带正则项!!!再看一下上面提到过的SVM目标函数:
16 LR和SVM哪个更能对付异常点out lier?
我们再来看看,所谓out lier,是怎么产生的,无非有两种情况,一种就是这个样本的标签y搞错了,一种就是没搞错,但这个样本是一个个例,不具备统计特性。
不论对于哪一种情况,svm会在f将这个out lier预测的比较正确时,就停止,不会一直优化对out lier的预测,因为没有什么太大意义了。而lr则不同,它会继续要求f对这个out lier的预测进行优化,并且永不停止,显然,这样的优化很可能会削弱f的泛化性能,因为没有必要死磕out lier 。
答案就是SVM!!!
维数灾难
一开始,分类器的性能随维度的增加不断上升,过了某一点后不升反降,这种现象称为维数灾难。
事实上,增加特征数量使得高维空间线性可分,相当于在低维空间内训练一个复杂的非线性分类器。
不过,这个非线性分类器太过“聪明”,仅仅学到了一些特例。如果将其用来辨别那些未曾出现在训练样本中的测试样本时,通常结果不太理想。这其实就是我们在机器学习中学过的过拟合问题。
尽管图6所示的只采用2个特征的线性分类器分错了一些训练样本,准确率似乎没有图4的高,但是,采用2个特征的线性分类器的泛化能力比采用3个特征的线性分类器要强。因为,采用2个特征的线性分类器学习到的不只是特例,而是一个整体趋势,对于那些未曾出现过的样本也可以比较好地辨别开来。换句话说,通过减少特征数量,可以避免出现过拟合问题,从而避免“维数灾难”。
维数灾难参考自机器学习中的维数灾难
在高维特征空间中对于样本距离的度量失去意义。由于分类器基本都依赖于如Euclidean距离(欧式距离),Manhattan距离(曼哈顿距离)等,所以在特征数量过大时,分类器的性能就会出现下降。
所以,我们如何避免“维数灾难”?图1显示了分类器的性能随着特征个数的变化不断增加,过了某一个值后,性能不升反降。这里的某一个值到底是多少呢?
目前,还没有方法来确定分类问题中的这个阈值是多少,这依赖于训练样本的数量,决策边界的复杂性以及分类器的类型。
理论上,如果训练样本的数量无限大,那么就不会存在“维数灾难”,我们可以采用任意多的特征来训练分类器。事实上,训练样本的数量是有限的,所以不应该采用过多的特征。
此外,那些需要精确的非线性决策边界的分类器,比如neural network,knn,decision trees等的泛化能力往往并不是很好,更容易发生过拟合问题。因此,在设计这些分类器时应当慎重考虑特征的数量。相反,那些泛化能力较好的分类器,比如naive Bayesian,linear classifier等,可以适当增加特征的数量。
如果给定了N个特征,我们该如何从中选出M个最优的特征?最简单粗暴的方法是尝试所有特征的组合,从中挑出M个最优的特征。事实上,这是非常花时间的,或者说不可行的。其实,已经有许多特征选择算法(feature selection algorithms)来帮助我们确定特征的数量以及选择特征。此外,还有许多特征抽取方法(feature extraction methods),比如PCA等。交叉验证(cross-validation)也常常被用于检测与避免过拟合问题。
Fisher判别:类内和类间离散度矩阵 线性分类器之fisher线性判别