机器学习面试题面经
深度学习卷积神经网络面试题面经
PyTorch面试题面经
Python面试题面经
Linux,Git面试题面经
HR面试题面经
KNN:特点是完全跟着数据走,没有数学模型可言。适用:需要一个容易解释的模型的时候,比如需要向用户解释原因的推荐算法。
感知机
贝叶斯:核心是根据条件概率计算待判断点的类型。适用:易解释,而且不同维度之间相关性较小的模型。可以处理高维数据,虽然效果一般。
逻辑回归
决策树:适用:它能生成清晰的基于特征选择不同预测结果的树状结构,数据分析师希望更好的理解手上的数据的时候往往可以使用决策树。
随机森林:适用:数据维度相对低(几十维),同时对准确性有较高要求。不需要调很多参就可以达到不错效果,不知道用什么方法时可以先试试。
SVM:svm尽量保持样本间距离的性质导致它抗攻击能力更强。拿到数据可以先尝试的算法。
集成学习(bagging,boosting,随机森林RF,GBDT,Adaboost,xgboost)
K-means
PCA
LDA(线性判别分析):适用于高维数据需要降维的情况,自带降维功能使得我们能方便的观察样本分布。注意其假定样本成正态分布
哪些需要归一化,哪些不要:
树模型不需要
非树模型都要
判别模型与生成模型
判别模型:由数据直接学习决策函数Y=f(x)或条件概率分布P(Y|X)作为预测模型,判别方法关注的是对于给定的输入x,应该预测什么样的输出Y。有KNN,感知机,决策树,逻辑回归,线性回归,最大熵模型,SVM,提升方法,条件随机场,lda,条件随机场
生成模型:由数据学习联合概率分布P(X,Y),然后由P(Y|X)=P(X,Y)/P(X)求出概率分布P(Y|X)作为预测的模型。该方法表示了给定输入X与产生输出Y的生成关系。有朴素贝叶斯,隐马尔可夫(HMM)
生成模型的特点
生成方法可以还原出联合概率分布P(X,Y),而判别方法则不能
生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快速的收敛于真实模型
当存在隐变量时,仍可以用生成方法学习,此时判别方法就不能用
判别模型的特点
判别方法直接学习的是条件概率P(Y|X)或决策函数f(X),直接面对预测,往往学习的准确率更高
由于直接学习P(Y|X)或f(X),可以对数据进行各种程度上的抽象,定义特征并使用特征,因此可以简化学习问题
线性分类器与非线性分类器区别以及优缺点(假如只考虑二分类的情形)
线性分类器即用一个超平面将正负样本分离开,表达式为y=wx,非线性分类界面没有此限制,可以是曲面,多个超平面的组合等
常见线性分类器:LR,贝叶斯分类,单层感知机,线性回归
优缺点:算法简单,具有学习能力。速度快,编程方便,拟合效果可能不好
常见非线性分类器:决策树,RF,GBDT,多层感知机
优缺点:非线性分类器编程复杂,但拟合效果好
ROC曲线:横坐标:(假阳率=FP/(FP+TN)),纵坐标(真正率=TP/(TP+FN))。意义:当阈值变化时假阳率和真阳率的变化情况,左下角的点对应的将所有样例判断为反例的情况,右上角的点对应将所有样例判断为正的情况,虚线是随机才层的结果曲线。 https://blog.csdn.net/jiaoyangwm/article/details/79618787
AUC:对不同的ROC曲线进行比较的一个指标是曲线下的面积。AUC给出的是分类器的平均性能值,当然它并不能完全代替对整条曲线的观察
KNN
任意测试样本x附近任意小的σ距离范围内总能找到一个训练样本。
适用场景:少量数据和大量低维数据
优点:精度高,不太受到异常离散值的影响
缺点:需要大量存储空间、计算复杂度高
逻辑回归
优点:实现简单,易于理解,计算代价不高,速度快,存储资源低。
缺点:容易欠拟合,分类精度不高,一般只能处理二分类问题,必须借助softmax才能实现多分类问题,且前提是必须线性可分。
LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(改进下可处理多分类问题)。若不考虑核函数,LR和SVM都是线性分类,也就是说他们的分类决策面都是线性的
都是监督学习,都是判别模型
两个方法都可以增加不同的正则化项,如L1,L2等等。所以很多实验中两个算法结果接近。
区别:
LR是参数模型,SVM是非参数模型
从目标函数来看,却别在于LR采用logistical loss,SVM采用hinge loss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重
SVM处理方法只考虑support vectors支持向量,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重
LR相对简单好理解,特别是大规模线性分类时比较方便,而SVM的理解和优化相对复杂,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算
logic能做的svm能做,可能准确率有些问题,但是svm能做的logic有的做不了
解决非线性分类问题时,支持向量机采用核函数的机制,LR通常不采用核函数的方法
SVM的损失函数自带正则,也就是为什么SVM经验结构最小化的原因。而LR必须另外在损失函数上添加正则项
所谓经验结构风险最小化,就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项。
感知机
感知机利用误分类最小的策略,求得分离超平面,不过这时的解有无穷多个。
决策树
熵:表示随机变量不确定性的度量。当p=0或1时,随机变量没有不确定性。熵取值越大,随机变量不确定性最大。
条件熵H(Y|X):在已知随机变量X的条件下随机变量Y的不确定性。定义为X给定条件下Y的条件概率分布的熵对X的数学期望。
信息增益Gain(D,a):得知特征X的信息而使得类Y的信息的不确定性减少的程度。越大越好。
信息增益比:以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。使用信息增益比可以对这一问题进行校正。信息增益比:特征A对训练数据集D的信息增益比定义为其信息增益与训练数据集D关于特征A的值的熵之比。越大越好。
基尼指数:代表了从样本中任意选择两个样本,类别不一致的概率,所以基尼指数越小,代表样本纯度越高。分类问题中,假设有K个类,样本点属于第K类的概率为Pk,则概率分布的基尼指数定义为:属性A的基尼指数定义为属性A各类样本比率的基尼指数和:
ID3算法:在决策树各个节点上应用信息增益准则选择特征,递归的构建决策树。具体方法是:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归的调用以上方法,构建决策树;直到所有特征的信息增益均很小或者没有特征可以选择为止。最后得到一个决策树。ID3相当于用极大似然法进行概率模型的选择。
ID4.5算法:计算特征集A中各个特征对数据集D的信息增益比,选择信息增益比最大的特征;
剪枝:过拟合的原因在于学习时过多的考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树。解决这个问题的办法是考虑决策树的复杂度,对已生成的决策树进行简化。具体的,剪枝从已生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点,从而简化分类树模型。决策树剪枝往往通过极小化决策树整体的损失函数来实现。损失函数定义为:
剪枝就是当α确定时,选择损失函数最小的模型,即损失函数最小的子树。
当α值确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度越高。
子树越小,模型的复杂度越低,但是往往与训练数据的拟合不好
损失函数正好表示了对两者的平衡。
CART(分类与回归树)
最小二乘回归树
ID3使用信息增益作为选择特征的准则;C4.5使用信息增益比作为选择特征的准则;CART使用Gini指数作为选择特征的准则。
ID3:熵表示变量不确定性程度,熵越小,越确定,说明纯度越高,也就是数据越趋于一致,这是我们希望划分之后每隔子节点的样子。
信息增益越大,意味着使用属性a来进行划分锁获得的纯度提升越大。
ID3仅仅适合于二分类问题。只能处理离散特征
C4.5:克服了ID3只能处理离散属性的问题,以及信息增益偏向选择取值较多特征的问题,使用信息增益比来选择特征。选择信息增益比最大的作为最优特征。
C4.5处理连续特征是先将特征取值排序,以连续两个值中间值作为划分标准。尝试每一种划分,并计算修正后的信息增益,选择信息增益最大的分裂点作为该属性的分裂点
CART:既可以用于分类问题,也可以用于回归问题。CART生成的数必须是二叉树。也就是无论回归还是分类问题,无论特征是离散还是连续,无论属性取值有多个还是两个,内部节点只能根据属性值进行二分。
回归树中,使用平方误差最小化准则来选择特征并进行划分。每个叶节点给出的预测值,是划分到该叶子节点的所有样本目标的均值,这只是在给定划分情况下最小化平方误差
分类树中,使用Gini指数最小化准则来选择特征并进行划分;Gini指数表示集合的不确定性,或者不纯度。基尼指数越大,集合不确定性越高,不纯度也越大。基尼指数是为了最小化误分类的概率。
信息增益vs信息增益比:信息增益总偏向于选取值较多的属性。信息增益比在此基础上增加了一个罚项,解决了这个问题
Gini指数vs熵:都可以表示数据不确定性,不纯度。但是有两个区别:
Gini指数的计算不需要对数运算,更加高效
Gini指数更偏向于连续属性,熵更偏向于离散属性
SVM支持向量机
支持向量:在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例成为支持向量。
合页损失函数:
用线性分类方法求解非线性分类问题分为两步:
首先使用一个变换将原空间的数据映射到新空间
然后在新空间里用线性分类学习方法从训练数据中学习分类模型。核技巧就属于这样的方法。
常用核函数:
多项式核函数
高斯核函数
字符串核函数
SMO(序列最小最优化算法)
SMO算法是支持向量机学习的一种快速算法,其特点是不断的将原二次规划问题分解为只有两个变量的二次规划子问题,并对子问题进行解析求解,知道所有变量满足KKT条件为止。这样通过启发式的方法得到原二次规划问题的最优解。因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但在总体上还是很高效。
SVM优点
可用于线性/非线性分类,也可用于回归,泛化错误率低,也就是说具有良好的学习能力,且学到的结果具有很好的推广性
可以解决小样本情况下的机器学习问题,可以解决高维问题,可以避免神经网络结构选择和局部极小点
SVM是最好的现成的分类器,现成是指不加修改可直接使用。并且能够得到较低的错误率,SVM可以对训练集之外的数据点做很好的分类决策。能找出对任务至关重要的关键样本
有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题
最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了维数灾难
SVM缺点:
训练时间长。当采用SMO算法时,由于每次都需要挑选一对参数,因此时间复杂度为O(N^2),其中N为训练样本的数量
当采用核技巧时,如果需要存储核矩阵,则空间复杂度为O(N^2)
模型预测时,预测时间与支持向量的个数成正比。当支持向量数量较大时,预测计算复杂度较高
对参数调节和核函数的选择敏感
因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。
Bagging:从原始数据集选择s次后得到s个新数据集的一种技术,新数据集和原始数据集大小相等,每个数据集都是通过在原始数据集中随机选择一个样本来进行替换得到,也就是新数据集可以出现重复的值,而原始数据集中的某些值在新集合中则不再出现。s个数据集建好后就可以应用这s个分类器进行分类。与此同时,选择分类器投票结果中最多的类别作为最后的分类结果。
随机森林(random forest,RF):是bagging的一个变体,在以决策树为基学习器构建bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择,具体来说就是传统决策树在选择划分属性时是在当前节点的属性集合(假设有d个属性)中选一个最优属性,而在RF中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。
参数k控制了随机性的引入程度,若令k=d,则基决策树的构建与传统的决策树相同,若令k=1,则是随机选择一个属性用于划分,一般情况下,推荐值k=log2d
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于集成学习。
随机:先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分
森林:成百上千棵决策树就可以叫做森林。每棵决策树都是一个分类器,那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这是一种最简单的bagging思想
随机森林特点:
能够有效运行在大数据集上,能够处理具有高维特这的输入样本,而且不需要降维
能够评估各个特征再分类问题上的重要性。
在生成过程中,能够获取到内部生成误差的一种无偏估计
对于缺省值问题也能够获得很好的结果
引入了两个随机性:随机选择样本和随机选择特征进行训练。两个随机性的引入对随机森林的分类性能至关重要。由于他们的引入使得随机森林不容易陷入过拟合,并且具有很好的抗噪能力
boosting:采用重赋权法迭代的训练基分类器:
每一轮的训练数据样本赋予一个权重,并且每一轮样本的权值分布依赖上一轮的分类结果
及分类器之间采用序列式的线性加权方式进行组合
分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能
样本选择上
bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的
boosting:每一轮的训练集不变,只是训练集中每个样例 在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整
样例权重
bagging:使用均匀取样,每个样例的权重相等
boosting:根据错误率不断调整样例的权值,错误率越大则权重越大
预测函数
bagging:所有预测函数的权重相等
boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重
并行计算
bagging:各个预测函数可以并行生成
boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果
方差偏差
bagging:再取样,然后再每个样本上训练出来的模型去平均,所以降低模型的方差
boosting:每次迭代都根据上一次迭代的预测结果对样本加权,所以迭代不断进行,误差越来越小,所以bias会不断降低
随机森林=bagging+决策树
提升树=adaboost+决策树
GBDT=Gradient Boosting+决策树
随机森林RF
是bagging的扩展变体,它在以决策树为基学习器构建bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,因此RF可以概括为4个部分:
随机选择样本(放回抽样)
随机选择特征
构建决策树
随机森林投票(平均)
随机选择样本和bagging相同,随机选择特征是指在树的构建中,会从样本集的特征集合中随机选择部分特征,然后再从这个子集中选择最优的属性用于划分,这种随机性导致随机森林的偏差会有稍微的增加(相比单棵树),但是由于随机森林的平均特性,会使得它的方差减小,而且方差的减小补偿了偏差的增大,因此总体而言是更好的模型。在决策树构建时,RF每颗决策树都最大可能的进行生长而不进行剪枝,在对预测输出进行结合时,RF通常对分类问题使用简单投票法,回归任务使用简单平均法。
RF与bagging对比:
RF的起始性能较差,特别当只有一个基学习器时,随着学习期数目增多,随机森林通常会收敛到更低的泛化误差。
随机森林的训练效率也会高于bagging,因为在单个决策树的构建中,bagging使用的是确定性决策树,在选择特征划分点时,要对所有的特征进行考虑,而随机森林使用的是随机性特征数,只需要考虑特征的子集。
影响随机森林分类结果的因素:
森林中任意两棵树的相关性:相关性越大,错误率越大
森林中每棵树的分类能力:每棵树的分类器能力越强,整个森林的错误率越低
优点:
数据集上表现良好,相对于其他算法有较大的优势(训练速度,预测准确度)。比单决策树能学到特征之间的相互影响且不容易过拟合
能够处理很高维的数据,并且不用特征选择(因为特征子集是随机选取的),而且在训练完后,给出特征重要性。
容易并行化,因为树与树之间是相互独立的。
对于不平衡的数据集可以平衡误差。相比svm,不是很怕特征缺失,因为待选特征也是随机选取。
缺点:在噪声较大的分类或者回归问题上会过拟合。相比单一决策树,其随机性让我们难以对模型进行解释。
Adaboost
Adaboost优缺点:
优点:泛化错误率低,容易编码,可以应用在大部分分类器上,无参数调整
缺点:对离群点敏感
GBDT( Gradient Boosting Decision Tree):以分类树或回归树(决策树)为基本分类器的提升方法。boosting算法都是一个迭代的过程,每一次新的训练都为了改进上一次的结果。GBDT核心在于:每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得到真实值的累加量。其适用面广,离散或连续的数据都可以处理,几乎可用于所有回归问题(线性/非线性),也可用于二分类问题(设定阈值,大于阈值为正例,反之为负例)。缺点是由于弱分类器的串行依赖,导致难以并行训练数据。
随机森林RF与GBDT的区别:
rf采用bagging思想,gbdt采用boosting思想。bagging采用有放回的均匀取样,而boosting根据错误率来取样(boosting初始化时对每个训练样例赋相等的权重1/n,然后用该算法对训练集训练t轮,每次训练后对训练失败的样例赋以较大的权重),因此boosting的分类精度优于bagging。bagging的训练集的选择是随机的,各训练集之间相互独立,弱分类器可并行,而boosting的训练集的选择与前一轮的学习结果有关,是串行的。
组成随机森林的树可以是回归树和分类树,而gbdt只能由回归树组成
组成随机森林的树可以并行生成,gbdt只能串行生成
对于最终输出结果而言,随机森林采用多数投票;而gbdt是将所有结果累加起来,或者加权累加起来。
随机森林对异常值不敏感,gbdt对异常值敏感
随机森林对训练集一视同仁,gbdt是基于权值的弱分类器的集成
随机森林是通过减少模型的方差提高性能;gbdt是通过减少模型的偏差提高性能
XGboost:是GBDT的高效实现,基学习期除了可以是CART也可以是线性分类器。
xgboost在目标函数中显式的加上了正则化项,基学习为CART时,正则化项与树的叶子结点的数量和叶子节点的值有关
GBDT中使用LOSS Function对f(x)的一阶导数计算出伪残差用于学习生成fm(x),xgboost不仅使用到了一阶导数,还使用二阶导数
上面提到CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lambda,gama与正则化相关
在无监督学习中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。无监督包括聚类、密度估计、异常检测等。
1.K-Means
算法步骤
随机选择k个聚类的初始中心(k是指定的)
对任意一个样本点,求其到k个聚类中心的距离,将样本点归类到距离最小的中心的聚类
然后计算每个聚类的均值,更新每一个簇的中心
反复2-3步,直到聚类中心不变或者变化小于阈值(自己设定)结束
k如何选取:一般k是根据经验,对数据分析。肘部法则,kmeans聚类效果评价准则是SSE,是计算所有点到相应簇中心的距离均值,当然k越大SSE越小,那要求出随着k值变化SSE的变化规律,找到SSE减幅最小的k值,这时k应该是相对比较合理的值。
K-means优点:计算时间短,速度快。当簇接近高斯分布时,它的效果最好
缺点:
收敛慢,复杂度高
只能发现球状的cluster,不能发现非凸性状的簇,或大小差别很大的簇。
需要样本存在均值(限定数据种类),不能计算均值的不能用
需要确定k的个数
对噪声和离群点敏感,如果簇中含有异常点,将导致均值偏离很严重。因为均值体现的是数据集的整体特征,容易掩盖数据本身的特性 。比如1,2,3,4,100.均值为22,严重偏离大多数,如果改成中位数3,在该例子中更稳妥。这种聚类也叫k-mediods聚类
只能保证局部最优,不一定是全局最优。可以使用K-means++
k-mediods算法:由于kmeans对噪声及异常值敏感,因此提出k-mediods方法
1.首先随机选取一组聚类样本作为中心点集
2.每个中心点对应一个簇
3.计算各个样本点到各个中心点的距离(欧几里得距离),将样本点放入距离中心点最短的那个簇中
4.计算各个簇中,聚簇内各样本点距离的绝对误差最小的点,作为新的中心点
5.如果新的中心点集与原中心点集相同,算法终止
6.如果新的中心点集与原中心点集不完全相同,执行2
kmeans++:由于kmeans算法的分类结果会受到初始点的选取而有所区别,因此提出kmeans++。
其实也只是对初始点的选择有改进而已,其他步骤都一样。初始质心选取的基本思路就是,初始的聚类中心之间的相互距离要尽可能的远。具体过程如下:
1.随机选取一个样本作为第一个聚类中心c1;
2.计算每个样本与当前已有聚类中心的最短距离(即与最近一个聚类中心的距离),用D(x)表示;
这个值越大,表示被选取作为聚类中心的概率越大
最后用轮盘法选出下一个聚类中心
3.重复步骤2,直到选出k个聚类中心。选出初始点后,就继续使用标准的kmeans算法了
2.学习向量量化(LVQ):与kmeans类似,试图找到一组原型向量来刻画聚类结构,与一般聚类不同的是,LVQ假设样本数据带有类别标签,学习过程利用样本的这些监督信息来辅助聚类。
LVQ的目标是学得一组n维原型向量{P1,P2,P3,,,,Pq},每个原型向量代表一个聚类簇。簇标记ti∈Y
2-12行对原型向量进行迭代优化。在每一轮迭代中,算法随机选取一个有标记的训练样本,找出与其距离最近的原型向量,并根据两者的类别标记是否一致来对原型向量进行相应的更新。在第12行中,若算法的 停止条件已满足(已达到最大迭代轮数,或原型向量更新很小甚至不再更新),将当前原型向量作为最终结果返回。
6-·0行是如何更新原型向量。直观上对样本xj,若最近的原型向量pi* 与xj的类别标记相同,则令pi*向xj的方向靠拢,否则原型向量与xj之间的距离将增大。
3.高斯混合聚类:采用概率模型来表达聚类原型
4.密度聚类:算法假设聚类结构能通过样本分布的紧密程度确定。DBSCAN是密度聚类算法,它基于一组“邻域”参数来刻画样本分布的紧密程度。
5.层次聚类:试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用自底向上的聚合策略,也可以采用自顶向下的分拆策略。AGNES是一种采用自底向上聚合策略的层次聚类算法。它先将数据集中的每个样本看做一个初始聚类簇,然后再算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。
在1-9行,算法先对仅含一个样本的初始聚类簇和相应的距离矩阵进行初始化;然后11-23行,AGNES不断合并距离最近的聚类簇。并对合并得到的聚类簇的距离矩阵进行更新;上述过程不断重复,直到达到预设的聚类簇数。
t-SNE聚类: https://mp.weixin.qq.com/s?__biz=MzU2OTA0NzE2NA==&mid=2247490623&idx=1&sn=f70c4c215b40bbd305ea4112b65c9c2e&scene=21#wechat_redirect
K-Means与层次聚类的区别:
层次聚类不能很好的处理大数据,但是K-Means聚类可以。是因为K-Means的事件复杂度是线性的,即O(n),而层次聚类的事件复杂度是二次方,即O(n^2)
在K-Means聚类中,因为我们初始化的时候,会任意选择不同的簇(cluster),所以所次运行算法产生的结果可能会有所不同。然而层次聚类中使可重现的。
当簇(cluster)的性状是超球形时(如2D中的圆,3D中的球),K-means表现的较好
K-Means不允许嘈杂的数据,而在层次中我们可以直接使用有宗盛的数据进行聚类。
PCA,主成分分析
降维的原因:
去除噪声,降低算法计算开销
使数据显示更加容易,使数据集更容易使用
计算过程
将原始数据按列组成n行m列矩阵X
将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
求出协方差矩阵
求出协方差矩阵的特征值及对应的特征向量
将特征向量按对应特征值大小从上到下按行排列成矩阵,取钱k行组成矩阵P
Y=PX即为降维到K维后的数据
降维后低维空间的维数d'通常是有用户事先指定,或通过在d'值不同的低维空间中对k近邻分类器(或其他开销较小的学习期)进行交叉验证来选取较好的d’值。对PCA,还可以从重构的角度设置一个重构阈值,比如t=95%,然后选取使下式成立的最小d'值:(λi/λ)>=t.
降维的好处:
舍弃这部分信息之后能使采样密度增大,这正是降维的重要动机
当数据受到噪声影响时,最小的特征值所对应的特征向量往往和噪声有关,将他们舍弃能在一定程度上起到去燥的效果。
SVD奇异值分解
很多情况下数据中的一小段携带了数据集中的大部分信息,其他信息则要么是噪声,要么是毫不相关的信息。矩阵分解可以将原始矩阵表示成新的易于处理的形式。
在某个奇异值(r个)之后,其他奇异值由于值太小,则忽略置为0,就一位这数据集中仅有r个重要特征,而其余特征都是噪声或冗余特征,如下图: