01.10 机器学习面试篇——蚂蚁金服电话面试二

前言

首先对上篇文章的问题做一些解释:

  1. 上篇文中提到的两道面试题只是其中之二,不是全部。

  2. 不是说你答出来了就可以进蚂蚁金服了,差的很远呢,还问到了别的问题,还要面试至少3轮,而且每一轮都有可能被淘汰。

  3. 有的同学问有没有面试的套路?这个我只能说没有固定的套路,但是有一些100%你需要掌握的算法:逻辑回归,决策树,随机森林,神经网络,朴素贝叶斯。这几个是最基本的,如果这些都不能熟练掌握的话,基本就不用面试了。最好是一个算法对应一个实际应用的例子,可以到kaggle上面找数据集去实践,kaggle是全世界目前最好的数据科学竞赛平台。上面列举的算法在以前的文章都基本都有讲解,同学们可以去看看。

SVM

今天继续面试题,放弃了之前的第一视角,直接回答。

问题是:“我看你简历中写到了精通svm,那你说一下svm中的难点是什么?以及你是怎么解决这个难点的?”

答:SVM中文名就是支持向量机,是一种二分类算法,通过在高维空间中构造超平面实现对样本的分类。最简单的情形是训练数据线性可分的情况,此时的支持向量机就被弱化为线性可分支持向量机,可视为广义支持向量机的一种。

举个例子:

线性可分的数据集可以简化为二维平面上的点集。在平面直角坐标系中,如果有若干个点全部位于 x轴上方,另外若干个点全部位于 x轴下方,这两个点集就共同构成了一个线性可分的训练数据集,而 x轴就是将它们区分开来的一维超平面,也就是直线。假定 x轴上方的点全部位于直线 y=1上及其上方,x轴下方的点全部位于直线 y=−2上及其下方。这样的话,任何平行于 x轴且在 (-2, 1) 之间的直线都可以将这个训练集分开。有的同学可能会问:在这么多划分超平面中,哪一个是最好的?

这个同学问的好,猛一看,最好的分界线应该是直线 y=−0.5,因为这条分界线正好位于两个边界的中间,与两个类别的间隔可同时达到最大。当训练集中的数据因噪声干扰而移动时,这个最优划分超平面的划分精确度所受的影响最小,就具有最强的泛化能力。在高维特征空间上,划分超平面可以用简单的线性方程描述 wT⋅x+b=0 式中的 n维向量, w为法向量,决定了超平面的方向;b为截距,决定了超平面和高维空间中原点的距离。划分超平面将特征空间分为两个部分。位于法向量所指向一侧的数据被划分为正类,其分类标记 y=+1;位于另一侧的数据被划分为负类,其分类标记 y=−1。线性可分支持向量机就是在给定训练数据集的条件下,根据间隔最大化学习最优的划分超平面的过程。

核技巧:

针对非线性的问题,如果能将样本从原始空间映射到更高维度的特征空间之上,在新的特征空间上样本就可能是线性可分的。如果样本的属性数有限,那么一定存在一个高维特征空间使样本可分。将原始低维空间上的非线性问题转化为新的高维空间上的线性问题,这就是核技巧的基本思想。

核技巧应用到支持向量机中时,原始空间与新空间之间的转化是通过非线性变换实现的。假设原始空间是低维欧几里得空间X,新空间为高维希尔伯特空间H,则从 X到 H的映射可以用函数

机器学习面试篇——蚂蚁金服电话面试二

核函数可以表示成映射函数内积的形式:

机器学习面试篇——蚂蚁金服电话面试二

核函数有两个特点:

1. 其计算过程是在低维空间上完成的,因而避免了高维空间中复杂的计算;

2. 对于给定的核函数,高维空间 H和映射函数 ϕ的取法并不唯一。而且一方面,高维空间的取法可以不同;另一方面,即使在同一个空间上,映射函数也可以有所区别。

一般的核函数都是正定核函数。正定核函数的充要条件是由函数中任意数据的集合形成的核矩阵都是半正定的,这意味着任何一个核函数都隐式定义了一个成为“再生核希尔伯特空间”的特征空间。不好的核函数会将样本映射到不合适的特征空间,导致分类效果不好。

讲到这里大家应该猜出来了,核函数的选择就是svm中的难点,也是核心问题。

常用的核函数有:

机器学习面试篇——蚂蚁金服电话面试二

为什么叫“支持向量机”,是因为当训练完成后,最终模型只与支持向量有关,而它的关键是如何根据支持向量构建出解,算法的复杂度也主要取决于支持向量的数目。

到这里同学们应该感觉到要精通svm还是有难度的,而且在深度学习兴起之前,机器学习中最流行的,效果很好的就是svm。所以当没有十足把握能把svm理解透测的话,千万不要用精通svm这样的字眼,真正是机器学习出身的面试官看到了很大概率会问,而且会详细问。就像iOS面试的时候如果简历中写了精通runloop各种用法,那不用想了,肯定会问runloop相关问题。但是反过来想,如果你是真的精通svm,那面试起来,很可能是一个加分项而且概率很高。

总结

介绍了支持向量机以及核函数的特点。另外还想多说一些,先看一张kaggle的各种算法使用统计数据:

机器学习面试篇——蚂蚁金服电话面试二

这个是2017年10月的数据,而且是kaggle官方统计的,可信度很高。童鞋们可能会意外,也能会惊喜,但这就是事实,用的最多的还是几个最基本的:逻辑回归,决策树,随机森林,神经网络,朴素贝叶斯。原因我觉得有三点:

  1. 这些算法存在了很长时间,经过大量验证,适合哪些领域基本都明确。

  2. 随着算力提升,数据量提升,这些基本算法的准确率也在提升。

  3. 成本也是个原因,难道真的要用AK47去打蟑螂吗?用拖鞋去拍岂不是更好?说白了,95%的96%的准确率,差了1%,假如要多花800%的成本,你会为了1个点的提升去多花800%的成本吗?

最后想说的就是,一定要把基础打好,踏踏实实掌握基本的机器学习算法,而且也不多,就上面那几个,不多的好处就是有足够的时间反复思考练习,一个一个的把他们拿下。


分享到:


相關文章: