所谓非线性变换,就是把原始的特征做非线性变换,得到一个新的特征,使用这个新的特征来做线性的分类,则对应到原始的特征空间中,相当于做了非线性的分类。非线性变换的好处是,算法将有更多的选择,Ein可以做的更低。
例如使用二次变换:
则Z空间中的一个直线分类边界,对应到原来空间中是一个二次曲线边界。可能是圆,椭圆,双曲线,抛物线,旋转后的椭圆,直线.......。
使用非线性变换进行学习的步骤如下:
2 非线性变换的代价
Q次非线性变换如下定义:
对应的Z空间的特征维度变为:
特征维度的增加,一方面带来的是存储和计算的代价:
更重要的另一个代价则是模型复杂度的代价。假设空间的VC维近似等于参数的个数:
而更大的VC维将使得Ein和Eout相差很远这件事的概率增加。这是机器学习中一个重要的trade off:
一种错误的认识是,通过观察数据来让Ein做的小,同时让VC维也小。例如:
咋看之下,Ein降低了,VC维减小。Ein确实很低,但是VC维真的很低了吗?答案是否定的。产生这样错误认识的原因是我们没有很好的理解之前推导VCbound时“假设空间”这一概念。事实上,由于有人的观察帮忙,假设空间已经不再是我们让算法做选择的那个函数集,而是人在做选择时人脑中的假设空间。因此这里的VC维其实并不单单是我们让算法做选择的那个函数集VC维。
3 结构化假设空间
从0次到Q次的非线性变换,它们对应的假设空间范围是逐渐变大的,并且后一个包含了前一个:
VC逐渐变大,Ein逐渐变小:
因此一个实用的建议是,先尝试线性模型,如果Ein不够好再把模型复杂度慢慢往上加。一定不要一开始就用很复杂的非线性变换:
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:《机器学习基石》—非线性变换 - Python技术站