## scruel / ML-AndrewNg-Notes .gitee-modal { width: 500px !important; }

Create your Gitee Account
Explore and code with more than 6 million developers，Free private repositories ！：）
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
week3.md 22.18 KB
scruel authored 2019-05-25 13:51 . images path in htmls

[TOC]

# 6 逻辑回归(Logistic Regression)

## 6.1 分类(Classification)

• 垃圾邮件判断
• 金融欺诈判断
• 肿瘤诊断

$h_\theta(x) \geqslant 0.5$ ，预测为 $y = 1$，即正向类；

$h_\theta(x) \lt 0.5$ ，预测为 $y = 0$，即负向类。

## 6.2 假设函数表示(Hypothesis Representation)

sigmoid 函数（如下图）是逻辑函数的特殊情况，其公式为 $g\left( z \right)=\frac{1}{1+{{e}^{-z}}}$。

\begin{align*}& h_\theta(x) = P(y=1 | x ; \theta) = 1 - P(y=0 | x ; \theta) \newline & P(y = 0 | x;\theta) + P(y = 1 | x ; \theta) = 1\end{align*}

## 6.3 决策边界(Decision Boundary)

\begin{align*}& h_\theta(x) \geq 0.5 \rightarrow y = 1 \newline& h_\theta(x) < 0.5 \rightarrow y = 0 \newline\end{align*}

${h_\theta}\left( x \right)=g\left( {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2}}+{\theta_{3}}x_{1}^{2}+{\theta_{4}}x_{2}^{2} \right)$

## 6.4 代价函数(Cost Function)

\begin{align*}& J(\theta) = \dfrac{1}{m} \sum_{i=1}^m \mathrm{Cost}(h_\theta(x^{(i)}),y^{(i)}) \newline & \mathrm{Cost}(h_\theta(x),y) = -\log(h_\theta(x)) ; & \text{if y = 1} \newline & \mathrm{Cost}(h_\theta(x),y) = -\log(1-h_\theta(x)) ; & \text{if y = 0}\end{align*}

## 6.5 简化的成本函数和梯度下降(Simplified Cost Function and Gradient Descent)

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

$h = g(X\theta)$，$J(\theta) = \frac{1}{m} \cdot \left(-y^{T}\log(h)-(1-y)^{T}\log(1-h)\right)$

\begin{align*} & \text{repeat until convergence:} ; \lbrace \newline ; &{{\theta }{j}}:={{\theta }{j}}-\alpha \frac{\partial }{\partial {{\theta }_{j}}}J\left( {\theta} \right) \newline \rbrace \end{align*}

\begin{align*}& \text{repeat until convergence:} ; \lbrace \newline ; & \theta_j := \theta_j - \alpha \frac{1}{m} \sum\limits_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)} ; & \text{for j := 0,1...n}\newline \rbrace\end{align*}

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

$f(\theta)={{y}^{(i)}}\log \left( \frac{1}{1+{{e}^{-z}}} \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-\frac{1}{1+{{e}^{-z}}} \right)$ $=-{{y}^{(i)}}\log \left( 1+{{e}^{-z}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{z}} \right)$

$\frac{\partial z}{\partial {\theta_{j}}}=\frac{\partial }{\partial {\theta_{j}}}\left( \theta^Tx^{(i)} \right)=x^{(i)}_j$

$\frac{\partial }{\partial {\theta_{j}}}f\left( \theta \right)=\frac{\partial }{\partial {\theta_{j}}}[-{{y}^{(i)}}\log \left( 1+{{e}^{-z}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{z}} \right)]$

$=-{{y}^{(i)}}\frac{\frac{\partial }{\partial {\theta_{j}}}\left(-z \right) e^{-z}}{1+e^{-z}}-\left( 1-{{y}^{(i)}} \right)\frac{\frac{\partial }{\partial {\theta_{j}}}\left(z \right){e^{z}}}{1+e^{z}}$

