吴恩达机器学习笔记(自用)

吴恩达机器学习

  • 机器学习的定义
    • 什么是机器学习?
  • 机器学习算法
    • 1.监督学习(Supervised Learning)
    • 2.无监督学习(Unsupervised Learning)
  • 单变量线性回归
    • 模型描述(Model Representation)
    • 代价函数
    • 梯度下降
    • 线性回归中的梯度下降
    • 凸函数(convex function)
  • 多变量线性回归
    • 多元梯度下降法
      • 特征缩放(Feature Scaling)
      • 学习率(Learning rate)
      • 特征和多项式回归
      • 正规方程(Normal equation)(区别于迭代方法的直接解法)
        • 推导过程
        • 正规方程在矩阵不可逆的情况下的解决方式
  • 逻辑回归(Logistic Regression)
    • 假设表示(Hypothesis resprentation)
    • 决策界限(Decision Boundary)
    • 代价函数
      • 简化代价函数
      • 梯度下降
      • 高级优化算法
      • 多元分类(Multiclass classification)
  • 正则化(Regularization)
    • 过拟合和欠拟合(overfitting&overfitting)
    • 代价函数(Cost function)
    • 线性回归和逻辑回归的正则化
      • 线性回归
      • 逻辑回归
  • 神经网络
    • 模型展示
    • 神经网络前向传播
      • 简单的例子
      • 多元分类
    • 代价函数
    • 反向传播
      • 理解反向传播
    • 展开参数
    • 梯度检测(Gradient checking)
    • 随机初始化(Random initialization)
    • Putting it together
  • 机器学习的细节
    • 评估假设(Evaluating a hypothesis)
      • 线性回归
      • 逻辑回归
    • 模型选择
    • 诊断方差和偏差(Diagnosing variance vs. bias)
    • 正则化和偏差、方差
    • 学习曲线(Learning curve)
      • 高偏差情况
      • 高方差情况
    • 方法
  • 机器学习系统设计
    • 误差分析(Error analysis)
    • 不对称分类的误差估计(Error metrics for skewed classes)
      • 查准率和召回率(precision recall):
      • 两者之间的权衡:
      • F 1 F_{1} F1 score
  • 支持向量机(SVM,也叫大间距分类器)
    • 优化目标
    • 间隔最大化
      • 直观理解
      • 数学原理
    • 核函数
      • 和函数的分类问题
      • 如何选择landmark
      • SVM参数对性能的影响
    • 使用SVM
      • 多类分类
      • Logistic regression vs. SVMs
  • 无监督学习
    • K-Means算法
      • 算法思路
      • 优化目标
      • 随机初始化
      • 选取聚类数量
  • 降维(Dimensionality Reduction)
    • 目标1:数据压缩
    • 目标2:可视化
    • 降维算法:主成分分析法(PCA)
      • PCA不是线性回归
      • 使用PCA算法
        • 数据预处理
        • PCA计算过程
      • 主成分数量k的选择
      • 压缩重现
    • 应用PCA的建议
      • PCA的错误用法
        • 使用PCA算法防止过拟合
        • 在算法设计阶段直接使用PCA
  • 异常检测(Anomaly detection)
    • 高斯分布/正态分布(Guassian/Normal distribution)
      • 参数估计
    • 异常检测算法
    • 评估异常检测算法
      • 评估思路
    • 异常检测算法VS监督学习
    • 设计异常检测算法的特征
      • 特征转换
      • 增加特征
      • 特征组合
    • 多变量高斯分布
    • 使用多元高斯分布的异常检测
      • 步骤
      • 多元高斯分布与多个一元高斯分布
        • 区别
        • 选择
    • Summary

吴恩达机器学习课程地址

机器学习的定义

什么是机器学习?

机器学习(Machine Learning):是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。一个程序被认为能从经验E中学习,解决任务 T,达到性能度量值P,当且仅当,有了经验E后,经过P评判, 程序在处理T时的性能有所提升。
吴恩达机器学习笔记(自用)_第1张图片

机器学习算法

1.监督学习(Supervised Learning)

监督学习(Supervised Learning):对于数据集中每一个样本都有对应的标签(被告知什么是所谓的正确答案),包括回归(regression)和分类(classification)
吴恩达机器学习笔记(自用)_第2张图片

· 回归(Regression):预测连续的数值输出
· 分类(Classification):预测离散值的输出

2.无监督学习(Unsupervised Learning)

无监督学习(Unsupervised Learning):数据集中没有任何的标签(只知道这里有数据,但不知道这些数据的结构,包括聚类(clustering),比如Google news(收集大量的新闻,将其分成一个个的新闻专题)。
吴恩达机器学习笔记(自用)_第3张图片
实现公式:[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x’)
· SVD:奇异值分解函数

单变量线性回归

模型描述(Model Representation)

·Notation:

m 训练集的样本数
x‘s 输入的变量/特征
y’s 输出的变量/目标变量
(x,y) 一个训练集中的样本
(x(i),y((i)) 第i个训练样本

吴恩达机器学习笔记(自用)_第4张图片

假设函数h(hypothesis):是一个从输入x到输出y的映射,h(x) = θ0 +θ1x。θ0θ1都是模型参数

代价函数

代价函数(cost function) J ( θ ) \mathop{J}(θ) J(θ),通常使用平方误差函数,如下:
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 , m 为 训 练 样 本 数 J(θ_{0},θ_{1}) = \frac{1}{2m} \sum_{i=1}^{m} (h(x^{(i)})-y^{(i)})^{2},m为训练样本数 J(θ0,θ1)=2m1i=1m(h(x(i))y(i))2m

训练的目标是为了最小化代价函数,即 m i n m i z e θ 0 , θ 1 J ( θ 0 , θ 1 ) 。 \mathop{minmize} \limits_{θ_{0},θ_{1}}J(θ_{0},θ_{1})。 θ0,θ1minmizeJ(θ0,θ1)

简化一下,当θ0 = 0时,假设函数就时一个过原点的直线,此时h(x) = θ1x。
吴恩达机器学习笔记(自用)_第5张图片
代价函数的另外一个图形表示是等高图,如图所示:
吴恩达机器学习笔记(自用)_第6张图片
当你的点离同心椭圆的中心点越近,说明你的拟合更准确

梯度下降

代价函数: J ( θ 0 , θ 1 ) J(θ_{0},θ_{1}) J(θ0,θ1),可以推广到更多元的函数 J ( θ 0 , θ 1 , θ 2 , . . . θ n ) J(θ_{0},θ_{1},θ_{2},...θ_{n}) J(θ0,θ1,θ2,...θn)
目标: m i n m i z e θ 0 , θ 1 J ( θ 0 , θ 1 ) 。 \mathop{minmize} \limits_{θ_{0},θ_{1}}J(θ_{0},θ_{1})。 θ0,θ1minmizeJ(θ0,θ1)

设置初始的 θ 0 , θ 1 θ_{0},θ_{1} θ0,θ1,然后更新公式:-
θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) , 对 于 j = 0 , 1 时 θ_{j} := θ_{j} -α\frac{\partial}{\partialθ_{j}}J(θ_{0},θ_{1}) ,对于j=0,1时 θj:=θjαθjJ(θ0,θ1),j=01

θ0 θ1 是要同时更新的,即在计算完θ0后在计算θ1时,使用的θ0还是计算前的θ0
吴恩达机器学习笔记(自用)_第7张图片

α \alpha α被称为学习速率(learning rate),用来控制下降时幅度多大。
吴恩达机器学习笔记(自用)_第8张图片
α \alpha α如果太小的话,会导致梯度下降的很慢,如果 α \alpha α太大的话,梯度下降可能无法收敛甚至发散
吴恩达机器学习笔记(自用)_第9张图片

线性回归中的梯度下降

吴恩达机器学习笔记(自用)_第10张图片

凸函数(convex function)

没有局部最优解只有全局最优解
吴恩达机器学习笔记(自用)_第11张图片
吴恩达机器学习笔记(自用)_第12张图片

多变量线性回归

n 特征量的数目
x(i) 第i个训练样本输入的特征值
xj(i) 第i个训练样本中的第j个特征值

假设函数h(hypothesis)hθ(x) = θ0 +θ1x1+θ2x2+…+θnxn。为了方便起见,设x0 = 1,
从而x = [x0,x1x2,…,xn]T, x ∈ ℜ n + 1 x \in \Re^{n+1} xn+1,θ = [θ0,θ1θ2,…,θn]T, θ ∈ ℜ n + 1 \theta \in \Re^{n+1} θn+1
因此假设函数可以记为 h θ ( x ) = θ T x h_{\theta}(x) = \theta^{T}x hθ(x)=θTx

多元梯度下降法

代价函数:
J ( θ ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 , 此 时 θ 是 一 个 n + 1 维 的 向 量 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h(x^{(i)})-y^{(i)})^{2},此时\theta是一个n+1维的向量 J(θ)=2m1i=1m(h(x(i))y(i))2θn+1
梯度下降更新公式:
θ j : = θ j − α ∂ ∂ θ j J ( θ ) , 对 每 个 j = 0 , . . . , n 都 是 同 步 更 新 的 θ_{j} := θ_{j} -α\frac{\partial}{\partialθ_{j}}J(θ) ,对每个j = 0,...,n都是同步更新的 θj:=θjαθjJ(θ),j=0,...,n
更精确的:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) θ_{j} := θ_{j} -α\frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)} θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)

特征缩放(Feature Scaling)

