关于SVM的基本概念

SVM原理简介

SVM简单介绍        http://fssnt.blogbus.com/logs/10349809.html

 

什么是Support Vector Machine?   http://fssnt.blogbus.com/logs/10349843.html

 

支持向量机的基本原理

转载:http://fssnt.blogbus.com/logs/10349856.html

对于很多分类问题,例如最简单的,一个平面上的两类不同的点,如何将它用一条直线分开?在平面上我们可能无法实现,但是如果通过某种映射,将这些点映射到其它空间(比如说球面上等),我们有可能在另外一个空间中很容易找到这样一条所谓的“分隔线”,将这些点分开。
SVM基本上就是这样的原理,但是SVM本身比较复杂,因为它不仅仅是应用于平面内点的分类问题。SVM的一般做法是:将所有待分类的点映射到“高维空间”,然后在高维空间中找到一个能将这些点分开的“超平面”,这在理论上是被完全证明了是成立的,而且在实际计算中也是可行的。
但是仅仅找到超平面是不够的,因为在通常的情况下,满足条件的“超平面”的个数不是唯一的。SVM需要的是利用这些超平面,找到这两类点之间的“最大间隔”。为什么要找到最大间隔呢?我想这与SVM的“推广能力”有关,因为分类间隔越大,对于未知点的判断会越准确,也可以说是“最大分类间隔”决定了“期望风险”,总结起来就是:SVM要求分类间隔最大,实际上是对推广能力的控制。
我想说到SVM的基本原理,有两个概念不能不提到,一个就是上面说到的“最大分类间隔面”,另一个是关于“VC”的概念。最大分类间隔面比较好懂,从字面上也能知道它的大致含义。但是VC维的概念,我有必要在这里着重说一下。
VC维(Vapnik-Chervonenkis Dimension)的概念是为了研究学习过程一致收敛的速度和推广性,由统计学习理论定义的有关函数集学习性能的一个重要指标。
传统的定义是:对一个指标函数集,如果存在H个样本能够被函数集中的函数按所有可能的2的K次方种形式分开,则称函数集能够把H个样本打散;函数集的VC维就是它能打散的最大样本数目H。若对任意数目的样本都有函数能将它们打散,则函数集的VC维是无穷大,有界实函数的VC维可以通过用一定的阀值将它转化成指示函数来定义。
VC维反映了函数集的学习能力,VC维越大则学习机器越复杂(容量越大),遗憾的是,目前尚没有通用的关于任意函数集VC维计算的理论,只对一些特殊的函数集知道其VC维。例如在N维空间中线形分类器和线形实函数的VC维是n+1。
好了,说了很多关于支持向量机的东东,我想如果要想对它有比较全面的认识的话,必须花大量的时间去深入研究。不过正是因为SVM在应用方面有很广阔的前景,所以目前有很多人在关注着这个问题。我是抱着一种学习的心态,希望能够和更多的人共同交流。
经过大概一个多月的努力,我用MATLAB实现了SVM的基本功能,做出了软件的雏形,不过因为公司网站建设的缘故,所以对SVM的应用研究也暂时告以段落。不过在不远的将来,公司将在这方面会有更大的投入,研发部门将对这个新的课题进行深入的研究。
首席研究员:Newnewton

 

 

 

 