$=-{{y}^{(i)}}\frac{-x^{(i)}_je^{-z}}{1+e^{-z}}-\left( 1-{{y}^{(i)}} \right)\frac{x^{(i)}_j}{1+e^{-z}}$ $=\left({{y}^{(i)}}\frac{e^{-z}}{1+e^{-z}}-\left( 1-{{y}^{(i)}} \right)\frac{1}{1+e^{-z}}\right)x^{(i)}_j$ $=\left({{y}^{(i)}}\frac{e^{-z}}{1+e^{-z}}-\left( 1-{{y}^{(i)}} \right)\frac{1}{1+e^{-z}}\right)x^{(i)}j$ $=\left(\frac{{{y}^{(i)}}(e^{-z}+1)-1}{1+e^{-z}}\right)x^{(i)}j$ $={({{y}^{(i)}}-\frac{1}{1+{{e}^{-z}}})x_j^{(i)}}$ $={\left({{y}^{(i)}}-{h\theta}\left( {{x}^{(i)}} \right)\right)x_j^{(i)}}$ $=-{\left({h\theta}\left( {{x}^{(i)}} \right)-{{y}^{(i)}}\right)x_j^{(i)}}$

$\frac{\partial }{\partial {\theta_{j}}}J(\theta) = -\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{\partial }{\partial {\theta_{j}}}f(\theta)}=\frac{1}{m} \sum\limits_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)}$

## 6.6 进阶优化(Advanced Optimization)

• 梯度下降法(Gradient Descent)
• 共轭梯度算法(Conjugate gradient)
• 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)
• DFP算法
• 局部优化法(BFGS)
• 有限内存局部优化法(L-BFGS)
• 拉格朗日乘数法(Lagrange multiplier)

Octave/Matlab 中对这类高级算法做了封装，易于调用。

1. 创建一个函数以返回代价函数及其偏导数：
function [jVal, gradient] = costFunction(theta)
% code to compute J(theta)
jVal=(theta(1)-5)^2+(theta(2)-5)^2;

% code to compute derivative of J(theta)
gradient=zeros(2,1);

gradient(1)=2*(theta(1)-5);
gradient(2)=2*(theta(2)-5);
end
1. costFunction 函数及所需参数传入最优化函数 fminunc，以求解最优化问题：
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

'GradObj', 'on': 启用梯度目标参数（则需要将梯度传入算法）

'MaxIter', 100: 最大迭代次数为 100 次

@xxx: Octave/Matlab 中的函数指针

optTheta: 最优化得到的参数向量

functionVal: 引用函数最后一次的返回值

exitFlag: 标记代价函数是否收敛

1. 返回结果
optTheta =

5
5

functionVal = 0

exitFlag = 1

## 6.7 多类别分类: 一对多(Multiclass Classification: One-vs-all)

$h_\theta^{\left( i \right)}\left( x \right)$: 输出 $y=i$（属于第 $i$ 个分类）的可能性

$k$: 类别总数，如上图 $k=3$。

# 7 正则化(Regularization)

## 7.1 过拟合问题(The Problem of Overfitting)

• 欠拟合(Underfitting)

无法很好的拟合训练集中的数据，预测值和实际值的误差很大，这类情况被称为欠拟合。拟合模型比较简单（特征选少了）时易出现这类情况。类似于，你上课不好好听，啥都不会，下课也差不多啥都不会。

• 优良的拟合(Just right)

不论是训练集数据还是不在训练集中的预测数据，都能给出较为正确的结果。类似于，学霸学神！

• 过拟合(Overfitting)

能很好甚至完美拟合训练集中的数据，即 $J(\theta) \to 0$，但是对于不在训练集中的新数据，预测值和实际值的误差会很大，泛化能力弱，这类情况被称为过拟合。拟合模型过于复杂（特征选多了）时易出现这类情况。类似于，你上课跟着老师做题都会都听懂了，下课遇到新题就懵了不会拓展。

• 偏差(bias)

指模型的预测值与真实值的偏离程度。偏差越大，预测值偏离真实值越厉害。偏差低意味着能较好地反应训练集中的数据情况。

• 方差(Variance)

指模型预测值的离散程度或者变化范围。方差越大，数据的分布越分散，函数波动越大，泛化能力越差。方差低意味着拟合曲线的稳定性高，波动小。