目的:确保不同特征的取值都在相近的范围内,这样梯度下降法可以更快的收敛,通常使每个特征都近似的在 − 1 ≤ x i ≤ 1 -1\le x_{i} \le 1 1xi1之间(不是强制的)
吴恩达机器学习笔记(自用)_第13张图片
归一化(Mean normalization):
x i = x i − μ s i , 其 中 μ 为 特 征 x i 的 平 均 值 , s i 为 特 征 x i 的 范 围 ( m a x − m i n ) ( 也 可 是 特 征 i 标 准 差 ) x_{i} = \frac{x_{i} - \mu}{s_{i}},其中\mu为特征x_{i}的平均值,s_{i}为特征x_{i}的范围(max-min)(也可是特征i标准差) xi=sixiμ,μxisixi(maxmin)(i)

学习率(Learning rate)

梯度下降更行公式: θ j : = θ j − α ∂ ∂ θ j J ( θ ) θ_{j} := θ_{j} -α\frac{\partial}{\partialθ_{j}}J(θ) θj:=θjαθjJ(θ)

  • “debugging”:如何确保梯度下降正确运行;
  • 选择合适的 α \alpha α,太小会导致收敛慢,太大可能每一次迭代过程中 J ( θ ) J(\theta) J(θ)将会不断的越过最小值,无法收敛

吴恩达机器学习笔记(自用)_第14张图片

  • 在运行梯度下降公式时,尝试不同的 α \alpha α值,(e.g.0.001,0.01,0.1,1…每十倍取一次),对于不同的α值绘制 J ( θ ) J(\theta) J(θ)随着迭代次数变化的函数,找快速下降的。
  • 寻找一个合适的较小值和较大值,保证结果和速度的同时选取较大的值,或者稍小的合理值。

特征和多项式回归

例子: 房价预测问题

  • 三次函数
    吴恩达机器学习笔记(自用)_第15张图片
  • 二次函数(downdowndown)
    吴恩达机器学习笔记(自用)_第16张图片
  • 更精确的模型
    吴恩达机器学习笔记(自用)_第17张图片

正规方程(Normal equation)(区别于迭代方法的直接解法)

吴恩达机器学习笔记(自用)_第18张图片
对代价函数 J ( θ ) J(\theta) J(θ)求偏导并令所有的偏导为零,解出 θ = ( X T X ) − 1 X T y \theta = (X^{T}X)^{-1}X^{T}y θ=(XTX)1XTy

推导过程

x ( i ) = ( x 0 ( i ) x 1 ( i ) x 2 ( i ) . . . x n ( i ) ) ∈ R n + 1 , y = ( y 1 y 2 . . . y m ) ∈ R m x^{(i)}=\left( \begin{matrix} x_{0}^{(i)} \\ x_{1}^{(i)}\\ x_{2}^{(i)}\\ .\\ .\\ .\\ x_{n}^{(i)}\\ \end{matrix} \right )\in\R^{n+1}, y = \left( \begin{matrix} y_{1}\\ y_{2}\\ .\\ .\\ .\\ y_{m}\\ \end{matrix} \right )\in\R^{m} x(i)=x0(i)x1(i)x2(i)...xn(i)Rn+1,y=y1y2...ymRm
吴恩达机器学习笔记(自用)_第19张图片

  • 梯度下降和正规方程之间比较:

吴恩达机器学习笔记(自用)_第20张图片
如果特征的数量不是很大(approximate <10000)时,正规方程通常时很好的;如果特征量很多的的话,梯度下降会好一点

正规方程在矩阵不可逆的情况下的解决方式

吴恩达机器学习笔记(自用)_第21张图片

逻辑回归(Logistic Regression)

假设表示(Hypothesis resprentation)

逻辑回归模型: h θ ( x ) h_{\theta}(x) hθ(x) ,让 0 ≤ h θ ( x ) ≤ 1 0 \le h_{\theta}(x) \le1 0hθ(x)1
在线性回归中, h θ ( x ) = θ T x h_{\theta}(x) = \theta^{T}x hθ(x)=θTx,在逻辑回归中令 h θ ( x ) = g ( θ T x ) h_{\theta}(x) = g(\theta^{T}x) hθ(x)=g(θTx),,将 θ T x \theta^{T}x θTx带入g(x)得:
h θ ( x ) = 1 1 + e − θ T x h_{\theta}(x) = \frac{1}{1+e^{-\theta^{T}x}} hθ(x)=1+eθTx1
其中 g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1被称为Sigmod函数,也叫Logistic函数
吴恩达机器学习笔记(自用)_第22张图片
h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_{\theta}(x) = P(y=1|x;\theta) hθ(x)=P(y=1x;θ) ( 对于输入的x,y=1的概率估计)

决策界限(Decision Boundary)

Suppose predict: " y = 1 "   i f    h θ ( x ) ≥ 0.5 "y = 1"\ if \; h_{\theta}(x) \ge 0.5 "y=1" ifhθ(x)0.5
predict: " y = 0 "   i f   h θ ( x ) < 0.5 "y = 0" \ if \ h_{\theta}(x) < 0.5 "y=0" if hθ(x)<0.5
h θ ( x ) ≥ 0.5   ⟶   z ≥ 0.5   ⟶   θ T x ≥ 0 h_{\theta}(x) \ge 0.5 \ \longrightarrow \ z\ge 0.5 \ \longrightarrow \ \theta^{T}x\ge0 hθ(x)0.5  z0.5  θTx0
h θ ( x ) < 0.5   ⟶   z ≤ 0.5   ⟶   θ T x < 0 h_{\theta}(x) < 0.5 \ \longrightarrow \ z\le 0.5 \ \longrightarrow \ \theta^{T}x < 0 hθ(x)<0.5  z0.5  θTx<0
吴恩达机器学习笔记(自用)_第23张图片
定义 θ T x = 0 \theta^{T}x=0 θTx=0决策边界,注意决策边界是假设函数的属性,取决于其参数 θ \theta θ,不是数据集的属性
吴恩达机器学习笔记(自用)_第24张图片

代价函数

吴恩达机器学习笔记(自用)_第25张图片
J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) J(\theta) = \frac{1}{m} \sum_{i=1}^{m} Cost(h_{\theta}(x^{(i)}),y^{(i)}) J(θ)=m1i=1mCost(hθ(x(i)),y(i))

Logistic regression cost function:
C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) i f   y = 1 − l o g ( 1 − h θ ( x ) ) i f   y = 0 Cost(h_{\theta}(x),y)=\left\{ \begin{aligned} -log(h_{\theta}(x)) \quad if \ y = 1 \\ -log(1-h_{\theta}(x)) \quad if \ y = 0 \end{aligned} \right. Cost(hθ(x),y)={log(hθ(x))if y=1log(1hθ(x))if y=0
注意:y永远只能是1/0
吴恩达机器学习笔记(自用)_第26张图片

简化代价函数

我们可以将 C o s t ( h θ ( x ) , y ) Cost(h_{\theta}(x),y) Cost(hθ(x),y)写成: − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) -ylog(h_{\theta}(x))-(1-y)log(1-h_{\theta}(x)) ylog(hθ(x))(1y)log(1hθ(x))
所以根据最大似然法:
J ( θ ) = J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) = − 1 m ∑ i = 1 m ( y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ) J(\theta) = 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)}log(h_{\theta}(x^{(i)})) + (1-y^{(i)})log(1-h_{\theta}(x^{(i)}))) J(θ)=J(θ)=m1i=1mCost(hθ(x(i)),y(i))=m1i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))
吴恩达机器学习笔记(自用)_第27张图片
拟合参数 m i n θ J ( θ ) \mathop{min} \limits_{\theta} J(\theta) θminJ(θ)

梯度下降

∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , 对 每 个 j = 0 , . . . , n 都 是 同 步 更 新 的 \frac{\partial}{\partialθ_{j}}J(θ) = \frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)} ,对每个j = 0,...,n都是同步更新的 θjJ(θ)=m1i=1m(hθ(x(i))y(i))xj(i)j=0,...,n
θ j : = θ j − α ∂ ∂ θ j J ( θ ) = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) θ_{j} := θ_{j} - \alpha \frac{\partial}{\partialθ_{j}}J(θ)= θ_{j} -α\frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)} θj:=θjαθjJ(θ)=θjαm1i=1m(hθ(x(i))y(i))xj(i)

高级优化算法

1.共轭梯度法
2.BFGS

  • L-BFGS
  • 优点:无需人工选择参数α \alphaα;运算速度比梯度下降更快
  • 缺点:更加复杂

多元分类(Multiclass classification)

e.g. 天气会有晴天、多云、雨天、雪天
吴恩达机器学习笔记(自用)_第28张图片
One-vs-all:
训练出每个 h θ ( i ) ( x ) h_{\theta}^{(i)}(x) hθ(i)(x)后,对一个新的输入,找哪个假设函数的值最大,说明这个数据更符合这一个
吴恩达机器学习笔记(自用)_第29张图片

正则化(Regularization)

过拟合和欠拟合(overfitting&overfitting)

  • 欠拟合:
    吴恩达机器学习笔记(自用)_第30张图片
    欠拟合,高偏差(high bias):说明没有很好的拟合训练数据
    解决办法:增加特征,如增加多项式
  • 过拟合
    吴恩达机器学习笔记(自用)_第31张图片
    过拟合,高方差(high variance):拟合训练数据过于完美, J ( θ ) ≈ 0 J(\theta)\approx0 J(θ)0,导致模型的泛化能力很差,对于新样本不能准确预测;
    解决办法:
  • 减少特征个数
    a)人工保留合适的特征
    b)采用模型选择算法(会自动选择哪些变量留下)
  • 正规化
    a)保留所有特征,减小参数 θ j \theta_j θj的维度/大小

