西瓜书第三章-线性模型

Scroll Down

引言

我们都知道线性模型是机器学习分类和回归的基础,那么今天就来重温一下基础吧!

正文

1. 线性模型

给定由d 个属性描述的示例$x=(x_1,x_2,...x_d)$ , 其中xi是x在第i个属
性上的取值,线性模型(linear model)试图学得一个通过属性的线性组合来进行
预测的函数,即:
image.png
一般用向量形式写成:
image.png
非线性模型可以通过线性模型堆叠生成

2. 线性回归

给定数据集$D={(x_1,y_1),...(x_m,y_m)}$,$x_i=(x_,x_,...x_)$,"线性回归"试图学得一个线性模型以尽可能准确地预测实值输出标记.

根据输入属性可以分成以下几种情况:

  1. 属性值间存在"序" (order)关系
    可通过连续化将其转化为连续值,比如身高属性高和矮取值{1,0},高、中、矮可以取值{1,0.5,0},
  2. 属性值间不存在序关系
    假定有k 个属性值,则通常转化为k 维向量,用One-hot编码,
    image.png
  • 线性回归闭式解
    通常采用均方误差来衡量f(x)和y,为了使得均方误差最小化:
    image.png
    基于均方误差最小化来进行模型求解的方法称为"最小二乘法",在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小.求解ω 和b 使$E_{(w,b)=\summ_(y_i-wx_i-b)2}$最小化的过程,称为线性回
    模型的最小二乘"参数估计",$E_{(w,b)}$分别对w和b求导,令导数为0得到最优解的闭式解:
    image.pngimage.png
    image.png

  • 最小二乘法估计
    我们把ω和b 吸收入向量形式$\hat w=(w,b)$ , 相应的把数据集D 表示为一个m x (d+1)大小的矩阵X ,其中每行对应于一个示例,该行前d 个元素对应于示例的d 个属性值,最后一个元素恒置为1 ,即image.png
    再把标记也写成向量形式$y=(y_1,y_2,...y_m)$ ,有:
    image.png

    image.png
    对$\hat w$求导,有:
    image.png
    令上式为0即可得到闭式解,下面对$X^TX$进行讨论:

    • 满秩:
      image.png
      image.png
    • 不满秩:
      引入正则化项

通常还采用对数回归使得输出标记在对应尺度上进行变化,image.png
在试图让$e{wTx+y}$逼近y ,得到广义线性回归模型:
image.png

对数几率回归

很多时候我们需要把预测输出值$z=w^Tx+b$限定在(0,1)之间,可以让z通过sigmoid函数:
image.png

image.png
image.png
将y视为样本z 作为正例的可能性,则1-y 是其反例可能性,两者的比值$\frac
{1-y}$称为几率,输出为正例的相对可能性,对数几率即为:
image.png
用线性回归模型的预测结果去逼近真实标记的对数几率,因此,其对应的模型称为"对数几率回归",虽然它的名字是"回归",但实际却是一种分类学习方法.

  • 参数确定
    y视为类后验概率估计$p(y=1|x)$,得到:
    image.png
    image.png
    给定数据集${(x_i,y_i)}_
    ^m$通过极大似然法:
    image.png
    下面引用西瓜书上的推导过程:
    image.png
    最大化上式等价于最小化:
    image.png
    可用牛顿法或者梯度下降法求解:
    image.png
    image.png

LDA(Fisher判别分析)

给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别.
image.png
为了少打公式,下面应用原文(这一部分书上写的还是不错)
image.png
image.png
欲使同类样例的投影点尽可能接近,可以让同类样例投影点的协方差尽可能小,即$wT\sum_0w+wT\sum_1w$尽可能小,欲使不同类直接距离尽可能大,可以让$|wT\mu_0-wT\mu_1|^2_2$尽可能大,得到以下优化目标:
image.png

  • 类内散度矩阵
    image.png
  • 类间散度矩阵
    image.png
    优化目标重写为:
    image.png
    令$wTS_ww$= 1,上式等价为:
    image.png
    使用拉格朗日乘子法:
    image.png
    其中λ 是拉格朗日乘子.注意到$S_bw$的方向恒为$\mu_0-\mu_1$ ,不妨令:
    image.png
    有:
    image.png
    考虑到数值解的稳定性,在实践中通常是对Sw 进行奇异值分解,即$S_w=U\sum V
    T$,这里$\sum$是一个实对角矩阵,其对角线上的元素是$S_w$的奇异值,然后再由$S_w{-1}=V\sum{-1}UT$得到$S_w{-1}$,同理也可以把LDA用在多分类任务中:
    假定存在N 个类,且第i类示例数为叫mi,我们先定义"全局散度矩阵"
    image.png
    μ 是所有示例的均值向量.将类内散度矩阵$S_w$重定义为每个类别的散度矩阵之和,即:
    image.png
    其中:
    image.png
    image.png
    常见的一种实现是采用优化目标:
    image.png
    tr表示矩阵的迹,采用以下广义特征:
    image.png
    可以把N维降低到N-1维

多分类问题

可以采用以下几种策略:

  • 一对一:拆成多个二分类
    对N个类别,进行两两配对,从而产生N(N-1)/2 个二分类任务,例如区分i类和j类,可以把i类当成正类,j类当成反类
  • 一对多:把i类当成正类,其余当成反类,有N个分类器
  • 多对多: 把若干类别当成正类,其他当成反类,需要对正反类进行编码

ECOC

  • 编码:
    对N个类别做M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集;这样一共产生M个训练集,可训练出M 个分类器.
  • 解码
    M 个分类器分别对测试样本进行预测,这些预测标记组成一个编码.将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果.
  • 类别划分
    类别划分通过"编码矩阵"指定,常见有二元码和三元码,前者将每个类别分别指定为正类和反类,后者在正、反类之外,还可指定"停用类,西瓜书上的例子非常好,这里直接引用:
    image.png
    image.png
    其中的欧式距离和海明距离可以参考我的另一篇博客:
    http://121.40.183.153:8090/archives/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E4%B8%AD%E5%B8%B8%E8%A7%81%E5%87%A0%E7%A7%8D%E8%B7%9D%E7%A6%BB
    ECOC 编码对分类器的错误有一定的容忍和修正能力,一般分类器数量越多,纠错能力越强,但计算开销变大。

类别不平衡问题

样本中正负样本数目不均衡,这时输出阈值不能简单设定为0.5,可以设为:
$\frac{m+}{m-}$,其中m+为正样本数目,m-为负样本数目