2018-05-06

2018-05-17  本文已影响5人  nightSin

## 第三周 Logistic Regression逻辑回归

### 1 Classification and Representation

#### 1.1 分类Classification

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

**二元分类问题(binary classification problem)**

    y只有两个值,0或1;

例如:我们为电子邮件系统构建垃圾分类器,然后$x^{(i)}$可能是某件邮件的某些功能,如果它是一封垃圾邮件,则y是1;否则为0;因此 $y \in [0,1]$. 0也被称为负类,1为正类;有时用符号'-'和'+'表示。

#### 1.2 Hypothesis Representation 假设函数的表现形式

逻辑回归模型 $h_\theta(x) = g(\theta^Tx)$

希望 $0 \leq h_\theta(x) \leq 1$

$z = \theta^Tx$

$g(z) = \frac{1}{1+e^{-z}}$ 

**g(z)是逻辑函数(logistic function) 或者S型函数(sigmoid function)**

以上两个函数合并,得到$h_\theta(x) = \frac{1}{1+e^{-\theta^Tx}}$

![逻辑函数图](picture/third_week/logistic_function_1.png)

图中显示函数g(z)将任何实数映射到(0,1)之间

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

$P(y=1|x;\theta)+P(y=0|x;\theta)=1$

其中P表示概率probability,是输出y=1的概率

例如:  $h_\theta(x) = 0.7$

对于一个特征为x的患者,y=1的概率是0.7,肿瘤是恶性的概率是70%

#### 1.3 Decision Boundary决策边界

$h_\theta(x) = g(\theta^Tx)$

$z = \theta^Tx$

假设预测结果 'y =1' if $h_\theta(x) \geq 0.5$

    那么$g(z) \geq 0.5$

    如图:当x轴代表的z值大于0时,g(z)大于0.5;所以$z \geq 0$; 又$z = \theta^Tx$

> 记住(数学运算,目前不太理解)

$z=0, e^0 = 1 => g(z)=\frac{1}{2}$

$z \to\infty, e^{\infty}\to0 => g(z)=1$

$z \to-\infty, e^\infty \rightarrow \infty => g(z)=0$

结论 $\theta^Tx \geq 0$

同样,预测  'y=0' if $h_\theta(x) < 0.5 $

    $\theta^Tx < 0$

***决策边界是假设函数的一个属性***,不是数据集的属性

![](picture/third_week/decision_boundary_1.png)

> 不是用训练集来定义决策边界,而是用训练集来拟合参数θ,***给定了参数向量θ,决策边界就确定了***

> 决策边界是分隔y = 0和y = 1的区域的线。它由我们的假设函数创建。

非线性决策边界

![](picture/third_week/decision_boundary_2.png)

高阶多项式特征变量,可以得到非常复杂的决策边界

***

### 2 Logistic Regression Model

#### 2.1 Cost Function 代价函数拟合参数

Linear regression :$J(\theta)=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_\theta(x^{(i)}-y^{(i)})^2$

