如果超平面效果不好, 把低维向量映射成高维向量, 根据高维向量的超平面计算
由于需要频繁计算向量的内积, 而计算高维向量的内积需要: 两次映射函数计算 + 一次内积计算, 计算量很多大, 就引入了核函数
定义核函数K(x, z) 的值 等于 "内积( 映射函数(x), 映射函数(z))" 的值
但是核函数的计算复杂度要少很多, 因为核函数的包含变量的最外层操作一般是乘积操作
而在机器学习中, 大家比较关心内积的值, 而不关心映射函数的具体形式是否准确
因为机器学习就是一个不断凑数的过程, 映射函数只要大致合理即可
所以先找到一个核函数用来代替内积运算, 计算出高维超平面的各个系数.
预测新样本的时候, 要先映射到高维空间, 然后看高维向量在高维超平面的上方还是下方
映射到高维空间的具体形式不用管,最后还是计算内积。所以核函数对应的映射函数不用考虑
常用的核函数
普通内积: 相当于映射到自身
(内积 + t)^d : 映射到一个最高阶为d, 的变量组合
如果即使映射成高维向量也不能线性可分, 适当放宽条件
不等式约束放宽一点: 原不等式左边 + 小量 > 0
svm模型,没有等式约束。如果有等式约束,是否要放宽
小量为正值
实际是允许某些点穿过超平面一小段距离
为了使所有小量整体最小(整体放宽的尽量小): 原函数 变成: 原函数 + 所有小量和
每个放宽的小量作为新的变量, 仍旧是一个凸约束极小值问题