引言
本篇文章主要偏向于实际应用的目标,我会把详细的python代码专门写在 jupyter notebook上。这篇文章主要介绍了一些关于应用Logistic Regression,LDA和Shrinkage Methods的一些要点,让你在实际应用中可以更好地发挥各个模型的优势,这篇文章全部来自于对An Introduction to Statistical Learning的总结,如果你有相关的统计学基础,你可以很快读懂文章,并结合到实际的应用,如果你没有相应的基础,希望你参考我的这篇文章:学好机器学习必会的统计学知识。
这是与本篇文章相对应地python代码和一些数据集,请点我
Logistic Regression
Default数据集描述,详细信息在第6页。
logistic regression 是一个线性模型用于做分类的,它直接对Y属于某个类别的概率进行建模。比如对于Default数据集来说,Pr(default = Yes | balance, student, income). 这也就是说,对于任何给定的balance, student, income的值,我都可以求出default = Yes的概率。如果我设定阙值为0.3,那么只要Pr(default = Yes | balance, student, income) > 0.3,我就预测default的结果为Yes.
既然logistic regression是对概率进行建模,因此我们需要一个函数的输出在0到1之间。有很多函数符合这个性质,但是在logistic regression中,我们用logistic function,公式如下:
那么我们如如何来估算Logistic Regression的要参数呢?答案是用maximum likelihood. 比如,我们对Pr(default = Yes | X)来进行建模,把估算出的一系列参数插入到模型中,使得所有defaulted人的概率接近1,使得所有没有defaulted人的概率接近0. 我们可以把这样的想法写成一个数学公式表达出来:
我们目的是找出一系列参数来最大化上面的likelihood函数。
Linear Discriminant Analysis
Logistic regression用logistic函数直接对Pr(Y = k|X = x)建模。而LDA用一种间接的方法去估算这些概率。LDA对每个response中X的分布进行建模,然后用Bayes理论去反转去估算Pr(Y = k|X = x). 如果每个response中X的分布为正态分布,那么LDA与logistic regression模型是非常相似的。LDA相比于logistic regression模型有以下3个优势:
- 当类别能well-separated时, logistic regression模型的参数估计是非常不稳定的,而LDA并没有这样的问题。
- 如果数据集中的样本很少并且每个类别中的X是接近正态分布的,那么LDA也要比logistic regression模型更加稳定。
- 当我们的response超过2个类别时,LDA是更受欢迎的。
假设我们一共有k个类别,Bayes 理论可以写成如下公式:
- πk: 第k个类别的prior probability
- fk(x): 第k个类别中X的density function
- 以后我们会把Pr(Y = k | X = x)简写成 pk(X) ,称为posterior probability
LDA总体的思路已经被浓缩在上面的一个公式中了。LDA的主要目标就是估算出prior probability和density function,之后我们就可以在给定X的情况下,分别求出属于各个类别的概率。想要估算出density function,我们必须假设它的形式,在LDA中,我们的假设都是正态分布。
只有一个特征的LDA
我们已经假设 fk(x) 是normal的,在one-dimensional的情况下,normal density的形式如下: