软件开发: 05 2007存档
如果把学实变函数和泛函分析的时间算上,那我就是花了一年才开始渐渐理解支持向量机。
支持向量机本意是用有最大间隔的向量来分隔两类样本点,但如何才能保证是“最大间隔”呢?那就需要先解它的一个对偶问题,这个对偶问题是用最优化方法中的拉格朗日对偶推出来的。为什么不直接解原始问题而去解它的对偶问题呢?当然是因为对偶问题比原始问题容易解啦...
大多数机器学习面对的训练集所需要的分类面都不是线性的,所以为了应对复杂的分类曲线,必须把低维特征向量映射为新的高维向量,而维度的增加会造成计算复杂性的急剧增大,所以用以简化计算的核函数诞生了:K(x,x')= ( y(x),y(x') ) 记得我第一次在《支持向量机导论》里看到这个核函数定义时,第一个想法就是把书撕掉,因为作者实在太不体贴了!这么突兀的一个公式能向读者说明什么呢?现在我倒是知道它的意义了:先做高维映射再计算内积太慢了,如果能找到一个函数,先算内积再映射而结果与前面的方法相同就能大大节省计算量了。这个函数就叫核函数。
再就是对偶问题的计算机解法,这是我现在理解最模糊的地方,牛顿法、多次迭代、一维搜索?就这样把离散的问题变成连续问题,会有多大的误差?怎么证明这一误差是可接受的?
我原以为多项式核已经足够强了,已经可以进行任何精确的分类了,结果发现对于“蓝布背景上一个绿圆圈”这种图形,多项式核就是分不清,它似乎总要和边界连通,只有用径向基核才能正确分开。为什么?
支持向量机本意是用有最大间隔的向量来分隔两类样本点,但如何才能保证是“最大间隔”呢?那就需要先解它的一个对偶问题,这个对偶问题是用最优化方法中的拉格朗日对偶推出来的。为什么不直接解原始问题而去解它的对偶问题呢?当然是因为对偶问题比原始问题容易解啦...
大多数机器学习面对的训练集所需要的分类面都不是线性的,所以为了应对复杂的分类曲线,必须把低维特征向量映射为新的高维向量,而维度的增加会造成计算复杂性的急剧增大,所以用以简化计算的核函数诞生了:K(x,x')= ( y(x),y(x') ) 记得我第一次在《支持向量机导论》里看到这个核函数定义时,第一个想法就是把书撕掉,因为作者实在太不体贴了!这么突兀的一个公式能向读者说明什么呢?现在我倒是知道它的意义了:先做高维映射再计算内积太慢了,如果能找到一个函数,先算内积再映射而结果与前面的方法相同就能大大节省计算量了。这个函数就叫核函数。
再就是对偶问题的计算机解法,这是我现在理解最模糊的地方,牛顿法、多次迭代、一维搜索?就这样把离散的问题变成连续问题,会有多大的误差?怎么证明这一误差是可接受的?
我原以为多项式核已经足够强了,已经可以进行任何精确的分类了,结果发现对于“蓝布背景上一个绿圆圈”这种图形,多项式核就是分不清,它似乎总要和边界连通,只有用径向基核才能正确分开。为什么?