目录
分类
对于人来说,分类是一种很自然的能力。看到猫的照片,我们知道是猫,看到狗的照片,我们知道是狗;根据邮件的内容我们也能很快看出这是不是一封广告/诈骗邮件。既然人能简单地完成这种任务,那我们能不能让计算机也做到呢?显然,当今的社会生活已经给了我们答案。我们今天就介绍一种最为简单的分类思想,逻辑回归(Logistic Regression)。
任务
首先,从简单的二分类讲起。
- 邮件:是否为诈骗邮件
- 肿瘤:良性还是恶性
- 照片:猫还是狗
类似这些的分类任务,我们称之为二分类(Binary Classification)。事实上这种二分类问题都可以抽象成对0和1的分类。整个模型简图如下,输入数据,通过一个函数,输出一个类别(0或者1)。
思路和方法
我们的思考方式一般都是从低维慢慢拓展至高维,所以我们这里就假设一个物体的特征可以用一个数来表示。比如我们假设根据肿瘤的大小就可以判断肿瘤是良性还是恶性,并且假设大的肿瘤更可能是恶性肿瘤。用0表示良性肿瘤,用1表示恶性肿瘤。
如上图所示,显然根据我们的设定,Size在1-4的 肿瘤都算是良性的肿瘤,Size大于等于5的肿瘤都是恶性的肿瘤。那么,根据这些数据,我们要怎么样才可以得到一个通用模型,使得输入一个肿瘤的大小,就可以判断它是良性的还是恶性的呢?
用线性回归?
按照这个思路,很容易联想到其实这也很像一个预测的过程,那么用我们之前介绍过的线性回归(线性回归:机器学习的"Hello, World")可不可以做到呢?
不妨试他一试,上图中的线性拟合结果大致可以表示成下图:
那么随便输入一个肿瘤的大小,我们就会得到一个输出 h θ ( x ) h_{\theta}(x) hθ(x),但是这个值的范围并不只有0和1,这种情况要怎么办呢?我们可以取0和1的中点0.5作为一个阈值,根据以下规则调整输出:
- 如果 h θ ( x ) ≥ 0.5 h_{\theta}(x)\geq0.5 hθ(x)≥0.5,认为 " y = 1 " "y=1" "y=1"
- 如果 h θ ( x ) < 0.5 h_{\theta}(x)<0.5 hθ(x)<0.5,认为 " y = 0 " "y=0" "y=0"
这样看起来貌似挺合理的,但是如果我们再加一个比较偏远的数据点呢?这个时候我们的误差就会非常大了,所以显然这并不是一个特别好的选择。
逻辑回归(Logistic Regression)
根据上面的分析可以看出,如果使用线性回归,输出的值是可以小于0或者大于1的。事实上对于一个分类程序来说,输出远小于0和远大于1都是非常奇怪的。逻辑回归的好处之一就是得到的输出是一个0到1的数。即:
0 ≤ h θ ( x ) ≤ 1 0\leq h_{\theta}(x)\leq1 0≤hθ(x)≤1
当我们在用线性回归的时候,我们提出的假设是:
h θ ( x ) = θ T X h_{\theta}(x) = \theta^TX hθ(x)=θTX
这个式子的意义就是,每一个输入的特征都对结果有一定的贡献,这个贡献的大小就是对应的权重 θ i \theta_i θi。为了让输出结果为在0到1之间,同时又要体现各个特征的贡献,那么聪明的人们就想到用以下形式来作为输出函数:
h θ ( x ) = g ( θ T X ) g ( z ) = 1 1 + e − z h_{\theta}(x) = g(\theta^TX)\\ g(z) = \frac{1}{1+e^{-z}} hθ(x)=g(θTX)g(z)=1+e−z1
函数 g ( z ) g(z) g(z)被称为 S i g m o i d Sigmoid Sigmoid函数,图像如下图所示:
显然,这个函数的值最终都是在区间 ( 0 , 1 ) (0,1) (0,1)上的。也就是说这个函数实现了所有实数到区间 ( 0 , 1 ) (0,1) (0,1)上的映射。我们再联想一下,这个一定在区间 ( 0 , 1 ) (0,1) (0,1)上的输出值,会有什么意义呢?当然可以解释成靠近0或1的程度,而这种程度,很直觉地,非常类似于概率。也就是说,我们得到的 h θ ( x ) h_{\theta}(x) hθ(x),可以认为是分类结果为1的概率。用数学形式表示如下:
h θ ( x ) = P { y = 1 ∣ x ; θ } h_{\theta}(x) = P\{y=1|x; \theta\} hθ(x)=P{
y=1∣x;θ}
好的,那么我们已经知道了使用的函数的形式及其意义,接下来我们介绍一下决策边界(Decision Boundary)。
决策边界(Decision Boundary)
再把 S i g m o i d Sigmoid Sigmoid函数搬出来,仍记得它长成这样:
g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+e−z1
显然,如果我们把 z = 0 z = 0 z=0代入函数式中,得到的函数值为0.5,也就是说
- z ≥ 0 : g ( z ) ≥ 0.5 z\geq0:\ g(z)\geq0.5 z≥0: g(z)≥0.5
- z < 0 :