<think>我们之前已经详细讨论了SVM的概念、实现以及应用在乳腺癌数据上的案例。现在用户再次询问“SVM的概念”,我们需要简洁但全面地解释SVM的核心概念。 由于用户要求以编程专家的身份回答,并且按照指定格式,我们可以在回答中包含一个简单的SVM实现代码(如线性SVM)来辅助解释概念,并解释代码。 但注意:用户这次只问了“概念”,所以重点在概念解释,代码示例作为辅助。 回答结构: 1. 先解释SVM基本概念(二分类、超平面、支持向量、间隔最大化等)。 2. 给出一个简单的代码示例(使用sklearn的线性SVM)并解释代码。 3. 提出相关问题。 注意:由于之前已经详细讲过,这里可以更精炼。 </think>### SVM(支持向量机)核心概念详解 #### 一、基本定义 **支持向量机(Support Vector Machine, SVM)** 是一种监督学习算法,主要用于分类任务,也可用于回归(SVR)。其核心目标是找到一个最优超平面(决策边界),最大化不同类别数据点之间的间隔(margin)。 #### 二、关键概念说明 1. **超平面(Hyperplane)**: - 在n维空间中,将数据点分开的(n-1)维子空间 - 数学表示为:$\mathbf{w} \cdot \mathbf{x} + b = 0$ - 可视化示例: ``` | ● ● | | ● ● | ← 超平面 | × × | ``` 2. **支持向量(Support Vectors)**: - 距离超平面最近的样本点(决定边界位置) - 这些点决定了模型的泛化能力 - 数学约束:$y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1$ 3. **间隔(Margin)**: - 支持向量到超平面的距离 - 最大化间隔可提高模型鲁棒性 - 计算公式:$\text{Margin} = \frac{2}{\|\mathbf{w}\|}$ #### 三、SVM分类类型 1. **线性可分SVM(硬间隔)**: ```python from sklearn.svm import SVC model = SVC(kernel='linear', C=1e5) # C极大值实现硬间隔 ``` - 假设数据完全线性可分 - 无分类错误容忍度 2. **线性SVM(软间隔)**: ```python model = SVC(kernel='linear', C=0.1) # 较小的C允许错误分类 ``` - 引入松弛变量ξ允许错误分类 - 正则化参数C控制错误惩罚 - 优化目标:$\min \frac{1}{2}\|\mathbf{w}\|^2 + C\sum \xi_i$ 3. **非线性SVM(核方法)**: ```python model = SVC(kernel='rbf', gamma=0.1) # 使用高斯核 ``` - 通过核函数映射到高维空间 - 常用核函数: - 多项式核:$K(\mathbf{x}_i, \mathbf{x}_j) = (\mathbf{x}_i \cdot \mathbf{x}_j + c)^d$ - 高斯核(RBF):$K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma \|\mathbf{x}_i - \mathbf{x}_j\|^2)$ #### 四、SVM伪代码实现 ```python def svm_train(X, y, C=1.0, kernel='linear', max_iter=1000): """ 简化版SVM训练过程 X: 特征矩阵 (n_samples, n_features) y: 标签向量 (n_samples,) C: 正则化参数 """ # 初始化权重和偏置 w = np.zeros(X.shape[1]) b = 0 for _ in range(max_iter): # 计算每个样本的预测值和误差 for i, x_i in enumerate(X): condition = y[i] * (np.dot(w, x_i) - b) # 更新规则 if condition >= 1: # 分类正确且远离边界 w -= (1 / (iter+1)) * w # 减小权重 else: # 分类错误或靠近边界 w += (1 / (iter+1)) * (C * y[i] * x_i - w) b -= (1 / (iter+1)) * C * y[i] return w, b, support_vectors ``` #### 五、核心数学原理 SVM的优化问题可表示为: $$ \begin{aligned} \min_{\mathbf{w},b} \quad & \frac{1}{2}\|\mathbf{w}\|^2 \\ \text{s.t.} \quad & y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1, \quad \forall i \end{aligned} $$ 使用拉格朗日乘子法转化为对偶问题: $$ \max_{\alpha} \sum_i \alpha_i - \frac{1}{2} \sum_i \sum_j \alpha_i \alpha_j y_i y_j \mathbf{x}_i \cdot \mathbf{x}_j $$ 其中: - $\alpha_i$ 是拉格朗日乘子(非负) - 支持向量对应 $\alpha_i > 0$ #### 六、SVM与逻辑回归对比 | 特性 | SVM | 逻辑回归 | |------|-----|----------| | 决策边界 | 最大间隔超平面 | 概率阈值超平面 | | 损失函数 | Hinge损失 | 对数损失 | | 异常值敏感性 | 低(仅支持向量影响) | 高(所有点影响) | | 高维处理 | 优秀(核技巧) | 需要正则化 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值