项目介绍
本项目是一套基于MATLAB自主开发的支持向量机(SVM)分类与回归分析系统。该系统实现了从数据预处理、模型训练、参数优化到预测评估及结果可视化的全流程机器学习分析框架。系统不仅支持基础的二分类任务,还扩展了支持向量回归(SVR)功能,能够处理连续型数值预测问题。通过底层的二次规划(QP)求解,系统实现了SVM的核心数学逻辑,而不依赖于黑盒工具箱的高层调用,具有较高的科研与教学参考价值。
功能特性
- 全面的核函数支持:内置了线性核(Linear)、径向基核(RBF)、多项式核(Poly)及Sigmoid核,适应不同线性、非线性分布的数据特征。
- 自动化参数优化:集成网格搜索(Grid Search)策略与K折交叉验证(K-fold Cross Validation),能够自动寻找最优的惩罚参数C和核参数Gamma。
- 严格的数据处理:提供完善的数据标准化模块,通过Z-score方法消除特征量纲差异。
- 多维性能评估:分类任务支持准确率、混淆矩阵、ROC曲线及AUC值计算;回归任务支持均方误差(MSE)及决定系数(R2)评估。
- 直观的可视化界面:系统能够自动生成分类决策边界图、ROC曲线图以及回归拟合曲线图,并清晰标注支持向量的具体位置。
实现逻辑与功能详解
系统的核心逻辑由一个主演示函数引导,分为分类演示和回归演示两个并行分支:
- 分类任务逻辑:
- 数据生成:系统随机生成两组服从高斯分布的二维点集,分别赋予+1和-1标签。
- 预处理与划分:对样本进行标准化处理后,按照80%:20%的比例随机划分为训练集与测试集。
- 自动调参:在训练集上运行网格搜索,遍历预设的参数范围,通过3折交叉验证选取使准确率最高的参数组合。
- 最终识别:利用最优参数构建模型,输出测试集的预测标签,并计算其与真实标签的偏差。
- 回归任务逻辑:
- 场景模拟:生成带有随机噪声的正弦波序列作为回归分析的输入。
- 损失控制:采用epsilon-SVR算法,通过设置容忍阈值(epsilon)来构建回归带。
- 拟合预测:求解双偏差变量的对偶问题,获得拟合曲线,并对连续变量进行预测。
关键函数与算法分析
- 核心训练算法:
- 分类训练:通过构建对偶问题的Q矩阵,利用MATLAB内置的quadprog求解器寻找拉格朗日乘子。其核心在于最大化几何间隔,并通过提取非零乘子来确认支持向量。
- 回归训练:实现了epsilon不敏感损失函数的对偶求解逻辑,变量空间扩展为2n个,通过优化确保预测点尽可能落在回归带内。
- 核函数矩阵计算:
- 系统采用矩阵化运算方式实现核矩阵计算,避免了繁琐的循环嵌套,显著提升了高维映射的效率。
- 预测逻辑:
- 基于支持向量和对应的拉格朗日乘子,结合偏置参数b,对新样本进行加权求和并映射回原空间或进行符号判定。
- 评价指标计算:
- 交叉验证:手动实现了K折索引分配,确保评估结果的泛化性。
- ROC分析:通过对预测分值进行排序并计算累计的真阳率(TPR)和假阳率(FPR),最终利用梯形法则(trapz)计算AUC面积。
- 绘图与展示:
- 分类决策面:通过在特征空间划分精细网格并进行全量预测,利用等高线函数绘制分类边界,直观展现模型的空间划分能力。
使用方法
- 启动程序:在MATLAB开发环境中打开主函数脚本(main.m)。
- 运行演示:直接运行脚本,系统将依次执行分类和回归两个演示模块。
- 查看输出:
- 命令行窗口将实时显示网格搜索的过程、最优参数组合以及最终的模型评估指标。
- 图形窗口将弹出两组结果图:第一组展示分类决策边界、支持向量分布及ROC曲线;第二组展示回归拟合效果及支持向量采样点。
- 参数调整:用户可直接在主函数代码中修改核函数类型、参数搜索范围或数据规模,以观察不同配置对模型性能的影响。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 必备工具箱:由于底层数学求解调用了quadprog函数,系统需要安装MATLAB优化工具箱(Optimization Toolbox)。
- 硬件要求:标准PC配置即可支持百万次以内的矩阵运算。