线性回归和Logistic回归


线性回归

  • 假设存在线性相关关系:\(y=a+bx\)

均方偏差是回归任务中最经常使用的性能度量指标。所以,其损失函数为:函数

\[ J(a,b)=\frac{1}{2m}\sum_{i=1}^{m}(y^{'(i)}-y^{(i)})^2=\frac{1}{2m}\sum_{i=1}^{m}(a+bx^{(i)}-y^{(i)})^2 \]性能

其中,\(y'\)为预测值,\(y\)为实际值。学习

\(J(a,b)\)中,\(x^{(i)}\)\(y^{(i)}\)是常量参数(为\(m\)个样本各自的\(x\)\(y\)值),而\(a\)\(b\)是自变量。咱们要作的,就是找到最好的\(a\)\(b\),使得\(J(a,b)\)取值最小。spa


通用线性回归模型:利用线性函数对一个或多个自变量(\(x\)\((x_1,x_2,\cdots,x_k)\))和因变量\(y\)之间的关系进行拟合的模型。code

其函数形式为:
\[ f(x_1,x_2,\cdots,x_k)=a+b_1x_1+b_2x_2+\cdots + b_kx_k \]
\(b\)直观表达了各属性在预测中的重要性。所以,线性模型有很好的可解释性(comprehensibility)。资源

对离散属性,若属性值间存在序关系,可经过连续化将其转化为连续值。例如,二值属性“高”、“矮”可转化为\(\{1.0,\ 0.0\}\)。三值属性“高”、“中”、“低”可转化为\(\{1.0,\ 0.5,\ 0.0\}\)it

若属性值间不存在序关系,假定有\(k\)个属性值,则一般可转化为\(k\)维向量。如“西瓜”、“南瓜”、“黄瓜”可转化为\((0,0,1),\ (0,1,0),\ (1,0,0)\)。若将无序属性连续化,则会不恰当地引入序关系。io


用线性回归模型拟合非线性关系

\(x_1=x^2\)\(x_2=x\),有:function

\[ f(x_1,x_2)=a+b_1x^2+b_2x=a+b_1x_1+b_2x_2 \]
这时,就至关于拟合了一条二阶多项式对应的曲线。


梯度降低法

梯度降低法:从任意点开始,在该点对目标函数求导,沿着导数方向走一个给定步长,如此循环迭代,直至走到导数为0的位置,则达到极小值。

函数\(J\)分别对自变量\(a\)\(b\)取偏微分:
\[ \frac{\partial J(a,b)}{\partial a}=\frac{1}{m}\sum_{i=1}^{m}((a+bx^{(i)})-y^{(i)}) \]

\[ \frac{\partial J(a,b)}{\partial b}=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}((a+bx^{(i)})-y^{(i)}) \]

  1. 任意给定\(a\)\(b\)的初始值。
    \[ a=0; b=0 \]
  2. 用梯度降低法求解\(a\)\(b\),伪代码以下:
    \[ repeat\ until\ convergence \{ a = a - \alpha \frac{\partial J(a,b)}{\partial a}, b = b-\alpha \frac{\partial J(a,b)}{\partial b} \} \]
    当降低的高度小于某个给定的阈值时,则中止降低。

上述伪代码又可表示为:
\[ repeat\ until\ convergence \{ \\ sumA = 0, \\ sumB = 0,\\ for i = 1 to m \{ \\ sumA = sumA + (a+bx^{(i)}-y^{(i)}), \\ sumB = sumB + x^{(i)}(a+bx^{(i)}-y^{(i)}) \}\\ a = a - \alpha \frac{sumA}{m},\\ b = b - \alpha \frac{sumB}{m} \} \]

  • 超参数\(\alpha\):是梯度降低算法中的步长参数,必须人来手工指定。
  • 若是训练程序是经过人工指定迭代次数来肯定退出程序,则迭代次数也是一个超参数。
  • 若是训练程序以模型结果与真实结果的总体差值小于某一个阈值为退出条件,则这个阈值就是超参数。

\(\theta_0\)来替代\(a\),用\(\theta_1\)\(\theta_n\)来代替\(b_1\)\(b_n\),则线性回归模型变为:
\[ f(1,x_1,x_2,\cdots,x_n)=\theta_0 + \theta_1x_1+\theta_2x_2+\cdots + \theta_nx_n \]
对应的目标函数为:
\[ J(\theta_0,\theta_1,\cdots,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}(y'^{(i)}-y^{(i)})^2 \]
梯度降低的实现过程为:
\[ repeat\ until\ convergence \{ \Theta = \Theta - \alpha \frac{\partial J(\theta)}{\partial \theta} \} \]


最小二乘法

\(B=(b;a)\),将数据集表示为一个\(m\times (k+1)\)大小的矩阵\(X\),其中每一行对应一个示例。每行的前\(k\)个元素对应示例的属性值,最后一个元素恒为1。则有:
\[ J(B) = (Y-XB)^T(Y-XB) \]
\(B\)求导,得:
\[ \frac{\partial J}{\partial B}=2X^T(XB-Y) \]
\(X^TX\)为满秩矩阵时,令上式为零,可得:
\[ B^*=(X^TX)^{-1}X^TY \]

而在现实中,\(X^TX\)常常不是满秩的,此时可解出多个\(B\),都能使均方偏差最小化。选择哪个解做为输出,将由学习算法的概括偏好决定,如引入正则化(regularization)项。


线性回归用于分类(logistic regression,LR)

找一个单调可微函数将分类任务的真实标记\(y\)与线性回归模型的预测值联系起来。引入对数概率函数(logistic function)
\[h=\frac{1}{1+e^{-z}}\]
可获得:\[h(x)=\frac{1}{1+e^{-w^Tx+b}}\]

  • 可直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不许确所带来的问题。
  • 可获得近似几率的预测。

通常而言,当\(y>0.5\)时,\(x\)被归类为真或阳性;不然,当\(y \leq0.5\)时,\(x\)被归类为假或阴性。

所以,LR典型的应用于二分类问题上。

该模型函数在\(y=0.5\)附近很是敏感,自变量取值稍有不一样,因变量取值就会有很大差别,全部不用担忧出现大量因细微特征差别而被归错类的状况。


  • 任何事情,上来先作个线性回归,即便没法得出结论,也不会消耗太多资源。
  • 非线性模型对于计算量的需求远大于线性模型。

目标函数

求解LR目标函数的过程,就是对LR模型函数进行极大似然估计的过程。

\(h(x)\)其实是\(x\)为阳性的分布几率,因此,才会在\(h(x)>0.5\)时将\(x\)归于阳性。即\(h(x)=P(y=1)\)。反之,样例是阴性的几率为:\(P(y=0)=1-h(x)\)

它们由训练数据\(x\)所限定,所以,
\[ P(y=1|x)=h(x); \\ P(y=0|x)=1-h(x) \]
根据二项分布公式,可得:
\[ P(y|x)=h(x)^y(1-h(x))^{(1-y)} \]
假设训练集有\(m\)个数据,那么其联合几率为:
\[ L(\theta)=\prod_{i=1}^mP(y^{(i)}|x^{(i)};\theta)=\prod_{i=1}^m(h_{\theta}(x^{(i)}))^{y^{(i)}}(1-h_{\theta}(x^{(i)}))^{(1-y^{(i)})} \]
求取\(\theta\)的值,就是让\(L(\theta)\)达到最大。

求对数,获得对数似然函数:
\[ l(\theta)=log(L(\theta))=\sum_{i=1}^m[y^{(i)}log(h_{\theta}(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))] \]
求出让\(l(\theta)\)最大值的\(\theta\)

因为,咱们须要的是目标函数具备最小值,所以,设定:
\[ J(\theta)=-l(\theta) \]
\(J(\theta)\)为负对数似然函数,为LR的目标函数。


如何求解\(\theta\)

  • 经过对\(J(\theta)\)求导得到降低方向——\(J'(\theta)\)
  • 根据预设的步长\(\alpha\),更新参数\(\theta:=\theta-\alpha J'(\theta)\)
  • 重复以上两步直到逼近最优值,知足终止条件。
    \[ \frac{\partial J(\theta)}{\partial \theta_j}=\sum_{i=1}^{m}[h_{\theta}(x^{(i)})-y^{(i)}]x_j^{(i)};\ j = 1,2,\cdots,n \]

LR处理多分类问题

把二分类问题分红屡次来作。

假设一共有\(n\)个类别,就构造\(n\)个LR分类模型。第一个模型用来区分label_1non-label_1;第二个模型用来区分label-2non-label_2;第\(n\)个模型用来区分label_nnon_label_n

使用时,每一个输入数据都被这\(n\)个模型同时预测。最后,哪一个模型得出了Positive结果,且预测值最大,就是该数据最终的结果。

相关文章
相关标签/搜索