机器学习——支持向量机SVM实例(兵王问题,SVM求解步骤以及思路,不求解不编程)

目录

 

一、问题描述(兵王问题)

二、步骤

1、获得数据

2、样本划分(训练样本和测试样本)

3、训练样本得到SVM模型

​ 1)数据处理

2)训练样本和测试样本归一化

3)选择核函数和调参

4)明确任务

5)训练方法——交叉验证

6)参数的设置

3、获得训练后的参数

>>>问题1:为什么要获得这些参数呢?

4、测试结果分析

1)二元分类一般要将测试结果分为四种情况(TP\FN\TN\FP)

2)测试样本测试结果

5、对模型系统进行评价——ROC曲线

1)测试数据的流程:

>>>问题2:若正样本数不够多该怎么办?

2)提升系统性能的办法

3)ROC曲线

>>>问题3:怎么通过ROC曲线去评价一个系统的优劣?

4)系统性能评价指标1:有一个指标就是当FP接近0的时候,TP的大小

5)系统性能评价指标2:曲线所包含的面积(AUC)

6)   系统性能评价指标3:等容错率(EER)


一、问题描述(兵王问题)

国际象棋中,一方一个王一个兵,另一方一个王,用SVM来解决是和局还是将死的结果

 

二、步骤

1、获得数据

这里使用的是早期别人用过的数据集

 

2、样本划分(训练样本和测试样本)

3、训练样本得到SVM模型

用下面的工具包对从总样本划分出来的训练样本进行训练

1)数据处理

因为电脑只认得数字所以,将a,b,c,d...用数字表示,如a=1,b=2,如此类推,标签也是:draw =  -1,one-fifteen = 1(-1表示和局,1表示将死)

2)训练样本和测试样本归一化

3)选择核函数和调参

当不知道选择什么核函数的时候,我们就选择高斯核

这里的参数有两个,一个是C,一个是gamma,如何确定这两个参数?通过对偶问题中的目标函数来对两个参数在他们的取值范围内按照一定的步长逐一进行测试,取最优作为两个参数的最终取值,如下C和gamma的组合有21x19,步长为2

4)明确任务

已知——5000个训练样本(包含样本数据和每个数据对应的标签)

未知、任务——C、gamma参数,通过训练样本训练出SVM模型

5)训练方法——交叉验证

将5000个样本随机均分为5组(5——fold),5组名字分别为a,b,c,d,e,每次拿4组数据作为训练模型,1组用于测试,每组数据进行轮换测试,最后模型的辨识率取五次测试辨识率的均值

组数越多,越精确,但是训练时间多,因此需要进行权衡

这里涉及到了两个循环,一个循环是遍历所有的C和gamma,一个循环是将训练样本分成5组轮换进行训练测试

6)参数的设置

3、获得训练后的参数

>>>问题1:为什么要获得这些参数呢?

答:C和gamma确定了对偶问题模型

支持向量的个数可以通过经验来判断训练的好坏,若支持向量过多则没有训练好

通过b和α我们可以对测试样本进行分类,其中α是通过对偶问题求解所得

4、测试结果分析

5000样本用于了训练,那么剩下的样本则用于测试,通常训练的样本不能拿来测试,因为模型本来就是通过训练样本进行创建的,我们的目的是用训练得到的模型对其他样本进行分类,考察的是模型的学习能力,类似于学习过程中的知识迁移

1)二元分类一般要将测试结果分为四种情况(TP\FN\TN\FP)

2)测试样本测试结果

识别率一般不用来作为系统优劣的判断依据,因为不够准确,一般是通过ROC来进行判断

5、对模型系统进行评价——ROC曲线


 

1)测试数据的流程:

>>>问题2:若正样本数不够多该怎么办?

答:将阈值调小,就会有更多被错误识别为负样本的正样本被正确地识别为正样本,即TP增大,同时NP也会增大,这样的话系统的性能也会得到提升

2)提升系统性能的办法

方法1:在模型还没有确定的情况下,通过寻找一组更好的α和b来创建模型;

方法2:在模型确定的情况下,即α和b一定的情况下,我们可以通过适当地调小阈值来达到系统性能提升的效果

3)ROC曲线

理论依据:

曲线绘制 :根据上图的①②③关系进行绘制TP-FP曲线

>>>问题3:怎么通过ROC曲线去评价一个系统的优劣?

答:在回答这个问题之前,我们得清楚TP和FP,TP指的是将正样本正确的识别为正样本,FP是将负样本错误地识别为正样本。

4)系统性能评价指标1:有一个指标就是当FP接近0的时候,TP的大小

指标1:有一个指标就是当FP接近0的时候,TP的大小可以用来评价一个系统的优劣,越大越好,因为识别率高。但是大多数情况下不能只看这一项指标,还要看一下总的走势,如下图所示:

在FP=0的时候,红色线系统TP很高,但是蓝线TP=0,而到了后面,相同的FP下,蓝色线的TP大于红色线的TP,这样的两个系统无法直接判断出哪个系统更优。

但是在兵王问题中的ROC曲线,对任意相同的FP下,蓝色线所代表的系统的TP都要大于等于其他系统,因此蓝色线所代表的系统肯定在这四个系统中是最优的!

5)系统性能评价指标2:曲线所包含的面积(AUC)

面积越大,系统越优

6)系统性能评价指标3:等容错率(EER)

EER越小,系统性能越好

  • 9
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
当使用SVM支持向量机)进行分类时,可以使用Python中的Scikit-learn库来实现。下面是一个使用SVM的简单示例: 首先,确保已经安装了Scikit-learn库,如果没有安装,可以使用以下命令进行安装: ``` pip install scikit-learn ``` 然后,可以按照以下步骤创建并训练一个SVM分类器: ```python from sklearn import svm from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载示例数据集(这里以鸢尾花数据集为例) iris = datasets.load_iris() X = iris.data y = iris.target # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建SVM分类器对象 clf = svm.SVC(kernel='linear') # 使用训练数据拟合分类器 clf.fit(X_train, y_train) # 使用测试数据进行预测 y_pred = clf.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ``` 在上述示例中,我们首先加载了一个示例数据集(这里使用的是鸢尾花数据集),然后将数据集分为训练集和测试集。接下来,我们创建了一个SVM分类器对象,并使用训练数据对其进行拟合。最后,我们使用测试数据进行预测,并计算准确率。 请注意,上述示例中使用的是线性核函数,你也可以尝试其他核函数(如高斯核函数等)来提高分类器的性能。 希望这个示例对你有所帮助!如有任何疑问,请随时询问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有情怀的机械男

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值