飞鸟各投林

导航

机器学习面试问题1

本机器学习面试问题系列博客共有10章,从1到10分别总结了机器学习面试的经典常用问题,也是阿里面试常用考题,系小编呕心沥血之作,希望大家能够在参考之余和小编积极交流,欢迎评论,欢迎来踩!希望能对和小编一样的机器学习爱好者提供实质性帮助。

基本知识

监督与非监督的区别

监督:输入的数据有明确的标识,可建立模型做预测,多用于分类和回归。 
非监督:数据并不被特别标识,需要建立模型得出数据的内在结构,多用于聚类。

L1和L2的区别

L1范数(L1 norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。 
比如 向量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范数可以防止过拟合,提升模型的泛化能力。

生成模型和判别模型的区别

生成模型:由数据学习联合概率密度分布P(X,Y),求出条件概率分布P(Y|X)作为预测的模型,即生成模型P(Y|X)=P(X,Y)/P(X),再利用它分类。 
判别模型:由数据直接学习决策函数y=f(x)或者条件概率分布P(Y|X)作为预测的模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。 
典型的判别模型包括K近邻、感知机、决策树、支持向量机等。 
由生成模型可以得到判别模型,但由判别模型得不到生成模型。生成模型学习联合概率分布P(X,Y),而判别模型学习条件概率分布P(Y|X)。

算法的优缺点

K-means

1.优点: 
1)算法快速、简单。 
2)对大数据集有较高的效率并且是可伸缩性的。 
3)时间复杂度近于线性,为O(nkt),适合挖掘大规模数据集。 
2.缺点: 
1)k是事先给定的,这个k值的选定是非常难以估计的。 
2)在该算法中首先需要根据初始聚类中心来确定一个初始划分,然后对初始聚类中心进行优化。这个初始聚类中心的选择对聚类结果又较大影响,一旦初始值选择的不好,可能无法得到有效的聚类结果。 
3)从K-means算法中可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此数据量非常大时,算法的时间开销也是非常大的。 
3.改进: 
基于熵值法及动态规划的改进k-means算法。 
熵值法用来修订算法的距离计算公式,以提高算法的聚类精确程度, 动态规划算法用来确定算法的初始聚类中心。

KNN

1.优点: 
1)简单,易于理解,易于实现,无需估计参数,无需训练。 
2) 适合对稀有事件进行分类。 
3)特别适合于多分类问题(multi-modal,对象具有多个类别标签), kNN比SVM的表现要好。 
2.缺点: 
1)该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。 该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。 
2)该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。 
3)可理解性差,无法给出像决策树那样的规则。 
4)类别评分不是规则化的。 
3.改进策略: 
针对以上算法的不足,算法的改进方向主要分成了分类效率和分类效果两方面。 
分类效率:事先对样本属性进行约简,删除对分类结果影响较小的属性,快速的得出待分类样本的类别。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。 
分类效果:采用权值的方法(和该样本距离小的邻居权值大)来改进,Han等人于2002年尝试利用贪心法,针对文件分类实做可调整权重的k最近邻居法WAkNN (weighted adjusted k nearest neighbor),以促进分类效果;而Li等人于2004年提出由于不同分类的文件本身有数量上有差异,因此也应该依照训练集合中各种分类的文件数量,选取不同数目的最近邻居,来参与分类。

Apriori

是经典的关联规则数据挖掘算法。 
1.优点: 
1)简单、易理解。 
2)数据要求低。 
2.缺点: 
1)在每一步产生候选项目集时循环产生的组合过多,没有排除不应该参与组合的元素。 
2)每次计算项集的支持度时,都对数据库中的全部记录进行了一遍扫描比较,如果是一个大型的数据库时,这种扫描会大大增加计算机的I/O开销。 
3.改进: 
1)利用建立临时数据库的方法来提高Apriori算法的效率。 
2)Fp-tree 算法。以树形的形式来展示、表达数据的形态;可以理解为水在不同河流分支的流动过程。 
3)垂直数据分布。相当于把原始数据进行行转列的操作,并且记录每个元素的个数。

posted on 2017-03-31 23:44  飞鸟各投林  阅读(322)  评论(0编辑  收藏  举报