吴恩达机器学习笔记:Week3

Logistic Regression

二分类问题,日常解决问题中理解 {0,1} 数据的含义

为了尝试分类,一种方法是使用线性回归,将所有大于0.5的预测映射为1,所有小于0.5的预测映射为0。然而,这种方法并不适用,因为分类实际上不是一个线性函数。

logistic Regression(叫回顾但是 处理分类)

0 \le H_\theta(x) \le 1 始终成立!

注意区分 x 和X :
x = \begin{bmatrix} x_0 \\ x_1 \\. \\ . \\ x_n\end{bmatrix}
是一个 (n+1)x 1 维的向量,代表一个数据的各个特征。而X 代表整个数据集
其中:

H_\theta(x) = sigmoid(\theta^Tx) \tag1

提出Sigmoid函数(logistic函数):
sigmoid(z) = \frac{1}{1+e^{-z}} \tag2

将(1)(2) 两个式子合并:
H_\theta(x) = \frac{1}{1+e^{-\theta^Tx}}
如果 H_\theta(x) = 0.7 意味着,有70%的概率我们的输出是为1的。用条件概率来表示更为清楚:

h_\theta(x) = P(y=1|x;\theta) = 1 - P(y=0|x;\theta)

在输入样本x 和 参数 \theta 的条件下,y=1的概率。(y=0的概率就是 1- P(y=1),二分类问题)

sigmoid.png

决策边界(decision boundary)

让我们更好的理解 logistic regression 以及 假设函数h(x) 是如何进行计算的

H_\theta(x) = sigmoid(\theta^Tx) ​

从sigmoid函数图像可以看出来g(z) = \frac{1}{1+e^{-z}} 当z>0时候,g(z)>0.5;当z<0的时候,g(z) < 0.5;

也就是说当 \theta^TX >0 时候,sigmoid(\theta^TX) > 0.5,可以得到 y = 1

相反得 y = 0 的预测。

非线性可分的决策边界是如何产生的

DecisionBoundary.png

数据是用来拟合参数的,决策边界是由参数\theta​决定的。给出参数的多项式表示之后,基本确定了决策边界了,然后通过数据来拟合较好的参数。

也就是说 \theta^TX ​所形成的图像不一定是一条直线,还有可能是个圆、椭圆……甚至更加复杂的图像来fit我们的数据。

Cost Function

不可以按照线性回归的形式给出LogisticRegression的损失函数,因为经过sigmoid之后,按照线性回归来推导,曲线是一个很复杂的曲线,是非凸函数。不一定能收敛到全局最优点。

Logistic Regression 中的损失函数:
J(\theta) = \frac{1}{m}\sum_{i=1}^{m}Cost(h_\theta(x^{(i)}),y^{(i)}) \\ Cost(h_\theta(x),y)=\begin{cases} -log(h_\theta(x)) && if&y =1 \\ -log(1-h_\theta(x)) && if& y = 0 \end{cases}
这样书写的J(\theta) 保证了 是一个凸函数,可以进行优化。

y=0.png
y=1.png

将损失函数合写成一个式子:

Cost(h_θ(x),y)=−y*log(h_θ(x))−(1−y)*log(1−h_θ(x))

AndrewNG直接给出了J(\theta)的表达式,并说明这个式子是从 统计学的极大似然估计推出来的。下面给出证明:

首先我们拿到的是预测(假设)函数H_\theta(x)
H_\theta(x) = g(\theta^Tx) = \frac{1}{1+e^{-\theta^Tx}}
然后我们的分类任务是P(y=1|x,\theta)=h_\theta(x)以及P(y=0|x,\theta)=1-h_\theta(x)

我们将其整合为一个式子(这个地方跟Andrew的不一样了):
P(y|x,\theta)=(h_\theta(x))^y*(1-h_\theta(x))^{1-y}
当y = 0 P = 1-h(x)

当y = 1 P = h(x)

P是我们的分类任务,也是离散型的概率事件。据此进行参数估计,来推导最优的\theta

首先进行极大似然,得到似然函数为:
L(\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}
通常操作,连乘不好求导,去似然函数对数,变成连加:(这个式子就是Andrew的cost function)
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))
此时我们要求的是似然函数的极大值,应用梯度上升求最大值,我们可以通过引入-\frac{1}{m}转换为梯度下降任务,得到损失函数为:
J(\theta)=-\frac{1}{m} (\sum_{i=1}^{m}y_i*log(h_\theta(x_i))+(1-y_i)*log(1-h_\theta(x_i)))
通过对J(\theta) 进行求导,即可得到梯度下降的公式:
\frac{\partial J(\theta)}{\partial \theta} = \frac{1}{m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)x_i
梯度下降 更新参数:
\theta = \theta - \alpha*\frac{\partial J(\theta)}{\partial \theta}

Advanced Optimization

BFGS(牛顿法、拟牛顿法)、Conjugate gradient(共轭梯度)、L-BFGS(限域拟牛顿法)

