PCA的思想是将n维特征映射到k维上(k
2、给定一个数据集,这个数据集有缺失值,且这些缺失值分布在离中值有1个标准偏差的范围内。百分之多少的数据不会受到影响?为什么?
由于数据分布在中位数附近,先假设这是一个正态分布。在一个正态分布中,约有68%的数据位于跟平均数(或众数、中位数)1个标准差范围内的,那样剩下的约32%的数据是不受影响的。因此,约有32%的数据将不受到缺失值的影响。
3、给你一个癌症检测的数据集,你已经建好了分类模型,取得了96%的精度。如果不满意你的模型性能的话,你可以做些什么呢?
癌症检测结果是不平衡数据,在不平衡数据集中,精度不应该被用来作为衡量模型的标准,因为96%(按给定的)可能只有正确预测多数分类,但我们感兴趣是那些少数分类(4%),是那些被诊断出癌症的人。
因此,为了评价模型的性能,应该用灵敏度(真阳性率),特异性(真阴性率),F值用来确定这个分类器的“聪明”程度。如果在那4%的数据上表现不好,我们可以采取以下步骤:
1.使用欠采样、过采样或SMOTE让数据平衡。
2.通过概率验证和利用AUC-ROC曲线找到最佳阀值来调整预测阀值。
3.给分类分配权重,那样较少的分类获得较大的权重。
4.使用异常检测。
4、对于不平衡数据集,有什么应对方案?
即数据集中,每个类别下的样本数目相差很大。例如,在一个二分类问题中,共有100个样本(100行数据,每一行数据为一个样本的表征),其中80个样本属于class1,其余的20个样本属于class2,class1:class2=80:20=4:1,这便属于类别不均衡。当然,类别不均衡问题同样会发生在多分类任务中。
解决不平衡分类问题的策略可以分为两大类:一类是从训练集入手,通过改变训练集样本分布,降低不平衡程度;另一类是从学习算法入手,根据算法在解决不平衡问题时的缺陷,适当地修改算法使之适应不平衡分类问题。平衡训练集的方法主要有训练集重采样(re-sampling)方法和训练集划分方法。学习算法层面的策略包括分类器集成、代价敏感学习和特征选择方法等。
5、什么是K-fold交叉验证?
K-fold交叉验证就是把原始数据随机分成K个部分,在这K个部分中选择一个作为测试数据,剩余的K-1个作为训练数据。交叉验证的过程实际上是将实验重复做K次,每次实验都从K个部分中选择一个不同的部分作为测试数据,剩余的数据作为训练数据进行实验,最后把得到的K个实验结果平均,用于评价模型的泛化能力,从而进行模型选择。
6、简述准确率(accuracy)、召回率(Recall)统计量的含义?
召回率(Recall)是覆盖面的度量,度量有多个正例被分为正例的比例(查全率):
准确率(accuracy)有时候准确率高并不能代表一个算法就好:
精确率(precision)表示被分为正例的示例中实际为正例的比例(查准率)。
7、简述F值(F-Measure)统计量的含义?
F-Measure是Precision和Recall加权调和平均:
若参数a=1时即F1-Measure,是综合这二者指标的评估指标,用于综合反映整体的指标。当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。
例如有一个池塘里面共有1000条鱼,含100条鲫鱼。机器学习分类系统将这1000条鱼全部分类为“不是鲫鱼”,那么准确率也有90%(显然这样的分类系统是失败的),然而查全率为0%,因为没有鲫鱼样本被分对。这个例子显示出一个成功的分类系统必须同时考虑Precision和Recall,尤其是面对一个不平衡分类问题。
8、简述ROC曲线统计量的含义?
ROC曲线X轴为falsepositiverate(FPR),Y轴为truepositiverate(TPR):
考虑ROC曲线图中的四个点和一条线。第一个点(0,1),即FPR=0,TPR=1,这意味着FN(falsenegative)=0,并且FP(falsepositive)=0。Wow,这是一个完美的分类器,它将所有的样本都正确分类。第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。第三个点,(0,0),即FPR=TPR=0,即FP(falsepositive)=TP(truepositive)=0,可以发现该分类器预测所有的样本都为负样本(negative)。类似的,第四个点(1,1),分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。
考虑ROC曲线图中的虚线y=x上的点。这条对角线上的点其实表示的是一个采用随机猜测策略的分类器的结果,例如(0.5,0.5),表示该分类器随机对于一半的样本猜测其为正样本,另外一半的样本为负样本。
(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。
9、如何画出一个ROC曲线?
Insignaldetectiontheory,areceiveroperatingcharacteristic(ROC),orsimplyROCcurve,isagraphicalplotwhichillustratestheperformanceofabinaryclassifiersystemasitsdiscriminationthresholdisvaried。20个测试样本,“Class”一栏表示每个测试样本真正的标签,p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。
我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:
当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。
其实,我们并不一定要得到每个测试样本是正样本的概率值,只要得到这个分类器对该测试样本的“评分值”即可(评分值并不一定在(0,1)区间)。评分越高,表示分类器越肯定地认为这个测试样本是正样本,而且同时使用各个评分值作为threshold。
10、简述PR曲线统计量的含义?
注:ROC与PR类似,只是横坐标与纵坐标换成成了FPR与TPR。
11、什么是SMOTE算法?
SyntheticMinorityOversamplingTechnique即合成少数类过采样技术:
1,对于少数类中每一个样本x,以欧氏距离为标准计算它到少数类样本集Smin中所有样本的距离,得到其k近邻。
2,根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本x,从其k近邻中随机选择若干个样本,假设选择的近邻为Xn。
3,对于每一个随机选出的近邻Xn,分别与原样本按照如下的公式构建新的样本:
对于新产生的青色数据点与其他非青色样本点距离最近的点,构成一对Tomeklink,如图框。
定义规则:
以新产生点为中心,Tomeklink的距离为范围半径,去框定一个空间,空间内的少数类的个数/多数类的个数<最低阀值,认为新产生点为“垃圾点”,应该剔除或者再次进行smote训练;空间内的少数类的个数/多数类的个数>=最低阀值的时候,在进行保留并纳入smote训练的初始少类样本集合中去抽样所以,剔除左侧的青色新增点,只保留右边的新增数据如下:
12、简述G-mean统计量的含义?
13、简述AUC曲线统计量的含义?
AUC(AreaUnderCurve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
首先AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。
显然A点为最优点,ROC曲线越靠近A点代表模型表现越好,曲线下面积(AreaUnderCurve,AUC)越大,AUC是衡量模型表现好坏的一个重要指标。
14、SMOTE算法有什么缺点?如何改进?
由于对每个少数类样本都生成新样本,因此容易发生生成样本重叠(Overlapping)的问题,为了解决SMOTE算法的这一缺点提出一些改进算法,其中的一种是Borderline-SMOTE算法,该方法把少数类样本分为安全样本、边界样本和噪声样本3类,并对边界样本进行近邻插值,考虑到了少数类内部的分布不均的现象,但对边界样本之间的差异未做考虑。
15、简述什么是调和平均数并指出其应用及性质?
调和平均的哲学意义是在一个过程中有多少条平行的路径,经过这些平行的路径后,等效的结果就是调和平均。
电子散射:电子在导体里流动并不是一帆风顺的,他会被杂质散射,晶格散射,缺陷散射,这就是一个电子上路后的三种平行的路径,最后电子迁移率可以用调和平均等效,即Matthiessen’sRule。
电子空穴复合:当材料被光照射后,电子吸收光子能量,从价带激发到导带,这电子空穴也有两条路径复合,辐射复合和非辐射复合:
①调和平均数易受极端值的影响,且受极小值的影响比受极大值的影响更大。
②只要有一个标志值为0,就不能计算调和平均数。
16、EasyEnsemble算法?
记多数类的样本集合为L,少数类的样本集合为S,用r=|S|/|L|表示少数类与多数类的比例。集成方法(Ensemble)是一个最简单的集成方法,即不断从多数类中抽取样本,使得每个模型的多数类样本数量和少数类样本数量都相同,最后将这些模型集成起来。
17、什么是凸包?
在多维空間中有一群散布各处的点,「凸包」是包覆这群点的所有外壳当中,表面积容积最小的一个外壳,而最小的外壳一定是凸的。
「凸」的定义是:圆形內任意亮点的连线不会经过圆形外部。「凸」並不是指表面呈弧状隆起,事实上凸包是由许多平坦表面组成的。
当数据是线性可分的,凸包就表示两个组数据点的外边界。一旦凸包建立,我们得到的最大间隔超平面(MMH)作为两个凸包之间的垂直平分线。MMH是能够最大限度地分开两个组的线。
18、BalanceCascad算法和EasyEnsemble有什么异同?
这个方法跟EasyEnsemble有点像,但不同的是,每次训练adaboost后都会扔掉已被正确分类的样本,经过不断地扔掉样本后,数据就会逐渐平衡。
fold1:training[1],test[2]
fold2:training[12],test[3]
fold3:training[123],test[4]
fold4:training[1234],test[5]
fold5:training[12345],test[6]
20、常见的过采样方法有哪些以用来应对样本不平衡问题?
我们可以通过欠抽样来减少多数类样本的数量从而达到平衡的目的,同样我们也可以通过,过抽样来增加少数类样本的数量,从而达到平衡的目的。
Randomoversamplingofminorityclass:通过有放回的抽样,不断的从少数类的抽取样本,不过要注意的是这个方法很容易会导致过拟合。我们通过调整抽样的数量可以控制使得r=0.5。
21、给你一个缺失值多于30%的数据集?比方说,在50个变量中,有8个变量的缺失值都多于30%。你对此如何处理?
1.把缺失值分成单独的一类,这些缺失值说不定会包含一些趋势信息。
2.我们可以毫无顾忌地删除它们。
3.或者,我们可以用目标变量来检查它们的分布,如果发现任何模式,我们将保留那些缺失值并给它们一个新的分类,同时删除其他缺失值。
22、什么是协同过滤算法?
协同过滤(CollaborativeFiltering,简称CF)协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你,分UserCF和ItemCF两种。
23、当在解决一个分类问题时,出于验证的目的,你已经将训练集随机抽样地分成训练集和验证集。你对你的模型能在未看见的数据上有好的表现非常有信心,因为你的验证精度高。但是,在得到很差的精度后,你大失所望。什么地方出了错?
在做分类问题时,应该使用分层抽样而不是随机抽样。随机抽样不考虑目标类别的比例。相反,分层抽样有助于保持目标变量在所得分布样本中的分布。
24、在k-means或kNN,我们是用欧氏距离来计算最近的邻居之间的距离。为什么不用曼哈顿距离?
我们不用曼哈顿距离,因为它只计算水平或垂直距离,有维度的限制。另一方面,欧式距离可用于任何空间的距离计算问题。因为,数据点可以存在于任何空间,欧氏距离是更可行的选择。例如:想象一下国际象棋棋盘,象或车所做的移动是由曼哈顿距离计算的,因为它们是在各自的水平和垂直方向的运动。
25、考虑到机器学习有这么多算法,给定一个数据集,你如何决定使用哪一个算法?
机器学习算法的选择完全取决于数据的类型。如果给定的一个数据集是线性的,线性回归是最好的选择。如果数据是图像或者音频,那么神经网络可以构建一个稳健的模型。如果该数据是非线性互相作用的的,可以用boosting或bagging算法。
如果业务需求是要构建一个可以部署的模型,我们可以用回归或决策树模型(容易解释和说明),而不是黑盒算法如SVM,GBM等。
26、什么时候正则化在机器学习中是有必要的?
当模型过度拟合或者欠拟合的时候,正则化是有必要的。这个技术引入了一个成本项,用于带来目标函数的更多特征。因此,正则化是将许多变量的系数推向零,由此而降低成本项。这有助于降低模型的复杂度,使该模型可以在预测上(泛化)变得更好。
27、考虑到机器学习有这么多算法,给定一个数据集,你如何决定使用哪一个算法?
从数学的角度来看,任何模型出现的误差可以分为三个部分。以下是这三个部分:
偏差误差在量化平均水平之上预测值跟实际值相差多远时有用。高偏差误差意味着我们的模型表现不太好,因为没有抓到重要的趋势。
另一方面,方差量化了在同一个观察上进行的预测是如何彼此不同的。高方差模型会过度拟合你的训练集,而在训练集以外的数据上表现很差。
28、OLS是用于线性回归,最大似然是用于逻辑回归。请解释以上描述。
OLS和最大似然是使用各自的回归方法来逼近未知参数(系数)值的方法。简单地说,普通最小二乘法(OLS)是线性回归中使用的方法,它是在实际值和预测值相差最小的情况下而得到这个参数的估计。最大似然性有助于选择使参数最可能产生观测数据的可能性最大化的参数值。
1.由于我们的RAM很小,首先要关闭机器上正在运行的其他程序,包括网页浏览器,以确保大部分内存可以使用。
2.我们可以随机采样数据集。这意味着,我们可以创建一个较小的数据集,比如有1000个变量和30万行,然后做计算。
4.另外我们还可以使用PCA(主成分分析),并挑选可以解释在数据集中有最大偏差的成分。
5.利用在线学习算法,如VowpalWabbit(在Python中可用)是一个可能的选择。
6.利用StochasticGradientDescent(随机梯度下降)法建立线性模型也很有帮助。
7.我们也可以用我们对业务的理解来估计各预测变量对响应变量的影响大小。但是,这是一个主观的方法,如果没有找出有用的预测变量可能会导致信息的显著丢失。
注意:对于第4点和第5点,请务必阅读有关在线学习算法和随机梯度下降法的内容。这些是高阶方法。
30、KNN中的K是如何选取的?
如李航博士的一书「统计学习方法」上所说:
1.如果选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;
2.如果选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。
3.K=N,则完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。
在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(简单来说,就是一部分样本做训练集,一部分做测试集)来选择最优的K值。
31、防止过拟合的方法有哪些?
过拟合的原因是算法的学习能力过强;一些假设条件(如样本独立同分布)可能是不成立的;训练样本过少不能对整个空间进行分布估计。处理方法有:
a.早停止,如在训练中多次迭代后发现模型性能没有显著提高就停止训练;
b.数据集扩增,原有数据增加、原有数据加随机噪声、重采样;
c.正则化d.交叉验证e.特征选择/特征降维。
32、机器学习中为何要经常对数据做归一化?
维基百科给出的解释:1)归一化后加快了梯度下降求最优解的速度;2)归一化有可能提高精度。
1)归一化后加快了梯度下降求最优解的速度:
如下图所示,蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是[1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。
2)归一化有可能提高精度:
一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。
33、什么是欠采样和过采样?
使用不同的数据集。有两种方法使不平衡的数据集来建立一个平衡的数据集:欠采样和过采样。欠采样是通过减少丰富类的大小来平衡数据集,当数据量足够时就该使用此方法。通过保存所有稀有类样本,并在丰富类别中随机选择与稀有类别样本相等数量的样本,可以检索平衡的新数据集以进一步建模。当数据量不足时就应该使用过采样,它尝试通过增加稀有样本的数量来平衡数据集,而不是去除丰富类别的样本的数量。通过使用重复、自举或合成少数类过采样等方法(SMOTE)来生成新的稀有样品。
欠采样和过采样这两种方法相比而言,都没有绝对的优势。这两种方法的应用取决于它适用的用例和数据集本身。另外将过采样和欠采样结合起来使用也是成功的。
34、不平衡数据集处理中基于数据集的应对方案有哪些?
EditedNearestNeighbor(ENN):将那些L类的样本,如果他的大部分k近邻样本都跟他自己本身的类别不一样,我们就将它删除。
RepeatedEditedNearestNeighbor:这个方法就是不断的重复上述的删除过程,直到无法再删除为止。
TomekLinkRemoval:如果有两个不同类别的样本,它们的最近邻都是对方,也就是A的最近邻是B,B的最近邻是A,那么A,B就是Tomeklink。我们要做的就是讲所有Tomeklink都删除掉。那么一个删除Tomeklink的方法就是,将组成Tomeklink的两个样本,如果有一个属于多数类样本,就将该多数类样本删除掉。
35、二分类问题如何转化为一分类问题?
对于二分类问题,如果正负样本分布比例极不平衡,我们可以换一个完全不同的角度来看待问题:把它看做一分类(OneClassLearning)或异常检测(NoveltyDetection)问题。这类方法的重点不在于捕捉类间的差别,而是为其中一类进行建模,经典的工作包括One-classSVM等,如下图所示:
36、如何通过增加惩罚项来提高稀有数据的预测准确率?
通过设计一个代价函数来惩罚稀有类别的错误分类而不是分类丰富类别,可以设计出许多自然泛化为稀有类别的模型。例如,调整SVM以惩罚稀有类别的错误分类。
37、L1和L2有什么区别?
L1范数(L1norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lassoregularization)。
比如向量A=[1,-1,3],那么A的L1范数为|1|+|-1|+|3|。
简单总结一下就是:
L1范数:为x向量各个元素绝对值之和。
L2范数:为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或Frobenius范数。
Lp范数:为x向量各个元素绝对值p次方和的1/p次方。
在支持向量机学习过程中,L1范数实际是一种对于成本函数求解最优的过程,因此,L1范数正则化通过向成本函数中添加L1范数,使得学习得到的结果满足稀疏化,从而方便人类提取特征。
L1范数可以使权值稀疏,方便特征提取。L2范数可以防止过拟合,提升模型的泛化能力。
CNN抓住此共性的手段主要有四个:局部连接/权值共享/池化操作/多层次结构。局部连接使网络可以提取数据的局部特征;权值共享大大降低了网络的训练难度,一个Filter只提取一个特征,在整个图片(或者语音/文本)中进行卷积;池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。
39、实现对比LSTM结构推导,为什么比RNN好?
推导forgetgate,inputgate,cellstate,hiddeninformation等的变化;因为LSTM有进有出且当前的cellinformaton是通过inputgate控制之后叠加的,RNN是叠乘,因此LSTM可以防止梯度消失或者爆炸。
40、请简要说说EM算法?
有时候因为样本的产生和隐含变量有关(隐含变量是不能观察的),而求模型的参数时一般采用最大似然估计,由于含有了隐含变量,所以对似然函数参数求导是求不出来的,这时可以采用EM算法来求模型的参数的(对应模型参数个数可能有多个),EM算法一般分为2步:
E步:选取一组参数,求出在该参数下隐含变量的条件概率值;
M步:结合E步求出的隐含变量条件概率,求出似然函数下界函数(本质上是某个期望函数)的最大值,重复上面2步直至收敛。