Linear SVC原理

                                                线性svm:“核心问题是怎么选分界直线”

        线性svm的核心问题是怎么选分界直线,其关键在于分界线要离所有样本都尽量远。

        间隔距离最大平行线之间的中心线,就是所想要的你那个分界线!

 关键:分界线距离两个类别都远,因为有两个类别,如果直接找距离对于两个类别分界会非常复杂,所以找到两个类别最近的平行线,让这个平行线的间隔最大化。

其中找间隔有两种找发: 

hard margin(完全可分的间隔)            

soft margin (线性不可分的间隔)

 最后的问题就在于最大化 Margin,的1/2取名为d

欧式距离计算公式:

 所以这三条线的直线方程为:

有约束条件:

导致最后的结果就是

 

 soft margin是可以允许犯错的点的间隔

所以将函数的位置放宽:

最后就是这样

展开:

在这个求和函数中。max(0,...),的意思就是取大于等于零得数

所以就是   yi*w*xi<1 指的就是已在平行线以内

hard margin:严格限定,距离分界线的距离必须大于1 

soft margin:所有距离分界线小于1得点,距离标准平行线越远犯错错程度越大甚至会出现,红色得样本点跨过分界线,跑到蓝色区域,也是允许的


hard margin:要么符合距离大于1,要么不符合约束条件
soft margin:把不符合约束条件得进行了量化,允许犯错

最后是C这个参数:

        C越小容错越大(允许在分界线以内的点更多)

        反之则最后用的就是离得最近的点(得到分界线用的样本点少)。

 

        还记得之前的knn是怎么区分的嘛,通过距离,线性svm也是,不过又不太一样

一个是通过精确调节样本点个数,另一个是调节线对点的距离,而且线性svm出来的线是直线。

SVM(支持向量机)是一种常用的机器学习算法,用于分类和回归问题。它的原理可以简要概括如下: 1. SVM的目标是找到一个最优的超平面,将不同类别的样本分隔开来。超平面是一个 (N-1) 维空间中的线性函数,N 是特征的数量。 2. SVM 的关键思想是最大化样本点到超平面的间隔。间隔是指样本点到超平面的最小距离,也可以看作是分类器的鲁棒性。SVM 的最优超平面就是使得这个间隔最大化的超平面。 3. 在二分类问题中,SVM 找到两个离超平面最近的样本点,它们被称为支持向量。支持向量决定了超平面的位置和方向。 4. 对于非线性可分问题,SVM 使用核函数将数据映射到高维特征空间,使其线性可分。常用的核函数有线性核、多项式核和高斯核等。 在Python中,可以使用scikit-learn库来实现SVM算法。以下是一个简单的示例: ```python from sklearn import svm from sklearn.datasets import make_blobs import matplotlib.pyplot as plt # 生成一些随机样本 X, y = make_blobs(n_samples=100, centers=2, random_state=0, cluster_std=0.6) # 创建一个 SVM 分类器对象 clf = svm.SVC(kernel='linear') # 使用样本拟合分类器 clf.fit(X, y) # 绘制决策边界和支持向量 plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired) plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=100, facecolors='none', edgecolors='k') plt.plot([-1, 4], [4, 1], 'k-') plt.show() ``` 这段代码生成了一些随机样本,并使用线性核的 SVM 分类器拟合数据。最终绘制了决策边界和支持向量。 希望这能帮助到你理解 SVM 的原理Python 实现。如有需要,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值