发布时间:2023-05-14 14:30
手撕机器学习系列文章就暂时更新到此吧,目前已经完成了支持向量机SVM、决策树、KNN、贝叶斯、线性回归、Logistic回归,其他算法还请允许Taoye在这里先赊个账,后期有机会有时间再给大家补上。
更新至此,也是收到了部分读者的好评。虽然不多,但还是非常感谢大家的支持,希望每一位阅读过的读者都能够有所收获。
该系列文章的全部内容都是Taoye纯手打,也是参考了不少书籍以及公开资源,系列总字数在15W左右(含源码),后期会再慢慢填补,更多的技术文章可以来访Taoye的公众号:玩世不恭的Coder。文档可以随意传播,但注意不可修改其中的内容。
如果文章中有任何不懂的问题,都可以直接提出,Taoye看见后会第一时间回复,同时欢迎大家来此私密地向Taoye催更:玩世不恭的Coder,公众号也有Taoye的私人联系方式。有些话,Taoye只能在那里和你偷偷地说 (#`O′)
为了提高大家的阅读体验,手撕机器学习系列文章Taoye已经整理成PDF和和HTML,阅读效果都很不错,在公众号【玩世不恭的Coder】下回复【666】即可免费获取。
前面在写NumPy文章的结尾处也有提到,本来是打算按照《机器学习实战 / Machine Learning in Action》这本书来手撕其中代码的,但由于实际原因,可能需要先手撕SVM了,这个算法感觉还是挺让人头疼,其中内部太复杂了,涉及到的数学公式太多了,也涉及到了许多陌声的名词,如:非线性约束条件下的最优化、KKT条件、拉格朗日对偶、最大间隔、最优下界、核函数等等,天书或许、可能、大概就是这样的吧。
记得与SVM初次邂逅是在17年,那个时候的自己年少轻狂,视图想着站在巨人的肩膀上,把所有自己感兴趣的内容都搞懂,深入骨髓的那种。但后来残酷的现实让我明白一个道理:**你知道的越多,你不知道的也越多。**而且那个时候自己也没有能力、资源和机会去深入SVM内部,完全无法理解SVM的内部原理。所以,当时自己对SVM的收获只有一个:SVM主要是用来做分类任务的,仅此而已。
第二次接触SVM是在准备考研复试吧,当时复试并没有给出具体内容和范围,而且自己也还是个初出茅庐的小子,对这种所谓的复试有种莫名的恐惧感。也只有从上届学长学姐的口中,得知复试的时候老师会考究学生是否有科研的潜力,所以最好把机器学习熟知一下。那个时候也是处于新冠疫情的紧张时期嘛,就疯狂补习机器学习的内容,其中就包括支持向量机——SVM,主要的学习渠道是吴恩达老师的机器学习课程,感觉讲的的确不错,非常适合我这种菜鸟级选手学习。当时也算是对SVM有了一定的认识吧,也大致了解了SVM的工作原理,当然了,也只是对SVM有了个的浅显的认识,没有手撕SVM的过程,也没有完全把它整明白。尽管如此,复试的过程依然被面试导师锤的体无完肤,除了问了机器学习相关内容之外,编译原理等一些专业知识对于我这个贸易专业的学生来讲可太痛苦了,之前也没有接触过,全程阿巴阿巴。想到这,眼角又又。。。
第三次面对SVM也就是现在了,想着无论如何也要打通我的任督二脉,一定要搞清楚SVM的来龙去脉,也要像面试老师捶我那样,把SVM往死里锤。于是有了下文学习SVM之后的总结,一方面算是重新梳理一遍SVM,另一方面也希望来访的读者能够有所收获。
对于刚刚接触SVM的读者,Taoye主要有以下几条建议,也是我学习SVM过程中的一个小总结吧: