支持向量机
支持向量机(SVM)的概念
- 主要思想:可以在逻辑回归的基础上修改,修改代价函数,去掉1/m,正则项去掉,代价项增加C;这些更改使得函数在保证算法性能的基础上减少运算量,同时直接给出预测结果而不是预测概率
1)修改代价函数:
原逻辑回归对针对一项样本的代价计算:
修改后y=1时针对一项样本的代价计算:
修改后y=0时针对一项样本的代价计算:
cost函数是对当y=1和y=0时近似模拟得到的曲线
(图1)
2)去掉1/m:整体的常数项系数并不影响整体的最小值求解
3)正则项去掉,代价项增加C:可以理解为C是
对于逻辑回归的正则化函数可以理解为,其中是权衡A和B最小化的比重
对于修改后的函数可以理解为,其中C是权衡A和B最小化的比重,所以也可以理解上认为C是 - 最终的代价函数以及预测函数的变化:
其中对于来说-1到1的间距是一个安全因子
- 大间隔分类器的直观理解
当C很大时“大间隔”会比较形象的显现出来(大间隔是指样本到决策界限的间距,大间隔分类器通常使用尽可能大的间距分隔不同种类的样本) - 大间隔分类器的数学原理
首要前提:当C很大时,相当于给优化问题增加了约束条件(因为要使cost尽可能小):
最小化的其它工作:因为前面一项接近于0,剩下就是的最小化,即目标是找到使得尽可能小的
转化向量内积表达:,其中可以视作样本i对应的坐标到决策界限的距离(直观意义是样本i对应的向量在对应的向量上的投影长度,这是因为由决策界限表达式可知向量垂直于决策界限)
预测函数的决策范围:因为只有当时才有y=1(或反之),而是在最小化过程中最小化的对象,这使得只能尽可能大,即样本点到到决策界限的距离要尽可能大,这也说明了大间隔的由来(SVM具有大间距分类器的性质)
核函数
特征构造
- 选取标记:在特征空间中中指定几个点作为标记(给定样本维数为n,特征空间就是n维,不包括常数项)
- 核函数概念:类似于各种相似度度量的函数,一般表达为
- 高斯核函数:
- 核函数的使用:在预测函数中的中,用构造的特征取代(除了偏置项)
- 对于给定样本:确定特征向量,其中,且,所以该向量中元素(使用高斯核函数)
- 对于正则化项,注意到可以向量化表示为的形式,而一般的支持向量机里人们还会在上面做出一点改变:,这使得支持向量机能更有效率地工作,使得其能运用在更大的训练集上
参数的选择
- C参数:C过大,对应着低偏差高方差,倾向于过拟合;C过小,对应着高偏差低方差,倾向于欠拟合;
- 参数:过大,变化平缓,对应着高偏差低方差,倾向于欠拟合;过小,变化不平缓,对应着低偏差高方差,倾向于过拟合;
SVM的使用
内核函数的选择
-
线性内核函数(无核函数):该函数没有内核参数,直接使用预测(比如时)
使用:1)当特征数n较大样本量m较小时使用(避免陷入过拟合);
2)当n较小m很大时适当增加特征数再使用(提高拟合速度)
-
高斯内核函数:使用代替中的进行预测
使用:当特征数n较小样本量m始终或较大(不是很大)时使用(拟合复杂的曲线,同时比神经网络快)
注意:样本变量在使用前记得先规范化,避免某个变量占很大比重的情况
-
其它内核函数:其它核函数都比较少用,且只有满足莫塞尔定理的核函数才能用于SVM中
多项式核函数(Polynomial kernel):,通常用在x和l都是严格非负数的情况下
其它:String kernel,chi-square kernel, histogram intersection kernel...
与其他拟合方法的比较
- 逻辑回归:SVM与逻辑回归实际上相类似,大部分能使用线性内核函数或逻辑回归的问题中,结果都比较相近,两者其中一个能适用的情况下另一个回归方法都可能有不错的效果,像n较大m较小或n较小m很大的情况下都可以使用逻辑回归,其特征的获取与线性内核函数中的做法相类似
- 神经网络:对于三种不同的n和m规模情况,一个设计得好的神经网络都可以获得不错的结果,但许多情况下神经网络的训练都特别慢,这时候使用SVM可以提高训练效率;此外关于局部最优,这对于神经网络来说不是个大问题,而好的SVM包通常也会找到全局最小值或接近全局最小的值(SVM的优化问题是一种凸优化问题)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律