当前位置: 首页 > news >正文

机器学习实操 第一部分 机器学习基础 第5章 支持向量机(SVM)

机器学习实操 第一部分 机器学习基础 第5章 支持向量机(SVM)

内容概要

第5章深入介绍了支持向量机(SVM),这是一种功能强大且应用广泛的机器学习模型。SVM适用于线性或非线性分类、回归以及 novelty detection。本章详细讲解了SVM的核心概念、训练方法以及在不同任务中的应用。通过理论和实践相结合的方式,读者将掌握如何使用SVM解决实际问题。
在这里插入图片描述

主要内容

  1. 线性SVM分类

    • 硬间隔分类:在数据线性可分的情况下,寻找能够最大化间隔的决策边界。
    • 软间隔分类:允许一些数据点位于间隔内或错误分类,以提高模型的泛化能力。通过调整正则化参数C来平衡间隔大小和容许的间隔违例。
  2. 非线性SVM分类

    • 多项式核:通过添加多项式特征将数据映射到高维空间,使其线性可分。
    • 高斯RBF核:利用径向基函数(RBF)核技巧,将数据映射到无限维空间,从而处理复杂的非线性关系。
    • 相似性特征:通过计算数据点与特定地标(landmark)的相似性来构造新特征。
  3. SVM回归

    • 线性SVM回归:在回归任务中,SVM尝试拟合一个尽可能多的数据点位于其“街道”上的模型,同时限制间隔违例。
    • 非线性SVM回归:使用核技巧来处理非线性回归问题。
  4. SVM的数学原理

    • 硬间隔和软间隔优化问题:通过二次规划(QP)问题来求解SVM的最优参数。
    • 对偶问题:介绍SVM的对偶形式,以及如何通过核技巧来高效解决高维空间中的分类问题。
  5. 算法选择和计算复杂度

    • LinearSVC:适用于线性SVM分类,计算复杂度较低,适合大规模数据集。
    • SVC:支持核技巧,适用于中小型非线性数据集,但计算复杂度较高。
    • SGDClassifier:使用随机梯度下降,适合在线学习和大规模数据集。

关键代码和算法

5.1 线性SVM分类

from sklearn.datasets import load_iris
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC# 加载数据
iris = load_iris(as_frame=True)
X = iris.data[["petal length (cm)", "petal width (cm)"]].values
y = (iris.target == 2)  # Iris virginica# 创建并训练线性SVM分类器
svm_clf = make_pipeline(StandardScaler(), LinearSVC(C=1, random_state=42))
svm_clf.fit(X, y)# 预测
X_new = [[5.5, 1.7], [5.0, 1.5]]
svm_clf.predict(X_new)

5.2 非线性SVM分类

from sklearn.svm import SVC
from sklearn.datasets import make_moons# 生成非线性数据
X, y = make_moons(n_samples=100, noise=0.15, random_state=42)# 使用多项式核的SVM分类器
poly_kernel_svm_clf = make_pipeline(StandardScaler(),SVC(kernel="poly", degree=3, coef0=1, C=5)
)
poly_kernel_svm_clf.fit(X, y)# 使用高斯RBF核的SVM分类器
rbf_kernel_svm_clf = make_pipeline(StandardScaler(),SVC(kernel="rbf", gamma=5, C=0.001)
)
rbf_kernel_svm_clf.fit(X, y)

5.3 SVM回归

from sklearn.svm import LinearSVR, SVR# 线性SVM回归
svm_reg = make_pipeline(StandardScaler(), LinearSVR(epsilon=0.5, random_state=42))
svm_reg.fit(X, y)# 非线性SVM回归
svm_poly_reg = make_pipeline(StandardScaler(),SVR(kernel="poly", degree=2, C=0.01, epsilon=0.1)
)
svm_poly_reg.fit(X, y)

精彩语录

  1. 中文:SVM在小到中等规模的非线性数据集上表现出色,特别是对于分类任务。
    英文原文:SVMs shine with small to medium-sized nonlinear datasets (i.e., hundreds to thousands of instances), especially for classification tasks.
    解释:强调了SVM在处理中等规模非线性数据集时的优势。

  2. 中文:SVM对特征的尺度敏感,因此特征缩放是必要的。
    英文原文:SVMs are sensitive to the feature scales.
    解释:指出特征缩放对SVM性能的重要性。

  3. 中文:软间隔分类通过引入松弛变量来允许一定程度的间隔违例,从而提高模型的泛化能力。
    英文原文:Soft margin classification allows some margin violations to improve the model’s generalization.
    解释:介绍了软间隔分类的核心思想。

  4. 中文:核技巧使得SVM能够在高维空间中高效地进行分类,而无需显式地计算特征映射。
    英文原文:The kernel trick makes it possible to get the same result as if you had added many polynomial features, even with a very high degree, without actually having to add them.
    解释:解释了核技巧的工作原理及其优势。

  5. 中文:SVM回归通过调整间隔的大小来平衡模型的复杂度和预测误差。
    英文原文:SVM regression tries to fit as many instances as possible on the street while limiting margin violations.
    解释:总结了SVM回归的目标和方法。

总结

通过本章的学习,读者将掌握支持向量机的核心概念和应用方法。这些内容包括线性SVM分类、软间隔分类、非线性SVM分类(通过多项式核和高斯RBF核)、SVM回归以及核技巧的应用。这些技能使读者能够使用SVM解决各种实际问题,包括分类和回归任务。

相关文章:

  • 【行业特化篇3】制造业简历优化指南:技术参数与标准化流程的关键词植入艺术
  • 【Linux】第十三章 访问Linux文件系统
  • 【和春笋一起学C++】函数——C++的编程模块
  • 第十六届蓝桥杯 2025 C/C++组 旗帜
  • 蓝桥杯 10. 凯撒加密
  • Pytest中的fixture装饰器详解
  • 优化PCB Via Stub系列(2) – 运用U-Turn Via设计破解阻抗匹配困境,改善信号完整性
  • android开发中的多线程、数据存储同步功能实现方案和应用场景
  • 人事管理系统6
  • Docker的简单使用(不全)
  • python数据分析(六):Pandas 多数据操作全面指南
  • 深度学习中的混合精度是什么?
  • 【动态导通电阻】GaN功率器件中动态导通电阻退化的机制、表征及建模方法
  • Java中的接口和抽象类
  • 模拟集成电路设计与仿真 : Feedback System
  • Sping中获取bean的方式总结-笔记
  • JR6001语音模块详解(STM32)
  • 【安全扫描器原理】ICMP扫描
  • 前端安全中的XSS(跨站脚本攻击)
  • 服务器和数据库哪一个更重要
  • 外交部:美方应在平等、尊重和互惠的基础上同中方开展对话
  • 王毅会见俄罗斯外长拉夫罗夫
  • 找化学的答案,解人类的命题:巴斯夫的“变革者”成长之道
  • 特朗普的百日执政支持率与他“一税解千愁”的世界观和方法论
  • 大学2025丨专访南开人工智能学院院长赵新:人工智能未来会变成通识类课程
  • 我国首个大型通用光谱望远镜JUST在青海启动建设