本节主要讨论评估模型的方法。
下面先简单回顾一下线性回归和逻辑回归的知识点。
线性回归
两种方法求损失函数:
1、梯度下降方法
$$ J(\theta0,\theta_1,...\theta_n)=\frac 1 {2m} \sum{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 $$ 对$$ \theta_j $$求导后
$$ \thetaj:=\theta_j-\alpha \frac 1 m \sum{i=1}^m((h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}) $$
2、正规方程方法
正规方程是通过求解下面的方程来找出使得代价函数最小的参数的:$$ \dfrac \partial \theta_j J(\theta_j)=0 $$, 这里的$$ \theta$$ 替换为下面的$$ w $$ $$,则求$$$$ y=xw $$ 转化为求解得$$\hat{w}=(X^TX)^{-1}X^Ty$$ 这里的$$ \hat{w} $$符号表示参数$$ w $$ 预测出的估计值为$$\hat{w}$$
而在LWLR(局部加权线性回归)中,参数的计算表达式变为:$$ \hat{w}=(X^TWX)^{-1}X^TWy $$:
因为此时优化的是:Fit $$ \theta $$ to minimize $$ \sum_i w^{(i)}(y^{(i)}-\theta^Tx^{(i)})^2 $$ output $$ \theta^Tx $$
3、梯度下降 VS 正规方程
梯度下降 | 正规方程 |
---|---|
需要选择$$ \alpha $$学习速率 | 不需要 |
需要多次迭代 | 一次运算获得 |
当特征数量n很大也能较好适用 | 特征数量n较大时计算代价大,因为逆矩阵技术需要时间复杂度$$ O(n^3) $$,通常$$ n<10000 $$ 时可接受 |
适用于各种类型的模型 | 只适用线性回归,不适用逻辑回归和其他模型 |
逻辑回归
原先线性回归中有 $$ h\theta(x)=\theta_0+\theta_1 x $$ 现在 $$ h\theta(x)=g(\theta^T x)=\frac 1 {1+e^{-\theta^T x}}$$
令 $$ g(z)=\dfrac 1 {1+e^{-z}} $$ 推导其导数为 $$ g'(z)={(\dfrac 1 {1+e^{-z}})'}=g(z)(1-g(z))$$
由于$$ \theta$$ 函数的值有特殊的含义,它表示 $$ h_\theta(x)$$ 结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:
$$ P(y=1|x;\theta)=h_\theta(x)$$
$$ P(y=0|x;\theta)=1-h_\theta(x)$$
Logistic回归方法主要是用最大似然估计来学习的,所以单个样本的后验概率为:$$ p(y|x;\theta)=(h\theta(x))^y(1-h\theta(x))^{1-y}$$
因为样本数据(m个)独立,所以它们的联合分布可以表示为各边际分布的乘积,取似然函数为:
$$ L(\theta)=P(\vec{y}|X;\theta) =\prod{i=1}^m P(y^{(i)}|x^{(i)};\theta)=\prod{i=1}^m (h\theta(x^{(i)}))^{y^{(i)}}(1-h\theta(x^{(i)}))^{1-y^{(i)}} $$ 对结果取对数
$$l(\theta)=log(L(\theta))=\sum{i=1}^m log(h\theta(x^{(i)}))^{y^{(i)}} + log(1-h_\theta(x^{(i)}))^{1-y^{(i)}} $$
$$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)})) $$
计算损失函数
其实它的loss function为$$ -l(\theta) $$,因此我们需使loss function最小,可采用梯度下降法得到。梯度下降法公式为:
$$ \frac {\partial}{\partial\theta_j} l(\theta)=(y\frac 1 {g(\theta^Tx)}-(1-y)\frac 1 {1-g(\theta^Tx)})\frac {\partial}{\partial\theta_j}g(\theta^Tx) $$
$$ =(y\frac 1 {g(\theta^Tx)}-(1-y)\frac 1 {1-g(\theta^Tx)})g(\theta^Tx)(1-g(\theta^Tx))\frac \partial \thetaj \theta^Tx= (y(1-g(\theta^Tx))-(1-y)g(\theta^Tx))x_j=(y-h\theta(x))x_j $$
所以求完偏导数以后就可以进行参数更新为:$$ \thetaj:=\theta_j+\alpha(y^{(i)}-h\theta(x^{(i)}))xj^{(i)}$$。加上$$ \sum $$ 即为:$$ \theta_j:=\theta_j+\alpha\sum{i=1}^m(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)} $$,这里$$\alpha $$是学习速率。