版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37334135/article/details/85076131
参考书籍:《统计学习方法》,cs229,其他
1、线性回归
1.1、线性回归表示
线性回归属于监督学习问题,输入X与输出Y成线性关系,只要我们得到了这个具体的关系,那么对于待预测的数据X我们便可以知道Y的值。现在就来求这个线性关系
先定义好变量表示。记输入变量表示为
X,输出变量表示为
Y,训练集为
{(x1,y1),(x2,y2),...,(xn,yn)},特征向量
xi是m维的(m个特征)表示为
xi=(xi1,xi2,...,xim)T。
xij表示第
i个输入变量的第
j个特征那么线性关系可以表示为:
y=θ0+θ1x1+...+θnxn,
我们记
x0=1 那么就可以表示为
hθ(x)=θTx
1.2、线性回归学习
线性回归的学习也就是求解参数
θ,为了使预测结果尽量准确,我们需要使得对训练集拟合的较好,定义如下的损失函数,直观上也很容易理解:
J(θ)=21i=1∑n(hθ(xi)−yi)2
显然
J越小越好,所以我们需要求
minJ(θ),此时对应的
θ正是我们所需要的,自然也就求出来了模型。 这里使用梯度下降法来求解(假如你现在在山顶记住
j,你要下山打算每次跨
α步,如何下的最快?答案是沿着梯度方向走也就是切线方向,每跨一次位置成了
j−α∗梯度,继续用
j表示那么就是
θj:=j−α∗梯度),用公式表示如下。
θj:=θj−α∂θj∂J(θ)
接下来进行简单的求导即可:
∂θj∂J(θ)=i=1∑n(hθ(xi)−yi)∂θj∂hθ(xi)=i=1∑n(hθ(xi)−yi)xij
=>
θj:=θj−αi=1∑n(hθ(xi)−yi)xij
对于
θ1−θm我们每次都执行上面的更新操作,直到两次更新前后的差很小的时候便停止,此时的
θ1−θm就是我们所需要的,同时也满足损失函数值最小。
注意:最开始我们是赋了每个
θi初值的,其中
α叫做步长或者学习率,可以通过交叉验证获得(我到现在也没有去获得)。最后,由于每次都需要求和,所以上面的操作方法又叫批量梯度下降。当数据量大的时候效率就显得不高,此时可以采用随机梯度下降。
随机梯度下降的外层对
i进行循环,内部则是
θj:=θj−α(hθ(xi)−yi)xij(对每个j同时做这样的操作)
2、逻辑斯蒂回归
2.1、逻辑斯蒂回归模型
名字叫回归,实际上是来做分类的。
当我们使用线性回归根据X来预测Y的时候,如果Y是离散值那么就无法用上面的线性回归来做了(我就不举例了,相信不会有人这样做)。简单一点,考虑二项逻辑斯蒂回归,即
y={0,1}。那么现在的问题就是,你给我个
x我给你个
y,其值要么是0要么是1(比如0表示对,1表示错)。介绍个sigmod函数如下:
g(x)=1+e−x1
这个函数的特点就是取值是
0−1的递增函数,对气求导我们可以得到
g′(x)=g(x)(1−g(x))
我们对上面的线性回归做个适当的变形
hθ(x)=g(θTx)=1+e−θTx1,那么我们就得到了回归模型了,接下来需要去学习
θ,我们做如下的假设:
P(y=1∣x;θ)=hθ(x)
P(y=0∣x;θ)=1−hθ(x)
假设现在给我个x,如何得到y? 使用上面两个式子得到两个P,哪个大就归为哪一类。现在将两个式子写到一起
P(y∣x;θ)=hθ(x)y(1−hθ(x))1−y。
2.2、逻辑回归学习
逻辑回归学习也就是求
θ,使用极大似然估计来求解(极大似然估计使用的地方就是已知模型,有数据来求参数)。推导的过程即求导的过程了,如下:
L(θ)=i=1∏nhθ(xi)yi(1−hθ(xi))1−yi
l(θ)=lnL(θ)=i=1∑n[yiln(hθ(xi))+(1−yi)ln(1−hθ(xi)))]
要求
l(θ)的极大,同样可以使用梯度上升(注意是梯度上升,我们这里是求极大,而线性回归是求极小)
θj:=θj+α∂θj∂l(θ)
∂θj∂l(θ)=i=1∑n[yihθ(xi)1+(yi−1)1−hθ(xi)1]∂θj∂hθ(xi)=i=1∑n[yig(θTxi)1+(yi−1)1−g(θTxi)1]∂θj∂g(θTxi)=i=1∑n[yig(θTxi)1+(yi−1)1−g(θTxi)1]g(θTxi)(1−g(θTxi))xij=i=1∑n(yi−g(θTxi))xij=i=1∑n(yi−hθ(xi))xij
那么得到公式
θj:=θj−αi=1∑n(hθ(xi)−yi)xij (for every j)
可以发现结果和线性回归一样的,求解也是一样,比如使用批量梯度下降。
θ求出来之后那么模型也就自然确定了。