LR:线性回归 Linear Regression 和 逻辑回归 Logistic Regression
线性回归 Linear Regression
线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即
\[f(\mathbf{x}) = w_1x_1+w_2x_2+...+w_dx_d+b = \mathbf{w}^T\mathbf{x}+b
\]
许多功能更为强大的非线性模型可在线性模型的基础上通过引入层级结构或高位映射而得。线性模型还有很好的可解释性(comprehensibility)。
线性回归则试图学得一个线性模型,以尽可能准确地预测实值标记。
对于输入数据的离散属性,若属性间存在“序”关系,可通过连续化将其转化为连续值;若属性间不存在“序”关系,假定有k个取值,则通常转化为k维向量。若将无序属性连续化,则会不恰当地引入序关系,对后续处理如距离计算等产生误导。
那么有了数据集,我们如何确定参数w,b呢?
答案是使用均方误差最小化。均方误差有非常好的几何意义,它对应了常用的欧几里得距离(Euclidean distance)。基于均方误差最小化来进行模型求解的方法成为"最小二乘法"。于是问题转化为:
\[w^*,b^*=\arg\min_{w,b}\sum\limits_{i=1}^m(f(x_i)-y_i)^2=\arg\min_{w,b}\sum\limits_{i=1}^m(wx_i+b-y_i)^2
\]
之后利用损失函数对w,b分别求导等于0,即可得到w和b的闭式解。
逻辑回归 Logistic Regression
线性回归可以用来处理回归问题,而如果我们想要做分类问题呢?
这时就需要大名鼎鼎的LR逻辑回归了。逻辑回归又叫对数几率回归,名为回归,其实是一种分类算法。
它使用对数几率函数(logistic function)来对线性回归输出的值进行映射,成为一个[0,1]的概率值,从而进行分类。
对数几率函数:
\[y=\frac{1}{1+e^{-z}}
\]
是sigmoid函数的一种,而我们也经常把sigmoid函数和对数几率函数这两个叫法混用。
将sigmoid函数带入线性回归,则得到一个广义线性模型:
\[y=\frac{1}{1+e^{-(w^Tx+b)}}
\]
其加了对数的变形为:
\[ln\frac{y}{1-y}=w^Tx+b
\]
设\(P(Y=1|x)=\pi(x),P(Y=0|x)=1-\pi(x)\)
似然函数为:
\[\prod_i^N \pi(x_i)^{y_i}(1-\pi(x_i))^{1-y_i}
\]
对数似然函数为(化简了偏置):
\[L(w)=\sum\limits_{i=1}^N[y_ilog(\pi(x_i))+(1-y_i)log(1-\pi(x_i))]\\
=\sum\limits_{i=1}^N[y_ilog\frac{\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i))]\\
=\sum\limits_{i=1}^N[-y_iw^Tx_i-log(1+e^{(-w^Tx_i)})]\]
那么对w求偏导:
\[\frac{\partial L(w)}{\partial w} = \sum\limits_{i=1}^N[-y_ix_i+\frac{x_ie^{-w^Tx}}{1+e^{-w^Tx_i}}]\\
=\sum\limits_{i=1}^N[x_i(1-\sigma(w^Tx_i)-y_i)]
\]
这里\(\pi(x)=\frac{e^{-(w^Tx+b)}}{1+e^{-(w^Tx+b)}}\)如果取了1-pi,那结果就是y变成1-y。
即直接对交叉熵求梯度:
\[L(y,f(x)) = -\frac{1}{N}\sum\limits_{i=1}^N y_ilogf(x_i)+(1-y_i)log(1-f(x_i)) \\
f(x_i) = \frac{1}{1+e^{-wx_i}}\\
\frac{\partial L}{\partial w}= -\frac{1}{N}\sum\limits_{i=1}^N (y_i\frac{1}{f(x_i)}-(1-y_i)\frac{1}{1-f(x_i)}])\frac{\partial f(x_i)}{\partial w}\\=-\frac{1}{N}\sum\limits_{i=1}^N (y_i\frac{1}{f(x_i)}-(1-y_i)\frac{1}{1-f(x_i)}])f(x_i)(1-f(x_i))(-x_i)=\frac{1}{N}\sum\limits_{i=1}^N (y_i-f(x_i))x_i
\]