机器学习笔记之SVM(SVR)算法

机器学习笔记之SVM(SVR)算法学过 SVM 后 看了那么多别人的文章 是时候自己总结一波了 权当写的笔记供自己日后再回顾吧 PS 结合自己在工作过程中 我用 SVR 做股票预测 用到的知识来写的 不会很全面 若有些知识这里没提及读者可自行查找 1 概述支持向量机 supportvecto 是一种分类算法 但是也可以做回归 根据输入的数据不同可做不同的模型 若输入标签为连续值则做回归 若输入标签为分类值则做

2 算法原理
2-1 在n维空间中找到一个分类超平面,将空间上的点分类。如下图是线性分类的例子。
这里写图片描述
图 2-1-1 线性分类的例子
2-2. 一般而言,一个点距离超平面的远近可以表示为分类预测的确信或准确程度。SVM就是要最大化这个间隔值。而在虚线上的点便叫做支持向量Supprot Verctor。如图4-1-1-2所示:
这里写图片描述
图2-1-1-2 支持向量的标识图
2-3. 实际中,我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中去如图4-1-1-3所示:
这里写图片描述
图2-1-1-3 对于线性不可分数据的处理方法
3 数据处理
preprocessing.scale()作用:
scale()是用来对原始样本进行缩放的,范围可以自己定,一般是[0,1]或[-1,1]。
缩放的目的主要是
1)防止某个特征过大或过小,从而在训练中起的作用不平衡;
2)为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。














4 SVR参数选择
对于SVM算法,我们首先导入sklearn.svm中的SVR模块。SVR()就是SVM算法来做回归用的方法(即输入标签是连续值的时候要用的方法),通过以下语句来确定SVR的模式(选取比较重要的几个参数进行测试。随机选取一只股票开始相关参数选择的测试)。
svr = SVR(kernel=’rbf’, C=1e3, gamma=0.01)

4-1. kernel:核函数的类型,一般常用的有’rbf’,’linear’,’poly’,等如图4-1-2-1所示,发现使用rbf参数时函数模型的拟合效果最好。
这里写图片描述
图4-1-2-1 函数参数“Linear”,“RBF”,“Poly”对模型的拟合效果图”

4-2. C:惩罚因子。C表征你有多么重视离群点,C越大越重视,越不想丢掉它们。C值大时对误差分类的惩罚增大,C值小时对误差分类的惩罚减小。当C越大,趋近无穷的时候,表示不允许分类误差的存在,margin越小,容易过拟合;当C趋于0时,表示我们不再关注分类是否正确,只要求margin越大,容易欠拟合。如图4-1-2-2所示发现当使用1e3时最为适宜。
这里写图片描述
图 4-1-2-2 参数C与准确度的关系图

4-3. gamma: 是’rbf’,’poly’和’sigmoid’的核系数且gamma的值必须大于0。随着gamma的增大,存在对于测试集分类效果差而对训练分类效果好的情况,并且容易泛化误差出现过拟合。如图4-1-2-3所示发现gamma=0.01时准确度最高。
这里写图片描述
图4-1-2-3 参数gamma与准确度的关系图

以上大概就是就是建立股票预测模型的整个过程,在这里重点讲的还是算法中各个方法的作用和各主要参数代表的含义,希望对大家有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214228.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午4:42
下一篇 2026年3月18日 下午4:42


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号