zoukankan      html  css  js  c++  java
  • 模式识别笔记2-线性模型

    1. 参数VS非参数

    11.PNG

    给定样本集 $(x_i, y_i), i= 1,2,cdots, n $,其中 (x_i) 表示特征向量, (y_i) 表示样本标签。

    考虑一个新的向量 (x),要将他分类到可选分类 ({C_1, C_2,cdots, C_c})中 。

    方法:

    • 参数的
    • 非参数的

    1.1 参数方法

    参数方法:

    • 参数方法假设样本分布的形式(概率密度函数Probability Density Function)是已知的

    • 使用训练样本来估计分布参数,比如高斯分布中的 (mu)(sigma)

    • 如果对于分布的假设是正确的,则预测会很准确;否则预测可能会很差

    参数方法使用极大似然估计来训练分类器,这点在前面一章的贝叶斯决策论也讲过。

    假定:

    • 给定训练集 (D=(x_k, y_k), k=1,2,cdots,n)
    • (p(x|omega_i)sim N(mu_i, Sigma_i), i=1,2,cdots, c)

    方法:

    • 将训练集 (D) 划分为 (D_i,i=1,2,cdots, c)
    • 对每一个分类的数据 (D_i) 分别估计 (mu_i)(Sigma_i)
    • 判别函数 (g_i(x)) 取决于 (mu_i)(Sigma_i)

    [egin{align} hat{mu}&=frac{1}{n}sum_{k=1}^nx_k, & hat{sigma}^2=frac{1}{n}sum_{k=1}^n(x_k-hat{mu})^2 end{align} ]

    1.2 非参数方法

    非参数方法:

    • 不会去假设样本分布符合某种特定分布
    • 相反,它假设判别函数具有某种特定的形式。比如SVM ,神经网络等等
    • 训练样本被用来估计分类器的参数
    • 局部最优,但易于使用

    2. 线性分类模型(二分类为例)

    img{:width="100px"}

    考虑一个简单的场景:类之间不相交

    • 数据线性可分
    • 不同类的数据由一个线性决策表面完全分开

    线性判别式注意:

    • 决策表面是输入的线性函数
    • 输入空间划分为决策区域

    2.1 二分类问题

    决策表面如此定义 (g(x)=0):

    [egin{align} g(x)=w^Tx+w_0 end{align} ]

    因为 (g(x)) 是线性的,所以决策表面是一个超平面:

    2.1.1 线性判别函数的几何意义

    对于一个2分类线性判别函数:

    • 判别函数表示向量(x)(代表一个待分类的数据)各个分量的线性组合,公式(2)已经说明了这个问题
    • (g(x)=w^Tx+w_0),其中 (w)(w_0) 表示权重向量和偏置
    • 对于一个给定的 (x),若 (g(x)geq0) ,则 (xin C_1) ,否则 (xin C_2)
    • 决策边界 (g(x)=0)

    几何意义:任意点到决策表面的距离

    • (x) 为任意点

    • (x_perp)表示 (x) 到决策表面的正交投影

      [ otag x=x_perp + rfrac{w}{||w||} ext { where } r ext{ denote the distance between } x_perp ext{ and } x ]

    • 两边都乘以相同的因子 (w^T),则:

      [ otag g(x)=0+frac{r}{||w||}Rightarrow r=frac{g(x)}{||w||} ]

    2.2 决策区域的凸性

    简单的说,就是两个点 (x_a)(x_b)在区域 (R_k)中,则两点连线上的所有点,均在这个区域内。

    2.3 向量增强

    对公式(2)如下操作:

    • 增加一维 (x_0=1)
    • (x leftarrow (x_0,x))
    • (wleftarrow (omega_0, w))

    于是:

    [g(x)=w^Tx ]

    显然这个决策边界在增强的 (D+1) 维样本空间中穿过原点

    2.4 模型小结

    • 判别函数表示向量(x)(代表一个待分类的数据)各个分量的线性组合,视作每个独立单元
    • 每个单元都具有输入输出
    • 输入单元精确输出与输入相同的值
    • 如果加权输入之和大于0,则输出单元输出1,否则输出-1

    2.5 感知器算法

    输入向量 (x) 通过一个固定的非线性变化得到一个特征向量 (phi(x))

    [ otag g(x)=f(w^Tphi(x)) ]

    (f) 是一个符号函数

    [ otag f(a)=left{ egin{array} {ll} +1,ageq0\ -1, a<0 end{array} ight. ]

    +1和-1分别表示向量 (x) 属于两个类。根据这个设定,我们可以得到损失函数。

    2.5.1 感知器标准

    使用标签 (y_nin{+1,-1}),每个模式需要满足:

    [ otag w^Tphi(x_n)y_n>0 ]

    对每个分错的样本,感知器标准试图最小化:

    [E(w)=-w^Tphi(x_n)y_n ]

    2.5.2 算法流程

    随机梯度下降梯度更新公式:

    [egin{array}{ll} w^{k+1}&=w^k-eta abla E(w)\ &=w^k+etaphi(x_n)y_n end{array} ]

    其中,(eta) 是学习率,(k) 是steps

    算法训练循环以下步骤:

    • 如果样本错分为(C_1(y_n=+1)),增加权重
    • 如果样本错分为(C_2(y_n=-1)),减小权重

    2.6 最小二乘分类

    主要思想,最小化投影距离:

    [J_s(w)=sum_{i=1}^n(w^Tx_i-b_i)^2 ]

    其中 (b_i) 是任意选取的。

    对公式(6)进一步化简:

    [J_s(w)=||Xw-b||^2 ]

    其中矩阵符号:

    [ otag w=egin{pmatrix} w_0 \ w_1 \ vdots \ w_d end{pmatrix},X=egin{pmatrix} x_{10} &x_{11} & cdots &x_{1d} \ x_{20}&x_{21} & cdots & x_{2d}\ vdots & vdots & ddots & vdots \ x_{n0}& x_{n1} & cdots & x_{nd} end{pmatrix},b=egin{pmatrix} b_0 \ b_1 \ vdots \ b_d end{pmatrix} ]

    最小化 (J), 显然 (Xw=b),所以有:

    [ otag w = X^{-1}b ]

    然而,矩阵 (X) 可能是奇异的,也就是说,没有逆矩阵。

    2.6.1 违逆法pseudo-inverse method

    对于公式(7),求梯度:

    [ otag abla J_s(w)=2X^T(Xw-b) ]

    极值必要条件:

    [ otag X^TXw=X^Tb ]

    可以求得:

    [w=(X^TX)^{-1}X^Tb ]

    2.6.2 最小均方算法least-Mean-Squared

    相比于违逆法,该方法的优势在于

    • 违逆法在 (X^TX) 奇异的时候有问题
    • 避免了矩阵很大的时候计算复杂
    • 违逆法训练时间更长

    回顾公式(6),直接求其对于(w)的梯度:

    [ otag abla J_s(w)=2sum_{i=1}^n(w^Tx_i-b_i)x_i ]

    更新公式:

    [w(k+1)=w(k)+eta(k)(b_i-w^Tx_i)x_i ]

    • 即使分离超平面存在,LMS方法也不需要收敛到它
    • 由于梯度噪声,LMS不会达到最佳效果

    2.7 广义线性模型

    广义线性判别函数:

    [g(x)=f(w^Tx+omega_0) ]

    其中 (f) 是激活函数。相应的决策表面:

    [ otag g(x)= ext{constant Or }w^Tx+omega_0= ext{constant} ]

    所以决策边界在特征空间里是线性的,即使 (f) 是非线性的

    广义线性判别函数:

    [ otag g(x)=sum_{i=1}^nw_iphi_ix ]

    二次判别函数:

    [ otag egin{array} g(x)=w_0+w_ix+w_2x^2\ ext{where } phi_1(x)=1,phi_2(x)=x,phi_3(x)=x^2 end{array} ]

    对于样本 (x_i),如果分类正确,则 (g(w,x_i)y_i>0)

    定义一个判别函数 (J(w)),如果 (w)是一个解向量,则该函数达到最小值

    算法流程:

    • 随机选择初始权重 (w_1)

    • 计算梯度 ( abla J(w(1)))

    • 根据负梯度计算:

      [ otag w(k+1)=w(k)-eta(k) abla J(w(k)) ext{ for } abla J=frac{partial J}{partial w} ]

      (eta) 是学习率,控制步幅

    3.多分类

    3.1 扩展到多分类方法

    • One-versus-the-rest

      构建判别函数,使用 (c) 个分类器,每个分类器解决一个2分类问题

    • One-versus-one

      (c) 个分类,对每两个分类构建一个分类器,则共有 (frac{c(c-1)}{2}) 个判别函数

    3.2 多分类判别

    考虑一个 (c) 分类问题,判别函数形式:

    [ otag y_k(x)=w_k^Tx+w_{k0} ]

    对于给定输入 (x),如果 (y_k(x)>y_j(x) ext{ for all }j eq k),则 (xin C_k),则 (C_k)(C_j)之间的决策边界为:

    [ otag y_k(x)=y_j(x) ]

    相应的超平面为:

    [ otag (w_k-w_j)^Tx +(omega_{k0}-omega_{j0})=0 ]

    二分类问题其实也是如此。

    优势:

    • 避免默认两可的区域
    • 每个决策区域单连通
    • 低复杂度
    • 需要c个分类器
  • 相关阅读:
    Centos7 安装 MySQL5.7
    搭建Harbor企业级docker仓库
    HAProxy安装文档
    mysqlbinlog查看 binlog日志报错mysqlbinlog: unknown variable 'default-character-set=utf8mb4'
    mysql删除数据库报错及解决方法
    服务器流量异常排查步骤(查看进程的流量)
    基于Docker Hub镜像的ProxySQL容器化部署与运行
    ProxySQL环境下,快速处理异常会话的方法(黑名单、KILL)
    DB2 SQL 错误(SQLCODE:-964,SQLSTATE:57011)处理方法
    pg_hba.conf、pool_hba.conf 以及 pool_passwd 三者间的关系
  • 原文地址:https://www.cnblogs.com/HolyShine/p/8732735.html
Copyright © 2011-2022 走看看