Logistic Regression(LR) 算法原理简介

作为机器学习算法中比较基础的LR算法,其在多个领域发挥着重要的作用,下面我们就来对其算法原理以及特点做一下总结。

Logistic Regression 基本原理

LR算法是典型的判别模型,即给定数据x,要求概率P(y|x)。假设我们有m个样本点集合\left \{ x^{(1)},x^{(2)},...,x^{(m)} \right \},对应的标记为。

1. LR的二分类算法

我们假定给定数据x和模型参数\theta,标记y服从伯努利分布,即 y;x,\theta \sim Bernoulli。因为我们做的是二分类,所以这个假设是非常直观的,但伯努利参数是多少?也就是当y=1的时候,p(y=1|x)是多少?下面的一个假设解决这个问题,它是基于GLM(广义线性模型,这里不做讨论)的,即:

                                                                      y;x,\theta \sim Bernoulli(g(\theta^Tx))

这里g是sigmoid函数,上面的式子也可以表达为

                                                                         p(y=1;x,\theta) = g(\theta^Tx)
现在我们为每个样本的概率建立了模型,利用MLE(最大似然法),就可以求取相关参数\theta。对于似然函数log likelihoodL(\theta) = \sum_{i=1}^m log(p(y=1;x^{(i)},\theta)^{y^{(i)}} p(y=0;x^{(i)},\theta)^{1 - y^{(i)}} ),求 argmax_{\theta} L(\theta)。我们首先可以求其解析解,另外,也可以通过梯度下降(当然这里是要求最大值,所以是梯度上升)的方法求取参数(本问题中L是关于\theta的凸函数,所以可以找到全局最优解)。本文讨论第二种方法,梯度下降法关键是要求出\frac{\partial L}{\partial \theta}

                          \frac{\partial L}{\partial \theta} \\ =\frac{\partial \sum_{i=1}^m y^{(i)}log(p(y=1;x^{(i)},\theta) + (1 - y^{(i)})log()p(y=0;x^{(i)},\theta)))}{\partial \theta} \\ =(\sum_{i=1}^m y^{(i)} \frac{1}{g}g(1-g) + (1-y^{(i)} )\frac{1}{1-g}-g(1-g) )x\\ = (\sum_{i=1}^m (y^{(i)} - g))x

为表达方便上式中用g代替g(\theta^Tx^{(i)})

大家注意到,如果训练样本很大,即m是个非常大的数字,那么梯度下降法的每一步都会消耗很大的计算资源,有没有一种计算方便的改进算法呢?这就是随机梯度下降,同样这里也不做详述。

2. LR的多分类算法

和二分类情况类似的, 我们仍然可以假设y;x,\theta \sim Categorical(u_1,u_2,...,u_k)。不同的是这里y不再是0或者1,而是一个向量,例如样本隶属于第二分类,则y = [0,1,0,...,0]。我们仍然对模型做基于GML上的假设,,即每个类别i都有自己的参数\theta_i

                                                                

仔细观察,你会发现这是一个softmax函数!该模型的对数似然函数为

                                                

这样,我们依然可以用梯度下降或者随机梯度下降解决该问题。

总结

我们来看下逻辑回归算法的特点:

1. 算法简单容易理解,训练速度快,虽然其基于最大似然法容易过拟合,但通过正则化可以解决该问题。

2. 逻辑回归参数比较少,调节起来很方便。

3. 逻辑回归属于线性分类器,对于结构比较复杂且数据量比较大的的数据,我们一般不使用。

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