$Cost(h_\theta(x^{(i)}, y^{(i)})=\frac{1}{2}(h_\theta(x^{(i)}-y^{(i)})^2$

$$J(\theta)=\frac{1}{m}\sum_{i=1}^{m}Cost(h_\theta(x^{(i)}, y^{(i)})$$

去掉上标i,得到

$Cost(h_\theta(x), y)=\frac{1}{2}(h_\theta(x)-y)^2$

得到关于$h_\theta(x)$和y的公式,平方误差的1/2;预测值是$h_\theta(x)$,实际结果是y;

![](picture/third_week/cost_function_1.png)

逻辑回归的代价函数

![](picture/third_week/cost_function_2.png)

Cost =0 if y=1, $h_\theta(x)=1$

如果 $h_\theta(x) \to 0  => Cost \to \infty$

![](picture/third_week/cost_function_3.png)

> $Cost(h_\theta(x),y) =0\quad if\quad h_\theta(x)=y$

$Cost(h_\theta(x),y) \to \infty \quad if\ y =0\ and\quad h_\theta(x) \to 1$

$Cost(h_\theta(x),y) \to \infty \quad if\ y=1\ and \quad h_\theta(x) \to 0$

![](picture/third_week/cost_function_4.png)

#### 2.2 Simplified Cost Function and Gradient Descent

$Cost(h_\theta(x), y)=\begin{cases}

-log(h_\theta(x)) & if\ y = 1 \\

-log(1-h_\theta(x)) & if\ y = 0 \\

\end{cases}$

> 注意:y=0 or 1

整合一个公式:

$Cost(h_\theta(x),y)=-y \cdot log(h_\theta(x))-(1-y)log(1-h_\theta(x))$

if y=1, 代入公式,得到

$Cost(h_\theta(x), y)=-log(h_\theta(x))$

if y=0,代入公式,得到

$Cost(h_\theta(x), y)=-log(1-h_\theta(x))$

逻辑回归的代价函数:

$$\begin{align}

J(\theta) &=\frac{1}{m}\sum_{i=1}^{m}Cost(h_\theta(x^{(i)}), y^{(i)}) \\

&=-\frac{1}{m}[\sum_{i=1}^{m}y^{(i)}logh_\theta(x^{(i)}+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]

\end{align}$$

矢量化实现:

$h= g(X\theta)$

$J(\theta)=\frac{1}{m} \cdot(-y^Tlog(h)-(1-y)^Tlog(1-h))$

**梯度下降:**

期望得到 $min_\theta J(\theta):$

Repeat {

    $\theta_j := \theta_j - \alpha\frac{\delta}{\delta\theta_j}J(\theta)$

}

> 注意: simultaneously update all同时更新所有的$\theta_j$

其中,$\frac{\delta}{\delta\theta_j}J(\theta)=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$

Repeat {

    $$\theta_j := \theta_j - \frac{\alpha}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j$$

}

> 注意:这里的$h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}$

***梯度下降的矢量化实现:***

$\theta := \theta - \frac{\alpha}{m}X^T(g(X\theta)-y)$

![](picture/third_week/cost_function_5.png)

#### 2.3 Advanced Optimization 高级优化算法/概念

代价函数J(θ),希望得到最小的minJ(θ),通过梯度下降算法算出J(θ)及偏导数项

梯度下降算法不是我们可以使用的唯一算法,还有更高级,更复杂的算法计算这两项,这些算法就是为我们优化代价函数的不同方法

优化算法:

- Gradient Descent

- Conjugate gradient

- BFGS (共轭梯度/变尺度法)

- L-BFGS (限制变尺度法)

以上算法的优缺点:

通常不需要手动选择学习率α(这些算法的思路:给出计算导数项和代价函数的方法,可以认为算法有一个智能的内部循环,称为线性搜素linear search算法,它可以尝试不同的学习率α并自动选择一个好的学习速率α,甚至可以为每次迭代选择不同的学习速率)

收敛快于梯度下降

缺点:比梯度下降复杂

建议:不要自己编写这些更复杂的算法(除非您是数值计算方面的专家),而是使用这些库,因为它们已经过测试和高度优化

首先,提供一个函数,来评估给定输入值θ的以下两个函数:J(θ),$\frac{\delta}{\delta\theta_j}J(\theta)$

![](picture/third_week/advanced_optimization_1.png)

上图中返回的第一个参数是代价函数J值,第二个参数是梯度值;

![](picture/third_week/advanced_optimization_3.png)

高级优化函数fminunc():表示Octave里无约束最小化函数;调用方式如下:

options变量:存储配置;**'GradObj','on'**:设置梯度目标参数为打开(on)

**'MaxIter','100':**迭代次数,100次;

initialTheta: 给出θ的猜测初始值,向量必须是d维的,$d \geq 2$

@:函数指针

例题:

![](picture/third_week/advanced_optimization_2.png)

上一篇 下一篇

猜你喜欢

热点阅读