zoukankan      html  css  js  c++  java
  • Kernel Methods (1) 从简单的例子开始

    一个简单的分类问题, 如图左半部分所示. 很明显, 我们需要一个决策边界为椭圆形的非线性分类器.
    ellipse
    我们可以利用原来的特征构造新的特征: ((x_1, x_2) o (x_1^2, sqrt 2 x_1x_2, x_2^2)), 如此一来, 原来的数据从二维空间被映射到了三维. 这个时候, 原来线性不可分的数据已经线性可分了:

    [frac {x_1^2}{a^2} + 0*sqrt 2 x_1x_2 + frac {x_2^2}{b^2} = 1 ]

    在二维空间里, 它是一个椭圆;在三维空间里它是一个平面: (A x + Bz = 1), 其中(A = frac 1{a^2}, B = frac 1{b^2}).

    为方便描述, 现在我们来给出一些要用到的定义:

    • 原始输入(raw input): 直接输入分类器的特征数据:(x = (x_1, x_2, dots, x_n)). 它们所在的空间被称为输入空间(input space): (chi in R^n)
    • 特征映射函数(Phi):(R^n o R^d), (Phi(x) = z = (z_1, z_2, dots, z_d)), 它将原始输入映射到一个(d)维空间, 称为特征空间(feature space):(H in R^d). (d)一般要大于(n)

    再看一个例子. 这个特征空间(H)是一个二维空间, 数据样本是线性可分的. 现在我们根据一种简单的分类原则来求出一个线性分类器.
    simple classifier
    分类原则如下:

    • 特征空间中有正(+)负(o)两类样本, 它的中心点分别为(c_+ = frac {1}{m_+}sum_{y_i = 1}z_i), (c_- = frac {1}{m_-}sum_{y_i = -1}z_i), (m_+, m_-)分别为正负样本的个数.
    • (c_+, c_-)两点的中点为(c = frac {c_+ + c_-}{2})
    • 测试样本(x)在特征中空间中的表达为(z=Phi(x)).
    • 若向量(z - c)与向量(c_+ - c_-)之间的夹角小于(90^circ), 则(z)为正类, 否则为负类.

    分析:(<a,b>代表向量(a,b)的点积操作)
    (z - c)(c_+ - c_-)之间的夹角小于(90^circ): (<(z - c) , (c_+ - c_-) > > 0)
    (z - c)(c_+ - c_-)之间的夹角大于(90^circ): (<(z - c) , (c_+ - c_-) > < 0)
    ( herefore y(x) = sgn(<(z - c) , (c_+ - c_-) >)), 而

    [<(z - c) , (c_+ - c_-)> = <z , (c_+ - c_-)> - <c , (c_+ - c_-)> $$ $$= frac 1{m_+} sum_{{y_i = 1}} <z , z_i> - frac 1{m_-} sum_{{y_i = -1}} <z , z_i> + b$$, 其中 $b=frac 12 <(c_+ + c_-)><c_+ + c_-> = frac 12 (<c_+, c_+> - <c_-, c_->)$ $$ = frac 12 (frac 1{m_+^2}sum_{{y_i = y_j = 1}}<z_i, z_j> - frac 1{m_-^2}sum_{{y_i = y_j = -1}}<z_i, z_j>]

    可以看出, **预测输入(x)的标签(y), 只需要特征空间上的内积操作. ** 而特征空间上的内积结果得到的一个关于原输入数据的函数就是kernel function , 核函数 (kappa: chi^2 o R).

    [kappa(x_i, x_j) = <z_i, z_j> = <Phi(x_i), Phi(x_j)> ]

    代入上式得:

    [y(x)=sign(frac 1{m_+} sum_{{y_i = 1}} kappa(x , x_i) - frac 1{m_-} sum_{{y_i = -1}} kappa(x, x_i)+ frac 12 (frac 1{m_+^2}sum_{{y_i = y_j = 1}}kappa(x_i, x_j) - frac 1{m_-^2}sum_{{y_i = y_j = -1}}kappa(x_i, x_j)) ]

    很明显, 知道了kernel function (kappa)后, 特征映射函数(Phi)反而没有必要使用它了. 在实际应用中也是这样: 将一个机器学习算法, 如SVM, PCA, Linear Regression等, 转换为对应的kernel 版本时, 只需要选定一个kernel function (kappa)就行了, 并不需要选择对应的特征映射函数(Phi).

  • 相关阅读:
    Mysql流程控制语句和存储过程
    第七章 MySQL基础
    第六章 操作数据
    第四章 数据库操作
    第三章 使用MySQL图形化工具
    第二章 初识MySQL
    第一章 数据库基础
    Live555源码学习02 ---- 框架
    Live555源码学习01 ---- 编译
    SRS4.0之RTMP转WebRTC02 ---- RTMP推流到SRS
  • 原文地址:https://www.cnblogs.com/dengdan890730/p/5489175.html
Copyright © 2011-2022 走看看