机器学习面试问题7
为什么要用逻辑回归
逻辑回归主要解决线性可分问题,模型简单,易于理解和实现,很适合用来学习大数据的问题。另外,逻辑回归做在线学习比较容易,处理速度也快。
SVM和LR的区别:
两种方法都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重.SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器.而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重.两者的根本目的都是一样的.此外,根据需要,两个方法都可以增加不同的正则化项,如l1,l2等等.所以在很多实验中,两种算法的结果是很接近的.
但是逻辑回归相对来说模型更简单,好理解,实现起来,特别是大规模线性分类时比较方便.而SVM的理解和优化相对来说复杂一些.但是SVM的理论基础更加牢固,有一套结构化风险最小化的理论基础,虽然一般使用的人不太会去关注.还有很重要的一点,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算
svm 更多的属于非参数模型,而logistic regression 是参数模型,本质不同.其区别就可以参考参数模型和非参模型的区别就好了.
logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。
LR需要调参,而朴素贝叶斯不需要。
决策树算法是按照什么来分类的
基于实例的特征对实例进行分类。
具体过程是:用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分到叶结点的类中。
朴素贝叶斯公式
讲em算法
最大期望算法,是一种迭代算法,可用于聚类。
该算法用于含有隐变量的概率参数模型的最大似然估计或极大后验概率估计。其中概率模型依赖于无法观测的隐藏变量。
最大期望算法经过两个步骤交替进行计算:
第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;
第二步是最大化(M),最大化在 E 步上求得的最大似然值来计算参数的值。
M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。
总体来说,EM的算法流程如下:
1.初始化分布参数
2.重复直到收敛:
E步骤:估计未知参数的期望值,给出当前的参数估计。
M步骤:重新估计分布参数,以使得数据的似然性最大,给出未知变量的期望估计。
svm中rbf核函数与高斯核函数的比较
径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数。 通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数 , 可记作 k(||x-xc||), 其作用往往是局部的 , 即当x远离xc时函数取值很小。最常用的径向基函数是高斯核函数 ,形式为 k(||x-xc||)=exp{- ||x-xc||^2/(2*σ^2) } 其中xc为核函数中心,σ为函数的宽度参数 , 控制了函数的径向作用范围。
rbf核函数主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。
Gauss径向基函数则是局部性强的核函数,其外推能力随着参数σ的增大而减弱。
说一下svm的实现和运用过程
matlab运用SVM: svmtrain、svmpredict
可参考:
http://blog.sina.com.cn/s/blog_71152aa70101tl62.html
Spark Mlib 运用SVM: SVMWithSGD.train(parsedData, numIterations)
可参考http://blog.sina.com.cn/s/blog_64d9a6ef0101ghvs.html
Opencv运用SVM可参考:
http://www.360doc.com/content/14/0324/10/16345076_363243501.shtml
谈谈DNN
2013年6月18日,据国外媒体报道,微软已于近期推出了一新款语音识别软件,其工作原理是模仿人脑思考方式,从而使该软件的语音识别速度更快,识别准确率也更高。
微软介绍,这种新型语音识别软件采用了名为“深度神经网络”的技术,使得该软件处理人类语音的过程与人脑相似。
多层的好处是可以用较少的参数表示复杂的函数。
在监督学习中,以前的多层神经网络的问题是容易陷入局部极值点。如果训练样本足够充分覆盖未来的样本,那么学到的多层权重可以很好的用来预测新的测试样本。但是很多任务难以得到足够多的标记样本,在这种情况下,简单的模型,比如线性回归或者决策树往往能得到比多层神经网络更好的结果(更好的泛化性,更差的训练误差)。
非监督学习中,以往没有有效的方法构造多层网络。多层神经网络的顶层是底层特征的高级表示,比如底层是像素点,上一层的结点可能表示横线,三角; 而顶层可能有一个结点表示人脸。一个成功的算法应该能让生成的顶层特征最大化的代表底层的样例。如果对所有层同时训练,时间复杂度会太高; 如果每次训练一层,偏差就会逐层传递。这会面临跟上面监督学习中相反的问题,会严重欠拟合。
2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优使原始表示x向上生成的高级表示r和该高级表示r向下生成的x’尽可能一致。方法是
1,首先逐层构建单层神经元,这样每次都是训练一个单层网络。
2,当所有层训练完后,hinton使用wake-sleep算法进行调优。将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其它层则变为了图模型。向上的权重用于”认知“,向下的权重用于”生成“。然后使用Wake-Sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的结点。比如顶层的一个结点表示人脸,那么所有人脸的图像应该激活这个结点,并且这个结果向下生成的图像应该能够表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。
2.1,wake阶段,认知过程,通过外界的特征和向上的权重(认知权重)产生每一层的抽象表示(结点状态),并且使用梯度下降修改层间的下行权重(生成权重)。也就是“如果现实跟我想像的不一样,改变我的权重使得我想像的东西就是这样的“。
2.2,sleep阶段,生成过程,通过顶层表示(醒时学得的概念)和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念“。
由于自动编码器(auto-encoder,即上面说的神经网络。广义上的自动编码器指所有的从低级表示得到高级表示,并能从高级表示生成低级表示的近似的结构,狭义上指的是其中的一种,谷歌的人脸识别用的)有联想功能,也就是缺失部分输入也能得到正确的编码,所以上面说的算法也可以用于有监督学习,训练时y做为顶层网络输入的补充,应用时顶层网络生成y’。
CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)
简单说说决策树分析
决策树分析法是一种运用概率与图论中的树对决策中的不同方案进行比较,从而获得最优方案的风险型决策方法。图论中的树是连通且无回路的有向图,入度为0的点称为树根,出度为0的点称为树叶,树叶以外的点称为内点。决策树由树根(决策节点)、其他内点(方案节点、状态节点)、树叶(终点)、树枝(方案枝、概率枝)、概率值、损益值组成。
它利用了概率论的原理,并且利用一种树形图作为分析工具。其基本原理是用决策点代表决策问题,用方案分枝代表可供选择的方案,用概率分枝代表方案可能出现的各种结果,经过对各种方案在各种结果条件下损益值的计算比较,为决策者提供决策依据。
具体步骤为:
(1)绘制决策树图。从左到右的顺序画决策树,此过程本身就是对决策问题的再分析过程。
(2)按从右到左的顺序计算各方案的期望值,并将结果写在相应方案节点上方。期望值的计算是从右到左沿着决策树的反方向进行计算的。
(3)对比各方案的期望值的大小,进行剪枝优选(选期望大的)。在舍去备选方案枝上,用“=”记号隔断。
推荐系统中基于svd方法
SVD:奇异值分解。
SVD可以理解为:将一个比较复杂的矩阵用更小更简单的3个子矩阵的相乘来表示,这3个小矩阵描述了大矩阵重要的特性。
数据集中,行代表用户user,列代表物品item,其中的值代表用户对物品的打分。基于SVD的优势在于:用户的评分数据是稀疏矩阵,可以用SVD将原始数据映射到低维空间中,然后计算物品item之间的相似度,可以节省计算资源。
整体思路:先找到用户没有评分的物品,然后再经过SVD“压缩”后的低维空间中,计算未评分物品与其他物品的相似性,得到一个预测打分,再对这些物品的评分从高到低进行排序,返回前N个物品推荐给用户。
实现代码主要分为5部分:
第1部分:加载测试数据集;
第2部分:定义三种计算相似度的方法;
第3部分:通过计算奇异值平方和的百分比来确定将数据降到多少维才合适,返回需要降到的维度;
第4部分:在已经降维的数据中,基于SVD对用户未打分的物品进行评分预测,返回未打分物品的预测评分值;
第5部分:产生前N个评分值高的物品,返回物品编号以及预测评分值。
优势在于:用户的评分数据是稀疏矩阵,可以用SVD将数据映射到低维空间,然后计算低维空间中的item之间的相似度,对用户未评分的item进行评分预测,最后将预测评分高的item推荐给用户。
详细可参见:
http://www.cnblogs.com/lzllovesyl/p/5243370.html
SVM有哪些优势,(x,y,z)三个特征如何用径向基核函数抽取第四维特征
5 支持向量机(SVM)的优缺点
SVM的优点:
1) 可以解决小样本情况下的机器学习问题。
2)可以提高泛化性能。
3)可以解决高维问题。
4)可以解决非线性问题。
5)可以避免神经网络结构选择和局部极小点问题。
SVM的缺点:
1) 对缺失数据敏感。
2)对非线性问题没有通用解决方案,必须谨慎选择Kernelfunction来处理。
可参考:
http://www.zhizhihu.com/html/y2010/2103.html
各类算法的优缺点可参考:
http://bbs.pinggu.org/thread-2604496-1-1.html