线性判别分析和二次判别分析

什么是线性判别分析 (LinearDiscriminantAnalysis,LDA)?

  • 线性判别分析 (LinearDiscriminantAnalysis,LDA) 是经典的分类器,顾名思义,具有线性决策面
  • P(y=kx)=P(xy=k)P(y=k)P(x)=P(xy=k)P(y=k)lP(xy=l)P(y=l)P(y=k | x) = \frac{P(x | y=k) P(y=k)}{P(x)} = \frac{P(x | y=k) P(y = k)}{ \sum_{l} P(x | y=l) \cdot P(y=l)}

  • 选择类别 K 以最大化这个后验概率
  • 对数据的每个类别的类条件分布进行建模P(Xy=k)P(X|y=k),然后可以通过贝叶斯定理获得每个训练样本的预测xRdx\in R^d

什么是二次判别分析 (QuadraticDiscriminantAnalysis,QDA)?

  • 二次判别分析 (QuadraticDiscriminantAnalysis,QDA) 是经典的分类器,顾名思义,具有二次决策面
  • 对于线性和二次判别分析, P (x|y) 被建模为具有密度的多元高斯分

P(xy=k)=1(2π)d/2Σk1/2exp(12(xμk)tΣk1(xμk))P(x | y=k) = \frac{1}{(2\pi)^{d/2} |\Sigma_k|^{1/2}}\exp\left(-\frac{1}{2} (x-\mu_k)^t \Sigma_k^{-1} (x-\mu_k)\right)

  • d 是特征的数量

如何使用线性判别分析降维?

  • LDA 用于执行监督降维,方法是将输入数据投影到线性子空间,该线性子空间由最大化类之间分离的方向组成。输出的维度必然小于类的数量,因此这通常是一种相当强的降维,并且仅在多类设置中才有意义
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from sklearn import datasets

    from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

    iris = datasets.load_iris()

    X = iris.data
    y = iris.target
    target_names = iris.target_names

    # 降低到2维
    lda = LinearDiscriminantAnalysis(n_components=2)
    X_r2 = lda.fit(X, y).transform(X)