机器学习推导+python实现(八):线性可分支持向量机

写在开头:今天提前开始一下线性可分支持向量机的内容,因为最近在准备找实习,所以先来温习一下支持向量机方面的,后面再支持向量机完了后,可能会优先更新XGboost的内容,然后中间缺少的章节会在后面进行补充。本节代码的实现部分参考机器学习实验室

内容安排

线性回归(一)、逻辑回归(二)、K近邻(三)、决策树值ID3(四)、CART(五)、感知机(六)、神经网络(七)、线性可分支持向量机(八)、线性支持向量机(九)、线性不可分支持向量机(十)、朴素贝叶斯(十一)、Lasso回归(十二)、Ridge岭回归(十三)等。
其实很大一部分都是在做回归,比如逻辑回归试图通过一个多元回归的线性关系来拟合出我们的类别,K近邻试图通过样本点周围最近的k个点的类别来判断自身类别,决策树可以通过特征分类规则类模型进行判断等等还有很多其他的,在这里的支持向量机则基于支持向量来进行分类,其实分类的本质就是在于找出不同类别独有的特点,然后进行归类(鄙人粗鄙的见解)。支持向量机有线性可分支持向量机、线性支持向量机和非线性支持向量机。今天主要介绍的就是线性可分支持向量机,那一起开始吧。

1.线性可分支持向量机的数学推导

我们这里的讲解以理解为主,可能存在细节的错误,详细的内容可以查看参考文献《统计学习方法(第二版)》。在这里我们调整一下内容的顺序和精细程度,并在分享过程中引入问题来加以说明我对于此部分的理解。好了让我们开始吧。
Q1:线性可分支持向量机能得到什么?
类似于逻辑回归可以得到一个函数来拟合特征,K近邻只是用于搜索没有函数式。那么对于线性可分支持向量机来说,其学习目标就是在空间中找到一个分离超平面,能将实例分到不同的类。线性可分支持向量机能通过给定的线性可分数据,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到分离超平面
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 wx+b=0以及类似于sigmoid的分类函数,这里采用的是符号函数sign,
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*\cdot x+b^*) f(x)=sign(wx+b)作为最后类别的输出,然后我们将超平面法向量方向的样本设置为正例,反之为负例(这里都是使用的是向量)
Q2:什么是间隔最大化?
这是求解线性可分的第一个关键知识,下面简单介绍一下间隔,间隔又分为函数间隔和几何间隔,选择几何间隔最大的分离超平面为我们最终的分离超平面。那么如何得到几何间隔呢?几何间隔是改进的函数间隔,那么先看一下函数间隔。
γ ^ = min ⁡ i = 1 , … , N γ i ^ = min ⁡ i = 1 , … , N y i ( w ⋅ x i + b ) \hat{\gamma}={\underset {i=1,\dots,N}{\operatorname {min} }}\hat{\gamma_i}={\underset {i=1,\dots,N}{\operatorname {min} }}y_i(w\cdot x_i+b) γ^=i=1,,Nminγi^=i=1,,Nminyi(wxi+b)函数间隔的理解,可以看作样本点多于超平面的距离,然后乘上类别 y i y_i yi,这样就分类错误的点得到的间隔是负数,分类正确的点得到的间隔是正数。所以函数间隔应该是正得越大越好,确信度很高,两个类别离得够远。然后从为了衡量某个分离超平面的确信度就选择他最小的那个函数间隔,有点像木桶原理,选择最短的来衡量能力。
那么几何间隔又是个啥呢?几何间隔是对函数间隔的约束,因为函数间隔存在着 w , b w,b w,b同比例变化会导致几何间隔 γ ^ \hat\gamma γ^成倍增加但集合超平面 w ⋅ x + b = 0 w\cdot x+b=0 wx+b=0不变。因此几何间隔的的公式为:
γ = min ⁡ i = 1 , … , N γ i = min ⁡ i = 1 , … , N y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) = γ ^ ∣ ∣ w ∣ ∣ \gamma={\underset {i=1,\dots,N}{\operatorname {min} }}\gamma_i={\underset {i=1,\dots,N}{\operatorname {min} }}y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||w||})=\frac{\hat{\gamma}}{||w||} γ=i=1,,Nminγi=i=1,,Nminyi(wwxi+wb)=wγ^
那么定义每个分离超平面的最小几何间隔即为该超平面的间隔。然后之前我们说过,间隔越大说明分类的确信度越高,两类数据相隔就越远,所以来找到划分训练数据集正确的最大间隔分离超平面,表示最棒的超平面。
于是我们得到基于间隔最大化,求解分离超平面的目标函数和约束条件。
max ⁡ w , b γ s . t .      y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) ⩾ γ , i = 1 , 2 , … , N \begin{aligned} {\underset {w,b}{\operatorname {max} }}&\quad\gamma \\ s.t.&\ \ \ \ y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||w||})\geqslant\gamma,i=1,2,\dots,N \end{aligned} w,bmaxs.t.γ    yi(wwxi+wb)γ,i=1,2,,N然后利用 γ = γ ^ ∣ ∣ w ∣ ∣ \gamma=\frac{\hat{\gamma}}{||w||} γ=wγ^ γ \gamma γ换做 γ i ^ \hat {\gamma_i} γi^
max ⁡ w , b γ ^ ∣ ∣ w ∣ ∣ s . t .      y i ( w ⋅ x i + b ) ⩾ γ ^ , i = 1 , 2 , … , N \begin{aligned} {\underset {w,b}{\operatorname {max} }}&\quad\frac{\hat{\gamma}}{||w||} \\ s.t.&\ \ \ \ y_i(w\cdot x_i+b)\geqslant\hat \gamma,i=1,2,\dots,N \end{aligned} w,bm<

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python机器学习中,支持向量机(SVM)是一种常用的分类算法,它在心脏病分类案例中有着广泛的应用。支持向量机通过构建一个决策边界,将不同类别的数据分开,并且最大化边界与最接近样本之间的距离,从而实现分类功能。 在心脏病分类案例中,首先需要准备一个带有标签的数据集,包含一些与心脏病有关的特征,如年龄、性别、血压、胆固醇水平等。然后,将数据集分成训练集和测试集,通常可以使用交叉验证的方法进行划分。 接着,使用Python中的机器学习库(如scikit-learn)导入支持向量机模型,并进行模型的训练。可以根据自己的需选择合适的内核函数,如线性、多项式、高斯核等。训练过程将使用训练集中的数据进行模型参数的学习和优化。 模型训练完成后,可以使用测试集对模型进行评估。将测试集中的数据输入到训练好的模型中,根据模型的预测结果与真实标签对比,计算预测准确率、召回率、精确率等评价指标,以评估模型的性能。 最后,可以使用训练好的模型对新的未知数据进行预测。将新数据输入到模型中,根据模型的预测结果对其进行分类,从而实现对心脏病的分类。 总之,Python机器学习中的支持向量机是一种强大的分类算法,在心脏病分类案例中有着广泛的应用。通过合理选择特征和优化模型参数,可以构建一个准确、可靠的心脏病分类模型,为医生提供科学的辅助诊断工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值