python机器学习-chapter2_13

•核技巧(kernel trick)

所要解决的问题:向原始数据中添加非线性特征,可以让线性模型变得更强大,但不知道要添加哪些特征,若添加过多的特征。计算开销会很大

原理:直接计算扩展特征表示中数据点之间的距离,而不用实际对扩展进行计算

方法:

①多项式核,在一定阶数内计算原始特征所有可能的多项式;

②高斯核,也成为径向基函数核(RBF),考虑所有阶数的所有可能的多项式,但阶数也高,特征重要性越小

 

•SVC(kernel = 'rbf', C = 10, gamma = 0.1)

C: float参数 默认值为1.0,C越大,即对分错样本的惩罚程度越大,因此在训练样本中准确率越高,但是泛化能力降低

kernel: str参数 默认为‘rbf’,算法中采用的核函数类型,可选参数有:

‘linear’:线性核函数

‘poly’:多项式核函数

‘rbf’:径像核函数/高斯核

‘sigmod’:sigmod核函数

‘precomputed’:核矩阵

gamma:float参数 默认为auto

核函数系数,只对‘rbf’,‘poly’,‘sigmod’有效。

如果gamma为auto,代表其值为样本特征数的倒数,即1/n_features.

更多SVC参数见:https://www.cnblogs.com/xiaotan-code/p/6700290.html

 

•SVM的表现通常很好,但对参数的设定和数据的缩放非常敏感,要求所有特征有相似的变化范围

重要参数:正则化参数C;核;核相关的系数

在RBF核中只有一个参数gamma,是高斯核宽度的倒数,gamma和C同时控制模型复杂度,较大的gamma或C都将增大模型的复杂度,应同时调节

优点:

①模型强大,在各种数据集的表现都很好

②即使在特征很少的情况下,都可以使得决策边界很复杂

③当所有特征的测量单位相似、范围相差不多时,效果很好(比如像素密度)

缺点:

①在样本个数的放缩表现不好,当样本个数超过10000个时,运行的时间和内存都会出现问题

②需要谨慎地数据预处理和调参

posted @ 2020-02-17 15:53  啵仔  阅读(149)  评论(0编辑  收藏  举报