这里写一下SVM,是为了帮助自己梳理本科的毕业设计。这可以说是一个完整的项目,从实验的设计,开展,完成到最后写论文、答辩,当时自己还是本科,现在回过头来看,还有很多细节理解得不是很深入。有一场面试问到这个项目的时候,就先让你介绍一下,然后问你为什么要用这个方法?我回答的是SVM更适合小样本,然后面试官就问我为什么SVM更适合小样本。我把SVM给解释了一下,说到了支持向量,可是答案似乎并没有让面试官满意(这个问题说实话,我完全没有准备,只能根据自己的知识积累去回答,当时本科用这个算法,也是老师给推荐的,说你去尝试实现一下)。还是一场面试面试官问的是你知道SVM的间隔函数吗?可不可以说一下?(当时是电话面试)
总结一下,当面试官问你一个项目的时候,一般是先让你介绍一个项目的,好了,这只是一个开始,后面会问你怎么做的?为什么要这么做?简单说来就是是什么-怎么办-为什么。这中间还会穿插数据的处理、损失函数、评价的指标,这就需要你熟悉整个完整的流程。关于数据处理、损失函数、评价的指标都会问你是怎么做的或者怎么计算的,有些甚至直接问你知道公式是怎么样的,甚至还会有一些发散性的考察,比如问数据处理的时候,就说如果我给你2组数据,你怎么知道它们是相关还是不相关的呢?我当时脑子里闪过的就是协方差矩阵了,但是和相关系数的关系这个我真记不起来了。这里考查的知识点是数据的相关性。更深入一点,我觉得还有可能会问到SVM和logistic回归分别在什么情况下使用?SVM和Softmax有什么区别?
这虽然是一个小小的面试,但是我感觉面试官衡量的是你是否全部有参与到这个项目中,你是否熟悉整个项目,具备完成一个项目的能力,还涉及到专业知识的考查。比如如果你自己在表述的时候,某些说法存在问题,比如我说到了过拟合,其实并没有,面试官就问你解释一下什么叫过拟合?我说了一下,过拟合和欠拟合这个概念我记得还是蛮清楚的,然后面试官就说那你想想你刚才说的那个是不是有问题?哈哈哈哈,这个时候我一般会大胆地承认自己说得有问题,然后开始重新思考和回答这个问题。我觉得面试的时候即便自己不能回答得上来,要注意思考问题的角度和面试官给到的一些提示,毕竟这也是一个双向的沟通和交流,比如面试官可能跟你说为什么其他方法不可以呢?这个时候就要换个角度去想这个问题。还比如说面试官问你还有呢?这个时候你就要仔细回想一下,然后进行补充。当然,如果下次还被问到这种问题,你就可以先说,我认为有以下几点,然后说完了再根据面试官的回应看是否要补充。
好了,还是回到SVM来啦。
这里看了一下别人写的技术博客,真的是有学习到,就给几个链接吧。
1、线性SVM