逻辑回归(Logistic regression)是统计学习中经典的分类方法,其基本用法是用于二分类,但是也很容易推广到多分类。
1.逻辑函数(sigmoid 函数)
首先介绍一下sigmoid函数,其基本形式如下:
g(x)=11+e−xg(x)=\frac{1}{1+e^{-x}}g(x)=1+e−x1
其图像如下
当z趋向无穷大时,g(z)趋向与1,当z趋向无穷小时,g(z)趋向于0。
通常,输入的样本是向量x,要学习的参数矩阵是w和b,样本的标记是Y∈Y\inY∈{0,1}。此时回归模型如下
P(Y=1∣x)=11+exp(−z)P(Y=1|x)=\frac{1}{1+exp(-z)}P(Y=1∣x)=1+exp(−z)1
P(Y=0∣x)=1−11+exp(−z)P(Y=0|x)=1-\frac{1}{1+exp(-z)}P(Y=0∣x)=1−1+exp(−z)1
其中z=w*x,应学习到响应的参数矩阵w,使得标记为1的样本,其z值尽量大,标记为0的样本,其z值尽量小。学习的过程需要通过最优化损失函数来进行。下面简单介绍二分类中损失函数的定义。
逻辑回归模型是由一系列权值系数w决定的,问题关键就是如何获得这一组系数。通常是通过极大似然函数获得的。
似然函数是统计模型中参数的函数,也就是w中每一个系数的函数。当输出确定,也就是给定了每个样本的标签值y,关于参数w的似然函数L(w|y)数值上等于给定w,输出值为y的概率。因此当似然函数越大,其输出值为y的可信度越高,因此可以通过对似然函数取极大值来获得参数w的最优解。
逻辑回归模型学习时,对于训练集T={(x1,y1),(x2,y2)...(xn,yn)}T=\{(x_1,y_1),(x_2,y_2)...(x_n,y_n)\}T={(x1,y1),(x2,y2)...(xn,yn)},其中yi∈{0,1}y_i\in\{0,1\}yi∈{0,1},设P(y=1∣x)=p(xi)P(y=0∣x)=1−p(xi)P(y=1|x)=p(x_i)\quad P(y=0|x)=1-p(x_i)P(y=1∣x)=p(xi)P(y=0∣x)=1−p(xi)
则似然函数为∏i=1n[p(x)]yi[1−p(x)]1−yi\prod_{i=1}^{n}[p(x)]^{y_i}[1-p(x)]^{1-y_i}i=1∏n[p(x)]yi[1−p(x)]1−yi
取对数为∑i=1nyilogp(xi)+(1−yi)log(1−p(xi))\sum_{i=1}^{n}y_ilogp(x_i)+(1-y_i)log(1-p(x_i))i=1∑nyilogp(xi)+(1−yi)log(1−p(xi))
其中p(xi)=11+exp(w∗x)p(x_i)=\frac{1}{1+exp(w*x)}p(xi)=1+exp(w∗x)1
对似然函数求最大值,即为对其求最小值
L(w)=−∑i=1n(yilogπ(xi)+(1−yi)log(1−π(xi))L(w)=-\sum_{i=1}^{n}(y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))L(w)=−i=1∑n(yilogπ(xi)+(1−yi)log(1−π(xi))
此即为logit loss函数,也叫交叉熵损失函数。对L(w)求最小值,即可得到w的参数估计。求最小值的方法有很多,如梯度下降法,牛顿法等等。
2. 多项逻辑回归
二项分类的逻辑回归很容易推广到多分类问题。设现在有一个n类分类问题,则可以构建一个n维标签向量y=(y1,y2....yn)y=(y^1,y^2....y^n)y=(y1,y2....yn),其中只有1个值yiy^iyi为1,其余都为0,表示该样本归于第i个分类。
对于单个样本,似然函数可以写成:
∏i=1npi(x)yi\prod_{i=1}^np^i(x)^{y^i}i=1∏npi(x)yi
其中pi(x)p^i(x)pi(x)表示模型预测向量的第n个分量,由于yiy^iyi只有1个分量为1,其余为0,因此似然函数可以化简为p(x)p(x)p(x)
对于一共有N个样本的数据集,其似然函数为
∏i=1Np(xi)\prod_{i=1}^{N}p(x_i)i=1∏Np(xi)
取对数得
L(w)=∑i=1Nlog(p(xi))L(w)=\sum_{i=1}^Nlog(p(x_i))L(w)=i=1∑Nlog(p(xi))其中对于每一个样本,其p(xi)p(x_i)p(xi)为模型输出向量中,取值为1的对应第i个分量的值。
其中模型输出值p(x)定义为p(x)定义为p(x)定义为:
p(xi)=exp(w∗x)∑j=1nexp(w∗xj)p(x^i) = \frac{exp(w*x)}{\sum_{j=1}^nexp(w*x^j)}p(xi)=∑j=1nexp(w∗xj)exp(w∗x)
此为soft函数,其可以将模型输出变量进行归一化处理,对输出的值进行指数式放大或者缩小。
采用最优化方法求的L(W)对w矩阵的最小值,即可求得问题的解