尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

速通机器学习 10|支持向量机 SVM

速通机器学习 10|支持向量机 SVM 目录前言一、核心基础概念1. 算法核心定位与逻辑回归对比2. 超平面数学定义3. 间隔与支持向量4. SVM标准优化目标二、硬间隔 SVM vs 软间隔 SVM1. 硬间隔Hard‑margin SVM2. 软间隔Soft‑margin SVM三、核函数Kernel Trick1. 线性核linear2. 高斯 RBF 核径向基核最常用3. 多项式核poly四、核心API与超参数详解五、实战案例SVM多参数网格寻优分类建模六、章节总结前言本节学习支持向量机 SVMSupport Vector Machine它是经典判别式分类算法在小样本、高维数据上表现优秀核心思想寻找最优分隔超平面最大化类别之间的间隔。SVM 既可以做二分类通过 One‑vs‑Rest 等方式拓展多分类也可以做回归 SVR。一、核心基础概念1. 算法核心定位与逻辑回归对比支持向量机SVM与逻辑回归同属判别式线性分类算法均通过超平面划分样本类别但求解逻辑存在本质差异逻辑回归依托梯度下降迭代更新参数拟合最优分类面而SVM依托严格的数学推导通过约束优化直接求解全局最优超平面分类鲁棒性更强。SVM核心核心准则在两类样本之间寻找一个最优分隔超平面最大化样本与超平面的最小几何间隔仅依靠边界附近的支持向量确定分类面与远离超平面的样本无关。通俗概括其核心逻辑筛选出距离分类超平面最近的样本点通过求解最优超平面最大化超平面与这些临界样本点的间距就是使最近的样本点在间隔边界上或者之外以此实现最优分类效果。下面有详细的数学求解过程不懂的话记住下个核心逻辑就好。2. 超平面数学定义在n维特征空间中分类超平面为n-1维线性分割面通用数学公式式中w为权重法向量垂直于超平面决定超平面方向b为偏置项决定超平面位置。基于超平面可完成样本类别判别规则如下3. 间隔与支持向量间隔是SVM的核心核心概念分为函数间隔与几何间隔是求解最优超平面的核心依据。1函数间隔用于表征样本分类的置信度单个样本函数间隔公式函数间隔受参数缩放影响无法真实表征样本距离不能作为优化依据。2几何间隔样本到超平面的真实垂直距离具备尺度不变性二维当中就是点到直线的距离是SVM优化的核心指标公式间隔边界就是样本点距离一定距离的边界平行于超平面。3支持向量距离最优超平面最近的样本点满足几何间隔最小。全局最优超平面仅由支持向量唯一确定其余样本不参与模型参数求解。4. SVM标准优化目标SVM最终目标求解参数最大化全局最小几何间隔优化问题可等价转化为标准凸二次规划问题该约束优化问题可通过拉格朗日乘数法求解引入拉格朗日算子将带约束优化问题转化为无约束对偶问题最终解出最优权重w与偏置b。二、硬间隔 SVM vs 软间隔 SVM1. 硬间隔Hard‑margin SVM要求所有样本全部分类正确样本严格在间隔边界外侧。适用数据完全线性可分缺点噪声、异常点会导致完全找不到可行解2. 软间隔Soft‑margin SVM现实数据大多不完全线性可分允许少量样本出错即允许少少量的样本点在间隔边界之内引入松弛变量C。优化目标C惩罚系数SVM 最重要超参数C很大惩罚错分样本尽量不允许出错容易过拟合间隔窄C很小对错误宽容追求更大间隔容易欠拟合三、核函数Kernel Trick很多样本线性不可分低维找不到分割超平面把样本映射到高维空间在高维实现线性可分。核技巧不显式计算高维映射直接通过核函数计算样本在高维的内积大幅降低计算开销。常用核函数1. 线性核linear等价普通线性分类速度快特征数多时优先选。2. 高斯 RBF 核径向基核最常用γ控制核的作用范围γ过大过拟合过小欠拟合3. 多项式核poly适合特征有组合关系的场景。经验不知道选什么核优先尝试RBF特征维度很高优先linear。四、核心API与超参数详解支持向量机分类模型核心调用接口为SVC基于sklearn库实现标准导入与初始化代码如下python # 导入SVM分类模型 from sklearn.svm import SVC 模型初始化通用格式 svc_model SVC(kernel, gamma, C, random_state)各核心超参数精细化释义如下kernel核函数设定模型映射方式可选linear线性核、rbf高斯核、poly多项式核默认高斯核适配大多数非线性分类场景。C惩罚系数软间隔SVM核心参数用于平衡模型复杂度与分类误差。数值越大对误分类样本惩罚越重易过拟合数值越小模型容错性越高易欠拟合。gamma核函数系数仅作用于RBF高斯核控制样本作用辐射范围。数值过大缩小作用区间、易过拟合数值过小扩大作用区间、易欠拟合。random_state随机种子固定模型随机运算逻辑保证实验结果可复现便于参数调优与结果对比。五、实战案例SVM多参数网格寻优分类建模本章节基于数据集datingTestSet完成SVM分类实战结合特征标准化、10折交叉验证、多参数网格遍历寻优自动筛选最优核函数、惩罚系数、Gamma参数构建最优SVM分类模型同时完成模型训练、测试与可视化评估。数据集速通机器学习10支持向量机SVM资源-CSDN下载# 导入所需工具库 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.svm import SVC from sklearn import metrics from sklearn.model_selection import train_test_split, cross_val_score from sklearn.preprocessing import StandardScaler from sklearn.metrics import confusion_matrix # 1. 自定义混淆矩阵可视化函数 def cm_plot(y, yp): # 计算混淆矩阵 cm confusion_matrix(y, yp) # 绘制混淆矩阵热力图 plt.matshow(cm, cmapplt.cm.Blues) plt.colorbar() # 遍历填充矩阵数值 for x in range(len(cm)): for y in range(len(cm)): plt.annotate(cm[x, y], xy(y, x), hacenter, vacenter) plt.ylabel(True label) # 真实标签 plt.xlabel(Predicted label)# 预测标签 return plt # 2. 数据集读取与划分 # 读取制表符分隔的相亲数据集 datas pd.read_csv(rD:\pythoncode2\bigdata_ai40\机械学习\data\datingTestSet2.txt, sep\t, headerNone) # 拆分特征集与标签集 data datas.iloc[:, :-1] # 所有列除最后一列为特征 labels datas.iloc[:, -1] # 最后一列为分类标签 # 3. 特征标准化SVM必备预处理 scaler StandardScaler() # 划分8:2训练集、测试集 x_train, x_test, y_train, y_test train_test_split(data, labels, test_size0.2, random_state42) # 训练集拟合并标准化测试集仅做标准化避免数据泄露 x_train scaler.fit_transform(x_train) x_test scaler.transform(x_test) # 4. 多参数网格遍历10折交叉验证寻优 # 定义超参数遍历范围 c_list [0.1, 0.5, 1, 10, 100] # 惩罚系数C取值 kernels [poly, rbf, sigmoid] # 三类核函数 gammas [0.001, 0.01, 0.1, 1, 2] # RBF核gamma系数取值 # 初始化最优参数与精度存储变量 best_accuracy 0.0 best_params {C: 0, kernel: , gamma: 0} # 三重循环遍历所有参数组合 for c in c_list: for kernel in kernels: for gamma in gammas: # 初始化SVM模型 sv_model SVC(kernelkernel, gammagamma, Cc, random_state42) # 10折交叉验证计算平均准确率 cv_scores cross_val_score(sv_model, x_train, y_train, cv10, scoringaccuracy) mean_score np.mean(cv_scores) # 打印每组参数的验证效果 print(f核函数:{kernel:6s} | Gamma:{gamma:4f} | 惩罚系数C:{c:4.1f} | 交叉验证准确率:{mean_score:.4f}) # 更新最优参数组合 if mean_score best_accuracy: best_accuracy mean_score best_params[C] c best_params[kernel] kernel best_params[gamma] gamma # 输出全局最优超参数 print(*80) print(f最优参数组合{best_params}) print(f最优训练集交叉验证准确率{best_accuracy:.4f}) print(*80) # 5. 基于最优参数训练最终SVM模型 final_svm SVC( kernelbest_params[kernel], Cbest_params[C], gammabest_params[gamma], random_state42 ) final_svm.fit(x_train, y_train) # 6. 训练集模型评估 train_pred final_svm.predict(x_train) print(\n【训练集分类评估报告】) print(metrics.classification_report(y_train, train_pred)) cm_plot(y_train, train_pred).show() # 7. 测试集泛化能力评估 test_pred final_svm.predict(x_test) print(\n【测试集泛化评估报告】) print(metrics.classification_report(y_test, test_pred)) cm_plot(y_test, test_pred).show()六、章节总结本章对支持向量机SVM核心原理、特性与适用场景进行系统性总结分点归纳如下核心原理SVM是理论体系严谨的经典判别式分类算法核心遵循最近样本、最大间隔准则。依托函数间隔与几何间隔双重约束通过凸二次规划、拉格朗日对偶优化求解全局最优超平面模型参数可通过严格数学推导得出具备较强可解释性。核心优势算法泛化能力优异仅依靠支持向量确定最优分类面有效规避冗余样本干扰适配小样本、高维特征数据集分类精度高结合核函数可高效处理线性不可分问题。算法局限时间复杂度较高模型训练运算成本大面对十万级以上海量数据集训练耗时显著增加求解效率大幅降低难以拟合最优超平面。适用场景优先应用于中小规模、高维度的数据分类任务不适合超大批量海量数据建模该场景下训练效率与拟合效果均不理想。
返回列表