统计学习导论之读书笔记(三):分类(Classification)

统计学习导论之读书笔记(三):分类

    • 1 分类问题概述
    • 2 为什么线性回归不可用
    • 3 逻辑斯谛回归(二分类问题)
      • 3.1逻辑斯谛模型
      • 3.2 估计回归系数
      • 3.3 多元逻辑斯谛回顾
    • 4. 线性判别分析(LDA)
      • 4.1 LDA vs 逻辑斯谛回归:
      • 4.2 运用贝叶斯定理进行分类
      • 4.3 仅有一个预测变量的线性判别分析
      • 4.4 二次判别分析(QDA)
    • 5 分类方法的比较
    • 6 R语言实现

1 分类问题概述

分类模型(classifier)是一种用来预测定性响应变量的方法。我们将讨论三种应用最广泛的分类方法:洛吉斯蒂回归(logistic regression)线性判别分析(linear discriminant analysis, LDA)K最近邻(KNN)

2 为什么线性回归不可用

线性回归在预测定性响应变量下是不可用的,原因:通常我们不能将一个定性的响应变量自然地转化为两水平以上地定量变量来建立线性回归模型。(这样做实际会默认一个有序地输出)。

对一个二元响应变量,最小二乘回归是有意义的。但它的估计值很可能在[0,1]之外,这个数值难以被当作概率来解释。(注意线性回归产生的估计实际上是 P r ( Y = Y j ∣ X ) Pr(Y=Y_{j}|X) Pr(Y=YjX)的估计)。

3 逻辑斯谛回归(二分类问题)

我们通常会更关心Y属于某一类的概率,逻辑斯谛回归是对 Y Y Y属于某一类的概率建模而不直接对响应变量 Y Y Y建模。

3.1逻辑斯谛模型

逻辑斯谛函数为:

  p ( X ) = ϵ β 0 + β 1 X 1 + ϵ β 0 + β 1 X   \ p(X) = \frac{\epsilon^{\beta_{0}+\beta_{1}X}}{1+\epsilon^{\beta_{0}+\beta_{1}X}}\,  p(X)=1+ϵβ0+β1Xϵβ0+β1X

对上述两边取对数,可以得到:

  l o g ( p ( X ) 1 − p ( X ) ) = β 0 + β 1 X   \ log(\frac{p(X)}{1-p(X)})= \beta_{0}+\beta_{1}X\,  log(1p(X)p(X))=β0+β1X

所以,上式左边称为对数发生比(log-odd)或分对数(logit),逻辑斯谛回归模型可以视为分对数变换下关于 X X X的一个线性模型。

3.2 估计回归系数

估计回归系数使用的方法是:极大似然估计,即最大化似然函数:

  l ( β 0 , β 1 ) = ∏ i : y i = 1 p ( x i ) ∏ i : y i ′ = 0 ( 1 − p ( x i ′ ) )   \ l(\beta_{0},\beta_{1})=\prod_{i:y_{i}=1}p(x_{i})\prod_{i:y_{i'}=0}(1-p(x_{i'}))\,  l(β0,β1)=i:yi=1p(xi)i:yi=0(1p(xi))

所估计的系数应使似然函数值最大。

3.3 多元逻辑斯谛回顾

这里的多元是指有多个预测变量。
混淆现象(confounding)的含义:类似线性回归,只用一个预测变量得到的结果可能和多个预测变量得到的结果完全不一样,尤其是当这些因素之间存在相关性的时候。

4. 线性判别分析(LDA)

4.1 LDA vs 逻辑斯谛回归:

(1)当类别的区分度高的时候,逻辑斯谛回归模型的参数估计不稳定,这点在LAD中不存在。
(2)如果样本量比较小,而且在每一类响应变量中预测变量 X X X近似服从正态分布,则LDA比逻辑斯谛回归模型更稳定。
(3)多分类响应变量情况下,常用LDA

LDA类似贝叶斯分类器,利用了贝叶斯定理。

4.2 运用贝叶斯定理进行分类

贝叶斯定理表述为:

  P r ( Y = k ∣ X = x ) = P ( Y = k ) P ( X = x ∣ Y = k ) P ( X = x ) = π k f k ( x ) ∑ l = 1 K π l f l ( x )   \ Pr(Y=k | X=x) =\frac{P(Y=k)P(X=x|Y=k)}{P(X=x)}=\frac{\pi_{k}f_{k}(x)}{\sum_{l=1}^{K}\pi_{l}f_{l}(x)}\,  Pr(Y=kX=x)=P(X=x)P(Y=k)P(X=xY=k)=l=1Kπlfl(x)πkfk(x)

