参考书籍《统计学习方法》
一个学习算法通常有3个空间:
输入空间 --变换–> 特征空间 —模型–>输出空间
输入空间是指输入的所有可能的取值的集合
输出空间是指输出的所有可能的取值的集合
特征空间是指表示实例也就是具体输入的特征向量所在的空间
有的算法中输入空间没有变换成特征空间,直接通过模型映射到输出空间
有的算法会在计算之前先对输入空间做一个变换,得到特征空间作为输入。
输入空间为欧氏空间或离散集合,特征空间为欧氏空间或希尔伯特空间。
输入空间和特征空间不同。
输入空间到特征空间的变换如果是线性的,就叫做
线性可分支持向量机、线性支持向量机。
如果是非线性的,就叫做非线性支持向量机
不同的算法输入空间并不相同,在进行学习之前,通常会将搜集到的数据进行预处理。
将输入空间进行非线性变换到特征空间,这个处理技巧就叫做核技巧。其实也可以看做是一步预处理或者叫特征选择。从输入空间选择合适的特征,使得问题变的更加易于处理
欧几里得空间:有限维线性内积空间
线性空间:抽象定义为包含两种运算(加法与数乘)的一个集合,该集合在两种运算下保持封闭。
集合+加法运算+数乘运算(集合与数域之间定义的数乘)+运算封闭⟶ 性线性空间(又称向量空间)
线性空间+(定义)范数⟶线性赋范空间
线性赋范空间+内积运算⟶ 内积空间
内积空间+(线性)完备性⟶ 希尔伯特空间
完备性指就是空间中的极限运算不能跑出该空间,类似于有理数的除法运算还是有理数一样。完备空间中求极限结果还是在这个空间中。
总之
希尔伯特空间就是
集合+加法运算+数乘运算(集合与数域之间定义的数乘)+加法数乘运算封闭
+范数+内积运算+完备性(关于极限封闭)
也就是:
集合+加法运算+数乘运算(集合与数域之间定义的数乘)+内积运算
+范数+运算封闭性(关于加法、数乘、极限封闭)
首先选择线性可分支持向量机的原因是训练数据集是线性可分的。
对于数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T=\{ (x_1,y_1),(x_2,y_2) , \dots, (x_N,y_N)\} T={(x1,y1),(x2,y2),…,(xN,yN)}
其中 x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , … , N x_i \in \mathcal{X}=\mathbb{R}^n, y_i \in \mathcal{Y} = \{+1,-1\},i = 1,2, \dots, N xi∈X=Rn,yi∈Y={+1,−1},i=1,2,…,N
如果存在某个超平面 S: wx+b=0 能够将数据集的正实例点和负实例点完全正确的划分到超平面两侧,即对
∀ y i = + 1 , w x i + b > 0 , ∀ y i = − 1 , w x i + b < 0 \forall y_i = +1 , wx_i+b>0 , \forall y_i = -1 , wx_i+b<0 ∀yi=+1,wxi+b>0,∀yi=−1,wxi+b<0
则称数据集T为线性可分数据集,否则称T线性不可分。超平面S叫做数据集T的分离超平面。
学习的目标就是找到分离超平面,能找到的前提是训练数据集线性可分的。
所以一个数据集能不能用线性可分支持向量机 来进行分类,在高维的时候是无法直接通过定义来判断的。在低维的时候可以通过可视化之后直接观察,来确定是不是可分的。确定是可分的,然后才可以训练模型来找这个分离超平面。
也就是说一般过程应该是这样的。来了一堆有标记的数据,要找到个模型来进行分类。先大体看一下,发现大概可以用一条线来分开。然后就用线性可分支持向量机 这个模型来找到这条线。当然也可以用感知机去找。
感知机是从初值开始,选择误分类点,一步一步的来找分离超平面的。找到一个就停止寻找了。分离超平面可以有无数个,所以感知机只是找到其中的一个。但这个分离超平面能把训练数据集完全分开。
如果数据集有些异常点,导致数据集不是线性可分的。因为感知机在学习的时候要保证完全可分,完全可分的时候才会停止计算。所以线性不可分的时候就会导致算法不收敛,也就是会死循环的一直计算下去。