zoukankan      html  css  js  c++  java
  • SVM: 使用kernels(核函数)的整个SVM算法过程

    将所有的样本都选做landmarks

    一种方法是将所有的training data都做为landmarks,这样就会有m个landmarks(m个trainnign data),这样features就是某个x(可以是trainning data/cross validation data/test data里面的)与这些landmarks之间的距离的远近程度的描述。

    landmarks选定后得出新的features向量

    给出一个x,则通过这些landmarks来计算features向量,和之前的类似,将f0=1;

    对于在training data里面的x(i)则通过kernel函数映射后变为f1(i),f2(i).....fm(i)(m个trainning data,m个landmarks),对于fi(i),由高斯核函数计算得出1

    如何minimize cost function得出parameters-- θ

    我们根据核函数计算出new features f(有m+1维):m个landmarks(m个data set),+1是f0=1

    cost function与之前的有些不同,因为我们用了新的features,所以z不是θTx(i)而是θTf(i);后面的正则化项因为θ为m+1维,不对θ0正则化,即从θ1-m进行累加

    这儿需要注意的是在使用SVM与核函数时,不是使用θTθ来表示parameters的平方的累加,而是使用θT(M为依赖于采用的某个核函数的矩阵),为另一种略有区别的距离度量方式,不使用||θ||2进行最小化,而是最小化另一种类型的度量(参数向量θ的变尺度形式,这种变化和核函数有关),这样使得SVM有效率的运行,之所以这样做是为了适应大的数据集,因为当我们的数据集很大的时,landmarks就会很多,θ的维数也会很大,这样计算θ就会很慢,所以做了这样的优化。

    kernels能应用到其它算法吗?如logistic regression等?可以将kernels应用到其它算法,但是用于SVM的计算技巧却不能较好的推广到其它算法(如logistic regression),所以将kernels应用到logistic regression时,会变得非常慢。

    SVM与kernels是相配的,而logistic regression与kernels会十分慢。

    一些计算小技巧是人们专门为使用kernels的SVM来开发的

    如何确定SVM的一些参数(如C与高斯核函数的σ2)--bias与variance之间的权衡

    C=1/λ,λ为正则化参数,当C大时,表示λ小,则会high variance,low bias(overfitting)

    当C小是,表示λ大,则会high bias, low variance(underfitting)

    σ2为高斯核函数的参数,用来表示f(新的features)与x之间变化是平缓的还是急剧的。

    大的σ2,表示参数的值随着x的变化而变化平缓,所以会出现underfitting(high bias,lower variance)

    小的σ2,表示参数的值随着x的变化而变化急剧所以会出现overfitting(high variance,lower bias)

  • 相关阅读:
    [某鸥实训记][objective-c][第四天][个人笔记]
    [某鸥实训记][objective-c][第三天][作业]打地鼠X2
    [某鸥实训记][objective-c][第三天][个人笔记]
    京东书籍爬取
    抽屉爬取
    scrapy项目renrencookie
    scrapy项目suningbook
    scrapy项目4
    scrapy项目3
    scrapy项目2
  • 原文地址:https://www.cnblogs.com/yan2015/p/5183284.html
Copyright © 2011-2022 走看看