机器学习——logistic Regression
通过线性分类,我们预测的是一个样本是positive,还是negative,不过有时候我们并不想要那样明确的结果。有时候,这种情况在医学中更为常见,我们想知道一个样本是正的概率,比如医院中对肿瘤良性与恶性的预测,来决定后续的治疗方式。概率是从0到1的实数,因此对概率的预测依然属于回归而非分类。
理想中,我们希望样本的样子是这样的:,即对每个样本,都已知它是positive的概率。但是实际上我们往往无法得到这样的结果,我们无法确切知道某个样本是正的概率。我们得到的样本,往往与分类问题的样本一样,对每个样本,知道它是negative,还是positive。不过我们可以假想,得到的训练集是理想情况+噪声造成的:如果是negative,我们可以说它是positive的概率为0,如果是positive,我们称该概率为1。我们希望可以预测出概率。
首先,有之前的pla与linear regression的基础,很容易想到,使用去得到预测值。但是预测值虽然是实数,但是因为是概率,所以它的分布仅在于,因此仅仅使用是不符合预期的。
这里,将介绍一种函数叫logistic函数:(在数学上这个定义更加严格一点,而此处是logistic函数的一种).这个函数的图像如下:
![]()
它满足下面的条件: & $_ {x -} f(x) = 0 $,它的值域是(0,1),这个性质目前很符合我们的期望。
接下来,我们需要定义的就是,因为有我们才能从H种找到一个g,它的最小。但是是不能随便定义的。之前的,都是在找与真正对应的之间的距离,这里我们不知道真正的(也就是概率值),因此我们要换种考虑方法。
假如有一个理想的函数,能知道样本为positive的真实概率,表示为:,那么该样本是现在这个样子的概率为:,而当时,,合并两种情况,得到:$P(X_i y_i) = 2 P(X_i) P(y_i = +1|X_i) + 2 P(X_i) (1 - P(y_i = +1|X_i)) _ {i=1}^{n}P(X_i y_i)$。
目前,我们不知道,但是假如我们用中的某个来代替,这就意味着在函数h的情况下,出现这个样本集的概率,当然我们想要做的是令这个概率越大越好。平时处理的都是和,而这次我们依然希望用和来处理,而不是连乘,因此我们为上式加上一个,而因为P(X_i)的概率都是一定的,所以我们无需关注。省掉,再进行上面的处理之后变为: .
但是这不符合,因为我们想要的是越小越好,而上面的式子是越大越好,因此需要加上一个负号,同时,如果我们使用之前的logistic function作为h,我们可以发现它有一个性质:1 - h(x) = h(-x),因此,可以得到下面的式子:
将logistic function 带入上式:
从上式可以看出来,如果,而预测它为1的概率小于0.5(),那么的值会大于,而是没有上界的。错的越离谱,惩罚就越大。
接下来的问题,就是如何让取到最小了。
首先,可以证明的是,这个也是一个凸函数(证明办法需要用到更深入的线性代数知识),因此我们可以找到一个最小值。和线性回归时候遇到的情况一样,要得到极值点,就要找到梯度为0的点。因此首先要得到的是的梯度。从微积分里,我们知道梯度的求法,也就是对每个方向求偏导,由它们组成的向量。为了得到梯度,我们首先应该求出对每个的偏导数,对于偏导数的求法在微积分中课程中我们也学习过,可以得到下面的结果: 注意:上式中为了方便,我们用替代了之前的,用替代了,并且用代表了向量中维度序列。
如果对上式向量化,我们可以得到 .
上式中,.
由此,我们求到了的梯度。为了让这个梯度为0,首先我们想到的是,所有的等于0,这要求所有的都是远大于0,这意味着原来的数据是线性可分的。
如果不是这种情况,原来的数据则不是线性可分(大多数情况下我们的数据都不是这么理想),想使得最终结果为0,那么各个数据是加权加起来最后得0.那么我们希望可以像线性回归一样通过某种表达式直接求得一个解,不过遗憾的是这个函数不是线性函数,我们没有办法一下求得这个解。我们能做的只能是步步逼近,类似于之前的PLA算法。
这就要介绍一个方法,叫梯度下降(gradient decent)。
梯度下降具体内容查看:Gradient Decent。
通过梯度下降,我们可以找到一个合适的,从而得到较好的逻辑回归效果。