• 减少特征的数量
• 手动选取需保留的特征
• 使用模型选择算法来选取合适的特征(如 PCA 算法)
• 减少特征的方式易丢失有用的特征信息
• 正则化(Regularization)
• 可保留所有参数（许多有用的特征都能轻微影响结果）
• 减少/惩罚各参数大小(magnitude)，以减轻各参数对模型的影响程度
• 当有很多参数对于模型只有轻微影响时，正则化方法的表现很好

## 7.2 代价函数(Cost Function)

$min_\theta\ \dfrac{1}{2m}\sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})^2 + 1000\cdot\theta_3^2 + 1000\cdot\theta_4^2$

$J\left( \theta \right)=\frac{1}{2m}[\sum\limits_{i=1}^{m}{{{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})}^{2}}+\lambda \sum\limits_{j=1}^{n}{\theta_{j}^{2}}]}$

$\lambda$: 正则化参数(Regularization Parameter)，$\lambda > 0$

$\sum\limits_{j=1}^{n}$: 不惩罚基础参数 $\theta_0$

$\lambda \sum\limits_{j=1}^{n}{\theta_{j}^{2}}$: 正则化项

$\lambda$ 正则化参数类似于学习速率，也需要我们自行对其选择一个合适的值。

• 过大
• 导致模型欠拟合(假设可能会变成近乎 $x = \theta_0$ 的直线 )
• 无法正常去过拟问题
• 梯度下降可能无法收敛
• 过小
• 无法避免过拟合（等于没有）

## 7.3 线性回归正则化(Regularized Linear Regression)

\begin{align*} & \text{Repeat}\ \lbrace \newline & \ \ \ \ \theta_0 := \theta_0 - \alpha\ \frac{1}{m}\ \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})x_0^{(i)} \newline & \ \ \ \ \theta_j := \theta_j - \alpha\ \left[ \left( \frac{1}{m}\ \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} \right) + \frac{\lambda}{m}\theta_j \right], \ \ \ j \in \lbrace 1,2...n\rbrace\newline & \rbrace \end{align*}

$\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)}$

$\frac{\lambda}{m}\theta_j$: 正则化项

\begin{align*}& \theta = \left( X^TX + \lambda \cdot L \right)^{-1} X^Ty \newline& \text{where}\ \ L = \begin{bmatrix} 0 & & & & \newline & 1 & & & \newline & & 1 & & \newline & & & \ddots & \newline & & & & 1 \newline\end{bmatrix}\end{align*}

$\lambda\cdot L$: 正则化项

$L$: 第一行第一列为 $0$ 的 $n+1$ 维单位矩阵

Matlab/Octave 代码：

>> L = eye(5)
>> L(1,1) = 0

L =

0     0     0     0     0
0     1     0     0     0
0     0     1     0     0
0     0     0     1     0
0     0     0     0     1

## 7.4 逻辑回归正则化(Regularized Logistic Regression)

$J(\theta) = - \frac{1}{m} \sum_{i=1}^m \large[ y^{(i)}\ \log (h_\theta (x^{(i)})) + (1 - y^{(i)})\ \log (1 - h_\theta(x^{(i)}))\large] + \frac{\lambda}{2m}\sum_{j=1}^n \theta_j^2$

\begin{align*} & \text{Repeat}\ \lbrace \newline & \ \ \ \ \theta_0 := \theta_0 - \alpha\ \frac{1}{m}\ \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})x_0^{(i)} \newline & \ \ \ \ \theta_j := \theta_j - \alpha\ \left[ \left( \frac{1}{m}\ \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} \right) + \frac{\lambda}{m}\theta_j \right], \ \ \ j \in \lbrace 1,2...n\rbrace\newline & \rbrace \end{align*}

[^2]: week2 - 4.6

### Comment ( 0 )

Sign in for post a comment

Matlab
1
https://gitee.com/scruel/ML-AndrewNg-Notes.git
git@gitee.com:scruel/ML-AndrewNg-Notes.git
scruel
ML-AndrewNg-Notes
ML-AndrewNg-Notes
master