1 C 参数:过拟合
https://blog.youkuaiyun.com/lin_limin/article/details/81135754
2 为啥svm 复杂度高,如何解决
原因: svm 参数优化方法是先转为对偶问题再使用smo 算法,最坏的情况是要计算n*n 次,并不适合再大规模数据集上做分类,
svm 使用核技巧时候时,如RBF,特征会升高至无限维,计算量也大。
LR 适用于大规模线性分类,svm 可以有效解决高维特征的分类和回归,
svm 对小样本的寻优能力是非常好的,svm 的优化目标是结构化风险最小,有优秀的泛化能力,所以在小样本高维特征上表现很好,对大样本可能不太适合,一是上面提到的复杂,二是样本足够多时,支持向量机基本固定了,许多不重要样本的增加不能提高性能了。
如何解决复杂度高的问题:1, 分布式:对不同样本对做核距离计算,可以分开放在不同机器,2 svm-light 和libsvm
https://www.nowcoder.com/discuss/205464
https://blog.youkuaiyun.com/jianyuchen23/article/details/95803847
3 SVM 和lr 建模思想的不同
https://www.nowcoder.com/discuss/199755
都是线性分类器,从损失函数入手::任何线性分类器都是要在空间中找到一个超平面,尽可能让正负例分列到超平面两边。
svm 的loss 是hinge loss,即样本到超平面的函数间隔在1以外的样本点损失值为0,间隔在1 以内的样本点越靠近间隔1损失越小,说明svm 更care 分类超平面间隔为1范围内的样本分类是否正确,产生损失值的样本点位于分类平面两边很窄范围内,模型要优化的样本点就是这些样本点。
lr的损失函数是log 损失函数:-logyh(x)+(1-y)log(1-h(x)) ,h(x) 是样本点与超平面的距离(wx+b)经过sigmoid 映射后的概率值,距离越远,属于这一侧类的概率值越大,log 似然越大,则整体损失越小,因为经过了sigmoid映射,远到一定程度后样本的log 似然值都比较大,且与更远距离的样本似然值差别不大,为了使loss 小,lr 选的超平面应该尽量使离平面较远的点越多,更关注的是离分类平面一定距离外的样本,即让处于超平面的一定距离外的样本越多越好。
4 核函数的作用:
https://www.nowcoder.com/discuss/61907
提高维度,增加模型复杂度
1)线性不可分的数据通过一个映射函数把它从原始空间投射道一个更高维的特征空间,使得线性可分。对线性可分的新样本使用前面提到过的求解线性可分的情况下的分类问题的方法时,需要计算样本内积,因为维度很高,容易造成维数灾难,所以引入核函数,把高维向量的内积转变成了 求低维向量的内积问题。
2) 内积可以衡量相似度,分类就说找一个相似样本的过程。核函数的作用就是计算量
和的相似度。
核函数:一个二维向量的内积形式:表示两个高维空间的向量内积可以通过计算低维空间的内积来获得,即核函数,降低了计算量。只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。事实上对于一个半正定核矩阵,总能找到一个与之对应的映射,我们会质疑: 就算每个核函数都能找到一个与之对应的映射,但是它就一定能够映射到我们需要的那个维度吗? 其实核函数的使用,不一定能够准确的划分,只能说使用哪个核函数能够逼近真实的划分效果,因此特征空间的好坏对SVM 的性能很重要。
常用核函数:线性核,多项式核,高斯核,拉普拉斯核,sigmoid 核。
https://blog.youkuaiyun.com/jiangjieqazwsx/article/details/51418681