# 核函数(Kernel Function)
# 1)减少计算量:
# 2)减少存储空间:一般将原始样本变形,通常是将低维的样本数据变为高维数据,存储高维数据花费较多的存储空间;使用核函数,不用考虑原来样本改变后的样子,也不用存储变化后的结果,只需要直接使用变化的结果进行运算并返回运算结果即可;
# 核函数的方法和思路不是 SVM 算法特有,只要可以减少计算量和存储空间,都可以设计核函数方便运算;
# 对于比较传统的常用的机器学习算法,核函数这种技巧更多的在 SVM 算法中使用;
# SVM 算法的本质就是求解目标函数的最优化问题;
# 求解最优化问题时,将数学模型变形:
# 解决非线性数据分类:对样本添加多项式特征,公式变形;
# x(i) 添加多项式特征后:x'(i) ;
# x(j) 添加多项式特征后:x'(j) ;
# 核函数思路:设计一个函数( K(xi, xj) ),传入原始样本,返回添加了多项式特征后的新样本;相当于,先对 xi 、xj 添加多项式,再进行计算,此处用 k 函数代替;
# 该函数:K(xi, xj),此处表示 x'(i) . x'(j) 的运算结果;不用考虑先将 x(i) 转变为 x'(i) 然后在进行计算,而是直接返回运算结果;
# 其实不使用核函数也能达到同样的目的,这里核函数相当于一个技巧,更方便运算;
# 例:多项式核函数
# 可以添加任意次幂的多项式:,d = degree;