Machine Learning 2 SVM

[TOC]

SVM

背景

解决线性不可分的问题(最基础的,异或问题)

原理

数据形式-向量

向量 => 表示一个数据的特征向量(不同特征的值)

  • 一元n维向量:两个数据之间的相似性
  • 二元n-m维向量:两个数据之间相似的特征个数

数据预处理-核函数与维度映射函数

核函数Kernel、维度映射函数$\phi$

  • 核函数Kernel
  • 维度映射函数$\phi$

经过预处理之后数据可以理解为是在新的特征空间中的运算/比较。

注意:核函数、维度映射函数针对的是两个向量的运算过程

数据运算

1、运算方式-点积dot => 度量相似性(点积得到的标量越大,那么这两个向量越相似)

原本的计算点积可以看到,X、Y这两个向量最基础的维度进行运算 $$ X\cdot Y = \left{ x_1, x_2, ……x_n\right} \cdot \left{ y_1, y_2, ……y_n\right} = x_1y_1+x_2y_2+……x_ny_n $$ 通过核函数的计算点积其中,如果$\phi$是映射到二阶的话(默认都是从一元n维「一阶」升到一元$n^2$维「二阶」),$n^2$维的原因是任意两个元素都要进行相乘,所以导致最后是n*n个「二阶」。一般来说,核函数对于向量的提升都是从维度大幅提升,比如原来n维提升到m维。 $$ k(X, Y) = \phi(X)\cdot \phi(Y) \
X = \left{ x_1, x_2, ……x_n\right} \
\phi(X) = \left{x_1^2,\ x_2^2,\ ……\ x_n^2,\ x_1x_2,\ x_1x_3,\ …… \ x_1x_n \right} $$ 2、相似度计算公式

  • 两个向量夹角的余弦值「cos」(原始数据+经过核函数处理之后的高阶数据)
  • 两个向量的欧氏距离「d」(原始数据+经过核函数处理之后的高阶数据)

$$ \cos(X, Y) = \frac{X\cdot Y}{|X||Y|}= \frac{X\cdot Y}{\sqrt{X\cdot X}\sqrt{Y\cdot Y}} \
d(X, Y) = \sqrt{{||X-Y||}^2} = \sqrt{X\cdot X -2X\cdot Y+Y\cdot Y} \
\cos’(X, Y) = \frac {k(X, Y)}{\sqrt{k(X, X)}\sqrt{k(Y, Y)}} \
d’(X, Y) = \sqrt{k(X, X) -2k(X, Y)+k(Y,Y)} \
$$

目的

对于数据输入x、y满足$y=wx+b$这种线性解不存在。不过通过核函数进行映射,也就是$f(y) = wf(x)+b$存在线性解,使得数据线性可分的情况。(在高阶特征空间中找到解)

Posted on Jan 28, 2020