其中, π k = P ( Y = k ) \pi_{k}=P(Y=k) πk=P(Y=k)是响应变量Y的第k类的概率(先验概率), f k ( x ) = P ( X = x ∣ Y = k ) f_{k}(x)=P(X=x|Y=k) fk(x)=P(X=xY=k)表示Y中的第k类水平下对应的 X = k X=k X=k的概率(X的密度函数)。 P r ( Y = k ∣ X = x ) Pr(Y=k | X=x) Pr(Y=kX=x)记作 p k ( X ) p_{k}(X) pk(X),为 X = x X=x X=x的观测下对应的Y的第k类水平的后验概率。

由之前内容知道,贝叶斯分类器会将一个观测分到 p k ( X ) p_{k}(X) pk(X)最大的一类中(但 p k ( X ) p_{k}(X) pk(X)不容易知道),运用贝叶斯定理,由于 π k \pi_{k} πk事先容易知道,只要我们可以估计出 f k ( X ) f_{k}(X) fk(X)(不容易知道),就可以发展出一个与贝叶斯分类器类似的方法,这就是LDA方法的思想起源之处。

4.3 仅有一个预测变量的线性判别分析

假设 f k ( x ) f_{k}(x) fk(x)是正态的。预测变量为一个时,即 p = 1 p=1 p=1时,正态密度函数的形式为:

  f k ( x ) = 1 2 π σ k e x p ( − 1 2 σ k 2 ( x − μ k ) 2 )   \ f_{k}(x) = \frac{1}{\sqrt{2\pi} \sigma_{k}}exp(-\frac{1}{2\sigma^2_{k}(x-\mu_{k})^2})\,  fk(x)=2π σk1exp(2σk2(xμk)21)

其中, μ k \mu_{k} μk σ k 2 \sigma^2_{k} σk2是Y中第K类的平均值和方差。然后假设所有K个类的方差都是相同的,即 σ 1 2 = σ 2 2 = ⋯ = σ k 2 = σ \sigma^2_{1}=\sigma^2_{2}=\cdots=\sigma^2_{k}=\sigma σ12=σ22==σk2=σ。把正态密度函数的公式带入上式,再取对数,这时我们会将观测分到

  δ k ( x ) = x ⋅ μ k σ 2 − μ k 2 2 σ 2 + l o g π k   \ \delta_{k}(x)=x\cdot\frac{\mu_{k}}{\sigma^2}-\frac{\mu^2_{k}}{2\sigma^2}+log\pi_{k}\,  δk(x)=xσ2μk2σ2μk2+logπk

最大的一组。分类器名称中的“线性”一词是由于判别函数中 δ k ( x ) \delta_{k}(x) δk(x)是x的线性函数。

(这里,我们不考虑有多个预测变量时的x的线性函数的形式和推导)

4.4 二次判别分析(QDA)

二次判别分析(quadratic discriminant analysis, QDA)需要估计高维情况下的协方差矩阵,估计的参数更多,所以比LDA分类器更光滑。

5 分类方法的比较

(1)虽然原理不同,但logistic regression和LDA方法紧密相连。在类数为2,预测变量个数为1的情况下,它们都会产生一个线性决策边界,区别是参数估计的方法一个是极大似然估计出来的,一个是通过估计的正态分布的均值和方差估计出来的。
(2)logistic regression和LDA得到的结果接近。如果高斯分布(正态性假设)成立的话,LDA的表现效果会更好,反之,logistic regression表现效果会更好。
(3)KNN是一个非参数方法,对决策边界的形状没有做出任何假设,当决策边界高度非线性时,KNN会优于logistic regression和LDA。
(4)QDA得到一个二次的决策边界,比线性方法应用范围更广。

6 R语言实现

logistic regression:
glm()函数用于拟合广义线性模型,包含了logistic regression模型,用法和lm()类似,不同在于要设置参数family = binomial。如:

glm(y~x1+x2, data, family = binominal)

注:family = gaussion时,glm()等同于lm()

linear discriminant analysis:
实现线性判别分析用MASS库中得lda函数拟合,用法和glm()类似,无family项。如:

library(MASS)
lda(y ~ x1+x2, data)

KNN:
KNN可以用class库中knn()来实现,和lm(),glm(),lda()不同,knn()可以直接做预测。这个函数需要输入四个参数:
(1)train.X, 训练数据相关的预测变量矩阵
(2)test.X, 预测数据相关的预测变量矩阵
(3)train.Direction, 训练观测类对应的类别向量
(4)K的值,分类器中使用的最邻近观测的数量
如:

knn.pred <- knn(train.X, test.X, Direction, k=1)

你可能感兴趣的:(机器学习)