我记录下的这些东西,如果是有哪些不懂得地方,我强烈建议参考我在这里的书籍。另外还有《机器学习实战》,《深度学习》这本花书等,利用好搜索引擎也是一大好利器。
关于这篇文章,我还是和以前记录相关的机器学习知识之类篇章一样的风格。
不懂可进入这里的对应的教程,看不懂可借助翻译插件/软件(实际上借助这些看起来轻松多了,看英文头疼的厉害,如果是对于初学者)。
SVM的实现
SVM算法是有一点难理解的,但是坚持看一些文章和上面说的那些书籍之后就会发现其实也就那么回事。
关于SVM的实现(仅作通俗说明,以二维为例):由于这个算法是根据支持向量得出两个函数,而我们取的是这两条线性函数的距离的中间值,从而得到了决策边界函数,这样任务也就完成了。但是由于参数的不同,取这个决策边界是可以有多个甚至是无穷个的,那么取得最优的参数是可以利用梯度下降算法的(符合凸二次规划)。得到了最优的参数就可以得出决策边界的函数了。
涉及到不少的数学知识…我想我大概是说对了吧,哈哈…
为了实现这个算法,必须要提前了解这算法相关的知识,不然真的是寸步难行啊。
下面是铺助理解链接,不懂还要翻书看吴恩达老师的教程:
以下就是完整的实现代码了:
|
|
铺助理解链接:
简要数据集预测以及结果可视化
以下是完整代码:
|
|
这样一来就完成了算法的实现了,可视化的图表如下:
实际上这只是算法的简单实现,许多的细节并没有照顾到。而且这个算法的基础必须要牢固,不然很难理解上面的代码。
SVM进阶
相关到核函数
,硬间隔最大化
,软间隔最大化
等知识,其中的核函数
,软间隔最大化
针对于非线性数据(即线性不可分),硬间隔最大化
针对于线性可分数据类型,这需要自行去了解、理解。在上面说的书籍中可以找到相关的知识。
以下是关于核函数
,软间隔最大化
的针对于非线性数据python代码的实现,可以理解为SVM的底层实现的一部分,可以更好的理解内部实现的于原理。
|
|
具体相关说明可见对应的课程地址。
更多的铺助链接:
SVM的应用
还是利用了在上个文章python机器学习系列:K近邻算法(KNN)的实现及应用的实现及应用/)的实际数据集。只是将sklearn
模块中的现成的拿来用了。
代码如下:
|
|
结果跟上篇介绍的用KNN
的结果几乎一样,就不展示了。
关于现成算法的参数的使用可移步:
这样这篇文章基本上就这样了,需要更新的话再来补充。