代价函数(Cost function)

Regularization
对于参数值 θ 0 , θ 1 . . . , θ n \theta_{0},\theta_{1}...,\theta_{n} θ0,θ1...,θn其值都比较小,那么我们可以:1.有一个更简单的假设模型(因为在某些参数趋于时,函数会更趋向于一个更低次的函数)。2.更不容易出现过拟合问题
线性回归代价函数
θ j \theta_{j} θj加入惩罚项,将除了 θ 0 \theta_{0} θ0之外的所有参数值都进行缩小:
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 m θ j 2 ] , 不 对 θ 0 进 行 惩 罚 J(\theta) = \frac{1}{2m}[ \sum_{i=1}^{m} (h_{\theta}(x^{(i)})-y^{(i)})^{2}+\lambda\sum_{j=1}^{m}\theta_{j}^{2}] ,不对\theta_{0}进行惩罚 J(θ)=2m1[i=1m(hθ(x(i))y(i))2+λj=1mθj2]θ0
逻辑回归代价函数:
J ( θ ) = − 1 m ∑ i = 1 m ( y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ) + λ 2 m ∑ j = 1 m θ j 2 , 不 对 θ 0 进 行 惩 罚 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}^{m}\theta_{j}^{2} ,不对\theta_{0}进行惩罚 J(θ)=m1i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))+2mλj=1mθj2θ0
拟合参数:
m i n θ J ( θ ) \mathop{min} \limits_{\theta}J(\theta) θminJ(θ)

线性回归和逻辑回归的正则化

线性回归

吴恩达机器学习笔记(自用)_第32张图片

为社么单独把 θ 0 \theta_{0} θ0拿出来?因为正则化不惩罚 θ 0 \theta_{0} θ0
吴恩达机器学习笔记(自用)_第33张图片

逻辑回归

吴恩达机器学习笔记(自用)_第34张图片
样子和之前的线性回归梯度下降算法一样,知识 h θ ( x ) h_{\theta}(x) hθ(x)是逻辑回归中的假设函数

吴恩达机器学习笔记(自用)_第35张图片

神经网络

模型展示

吴恩达机器学习笔记(自用)_第36张图片

  • θ \theta θ既可以被叫做‘’权重‘,也可被叫做’参数‘’
  • x0 == 1,可以画出也可以不画出

上图代表单个的神经元。神经网络即是一组神经元。典型的三层神经网络如下图所示:
吴恩达机器学习笔记(自用)_第37张图片

  • 第一层就叫做输入层
  • 最后一层叫做输出层
  • 除了输入层和输出层之外的其他层都叫隐藏层