高级优化算法的优点:

  • 不需要手动pick 学习率
  • 通常比梯度下降收敛速度要快很多

缺点就是:比较复杂(考虑学习成本)

优化算法:梯度下降

多分类问题

分类目标不再是{0,1}问题,而是有多个类别进行分类{0,1...n}

one vs all (one-vs-rest)

如果有N个类别,则需要进行N次分类,每次分类出一个类别,具体分类过程如下:

MulticlassLR.png

思想就是:每次选择一个类,让将其他类都看作是第二个类,这样就简化成一个二分类问题了。

正则化(防止过拟合)

过拟合:模型较为复杂或用了较多特征,对于训练集拟合效果非常好,但是测试集上表现很差。高方差(high variance)

欠拟合:模型较为简单或用了很少的特征,拟合效果不好,具有高偏差(high bias)

以线性回归举例说明:

Overfitting.png

防止过拟合:

  1. 减少特征数量:

    • 手动选择要保留的特性。

    • 使用模型选择(model selection)算法。

  2. 正则化

    • 保持的所有特征(属性),但是减少参数的数量级 \theta
    • 当我们有许多稍微有用的特征时,正则化表现很好

加入正则化项的损失函数

如果我们的假设函数发生过拟合,我们可以通过增加函数中某些项的cost来减少它们的权重。(增加惩罚项)

例如:\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4​

我们想尽量消除 \theta_3x^3 和 \theta_4x^4的影响,那我们在损失函数中加入对这两项的惩罚,变成:
min_\theta \frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x)^{(i)}-y^{i})^2+1000\theta_3^2+1000\theta_4^2
如果还想令损失函数尽可能的小,那么\theta_3和\theta_4就必须尽可能的接近于0,这样也会减少\theta_3x^3+\theta_4x^4 这两项的大小,尽可能的消除他们的影响使得我们的H_\theta(x) 尽可能接近\theta_0+\theta_1x+\theta_2x^2​

==正则化==

取一些小的值给参数:(等价于)

​ 简化了假设模型

​ 更小的倾向到过拟合

可以正则化所有的参数,来防止过拟合:
min_\theta\ \dfrac{1}{2m}\ [\sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda\ \sum_{j=1}^n \theta_j^2]
其中\lambda叫做正则化项系数,它决定了参数过大的代价。

一方面可以令模型更好的拟合训练数据,另一方面防止模型过拟合。正则化项系数的目的是在两个作用之间做trade-off(权衡)

如果\lambda过小,不能起到有效的防止过拟合的作用,如果\lambda过大,又会导致欠拟合。

线性回归的正则化

梯度下降算法引入正则化

引入正则化项后的梯度下降算法:
Repeat:\begin{Bmatrix} \theta_0 := \theta_0 - \alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}\\ \theta_j := \theta_j - \alpha[(\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x_j^{(i)})-y_j^{(i)})x_j^{(i)})+\frac{\lambda}{m}\theta_j] \end{Bmatrix}
其中可以进行化简之后得到:
\theta_j := \theta_j(1-\alpha\frac{\lambda}{m}) - \alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}
其中\theta_j​的系数(1-\alpha\frac{\lambda}{m})​ 是 总微小于1的一个项(比如0.99 因为\alpha 和 \lambda​都远小于m)

标准方程引入正则化

标准方程为:\theta = (X^TX)^{-1}X^Ty

引入正则化后的标准方程为:
\theta = (X^TX+\lambda L)^{-1}X^Ty \\ 其中L矩阵是: L = \begin{bmatrix} 0 & & & & \\ & 1 & & & \\ & & 1 & & \\ & & & \ddots & \\ & & & & 1 \end{bmatrix}

回想一下,如果m < n,那么X ^ TX是不可逆的,

正则化还起到了一个作用,对于X^TX 可能是奇异矩阵或者是 不可逆的,但是\lambda是一个大于0的数字,\lambda L保证了X^TX+\lambda L是一个可逆矩阵或者非奇异矩阵,

Logistic Regression 的正则化

Cost Function公式:

J(\theta)=-\frac{1}{m} (\sum_{i=1}^{m}y_i*log(h_\theta(x_i))+(1-y_i)*log(1-h_\theta(x_i)))
引入正则化之后的CostFunction:
J(\theta)=-\frac{1}{m} (\sum_{i=1}^{m}y_i*log(h_\theta(x_i))+(1-y_i)*log(1-h_\theta(x_i)))+\frac{\lambda}{2m}\sum_{j=1}^{n}\theta_j^2

引入正则化后的 梯度下降的式子:

Repeat:{
\theta_0 :=\theta_0 - \alpha \frac{1}{m}\sum_{i=1}^{m}(H_\theta(x)^{(i)}-y^{(i)})x_0^{(i)} \\ \theta_j :=\theta_j - \alpha [\frac{1}{m}\sum_{i=1}^{m}(H_\theta(x)^{(i)}-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j]
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容