第三章 线性模型
第三章 线性模型
  3.1 基本形式
    核心思想
    公式
      一般形式
      向量形式
    优点
      形式简单
      易于建模
      有很好的可解释性（comprehensibility）
  3.2 线性回归
    核心思想
    线性回归（linear regression）试图学得一个线性模型以尽可能准确地预测实值输出标记
    一元线性回归
      问题描述
      输入的属性数量只有一个
      目标函数
      问题求解
          最小二乘“参数估计”（parameter estimation）
          回归任务中最常用的性能度量
          求解过程
            令两式为0
          基于均方误差最小化来进行模型求解的方法称为“最小二乘法”（least square method）
            几何意义
            在线性回归中，最小二乘法就是试图找到一条直线，使所有样本到直线上的欧氏距离之和最小
            欧氏距离（Euclidean distance）
    多元线性回归
      问题描述
      输入的属性值有多个
      目标函数
      问题求解
          求解过程
              令其为0
                两种情况
                    选择哪一个解是依据学习算法的归纳偏好决定的，最常见的做法就是引入正则化（regularization）
    对数线性回归
      使得模型的预测值对应于真实值的某个衍生物
    广义线性模型
      模型的预测值与真实值之间可以通过“联系函数”（link function）对应
      广义线性模型的参数估计常通过加权最小二乘法或极大似然法进行
  3.3 对数几率回归
    通过线性回归的模型来进行分类任务
      解决思路
      利用广义线性模型
      只需找一个单调可微函数将分类任务的真实标记与线性回归模型的预测值联系起来
    二分类任务
      联系函数
        单位阶跃函数（unit-step function）
            若预测值大于零判为正例
            若预测值小于零判为反例
            若预测值等于零则可任意判别
          不连续性
        对数几率函数（logistic function）
          实际上在用线性回归模型的预测结果去逼近真实标记的对数几率
          一定程度上近似单位阶跃函数的“替代函数”（surrogate function），并希望它单调可微
          Sigmoid函数
            最重要的代表
            概念
            形似 S 的函数，它将 z 值转化为一个接近 0 或 1 的 y 值，并且其输出值在 z=0 附近变化很陡
            带入广义线性模型中
          对数几率回归（logistics regression）
    特点
      虽然名字中包含回归，但是实质却是一种分类学习方法
      优点
        它是直接对分类可能性进行建模，无需事先假设数据分布
        它不是仅预测出“类别”，而是可得到近似概率预测，这对许多需利用概率辅助决策的任务很有用
        对率函数是任意阶可导的凸函数，有很好的的数学性质，现有的许多数值优化算法都可直接用于求解最优解
    问题求解
          对率回归模型最大化“对数似然”（loglikelihood），即令每个样本属于其真实标记的概率越大越好
  3.4 线性判别分析
    概念
      线性判别分析（Linear Discriminant Analysis，简称 LDA）的核心思想
      给定训练样例集，设法将样例投影到一条直线上，使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离
      也称 “Fisher判别法”
        LDA要求更严格，各类样本的协方差矩阵相同且满秩
    LDA可以从贝叶斯决策理论的角度来阐释，并可证明，当两类数据同先验、满足高斯分布且协方差相等时，LDA可达到最优分类
    二分类任务
      LDA欲最大化的目标
      广义瑞利商（generalized Rayleigh quotient）
        参数定义
          由于直线是一维空间，因此这四个值均为实数
        目标
          同时考虑两者，则可得到与最大化的目标
        公式
          类内散度矩阵（within-class scatter matrix）
          类间散度矩阵（between-class scatter matrix）
      问题求解
          推导过程
            则其对偶问题变为
          求解过程
  3.5 多分类学习
    拆解法
      基本思路
        即将多分类任务拆分为若干个二分类任务求解
        具体来说，先对问题进行拆分，然后为拆出的每个二分类任务训练一个分类器；在测试时，对这些分类器的预测结果进行集成以获得最终的多分类结果
      拆分策略
        “一对一”（One vs. One，简称 OvO）
        “一对其余”（One vs. Rest，简称 OvR）
        “多对多”（Many vs. Many，简称 MvM）
      示例
        OvO && OvR
          OvO
            将这N个类别两两配对，从而产生N(N-1)/2个二分类任务
            在测试阶段，新样本将同时提交给所有分类器，欲使我们将得到N(N-1)/2个分类结果，最终结果通过投票产生
          OvR
            每次将一个类的样例作为正例、所有其他类的样例作为反例来训练N个分类器
            在测试阶段，若仅有一个分类器预测为正类，则对应的类别标记作为最终结果分类
          对比
            在测试时，OvO的存储开销和测试时间开销通常比OvR更大
            在训练时，OvR的每个分类器均使用全部的训练样例，而OvO得每个分类器仅用到两个类的样例，训练开销比较小
        MvM
          OvO和OvR可以看做是MvM的特例
          每次将若干个类作为正类，若干个其他类作为反类
          纠错输出码（Error Correcting Output Codes，简称 ECOC）
            工作过程
              编码
                对N个类别做M次划分，每次划分将一部分类别划为正类，一部分划为反类，从而形成一个二分类训练集
                这样一共产生M个训练集，可训练出M个分类器
              解码
                M个分类器分别对测试样本进行预测，这些预测标记形成一个编码
                将这个预测编码与每个类别各自的编码进行比较，返回其中距离最小的类别作为最终预测结果
            编码矩阵 （coding matrix）
              常见形式
                二元码
                  正类
                  反类
                三元码
                  正类
                  反类
                  停用类
            为什么称“纠错输出码”？
              在测试阶段，ECOC编码对分类器的错误有一定的容忍和修正能力
              一般来说，对同一个学习任务，ECOC编码越长，纠错能力越强
                编码越长，付出的代价是所需训练的分类器越多，计算、存储开销都会增大
                对有限类别数，可能的组合数目是有限的，码长超过一定范围后就失去了意义
              对同等长度的编码，理论上来说，任意两个类别之间的编码距离越远，纠错能力越强
                码长较小时可根据这个原则计算出理论最优编码，然而码长稍大一些就难以有效地确定最优编码
                并不是编码的理论性质越好，分类性能就越好
  3.6 类别不平衡问题
    基本策略
    类别不平横（class-imbalance）
      指分类任务中不同类别的训练样例数目差别很大的情况
    理想情况下
      不同类别的训练样例数目相当
    真实情况下
      正类与反类样例数目可能出现较大差异
        本生训练集中不同类别的数目就是有差距的
        经过拆分策略之后导致出现类别不平衡现象
    再缩放（rescaling）
      这里举例说明时，假设反例比正例多
      只需对预测值进行平衡性调整即可
        思想简单，实际操作困难
          主要原因“训练集是真实样本总体的无偏采样”这个假设往往并不成立
          即可能无法从训练集观测几率来推断出真实几率
      解决方法
        欠采样（undersampling）
或
下采样（downsampling）
          直接对训练集里的反类样例进行欠采样，即去除一些反例，使得正、反例数目接近，然后再进行学习
          特点
            分类器训练集远小于初始训练集
            若采用随机采样，可能会导致一些重要信息丢失
          代表算法：EasyEnsemble
            局部丢弃，整体不会丢失信息
            利用集成学习机制，将反例划分为若干个集合供不同学习其使用
        过采样（oversampling）
或
上采样（upsampling）
          对训练集里的正类样例进行过采样，即增加一些正例使得正、反例数目接近，然后再进行学习
          特点
            分类器训练集远大于初始训练集
            不可进行重复采样，否则会导致严重的过拟合
          代表算法：SMOTE
            对训练集里的正例进行插值来产生额外的正例
        阈值移动（threshold-moving）
          直接基于原始训练集进行学习，但在用训练好的分类器进行预测时，引入比例进行调整