详细解释:
a i ( j ) : 第 j 层 的 单 元 i 的 激 活 项 。 ( “ a c t i v a t i o n   o f   u n i t   i   i n   l a y e r   j ” ) ( 激 活 项 就 是 指 由 一 个 具 体 的 神 经 元 计 算 并 输 出 的 值 ) a _{i}^{(j)} :第j层的单元i的激活项。(“activation\ of \ unit \ i\ in \ layer \ j”)(激活项就是指由一个具体的神经元计算并输出的值) ai(j)ji(activation of unit i in layer j)
Θ ( j ) : 第 j 层 ( u n i t s : s j ) 到 第 j + 1 层 ( u n i t s : s j + 1 ) 的 权 重 矩 阵 , 维 数 : s j + 1 × ( s j + 1 ) \Theta^{(j)}:第j层(units: s_{j} )到第j + 1层(units: s_{j+1})的权重矩阵,维数:s_{j+1}\times (s_j+1) Θ(j):j(units:sj)j+1(units:sj+1)sj+1×(sj+1)
a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a_{1}^{(2)} = g(\Theta_{10}^{(1)}x_{0}+\Theta_{11}^{(1)}x_{1}+\Theta_{12}^{(1)}x_{2}+\Theta_{13}^{(1)}x_{3}) a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)
a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a_{2}^{(2)} = g(\Theta_{20}^{(1)}x_{0}+\Theta_{21}^{(1)}x_{1}+\Theta_{22}^{(1)}x_{2}+\Theta_{23}^{(1)}x_{3}) a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)
a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) a_{3}^{(2)} = g(\Theta_{30}^{(1)}x_{0}+\Theta_{31}^{(1)}x_{1}+\Theta_{32}^{(1)}x_{2}+\Theta_{33}^{(1)}x_{3}) a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)
h θ ( x ) = a 1 ( 3 ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + ( Θ 11 ( 2 ) a 1 ( 2 ) + ( Θ 12 ( 2 ) a 2 ( 2 ) + ( Θ 13 ( 2 ) a 3 ( 2 ) ) h_{\theta}(x) = a_{1}^{(3)} = g(\Theta_{10}^{(2)}a_{0}^{(2)}+(\Theta_{11}^{(2)}a_{1}^{(2)}+(\Theta_{12}^{(2)}a_{2}^{(2)}+(\Theta_{13}^{(2)}a_{3}^{(2)}) hθ(x)=a1(3)=g(Θ10(2)a0(2)+(Θ11(2)a1(2)+(Θ12(2)a2(2)+(Θ13(2)a3(2))

神经网络前向传播

吴恩达机器学习笔记(自用)_第38张图片

简单的例子

吴恩达机器学习笔记(自用)_第39张图片

多元分类

吴恩达机器学习笔记(自用)_第40张图片

代价函数

吴恩达机器学习笔记(自用)_第41张图片
L = 神 经 网 络 的 总 层 数 L = 神经网络的总层数 L=
s l = 在 第 l 层 中 总 的 计 算 单 元 数 ( 不 包 括 偏 差 单 元 ) s_{l} = 在第l层中总的计算单元数(不包括偏差单元) sl=l
逻辑回归的代价函数:
J ( θ ) = − 1 m [ ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 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} J(θ)=m1[i=1my(i)log(hθ(x(i))+(1y(i))log(1hθ(x(i)))]+2mλj=1nθj2
神经网络的代价函数:
h Θ ( x ) ∈ ℜ K , ( h Θ ( x ) ) i = i t h o u t p u t h_{\Theta}(x) \in \Re^{K},(h_{\Theta}(x))_{i} = i^{th} output hΘ(x)K,(hΘ(x))i=ithoutput
J ( θ ) = − 1 m [ ∑ i = 1 m ∑ k = 1 K y k ( i ) l o g ( h Θ ( x ( i ) ) ) k + ( 1 − y k ( i ) ) l o g ( 1 − ( h Θ ( x ( i ) ) ) k ) ] + λ 2 m ∑ l = 1 L − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( Θ j i ( l ) ) 2 J(\theta) = -\frac{1}{m} [\sum_{i = 1}^{m}\sum_{k = 1}^{K}y_{k}^{(i)}log(h_{\Theta}(x^{(i)}))_{k} + (1-y_{k}^{(i)})log(1-(h_{\Theta}(x^{(i)}))_{k})]+\frac{\lambda}{2m}\sum_{l = 1}^{L-1}\sum_{i = 1}^{s_{l}}\sum_{j= 1}^{s_{l+1}}(\Theta_{ji}^{(l)})^{2} J(θ)=m1[i=1mk=1Kyk(i)log(hΘ(x(i)))k+(1yk(i))log(1(hΘ(x(i)))k)]+2mλl=1L1i=1slj=1sl+1(Θji(l))2

计算目标: min ⁡ θ J ( Θ ) \min \limits _{\theta}J({\Theta}) θminJ(Θ)
需要计算:

  • J ( Θ ) J({\Theta}) J(Θ)
  • ∂ ∂ Θ i j ( l ) J ( Θ ) , Θ i j ( l ) ∈ R \frac{\partial}{\partial \Theta_{ij}^{(l)}}J(\Theta),\Theta_{ij}^{(l)} \in \mathbb{R} Θij(l)J(Θ),Θij(l)R

如题:
吴恩达机器学习笔记(自用)_第42张图片
前向传播:
吴恩达机器学习笔记(自用)_第43张图片

反向传播

δ j ( l ) = 第 l 层 第 j 个 节 点 的 误 差 ( e r r o r ) \delta_{j}^{(l)} = 第l层第j个节点的误差(error) δj(l)=lj(error)
对于每个输出单元: δ j ( 4 ) = a j ( 4 ) − y j \delta_{j}^{(4)} = a_{j}^{(4)} - y_{j} δj(4)=aj(4)yj,写成向量形式为: δ ( 4 ) = a ( 4 ) − y , 维 度 为 输 出 单 元 的 数 目 \delta^{(4)} = a^{(4)} -y,维度为输出单元的数目 δ(4)=a(4)y,,由输出层逐级往上计算 δ ( l ) , δ ( l − 1 ) , . . . , δ ( 2 ) \delta^{(l)},\delta^{(l-1)},...,\delta^{(2)} δ(l),δ(l1),...,δ(2)(没有 δ ( 1 ) \delta^{(1)} δ(1)):
δ ( 3 ) = ( Θ ( 3 ) ) T δ ( 4 ) . ∗ g ′ ( z ( 3 ) ) , g ′ ( z ( 3 ) ) = a ( 3 ) . ∗ ( 1 − a ( 3 ) ) , " . ∗ " 代 表 的 是 点 乘 \delta^{(3)} = (\Theta^{(3)})^{T}\delta^{(4)}.*g'(z^{(3)}),g'(z^{(3)}) = a^{(3)}.*(1-a^{(3)}),".*"代表的是点乘 δ(3)=(Θ(3))Tδ(4).g(z(3)),g(z(3))=a(3).(1a(3))"."
δ ( 2 ) = ( Θ ( 2 ) ) T δ ( 3 ) . ∗ g ′ ( z ( 2 ) ) , g ′ ( z ( 2 ) ) = a ( 2 ) . ∗ ( 1 − a ( 2 ) ) \delta^{(2)} = (\Theta^{(2)})^{T}\delta^{(3)}.*g'(z^{(2)}),g'(z^{(2)}) = a^{(2)}.*(1-a^{(2)}) δ(2)=(Θ(2))Tδ(3).g(z(2)),g(z(2))=a(2).(1a(2))
所以我们可以证明(忽略 λ \lambda λ,即 λ = 0 \lambda = 0 λ=0):
∂ ∂ Θ i j ( l ) J ( Θ ) = a j ( l ) δ i ( l + 1 ) \frac{\partial}{\partial \Theta_{ij}^{(l)}}J(\Theta) =a_{j}^{(l)}\delta_{i}^{(l+1)} Θij(l)J(Θ)=aj(l)δi(l+1)
吴恩达机器学习笔记(自用)_第44张图片
矩阵D是梯度矩阵

理解反向传播

前向传播的理解:
吴恩达机器学习笔记(自用)_第45张图片
理解反向传播:
吴恩达机器学习笔记(自用)_第46张图片
δ \delta δ项是代价函数关于这些中间项的偏导数,衡量影响神经网络的权值,进而影响神经网络的输出的程度。

展开参数

吴恩达机器学习笔记(自用)_第47张图片
实际上在上图分别多了一个θ和D的矩阵
吴恩达机器学习笔记(自用)_第48张图片
**使用矩阵表达式的好处:**参数以矩阵的形式储存,在正向/反向传播时会更方便,也会更能充分利用向量化实现
**使用向量表达式的好处:**当拥有像thetaVec/gradientVec,在使用一些高级优化算法时可以直接用

梯度检测(Gradient checking)

使用梯度检测可以保证前向/反向传播是百分百正确的
吴恩达机器学习笔记(自用)_第49张图片
吴恩达机器学习笔记(自用)_第50张图片
吴恩达机器学习笔记(自用)_第51张图片
如果得到的gradApporx ≈DVec(从反向传播中得到的),那说明反向传播的实现是正确的
吴恩达机器学习笔记(自用)_第52张图片
一旦验证了反向传播是正确的,那么在训练开始之前一定要关掉梯度检验,因为它会特别慢

随机初始化(Random initialization)

吴恩达机器学习笔记(自用)_第53张图片
不能将θ初始化成0,因为如果这样做,会导致在后面的计算中绿色/红色/蓝色的权重依然是相等的即使它们不再是全0
吴恩达机器学习笔记(自用)_第54张图片

Putting it together

吴恩达机器学习笔记(自用)_第55张图片
对于隐藏层节点的数量,与输入特征的数量相匹配(相同/两倍/三倍)是比较好的选择
吴恩达机器学习笔记(自用)_第56张图片
吴恩达机器学习笔记(自用)_第57张图片
吴恩达机器学习笔记(自用)_第58张图片

机器学习的细节

机器学习诊断法(machine learning diagnostic):
吴恩达机器学习笔记(自用)_第59张图片

评估假设(Evaluating a hypothesis)

一种方法是将所有数据分为两部分,前70%是作为训练集,后30%是作为测试集
吴恩达机器学习笔记(自用)_第60张图片
但是如果数据集里的数据是有特定的顺序/规律的话,那么就随机选择70%的数据为训练集,其余30%为测试集

线性回归

吴恩达机器学习笔记(自用)_第61张图片

逻辑回归

吴恩达机器学习笔记(自用)_第62张图片

模型选择

吴恩达机器学习笔记(自用)_第63张图片
上面拟合后的模型是不能预测出假设对于新样本的泛化能力的,因为这些参数 θ \theta θ能很好地拟合训练集,但对于其他的数据可能就没这么好了

一般来说,我们将数据集划分成训练集(60%)、交叉验证(cross validate)集(20%)和测试集(20%):

吴恩达机器学习笔记(自用)_第64张图片
训练/验证/测试误差:

  • Training error:
    J t r a i n ( θ ) = 1 2 m t r a i n ∑ i = 1 m t r a i n ( h θ ( x t r a i n ( i ) ) − y t r a i n ( i ) ) 2 , f o r   l i n e a r   r e g r e s s i o n J_{train}(\theta) = \frac{1}{2m_{train}} \sum_{i = 1}^{m_{train}}(h_{\theta}(x_{train}^{(i)}) - y_{train}^{(i)})^{2},for\ linear\ regression Jtrain(θ)=2mtrain1i=1mtrain(hθ(xtrain(i))ytrain(i))2,for linear regression
    J t r a i n ( θ ) = − 1 m t r a i n ∑ i = 1 m t r a i n ( y t r a i n ( i ) l o g ( h θ ( x t r a i n ( i ) ) ) + ( 1 − y t r a i n ( i ) ) l o g ( 1 − h θ ( x t r a i n ( i ) ) ) ) J_{train}(\theta) = -\frac{1}{m_{train}} \sum_{i=1}^{m_{train}} ( y_{train}^{(i)}log(h_{\theta}(x_{train}^{(i)})) + (1-y_{train}^{(i)})log(1-h_{\theta}(x_{train}^{(i)}))) Jtrain(θ)=mtrain1i=1mtrain(ytrain(i)log(hθ(xtrain(i)))+(1ytrain(i))log(1hθ(xtrain(i))))
  • Cross Validiation error:
    J c v ( θ ) = 1 2 m c v ∑ i = 1 m c v ( h θ ( x c v ( i ) ) − y c v ( i ) ) 2 J_{cv}(\theta) = \frac{1}{2m_{cv}} \sum_{i = 1}^{m_{cv}}(h_{\theta}(x_{cv}^{(i)})-y_{cv}^{(i)})^{2} Jcv(θ)=2mcv1i=1mcv(hθ(xcv(i))ycv(i))2
    J c v ( θ ) = − 1 m c v ∑ i = 1 m c v ( y c v ( i ) l o g ( h θ ( x c v ( i ) ) ) + ( 1 − y c v ( i ) ) l o g ( 1 − h θ ( x c v ( i ) ) ) ) J_{cv}(\theta) = -\frac{1}{m_{cv}} \sum_{i=1}^{m_{cv}} ( y_{cv}^{(i)}log(h_{\theta}(x_{cv}^{(i)})) + (1-y_{cv}^{(i)})log(1-h_{\theta}(x_{cv}^{(i)}))) Jcv(θ)=mcv1i=1mcv(ycv(i)log(hθ(xcv(i)))+(1ycv(i))log(1hθ(xcv(i))))
  • Test error:
    J t e s t ( θ ) = 1 2 m t e s t ∑ i = 1 m t e s t ( h θ ( x t e s t ( i ) ) − y t e s t ( i ) ) 2 , 对 逻 辑 回 归 公 式 同 上 J_{test}(\theta) = \frac{1}{2m_{test}} \sum_{i = 1}^{m_{test}}(h_{\theta}(x_{test}^{(i)}) -y_{test}^{(i)})^{2},对逻辑回归公式同上 Jtest(θ)=2mtest1i=1mtest(hθ(xtest(i))ytest(i))2,

训练集上我们学习参数 θ : m i n J ( θ ) \theta:minJ(\theta) θ:minJ(θ);对得到的参数 θ \theta θ选择 J c v ( θ ) J_{cv}(\theta) Jcv(θ)最小的模型;最后用 J t e s t ( θ ) J_{test}(\theta) Jtest(θ)来估计泛化误差
吴恩达机器学习笔记(自用)_第65张图片

诊断方差和偏差(Diagnosing variance vs. bias)

吴恩达机器学习笔记(自用)_第66张图片
一般来说,欠拟合会产生高偏差过拟合过产生高方差
具体来说,当模型欠拟合时,训练误差和验证误差都会较大;当模型过拟合时,训练误差很小,然而验证误差很大,如下图:
吴恩达机器学习笔记(自用)_第67张图片

正则化和偏差、方差

如何处理高方差和高偏差问题呢?
一般来说,加入合适的正则化项可以有效地避免过拟合(即高方差)
吴恩达机器学习笔记(自用)_第68张图片
注意 J t r a i n ( θ ) , J c v ( θ ) 和 J t e s t ( θ ) 都 没 有 正 则 化 项 J_{train}(\theta),J_{cv}(\theta)和J_{test}(\theta)都没有正则化项 Jtrain(θ),Jcv(θ)Jtest(θ)
吴恩达机器学习笔记(自用)_第69张图片
当正则化参数 λ \lambda λ较大时 , θ j ≈ 0 \theta_{j} \approx0 θj0(除 θ 0 \theta_0 θ0外),假设函数趋于直线,因而会造成高偏差的问题,导致欠拟合
当正则化参数 λ \lambda λ较小时,正则化项不起作用,模型会变得过拟合。如图:
吴恩达机器学习笔记(自用)_第70张图片

学习曲线(Learning curve)

吴恩达机器学习笔记(自用)_第71张图片

高偏差情况

吴恩达机器学习笔记(自用)_第72张图片

  • 随着训练集样本数的不断增加, J c v ( θ ) 和 J t r a i n ( θ ) J_{cv}(\theta)和J_{train}(\theta) Jcv(θ)Jtrain(θ)的值越来越接近,而且都很大
  • 如果算法是高偏差(欠拟合)的话,再怎么增加样本数也不会让交叉验证/测试集误差减小很多

高方差情况

吴恩达机器学习笔记(自用)_第73张图片

  • 随着训练集样本数的不断增加, J c v ( θ ) 和 J t r a i n ( θ ) J_{cv}(\theta)和J_{train}(\theta) Jcv(θ)Jtrain(θ)的值会有很大的差距
  • 如果算法是高方差(过拟合)的话,增加样本数也可能会让交叉验证/测试集误差减小

方法

一般的,对于高偏差问题(欠拟合):

  • 增加特征个数
  • 增加多项式特征
  • 降低 λ \lambda λ

对于高方差问题(过拟合):

  • 增加训练样本
  • 减少特征个数
  • 增加 λ \lambda λ
    吴恩达机器学习笔记(自用)_第74张图片

对于神经网络来说,参数越少,越有可能欠拟合;参数越多,网络结构越复杂,越有可能过拟合,应该加入正则化项。
如何选择神经网络的层数?尝试把数据集划分成上面的三部分,然后训练有一/二/三…个隐藏层的网络,然后验证哪个的 J c v ( θ ) J_{cv}(\theta) Jcv(θ)最小

机器学习系统设计

误差分析(Error analysis)

开发一个复杂的机器学习系统:
吴恩达机器学习笔记(自用)_第75张图片
e.g.设计一个垃圾邮件分类系统,发现错误识别的邮件中钓鱼邮件的数量是最多的,所以可以画更多的时间来改进钓鱼邮件的识别
吴恩达机器学习笔记(自用)_第76张图片

不对称分类的误差估计(Error metrics for skewed classes)

查准率和召回率(precision recall):

y = 1 in presence of rare class(稀有类别,即该类别在所给样本中比较少出现) that we want to detect
吴恩达机器学习笔记(自用)_第77张图片
如图,如果某个类分类结果为1,如果算法预测结果也为1,称为真阳性(TP),如果算法预测结果为0,称为假阴性(FN);如果某个类分类结果为0,如果算法预测结果也为0,称为真阴性(TN),如果算法预测结果为1,称为假阳性(FP)。

Precision: 预测为正,实际为正的概率(e.g.对所有预测患癌的患者,有多大几率真得了)
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP
Recall: 正例被准确预测的概率,也叫查全率,敏感性(e.g. 假设所有都得癌症了,有多大几率正确预测他们得了)
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP

一个算法如果有高查准率和召回率,那么说明这个算法比较好

两者之间的权衡:

对于一个逻辑回归问题,以癌症预测为例,我们之前是设定如果 h θ ( x ) ≥ 0.5 h_\theta(x)\ge0.5 hθ(x)0.5,判断 y=1,即患癌症;如果 h θ ( x ) < 0.5 h_\theta(x) < 0.5 hθ(x)<0.5,判断 y=0,即为良性肿瘤,这时候的查准率和召回率处在一个平衡的水平。

但如果以上面的方法进行预测,那么很有可能在没有准确把握的情况下将病人诊断为患癌。我们希望只有在有准确把握的情况下将病人诊断为癌症,于是修改算法如下:
当 h θ ( x ) ≥ 0.9 , 预 测 y = 1 当 h θ ( x ) ≤ 0.9 , 预 测 y = 0 当\quad h_\theta(x)\ge0.9,\quad预测\quad y=1\\ 当\quad h_\theta(x)\le0.9,\quad预测\quad y=0 hθ(x)0.9,y=1hθ(x)0.9,y=0

这样子的话会导致查准率变高,召回率变低;反之,当我们想要尽可能让所有患癌的患者被正确诊断不错过最佳治疗时期,我们需要将假阴性样本提高,算法修改如下:
当 h θ ( x ) ≥ 0.3 , 预 测 y = 1 当 h θ ( x ) ≤ 0.3 , 预 测 y = 0 当\quad h_\theta(x)\ge0.3,\quad预测\quad y=1\\ 当\quad h_\theta(x)\le0.3,\quad预测\quad y=0 hθ(x)0.3,y=1hθ(x)0.3,y=0

这样子的话会导致查准率变低,召回率变高。

  1. 如果我们想要比较确信为正例时才判定为正例,那么提高阈值,模型会对应高查准率,低召回率;
  2. 如果希望避免假阴性,那么降低阈值,模型会对应低查准率,高召回率

所以对大多数算法来说,我们必须要在precision和recall之间进行权衡:
吴恩达机器学习笔记(自用)_第78张图片

F 1 F_{1} F1 score

F 1 = 2 P R P + R F_{1} = 2\frac{PR}{P+R} F1=2P+RPR
选择最大的F score
吴恩达机器学习笔记(自用)_第79张图片

支持向量机(SVM,也叫大间距分类器)

支持向量机就是对于逻辑回归问题得到的损失函数,进行以直线替代曲线,从而起到优化的作用。

优化目标

吴恩达机器学习笔记(自用)_第80张图片
c o s t ( θ , x ) = − ( y l o g h θ ( x ) + ( 1 − y ) l o g ( 1 − h θ ( x ) ) ) cost(\theta,x) = -(ylogh_{\theta}(x)+(1-y)log(1-h_{\theta}(x))) cost(θ,x)=(yloghθ(x)+(1y)log(1hθ(x)))

吴恩达机器学习笔记(自用)_第81张图片
 左图为 y=1 时得到的图像,右图是 y=0 时得到的图像。可以看到该函数为一条曲线,我们用两条直线可以得到与图中一条曲线差不多的图像,分别将左图由直线组成的函数称为 c o s t 1 ( z ) cost_{1}(z) cost1(z),将右图由直线组成的函数称为 c o s t 0 ( z ) cost_{0}(z) cost0(z)

逻辑回归优化目标如下:
m i n θ 1 m ∑ i = 1 m [ y ( i ) ( − l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) ( ( − l o g ( 1 − h θ ( x ( i ) ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 \mathop{min} \limits_{\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} θminm1i=1m[y(i)(log(hθ(x(i)))+(1y(i))((log(1hθ(x(i))))]+2mλj=1nθj2

我们将逻辑回归的整体优化目标做出以下改变:

  1. − l o g h θ ( x ( i ) ) -logh_{\theta}(x^{(i)}) loghθ(x(i))替换为 c o s t 1 ( θ T x ( i ) ) cost_{1}(\theta^{T}x^{(i)}) cost1(θTx(i)),将 − l o g ( 1 − h θ ( x ( i ) ) ) -log(1-h_{\theta}(x^{(i)})) log(1hθ(x(i)))替换为 c o s t 0 ( θ T x ( i ) ) cost_{0}(\theta^{T}x^{(i)}) cost0(θTx(i))
  2. 由于在逻辑回归代价函数中, 1 m \frac{1}{m} m1 只是一个常数,把它去掉并不会影响代价函数求偏导的结果,因此一般支持向量机把 1 m \frac{1}{m} m1去掉;
  3. 支持向量机的正则化一般不采用在正则化项 采用正则化参数 λ \lambda λ,而是在被正则化项 采用参数 C 进行正则化。这在本质上没什么区别,只是写法上的不同,C 在这里的作用类似 1 λ \frac{1}{\lambda} λ1

所以我们可以得到支持向量机SVM整体优化目标函数:
m i n θ C ∑ i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + 1 2 ∑ i = 1 n θ j 2 \mathop{min} \limits_{\theta} C\sum_{i = 1}^{m}[y^{(i)}cost_{1}(\theta^{T}x^{(i)}) + (1-y^{(i)})cost_{0}(\theta^{T}x^{(i)})] + \frac{1}{2} \sum_{i = 1}^{n}\theta_{j}^{2} θminCi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+21i=1nθj2

支持向量机并不会输出概率,而是进行直接的预测(y = 1/0)

间隔最大化

直观理解

在这里插入图片描述
当取到一个较大的C值时,当 y ( i ) = 1 y^{(i)} = 1 y(i)=1时, θ T x ( i ) ≥ 1 \theta^{T}x^{(i)} \ge 1 θTx(i)1,当 y ( i ) = 0 y^{(i)} = 0 y(i)=0时, θ T x ( i ) ≤ − 1 \theta^{T}x^{(i)} \le -1 θTx(i)1
如果我们把优化问题看成是通过选择参数使SVM的第一项为零,那么优化问题就成为 m i n θ C × 0 + 1 2 ∑ i = 1 n θ j 2 , s . t .   θ T x ( i ) ≥ 1   i f   y ( i ) = 1 ; e l s e   θ T x ( i ) ≤ − 1 \mathop{min} \limits_{\theta} C \times 0 + \frac{1}{2} \sum_{i = 1}^{n}\theta_{j}^{2},s.t. \ \theta^{T}x^{(i)} \ge 1 \ if\ y^{(i)} = 1;else\ \theta^{T}x^{(i)} \le -1 θminC×0+21i=1nθj2,s.t. θTx(i)1 if y(i)=1;else θTx(i)1
因此我们可以得到SVM的决策边界
吴恩达机器学习笔记(自用)_第82张图片

数学原理

1 2 ∑ i = 1 n θ j 2 = 1 2 ( θ 1 2 + . . . + θ n 2 ) 2 = 1 2 ∣ ∣ θ ∣ ∣ 2 \frac{1}{2} \sum_{i = 1}^{n}\theta_{j}^{2} = \frac{1}{2}(\sqrt{\theta_{1}^{2}+...+\theta_n^{2}})^{2} = \frac{1}{2}||\theta||^{2} 21i=1nθj2=21(θ12+...+θn2 )2=21θ2

进行简化:令 θ 0 = 0 \theta_{0} = 0 θ0=0,n = 2
吴恩达机器学习笔记(自用)_第83张图片
所以有:
θ T x ( i ) = p ( i ) ∣ ∣ θ ∣ ∣ = θ 1 x 1 ( i ) + θ 2 x 2 ( i ) , p ( i ) 是 x ( i ) 在 θ 上 的 投 影 长 度 ( 可 正 可 负 ) \theta^{T}x^{(i)} = p^{(i)}||\theta|| = \theta_{1}x_{1}^{(i)} + \theta_{2}x_{2}^{(i)},p^{(i)}是x^{(i)}在\theta上的投影长度(可正可负) θTx(i)=p(i)θ=θ1x1(i)+θ2x2(i),p(i)x(i)θ

决策边界转换为:
吴恩达机器学习笔记(自用)_第84张图片
在左图中:对样本 x ( 1 ) x^{(1)} x(1),短的红线段 p ( 1 ) p^{(1)} p(1)是样本到参数 θ {{\theta }} θ的投影,它非常短。类似地,对样本 x ( 2 ) x^{(2)} x(2),它到 θ {{\theta }} θ的投影是粉色线段 p ( 2 ) p^{(2)} p(2),这个投影非常短。 p ( 2 ) p^{(2)} p(2)事实上是一个负值。
由于 p ( i ) p^{(i)} p(i)将会是非常小的数,因此当我们考察优化目标函数的时候,对于正样本而言,我们需要 p ( i ) ⋅ ∣ ∣ θ ∣ ∣ ≥ 1 p^{(i)}\cdot{\left|| \theta \right||} \ge1 p(i)θ1, p ( i ) p^{(i)} p(i)非常小,那就表明 θ {{\theta }} θ的范数非常大。类似地,对于负样本而言 p ( 2 ) ⋅ ∣ θ ∣ < = − 1 p^{(2)}\cdot{\left|\theta \right|}<=-1 p(2)θ<=1 p ( 2 ) p^{(2)} p(2)会是一个非常小的数,因此唯一的办法就是 θ {{\theta }} θ的范数变大。但是我们的目标函数是希望找到一个参数 θ {{\theta }} θ它的范数是小的。因此,这看起来不像是一个好的参数向量 θ {{\theta }} θ的选择。

为什么参数向量θ事实上是和决策边界是90度正交的? 对任意一个线性分割样本的决策边界,看成是一个Logistic Regression。在逻辑回归中,假设已经拟合出参数θ(θ是一个向量),那么求解θTx=0这个方程就可以得到决策边界。 Logistic Regression中输出函数为Sigmoid函数,临界点为z=0。 θ T ⋅ x = 0 \theta^{T} \cdot x = 0 θTx=0,故正交。(决策边界是由 x ( i ) 组 成 的 x^{(i)}组成的 x(i)

核函数

我们可以通过改造支持向量机来构造复杂的非线性分类器,这需要用到核函数。

如果我们要对以下非线性模型进行分类:
吴恩达机器学习笔记(自用)_第85张图片
根据上图可以用f1,f2…来表示相应的多项式,那是否会有用f1,f2…表示对更好的选择?
吴恩达机器学习笔记(自用)_第86张图片

和函数的分类问题

设定几个坐标 l ( i ) l^{(i)} l(i)landmark;用f 值表示我们用来描述给定初始特征变量 x 与我们所给定的坐标 l (landmarks) 的接近程度:
f i = s i m i l a r i t y ( x , l ( i ) ) = k ( x , l ( i ) ) = e x p ( − ∣ ∣ x − l ( i ) ∣ ∣ 2 2 σ 2 ) = e x p ( − ∑ j = 1 n ( x j − l j ( i ) ) 2 2 σ 2 ) f_{i} = similarity(x,l^{(i)}) = k(x,l^{(i)}) = exp(-\frac{||x - l^{(i)}||^{2}}{2\sigma^2}) = exp(-\frac{\sum_{j = 1}^{n} (x_j - l_j^{(i)})^2}{2\sigma^2}) fi=similarity(x,l(i))=k(x,l(i))=exp(2σ2xl(i)2)=exp(2σ2j=1n(xjlj(i))2)

其中 s i m i l a r i t y ( x , l ( i ) ) = k ( x , l ( i ) ) similarity(x,l^{(i)}) = k(x,l^{(i)}) similarity(x,l(i))=k(x,l(i))称为核函数,本例中使用的核函数为高斯核函数

如果 x ≈ l ( i ) x \approx l^{(i)} xl(i):
f i ≈ e x p ( − 0 2 2 σ 2 ) ≈ 1 f_{i} \approx exp(-\frac{0^{2}}{2\sigma^2}) \approx 1 fiexp(2σ202)1

如果x is far from l ( i ) l^{(i)} l(i):
f i ≈ e x p ( − ( l a r g e   n u m b e r ) 2 2 σ 2 ) ≈ 0 f_{i} \approx exp(-\frac{(large \ number)^{2}}{2\sigma^2}) \approx 0 fiexp(2σ2(large number)2)0

σ \sigma σ 的值对于核函数的影响:
吴恩达机器学习笔记(自用)_第87张图片
由上图我们可以看出, σ \sigma σ值越大,特征变量值 f 随着 x 与 l l l距离的变化越缓慢;反之则反。

由核函数根据输入的初始特征变量 x 和我们选择的标记点 l 计算的到的假设函数 h θ ( f ) h_\theta(f) hθ(f) 的每一个特征变量 f,带入假设函数 h θ ( f ) h_\theta(f) hθ(f)并预测输入样本属于哪一类
吴恩达机器学习笔记(自用)_第88张图片

如何选择landmark

吴恩达机器学习笔记(自用)_第89张图片
SVM将每一个训练样本 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)),令标记 l ( i ) = x ( i ) l^{(i)}=x^{(i)} l(i)=x(i),对于每一个输入 x x x,计算 f 1 , f 2 , . . . , f m f_1,f_2,...,f_m f1,f2,...,fm ,令 f 0 = 1 f_0=1 f0=1,生成新的特征向量 f ∈ R m + 1 f\in\R^{m+1} fRm+1

吴恩达机器学习笔记(自用)_第90张图片
核函数的想法理论上可以用于其他的算法,但由于总总原因,核函数在其他算法无法很好推广,比如核函数结合逻辑回归会变得很慢

SVM参数对性能的影响

吴恩达机器学习笔记(自用)_第91张图片

使用SVM

吴恩达机器学习笔记(自用)_第92张图片
我们在使用SVM时不要自己手写函数,而是要调用现成的包,虽然不用具体实现SVM的细节,但我们还是要自己选择合适的参数C和核函数
吴恩达机器学习笔记(自用)_第93张图片
在使用高斯核函数之前一定要进行特征缩放,否则可能数值大的那个特征影响大

除了高斯核函数之外也有其他的核函数,如多项式核函数(polynomial kernel)、字符串核函数(string kernel,输入是字符)…

多类分类

吴恩达机器学习笔记(自用)_第94张图片
基本的方法与逻辑回归的多类分类思想相似。

Logistic regression vs. SVMs

已知特征数量 n( x ∈ R n + 1 x \in \R^{n+1} xRn+1,包含x0),训练样本数量 m:

  • 如果 n ≫ m n\gg m nm,选择l逻辑回归或线性核函数(没有核函数的SVM)。(eg. n=10,000 m=10-1000)
  • 如果特征个数n较小,训练样本个数适当,选择高斯核函数。(eg. n=1-1000 m=10-10,000)
  • 如果特征个数n小,训练样本非常大,增加更多特征或者选择逻辑回归或者线性核函数的SVM。(eg. n=1-1000 m=50,000+)

逻辑回归和线性核函数往往做着相似的事情,得到相似的结果。

无监督学习

K-Means算法

符号:
K : 表示我们要分类的种类个数;
c ( i ) c^{(i)} c(i) : 当前样本 x ( i ) x^{(i)} x(i)所属的簇的索引或者序号;
μ k \mu_k μk: 表示当前第 k 个聚类的中心位置 k ∈ { 1 , 2 , . . . , K } k\in\{1,2,...,K\} k{1,2,...,K}
μ c ( i ) \mu_{c^{(i)}} μc(i) : 当前样本 x ( i ) x^{(i)} x(i)所属的簇的索引代表的聚类的中心位置。

算法思路

吴恩达机器学习笔记(自用)_第95张图片 吴恩达机器学习笔记(自用)_第96张图片

算法输入:

  1. K(聚簇的数目)
  2. 训练集 { x ( 1 ) 、 x ( 2 ) 、 . . . , x ( m ) } \{ x^{(1)}、x^{(2)}、...,x^{(m)} \} {x(1)x(2)...,x(m)},注意 x ( i ) ∈ R n ( d r o p   x 0 = 1 、 c o n v e n t i o n ) x^{(i)} \in \R^{n}(drop\ x_{0} = 1、 convention) x(i)Rn(drop x0=1convention)

思路详解:
   假设我们打算将输入样本分为两个类,即 K=2。K-Means 算法在刚开始随机生成两个坐标点,这两个坐标点代表两个类。

接下来进入迭代过程:

  1. 遍历所有样本,计算每个样本与这些坐标点的距离,并将样本点归为与它距离最短的坐标点的那一类;
  2. 移动坐标点,坐标点的位置是属于该坐标点的所有样本的平均值;
  3. 迭代第一步和第二步,直到坐标点的位置不再移动。

吴恩达机器学习笔记(自用)_第97张图片

  • c ( i ) c^{(i)} c(i) 是一个索引,即如果 x 1 , x 3 , x 6 和 x 10 x_{1},x_{3},x_{6}和x_{10} x1,x3,x6x10都是第二簇的,那么 c 1 , c 3 , c 6 和 c 10 都 为 2 c_{1},c_{3},c_{6}和c_{10}都为2 c1,c3,c6c102
  • μ k \mu_{k} μk也是一个n维向量,因为 x ( i ) x^{(i)} x(i)都是n维向量

吴恩达机器学习笔记(自用)_第98张图片

优化目标

J ( c ( 1 ) , . . . , c ( m ) , μ 1 , . . . , μ K ) = 1 m ∑ i = 1 m ∣ ∣ x ( i ) − μ c ( i ) ∣ ∣ 2 J(c^{(1)},...,c{(m)},\mu_{1},...,\mu_{K}) = \frac{1}{m} \sum_{i = 1}^{m} ||x^{(i)} - \mu_{c}^{(i)}|| ^{2} J(c(1),...,c(m),μ1,...,μK)=m1i=1mx(i)μc(i)2
m i n c ( 1 ) . . . , c ( m ) , μ 1 , . . . , μ K J ( c ( 1 ) , . . . , c ( m ) , μ 1 , . . . , μ K ) \mathop{min} \limits_{c^{(1)}...,c{(m)},\mu_{1},...,\mu_{K}} J(c^{(1)},...,c{(m)},\mu_{1},...,\mu_{K}) c(1)...,c(m),μ1,...,μKminJ(c(1),...,c(m),μ1,...,μK)

此代价函数也被称为失真代价函数 或者 K均值算法的失真
吴恩达机器学习笔记(自用)_第99张图片
KM算法分为两步,第一步相当于 m i n i m i z e   J ( . . . )   w r t   c ( 1 ) , . . . , c ( m ) ( h o l d i n g   μ 1 , . . . , μ K   f i x e d ) \mathop{minimize}\ J(...) \ wrt \ c^{(1)},...,c{(m)}(holding\ \mu_{1},...,\mu_{K}\ fixed) minimize J(...) wrt c(1),...,c(m)(holding μ1,...,μK fixed),第二步相当于 m i n i m i z e   J ( . . . )   w r t   μ 1 , . . . , μ K \mathop{minimize} \ J(...) \ wrt \ \mu_{1},...,\mu_{K} minimize J(...) wrt μ1,...,μK

随机初始化

在随机初始化中我们一般随机选取K个样本点直接作为初始聚簇中心点

为什么要进行随机初始化:
吴恩达机器学习笔记(自用)_第100张图片
一眼看上去图中的样本点可以分为两个聚簇,如果随机采用样本中的两个点作为聚簇中心点,很有可能将两个聚簇中心点同时设定在同一个聚簇中,这样就会使算法陷入局部最优。解决这个问题的办法是进行多次随机初始化,找到学习结果最好的初始化聚簇中心点,如下:
吴恩达机器学习笔记(自用)_第101张图片
如果聚类的个数比较少(2 - 10),那么多次随机初始化往往会给出一个很好的分类结果;如果要找的聚类数量很多,多次随机初始化不会有很大的改善,第一次可能就会给出一个好的结果

选取聚类数量

大多数时候聚类数量 K还是通过我们自己观察手动选取,但吴恩达老师在这里介绍了肘部法则
  吴恩达机器学习笔记(自用)_第102张图片
作出代价函数 J 随着聚簇数量的变化的曲线,然后选取函数的畸变点(导数变化最大的点,如左图,因很像一个肘部而得名),这个点就是我们想要的聚簇分类数量最合理的点。

但大多数时候“肘部函数”会像右图那样看不出肘部在哪里,这时肘部法则的缺陷。
  
还有一种方法是根据其后面的表现来选择KM的聚类数:
吴恩达机器学习笔记(自用)_第103张图片

降维(Dimensionality Reduction)

目标1:数据压缩

如果一个数据集有多个特征,且多个特征之间存在某种相关性,这样我们可以把这些具有相关性的特征通过降低维度来进行数据的压缩,以达到减少特征冗余的目的。这样既可以减少存储空间大小,也可以提高算法的速度。

  • 2D to 1D:
    吴恩达机器学习笔记(自用)_第104张图片
  • 3D to 2D:
    把所有点投影到一个平面上
    吴恩达机器学习笔记(自用)_第105张图片

目标2:可视化

如果一个数据集包含50个特征,那么它的特征是五十维的,我们很难绘制五十维的图像来表示该数据集中的每一个样本。但如果我们把这个数据集的50个特征压缩为2个特征,那么我们可以在二维图像上清晰地看到每个样本点的分布,这样有助于我们分析问题。

降维算法:主成分分析法(PCA)

PCA算法试图找到一个低维的平面对数据进行投影,以便最小化每个样本点与投影后的对应点之间距离的平方。在使用PCA之前,要先进行均值归一化和特征规范化,使所有的特征均值为0
吴恩达机器学习笔记(自用)_第106张图片

PCA不是线性回归

吴恩达机器学习笔记(自用)_第107张图片
 左图为线性回归,右图为PCA。虽然两种算法表面上看上去都是对样本点进行拟合。但仔细研究上图就会发现,线性回归算法根据样本点所对应的y值拟合直线;而PCA算法根据样本点同拟合直线的距离拟合直线,且PCA中的变量是平等的。

使用PCA算法

数据预处理

  1. 对于训练集: x ( 1 ) , . . . , x ( m ) x^{(1)},...,x^{(m)} x(1),...,x(m);
  2. 先计算这些样本的均值: μ j = 1 m ∑ i = 1 m x j ( i ) \mu_{j} = \frac{1}{m} \sum_{i=1}^{m} x_{j}^{(i)} μj=m1i=1mxj(i);
  3. x j ( i ) = x j ( i ) − μ j x_{j}^{(i)} = x_{j}^{(i)} - \mu_{j} xj(i)=xj(i)μj(这样的好处是能使处理后的样本均值为零);
  4. 进行特征缩放——均值归一化。

PCA计算过程

假设我们要将数据从n维降到k维,我们首先要计算协方差(covariance matrix):
Σ = 1 m ∑ i = 1 n ( x ( i ) ) ( x ( i ) ) T , Σ 是 一 个 协 方 差 矩 阵 \Sigma = \frac{1}{m} \sum_{i=1}^{n}(x^{(i)})(x^{(i)})^{T},\Sigma是一个协方差矩阵 Σ=m1i=1n(x(i))(x(i))T,Σ
上 面 的 公 式 也 可 写 成 S i g m a = 1 m ∗ ( X T X ) 上面的公式也可写成Sigma = \frac{1}{m} * (X^{T}X) Sigma=m1(XTX)

计算矩阵 Σ \Sigma Σ的特征向量,使用的octave公式如下(svd称为奇异值分解):
[ U , S , V ] = s v d ( S i g m a ) , S i g m a 是 一 个 n × n 矩 阵 ( n ∗ 1 ∗ 1 ∗ n ) [U,S,V] = svd(Sigma),Sigma是一个n \times n矩阵(n*1*1*n) [U,S,V]=svd(Sigma),Sigman×nn11n
我们获得矩阵U(只需要U,不需要S和V):
U = ( ∣ ∣ ∣ u ( 1 ) u ( 2 ) . . . u ( n ) ∣ ∣ ∣ ) ∈ R n × n U = \begin{pmatrix} | & | & & | \\ u^{(1)} & u^{(2)} & ... &u^{(n)} \\ | & | & & | \end{pmatrix} \in\R^{n \times n} U=u(1)u(2)...u(n)Rn×n
取矩阵U的前k列,将 x ∈ R n ⟶ z ∈ R k x \in \R^{n} \longrightarrow z \in \R^{k} xRnzRk:
z ( i ) = ( ∣ ∣ ∣ u ( 1 ) u ( 2 ) . . . u ( k ) ∣ ∣ ∣ ) T x ( i ) , z ( i ) ∈ R k × 1 , 前 面 的 矩 阵 也 写 成 U r e d u c e z^{(i)} = \begin{pmatrix} | & | & & | \\ u^{(1)} & u^{(2)} & ... &u^{(k)} \\ | & | & & | \end{pmatrix}^{T} x^{(i)},z^{(i)} \in \R^{k \times1},前面的矩阵也写成U_{reduce} z(i)=u(1)u(2)...u(k)Tx(i),z(i)Rk×1,Ureduce

主成分数量k的选择

概念一:PCA算法的平均投影误差平方:
1 m ∑ i = 1 m ∣ ∣ x ( i ) − x a p p r o x ( i ) ∣ ∣ 2 , x a p p r o x ( i ) = U r e d u c e z ( i ) ( n ∗ k ∗ k ∗ 1 ) \frac{1}{m} \sum_{i=1}^{m}||x^{(i)} - x_{approx}^{(i)}||^{2},x^{(i)}_{approx} = U_{reduce}z^{(i)}(n*k*k*1) m1i=1mx(i)xapprox(i)2,xapprox(i)=Ureducez(i)(nkk1)

概念二:样本数据总方差(所有样本与原点距离的平方):
1 m ∑ i = 1 m ∣ ∣ x ( i ) ∣ ∣ 2 \frac{1}{m} \sum_{i=1}^{m}||x^{(i)}||^{2} m1i=1mx(i)2

一般来说,我们会从1开始,尝试选择最小的 k 值使得上述两个概念比值小于等于 0.01(99%的方差性会被保留):
1 m ∑ i = 1 m ∣ ∣ x ( i ) − x a p p r o x ( i ) ∣ ∣ 2 1 m ∑ i = 1 m ∣ ∣ x ( i ) ∣ ∣ 2 ≤ 0.01 \frac{\frac{1}{m} \sum_{i=1}^{m}||x^{(i)} - x_{approx}^{(i)}||^{2}}{\frac{1}{m} \sum_{i=1}^{m}||x^{(i)}||^{2}} \le0.01 m1i=1mx(i)2m1i=1mx(i)xapprox(i)20.01
吴恩达机器学习笔记(自用)_第108张图片

  • 在octave中,我们可以有一个更简单的方式来进行计算
    1. 对于公式: [ U , S , V ] = s v d ( S i g m a ) [U,S,V] = svd(Sigma) [U,S,V]=svd(Sigma)
    2. 输出矩阵S如下所示:
      S = [ s 11 0 ⋯ 0 0 s 22 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ s n n ] ∈ R n × n S = \begin{bmatrix} {s_{11}} &0&\cdots&0 \\ 0&{s_{22}}&\cdots & 0\\ \vdots&\vdots& \ddots&\vdots \\ 0&0&\cdots&{s_{nn}} \end{bmatrix} \in \R^{n \times n} S=s11000s22000snnRn×n
    3. 则上述选择标准公式可以用如下公式代替:
      1 − ∑ i = 1 k s i i ∑ i = 1 n s i i ≤ 0.01 1 - \frac{\sum_{i=1}^{k}s_{ii}}{\sum_{i=1}^{n}s_{ii}} \le0.01 1i=1nsiii=1ksii0.01
      也 即 : ∑ i = 1 k s i i ∑ i = 1 n s i i ≥ 0.99 也即:\frac{\sum_{i=1}^{k}s_{ii}}{\sum_{i=1}^{n}s_{ii}} \ge 0.99 i=1nsiii=1ksii0.99

压缩重现

吴恩达机器学习笔记(自用)_第109张图片
可以通过 x a p p r o x ( i ) = U r e d u c e z ( i ) x^{(i)}_{approx} = U_{reduce}z^{(i)} xapprox(i)=Ureducez(i)来重新获得原数据(与 x ( i ) x^{(i)} x(i)还是有差距但基本差不多)

应用PCA的建议

监督学习中有时候输入样本的特征很多,我们也要想办法把它们减低维度,具体步骤如下:
吴恩达机器学习笔记(自用)_第110张图片
注意:降维映射Mapping x ( i ) → z ( i ) x^{(i)} \rightarrow z^{(i)} x(i)z(i) 只能是在训练集中通过PCA算法运行得到,不能在交叉验证集或者测试集中一起通过PCA算法得到。在训练集中通过PCA算法得到的映射可以用于后期检验泛化程度时交叉训练集或者测试集的降维。

PCA的错误用法

使用PCA算法防止过拟合

特征数量太多是导致过拟合的一种原因。即使有时候使用PCA算法看起来可以解决过拟合的问题,但是吴恩达老师不建议这么做,最好的方式还是使用正则化,原因是:**PCA算法对于监督学习样本特征的降维是忽略掉了标签y,我们只是使用输入的 x ( i ) x^{(i)} x(i)让算法去寻找低维数据来近似。正因如此,PCA算法会舍弃掉一些有价值的信息。**如果使用正则化来防止过拟合的话,至少会得到与PCA相同的好结果

在算法设计阶段直接使用PCA

吴恩达机器学习笔记(自用)_第111张图片
在设计一个机器学习系统时,与其一上来就使用PCA进行降维,倒不如先使用原数据先跑一下,如果原数据跑得慢/占了太多内存,才考虑使用PCA来加快速度。

异常检测(Anomaly detection)

异常检测问题主要用在无监督学习。

异常检测问题可以这么理解:给定一些初始的样本,将它们称为一个类C。对于一个输入的新样本,通过算法判断该新样本是否属于类C,如果不属于,则判断该新样本存在异常(也可以这么理解:通过初始的样本训练得到一个阈值,如果新样本超出这个阈值,这判断该样本为异常样本)。

异常检测问题应用的场景是:飞机引擎的异常检测、购物网站行为不寻常用户检测、数据中心监控哪台计算机出现异常。

高斯分布/正态分布(Guassian/Normal distribution)

如果一个实数x的概率符合高斯分布(标准差为 σ \sigma σ ,均值为 μ \mu μ ,方差为 σ 2 \sigma^2 σ2,我们把它记作 x ≈ N ( μ , σ 2 ) x\approx N(\mu,\sigma^2) xN(μ,σ2)
吴恩达机器学习笔记(自用)_第112张图片高斯分布中 μ \mu μ控制曲线的中心位置, σ \sigma σ控制曲线的宽度( σ \sigma σ越大,曲线越矮,反之瘦高)

参数估计

对于给定的数据集,假设通过观察我们认为这些数据集的分布大致符合高斯分布。那么我们可以计算该数据集所对应的高斯分布的参数:
μ = 1 m ∑ i = 1 m x ( i ) \mu = \frac{1}{m} \sum^{m}_{i = 1}x^{(i)} μ=m1i=1mx(i)
σ 2 = 1 m ∑ i = 1 m ( x ( i ) − μ ) 2 \sigma^{2} = \frac{1}{m}\sum^{m}_{i = 1}(x^{(i)} - \mu)^2 σ2=m1i=1m(x(i)μ)2

异常检测算法

对于训练集{ x ( 1 ) , . . . , x ( m ) {x^{(1)},...,x^{(m)}} x(1),...,x(m)},训练集中的每个样本 x ( i ) ∈ R n x^{(i)} \in \R^{n} x(i)Rn。我们假设训练样本的每一个特征值xi都符合某种正态分布,则有:
p ( x ) = Π j = 1 n p ( x j ; μ j , σ j 2 ) p(x) = \Pi^{n} _{j = 1}p(x_{j};\mu_{j},\sigma_{j}^{2}) p(x)=Πj=1np(xj;μj,σj2)

得到异常算法的一般步骤:

  1. 选择可以帮我们指出那些反常样本的特征值 x i x_{i} xi
  2. 对所选的特征值进行参数估计得到 μ 和 σ \mu和\sigma μσ
  3. 对于给定的新样本,通过上述式子计算它的正态分布概率,并与我们我设定的阈值 ϵ \epsilon ϵ作比较。如果 p ( x ) < ϵ p(x) < \epsilon p(x)<ϵ,则判断该样本异常

吴恩达机器学习笔记(自用)_第113张图片
具体的例子!!!
吴恩达机器学习笔记(自用)_第114张图片

评估异常检测算法

对于异常检测算法,我们要有一个评估算法好坏的标准,最好是可以通过一个实数评价指标告诉我们算法的好坏。

评估思路

我们在对异常检测算法进行评估时,需要用到带标签的数据,将训练后的模型对这些带标签数据的标签预测值和带标签数据的真实标签做对比,就可以帮助我们评估一个算法的好坏。

  • 假定我们有一些带标记的数据,y = 0时为正常样本,y = 1为异常样本。
  • 设定训练集: x ( 1 ) , x ( 2 ) , . . . , x ( m ) x^{(1)},x^{(2)},...,x^{(m)} x(1),x(2),...,x(m)(可假定都是正常/异常的样本)
  • 交叉验证集合: ( x c v ( 1 ) , y c v ( 1 ) ) , . . . , ( x c v ( m c v ) , y c v ( m c v ) ) (x_{cv}^{(1)},y_{cv}^{(1)}),...,(x_{cv}^{(m_{cv})},y_{cv}^{(m_{cv})}) (xcv(1),ycv(1)),...,(xcv(mcv),ycv(mcv))
  • 测试集: ( x t e s t ( 1 ) , y t e s t ( 1 ) ) , . . . , ( x t e s t ( m t e s t ) , y t e s t ( m t e s t ) ) (x_{test}^{(1)},y_{test}^{(1)}),...,(x_{test}^{(m_{test})},y_{test}^{(m_{test})}) (xtest(1),ytest(1)),...,(xtest(mtest),ytest(mtest))

在交叉验证集合和测试集中可以包含适当的异常样本,即y = 1的样本
吴恩达机器学习笔记(自用)_第115张图片
步骤如下:

  1. 将训练集中的样本用高斯分布拟合,并训练出模型 p ( x ) = p ( x 1 ; μ 1 , σ 1 2 ) ⋅ ⋅ ⋅ p ( x n ; μ n , σ n 2 ) p(x) = p(x_{1};\mu_{1},\sigma_{1}^{2})···p(x_{n};\mu_{n},\sigma_{n}^{2}) p(x)=p(x1;μ1,σ12)p(xn;μn,σn2),得到 μ 1 , σ 1 2 , . . . , μ n , σ n 2 \mu_{1},\sigma_{1}^{2},...,\mu_{n},\sigma_{n}^{2} μ1,σ1

你可能感兴趣的:(机器学习,人工智能,python)