# SVM小作业
### 实验环境
python 3.8.5
pandas 1.2.3
scikit-learn 0.24.1
### 算法原理
SVM是一个线性分类器,但是比起一般的线性分类器,SVM选择的是鲁棒性最好、泛化能力最强的分界超平面,将数据分为两个部分。而选择最好的决策边界是根据支持向量所决定的,也就是说对于整个数据集,我只需要支持向量就可以计算出一样的决策边界,支持向量到决策边界的最短距离就是margin,而找到最小的margin就可以得到最好的那条分类超平面。
![](https://www.writebug.com/myres/static/uploads/2022/9/8/d40e945ea5a4a8a1c27fca347b86a0fa.writebug)
假设分类超平面为$f(x) = w^{T}x + b$
那么问题形式就是$argmax_{w,b} (min_{i} (\frac{|w^{T} x_{i} + b|}{||w||}))$
因为上面那个问题非常难以优化,所以我们将这个问题转换成另一个问题$argmin_{w, b} \frac{1}{2} w^{T}w $ $ s.t. y_{i} (w^{T} x_{i} + b) \ge 1, \forall i$
接着,引入拉格朗日乘子法求解$L(w, b, a) = \frac{1}{2} w^{T}w - \sum_{i = 1}^{n} a_{i} (y_{i}(w^{T} x_i + b) - 1)$ $s.t. a_{i} \ge 0$
有两个参数$w,b$,分别求导。
$\frac{\delta L}{\delta w} = w - \sum_{i = 1}^{n} a_{i} y_{i} x_{i} = 0$, $\frac{\delta L}{\delta b} = \sum_{i = 1}^{n} a_{i} y_{i} = 0$
带回$L$
$\widetilde{L} (a) = \sum_{i = 1}^{n} a_{i} - \frac{1}{2} \sum_{i = 1}^{n} \sum_{j = 1}^{n} a_{i} a_{j} y_{i} y_{j} x_{i}^T x_{j}$
其中$x_{i}^T x_{j}$是内积
接着,要确定最优解,使用KKT条件
$w = \sum_{i = 1}^{n} a_{i} y_{i} x_{i}$
$\sum_{i = 1}^{n} a_{i} y_{i} = 0$
$a_{i} (y_{i}(w^{T} x_i + b) - 1) = 0, \forall i$
$a_{i} \ge 0, \forall i$
$y_{i} (w^{T} x_{i} + b) \ge 1, \forall i$
接着在每次训练的时候,选择不同的$a_i, a_j$代入等式中进行计算,就可以得到$w, b$
而我们可以知道,对于任意训练样本$(x_i, y_i)$,$a_{i} < 0$的不需要计算,$a_{i} = 0$,则该样本不会在最后求解模型参数的式子中出现。如果$a_{i} > 0$,则必有$y_{i} (w^{T} x_{i} + b) = 1$,所对应的样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
### 实验结果
实验使用2、3、4、5、6作为训练集,1作为测试集,输出训练集和测试机的样本大小,最后输出精准率和召回率
![](https://www.writebug.com/myres/static/uploads/2022/9/8/56044fae8ab0a2839502c99c72c4968d.writebug)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
SVM是一个线性分类器,但是比起一般的线性分类器,SVM选择的是鲁棒性最好、泛化能力最强的分界超平面,将数据分为两个部分。而选择最好的决策边界是根据支持向量所决定的,也就是说对于整个数据集,我只需要支持向量就可以计算出一样的决策边界,支持向量到决策边界的最短距离就是margin,而找到最小的margin就可以得到最好的那条分类超平面。
资源推荐
资源详情
资源评论
收起资源包目录
100011724-基于Python实现线性分类器SVM小作业.zip (5个子文件)
scikit
svm.py 3KB
assets
SVM.png 42KB
result.png 39KB
LICENSE 1KB
README.md 3KB
共 5 条
- 1
资源评论
神仙别闹
- 粉丝: 2671
- 资源: 7640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python实现的股票量化交易策略源代码+视频讲解+案例代码,含RSI策略、BOP指标策略、KDJ策略、MACD指标策略等
- EDA编码.zip
- 文本分类任务训练神经网络来学习词汇表中每个词的词向量
- MyBatis进阶技巧:探索动态SQL的无限可能.md
- HM2300C-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2300B-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 员工解除劳动合同申请表.pdf
- 物模块模型代码,前往设计物模块所属
- mybatis动态sql(使用<where>标签来处理多个查询条件)
- Java面试手册,助力大家面试过五关斩六将,面试成功
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功