机器学习吴恩达课程总结(五)

本文概述了异常检测中的高斯分布原理、多元分布应用,以及推荐系统中的基于内容和协同过滤算法,涉及大规模机器学习中的随机梯度下降。探讨了如何选择特征、评估系统和处理大数据挑战,以照片OCR为例展示了具体应用实例。
摘要由CSDN通过智能技术生成

15. 第十五章 异常检测(Anomaly Detection)

15.1 问题动机

数据集: { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } \{ {x^{(1)}},{x^{(2)}},...,{x^{(m)}}\} {x(1),x(2),...,x(m)}

现在给出 x t e s t {x_{test}} xtest,它是异常的吗?

异常检测样例:欺诈检测;工业制造;监控数据中心计算机

15.2 高斯分布(Gaussian distribution)

高斯分布也叫正态分布。

x ∈ R x \in R xR,如果 x x x满足高斯分布,它的均值是 u u u,方差是 σ 2 {\sigma ^2} σ2,标准差 σ {\sigma} σ,记作 x ∼ N ( u , σ 2 ) x \sim N(u,{\sigma ^2}) xN(u,σ2)

P ( x ; u , σ 2 ) = 1 2 π σ exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) P(x;u,{\sigma ^2}) = {1 \over {\sqrt {2\pi } \sigma }}\exp ( - {{{{(x - \mu )}^2}} \over {2{\sigma ^2}}}) P(x;u,σ2)=2π σ1exp(2σ2(xμ)2)

参数计算: u = 1 m ∑ i = 1 m x ( i ) u = {1 \over m}\sum\limits_{i = 1}^m {{x^{(i)}}} u=m1i=1mx(i) σ 2 = 1 m ∑ i = 1 m ( x ( i ) − u ) 2 {\sigma ^2} = {1 \over m}\sum\limits_{i = 1}^m {{{({x^{(i)}} - u)}^2}} σ2=m1i=1m(x(i)u)2

15.3 异常检测算法

  1. 选择你认为可能象征着异常的特征 x i {x_i} xi

  2. 计算参数: u 1 , . . . , u n , σ 1 2 , . . . , σ n 2 {u_1},...,{u_n},\sigma _1^2,...,\sigma _n^2 u1,...,un,σ12,...,σn2

    u j = 1 m ∑ i = 1 m x j ( i ) {u_j} = {1 \over m}\sum\limits_{i = 1}^m {x_j^{(i)}} uj=m1i=1mxj(i) σ j 2 = 1 m ∑ i = 1 m ( x j ( i ) − u j ) 2 \sigma _j^2 = {1 \over m}\sum\limits_{i = 1}^m {{{(x_j^{(i)} - {u_j})}^2}} σj2=m1i=1m(xj(i)uj)2

  3. 给出新的样本 x x x,计算 p ( x ; u , σ 2 ) p(x;u,{\sigma ^2}) p(x;u,σ2)
    在这里插入图片描述如果 p ( x ) < ε p(x) < \varepsilon p(x)<ε,则异常

15.4 开发和评估异常检测系统

一个真实具体的数值对评估方法是重要的。

当我们开发一个学习算法时,如果我们有评估方法,我们就可以更加轻易的做决定。

假设我们现在有一些有标签的数据,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 ( 2 ) , y c v ( 2 ) ) , . . . , ( x c v ( m ) , y c v ( m ) ) } \{ (x_{cv}^{(1)},y_{cv}^{(1)}),(x_{cv}^{(2)},y_{cv}^{(2)}),...,(x_{cv}^{(m)},y_{cv}^{(m)})\} {(xcv(1),ycv(1)),(xcv(2),ycv(2)),...,(xcv(m),ycv(m))}

测试集: { ( x t e s t ( 1 ) , y t e s t ( 1 ) ) , ( x t e s t ( 2 ) , y t e s t ( 2 ) ) , . . . , ( x t e s t ( m ) , y t e s t ( m ) ) } \{ (x_{test}^{(1)},y_{test}^{(1)}),(x_{test}^{(2)},y_{test}^{(2)}),...,(x_{test}^{(m)},y_{test}^{(m)})\} {(xtest(1),ytest(1)),(xtest(2),ytest(2)),...,(xtest(m),ytest(m))}

示例:飞机引擎示例

10000个正常样本y=0;20个异常样本y=1。

训练集:6000个正常样本

验证集:2000个正常样本y=0;10个异常样本y=1

测试集:2000个正常样本y=0;10个异常样本y=1

算法评估:

  • 在训练集 { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } \{ {x^{(1)}},{x^{(2)}},...,{x^{(m)}}\} {x(1),x(2),...,x(m)}上训练模型

  • 在验证集或者测试集上进行预测:
    在这里插入图片描述

  • 混淆矩阵,计算 F 1 − s c o r e F1-score F1score

  • 根据验证集结果选择 ε \varepsilon {\kern 1pt} ε

15.5 异常检测VS.监督学习

异常检测:

  • 非常少的正例样本(0~20)
  • 大量负例样本
  • 许多不同 "类型 "的异常现象。任何算法都很难从正例中学习异常现象是什么样子的。未来的异常现象可能看起来与我们目前看到的任何异常都不同

监督学习:

  • 大量的正例和反例
  • 足够多的正面例子让算法来了解正例是什么样的,未来正面的例子可能是与训练集中的例子相似

15.6 选择要使用什么特征

  1. 非高斯分布的特征:可以通过函数变换到高斯分布,log,指数等操作

  2. 异常检测的误差分析

    如果正常样本希望 p ( x ) p(x) p(x)较大;如果异常样本希望 p ( x ) p(x) p(x)较小

    经常遇到的问题是无论正常样本还是异常样本 p ( x ) p(x) p(x)都较大。这样可以通过在训练集上找到这个样本,看是否能通过添加新特征将两类样本区分开来

  3. 监测数据中心的计算机:选择那些在异常情况下可能会出现异常大或异常小的特征。

15.7 多元高斯分布

在单元高斯分布中,可能认为a点和b点同样好,但是实际却并非如此。

image-20220404125925131

x ∈ R n x \in {R^n} xRn u ∈ R n u \in {R^n} uRn Σ ∈ R n × n \Sigma \in {R^{n \times n}} ΣRn×n(协方差矩阵)
在这里插入图片描述
可以对特征空间高度相关的情况建模, Σ \Sigma Σ控制着分布

15.8 使用多元高斯分布的异常检测

  1. 多元高斯分布

    参数 u ∈ R n u \in {R^n} uRn Σ ∈ R n × n \Sigma \in {R^{n \times n}} ΣRn×n
    在这里插入图片描述
    参数计算: u = 1 m ∑ i = 1 m x ( i ) u = {1 \over m}\sum\limits_{i = 1}^m {{x^{(i)}}} u=m1i=1mx(i) Σ = 1 m ∑ i = 1 m ( x ( i ) − u ) ( x ( i ) − u ) T \Sigma = {1 \over m}\sum\limits_{i = 1}^m {({x^{(i)}} - u)} {({x^{(i)}} - u)^T} Σ=m1i=1m(x(i)u)(x(i)u)T

  2. 多元高斯分布的异常检测

    计算 u = 1 m ∑ i = 1 m x ( i ) u = {1 \over m}\sum\limits_{i = 1}^m {{x^{(i)}}} u=m1i=1mx(i) Σ = 1 m ∑ i = 1 m ( x ( i ) − u ) ( x ( i ) − u ) T \Sigma = {1 \over m}\sum\limits_{i = 1}^m {({x^{(i)}} - u)} {({x^{(i)}} - u)^T} Σ=m1i=1m(x(i)u)(x(i)u)T

    计算新样本: p ( x ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x) = {1 \over {{{(2\pi )}^{{n \over 2}}}|\Sigma {|^{{1 \over 2}}}}}\exp ( - {1 \over 2}{(x - \mu )^T}{\Sigma ^{ - 1}}(x - \mu )) p(x)=(2π)2nΣ211exp(21(xμ)TΣ1(xμ))

    如果 p ( x ) < ε p(x) < \varepsilon p(x)<ε,则异常

  3. 原模型与多元对比

    原模型 p ( x ) = p ( x 1 ; u 1 ; σ 1 2 ) × p ( x 2 ; u 2 ; σ 2 2 ) × . . . × p ( x n ; u n ; σ n 2 ) p(x) = p({x_1};{u_1};\sigma _1^2) \times p({x_2};{u_2};\sigma _2^2) \times ... \times p({x_n};{u_n};\sigma _n^2) p(x)=p(x1;u1;σ12)×p(x2;u2;σ22)×...×p(xn;un;σn2)相当于多个单元,是多元的特例:

    image-20220404131957210

    原模型:

    • 手动创建特征以捕获异常情况,采取不寻常的谷值组合
    • 计算效率高,适合n较大时
    • 训练集m较小时

    多元高斯:

    • 自动捕捉特征间的相关性
    • 计算代价更高
    • 必须保证m>n,或者是 Σ \Sigma Σ可逆

16. 第十六章 推荐系统(Recommender System)

16.1 问题规划

  1. 目前,许多大公司都在尝试搭建自己的推荐系统
  2. 学习一些特征学习的思想

例如:预测电影评分:根据一些用户多某些电影的打分,预测其对其他电影的打分起到偏好推荐的作用。

16.2 基于内容的推荐算法

  1. 基于内容的推荐系统

    n u {n_u} nu表示用户数量; n m {n_m} nm表示电影数量; r ( i , j ) = 1 r(i,j) = 1 r(i,j)=1表示用户 j j j已经对电影 i i i打过分; y ( i , j ) {y^{(i,j)}} y(i,j)表示用户 j j j已经对电影 i i i打的分数(仅在 r ( i , j ) = 1 r(i,j) = 1 r(i,j)=1时有意义)

    image-20220404134113283

    对于每个用户 j j j,学习参数 θ ( j ) ∈ R 3 {\theta ^{(j)}} \in {R^3} θ(j)R3,预测用户 j j j对电影 i i i的打分 ( θ ( j ) ) T x ( i ) {({\theta ^{(j)}})^T}{x^{(i)}} (θ(j))Tx(i)

  2. 问题规划

    r ( i , j ) = 1 r(i,j) = 1 r(i,j)=1表示用户 j j j已经对电影 i i i打过分

    y ( i , j ) {y^{(i,j)}} y(i,j)表示用户 j j j已经对电影 i i i打的分数(仅在 r ( i , j ) = 1 r(i,j) = 1 r(i,j)=1时有意义)

    θ ( j ) {\theta ^{(j)}} θ(j)表示用户 j j j的参数向量

    x ( i ) {x^{(i)}} x(i)表示电影 i i i的特征向量

    预测用户 j j j对电影 i i i的分数 ( θ ( j ) ) T x ( i ) {({\theta ^{(j)}})^T}{x^{(i)}} (θ(j))Tx(i)

    m ( j ) {m^{(j)}} m(j)表示用户 j j j打过分的电影数量

    为了学习 θ ( j ) {\theta ^{(j)}} θ(j) min ⁡ θ j 1 2 ∑ i : r ( i , j ) = 1 m ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ k = 1 n ( θ k ( j ) ) 2 \mathop {\min }\limits_{{\theta ^j}} {1 \over 2}\sum\limits_{i:r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2} + {\lambda \over 2}\sum\limits_{k = 1}^n {{{(\theta _k^{(j)})}^2}} } θjmin21i:r(i,j)=1m((θ(j))Tx(i)y(i,j))2+2λk=1n(θk(j))2

    为了学习 θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) {\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}} θ(1),θ(2),...,θ(nu) J ( θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) ) = min ⁡ θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) 1 2 ∑ j = 1 n u ∑ i : r ( i , j ) = 1 m ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 J({\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}) = \mathop {\min }\limits_{{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}} {1 \over 2}\sum\limits_{j = 1}^{{n_u}} {\sum\limits_{i:r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2}} } + {\lambda \over 2}\sum\limits_{j = 1}^{{n_u}} {\sum\limits_{k = 1}^n {{{(\theta _k^{(j)})}^2}} } J(θ(1),θ(2),...,θ(nu))=θ(1),θ(2),...,θ(nu)min21j=1nui:r(i,j)=1m((θ(j))Tx(i)y(i,j))2+2λj=1nuk=1n(θk(j))2

    梯度下降更新:

    θ k ( j ) : = θ k ( j ) − α ∑ i : r ( i , j ) = 1 m ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i ) f o r k = 0 \theta _k^{(j)}: = \theta _k^{(j)} - \alpha \sum\limits_{i:r(i,j) = 1}^m {({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})x_k^{(i)}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} for{\kern 1pt} {\kern 1pt} k = 0} θk(j):=θk(j)αi:r(i,j)=1m((θ(j))Tx(i)y(i,j))xk(i)fork=0

    θ k ( j ) : = θ k ( j ) − α ( ∑ i : r ( i , j ) = 1 m ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i ) + λ θ k ( j ) ) f o r k ≠ 0 \theta _k^{(j)}: = \theta _k^{(j)} - \alpha (\sum\limits_{i:r(i,j) = 1}^m {({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})x_k^{(i)}{\kern 1pt} + \lambda \theta _k^{(j)}){\kern 1pt} {\kern 1pt} {\kern 1pt} for{\kern 1pt} {\kern 1pt} k \ne 0} θk(j):=θk(j)α(i:r(i,j)=1m((θ(j))Tx(i)y(i,j))xk(i)+λθk(j))fork=0

16.3 协同过滤(Collaborative Filtering)

在基于内容的推荐算法中,我们需要 x 1 , x 2 {x_1},{x_2} x1,x2特征分别表示电影爱情,电影动作的程度,不过这通常是较难获取的。

现在假设 x 1 , x 2 {x_1},{x_2} x1,x2未知,而转去向用户获取 θ \theta θ,即对爱情或者动作电影的喜爱程度,提供偏好。

  1. 优化算法

    给出 θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) {\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}} θ(1),θ(2),...,θ(nu),去学习 x ( i ) {x^{(i)}} x(i) min ⁡ x ( i ) 1 2 ∑ j : r ( i , j ) = 1 m ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ k = 1 n ( x k ( i ) ) 2 \mathop {\min }\limits_{{x^{(i)}}} {1 \over 2}\sum\limits_{j:r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2} + {\lambda \over 2}\sum\limits_{k = 1}^n {{{(x_k^{(i)})}^2}} } x(i)min21j:r(i,j)=1m((θ(j))Tx(i)y(i,j))2+2λk=1n(xk(i))2

    给出 θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) {\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}} θ(1),θ(2),...,θ(nu),去学习 x ( 1 ) , x ( 2 ) , . . . , x ( n m ) {x^{(1)}},{x^{(2)}},...,{x^{({n_m})}} x(1),x(2),...,x(nm) min ⁡ x ( 1 ) , x ( 2 ) , . . . , x ( n m ) 1 2 ∑ i = 1 n m ∑ j : r ( i , j ) = 1 m ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 \mathop {\min }\limits_{{x^{(1)}},{x^{(2)}},...,{x^{({n_m})}}} {1 \over 2}\sum\limits_{i = 1}^{{n_m}} {\sum\limits_{j:r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2}} } + {\lambda \over 2}\sum\limits_{i = 1}^{{n_m}} {\sum\limits_{k = 1}^n {{{(x_k^{(i)})}^2}} } x(1),x(2),...,x(nm)min21i=1nmj:r(i,j)=1m((θ(j))Tx(i)y(i,j))2+2λi=1nmk=1n(xk(i))2

  2. 协同过滤

    给出 x ( 1 ) , x ( 2 ) , . . . , x ( n m ) {x^{(1)}},{x^{(2)}},...,{x^{({n_m})}} x(1),x(2),...,x(nm),可以计算 θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) {\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}} θ(1),θ(2),...,θ(nu)

    给出 θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) {\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}} θ(1),θ(2),...,θ(nu),可以计算 x ( 1 ) , x ( 2 ) , . . . , x ( n m ) {x^{(1)}},{x^{(2)}},...,{x^{({n_m})}} x(1),x(2),...,x(nm)

    那么是先有鸡还是先有蛋呢?

    可以猜想出一个初始 θ \theta θ,然后按照 θ → x → θ → x → θ → x → θ → . . . \theta \to x \to \theta \to x \to \theta \to x \to \theta \to ... θxθxθxθ...的顺序更新。这样更新下去的条件是:每位用户都对数个电影进行了评价,并且每部电影都被数个用户评价过。

    协同过滤算法是指:当你执行算法时,要观察大量的用户,观察这些用户的实际行动来协同地得到更佳的每个人对电影的评分。每位用户都在帮助算法更好地进行特征学习。

16.4 协同过滤算法

  1. 将上一节两个优化目标结合

    同时最小化 θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) {\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}} θ(1),θ(2),...,θ(nu) x ( 1 ) , x ( 2 ) , . . . , x ( n m ) {x^{(1)}},{x^{(2)}},...,{x^{({n_m})}} x(1),x(2),...,x(nm)

    J ( x ( 1 ) , x ( 2 ) , . . . , x ( n m ) , θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) ) = 1 2 ∑ ( i , j ) : r ( i , j ) = 1 m ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 J({x^{(1)}},{x^{(2)}},...,{x^{({n_m})}},{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}) = {1 \over 2}\sum\limits_{(i,j):r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2} + {\lambda \over 2}\sum\limits_{i = 1}^{{n_m}} {\sum\limits_{k = 1}^n {{{(x_k^{(i)})}^2}} } + {\lambda \over 2}\sum\limits_{j = 1}^{{n_u}} {\sum\limits_{k = 1}^n {{{(\theta _k^{(j)})}^2}} } } J(x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu))=21(i,j):r(i,j)=1m((θ(j))Tx(i)y(i,j))2+2λi=1nmk=1n(xk(i))2+2λj=1nuk=1n(θk(j))2

    这时 x ∈ R n , θ ∈ R n x \in {R^n},\theta \in {R^n} xRn,θRn舍弃 x 0 {x_0} x0,更加灵活

    min ⁡ x ( 1 ) , x ( 2 ) , . . . , x ( n m ) , θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) J ( x ( 1 ) , x ( 2 ) , . . . , x ( n m ) , θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) ) \mathop {\min }\limits_{{x^{(1)}},{x^{(2)}},...,{x^{({n_m})}},{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}} J({x^{(1)}},{x^{(2)}},...,{x^{({n_m})}},{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}) x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu)minJ(x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu))

  2. 协同过滤算法

  • 随机初始化 θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) {\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}} θ(1),θ(2),...,θ(nu) x ( 1 ) , x ( 2 ) , . . . , x ( n m ) {x^{(1)}},{x^{(2)}},...,{x^{({n_m})}} x(1),x(2),...,x(nm)

  • 使用梯度下降或者其他高级优化算法最小化 J ( x ( 1 ) , x ( 2 ) , . . . , x ( n m ) , θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) ) J({x^{(1)}},{x^{(2)}},...,{x^{({n_m})}},{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}) J(x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu))

    x k ( i ) : = x k ( i ) − α ( ∑ j : r ( i , j ) = 1 m ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) θ k ( j ) + λ x k ( i ) ) x_k^{(i)}: = x_k^{(i)} - \alpha (\sum\limits_{j:r(i,j) = 1}^m {({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})\theta _k^{(j)}{\kern 1pt} + \lambda x_k^{(i)}){\kern 1pt} {\kern 1pt} } xk(i):=xk(i)α(j:r(i,j)=1m((θ(j))Tx(i)y(i,j))θk(j)+λxk(i))

    θ k ( j ) : = θ k ( j ) − α ( ∑ i : r ( i , j ) = 1 m ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i ) + λ θ k ( j ) ) f o r k ≠ 0 \theta _k^{(j)}: = \theta _k^{(j)} - \alpha (\sum\limits_{i:r(i,j) = 1}^m {({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})x_k^{(i)}{\kern 1pt} + \lambda \theta _k^{(j)}){\kern 1pt} {\kern 1pt} {\kern 1pt} for{\kern 1pt} {\kern 1pt} k \ne 0} θk(j):=θk(j)α(i:r(i,j)=1m((θ(j))Tx(i)y(i,j))xk(i)+λθk(j))fork=0

  • 预测用户 j j j对电影 i i i的打分 ( θ ( j ) ) T x ( i ) {({\theta ^{(j)}})^T}{x^{(i)}} (θ(j))Tx(i)

16.5 矢量化:低秩矩阵分解

image-20220404145713259

找到相关的电影:
对于每个电影 i i i,我们学习 x ( i ) ∈ R n {x^{(i)}} \in {R^n} x(i)Rn

如何找到与电影 i i i相关的电影 j j j呢?

∥ x ( i ) − x ( j ) ∥ \parallel {x^{(i)}} - {x^{(j)}}\parallel x(i)x(j)衡量两个电影的相似程度。

16.6 实现细节:均值规范化

问题:假设有一个用户没有对任何电影进行评价,那么通过上述算法得出的 θ \theta θ为全零向量,无法向该用户进行推荐。

image-20220404150332191

17. 第十七章 大规模机器学习

17.1 大数据学习

“不是谁有最好的算法就能获胜。而是谁拥有最多的数据”。

“It’s not who has the best algorithm that wins. It’s who has the most data." ——[Banko and Brill, 2001]

17.2 随机梯度下降(Stochastic Gradient Descent,SGD)

问题:当数据量很大时,我们采用批量梯度下降法梯度更新会很慢。

批量梯度下降法:使用全体样本计算梯度

随机梯度下降法:每次只使用一个样本计算梯度

小批量梯度下降法:每次使用一小部分样本计算梯度

随机梯度下降法通常比批量梯度下降法收敛更快!

17.3 小批量梯度下降法(Mini-batch Gradient Descent)

随机梯度下降法无法利用一些并行化的操作,小批量梯度下降法通常更快!

17.4 随机梯度下降法收敛

检查是否收敛:

  • 批量梯度下降法

    绘制 J t r a i n ( θ ) {J_{train}}(\theta ) Jtrain(θ)关于迭代次数的函数图像, 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 {J_{train}}(\theta ) = {1 \over {2{m_{train}}}}\sum\limits_{i = 1}^{{m_{train}}} {{{({h_\theta }({x_{train}}^{(i)}) - {y_{train}}^{(i)})}^2}} Jtrain(θ)=2mtrain1i=1mtrain(hθ(xtrain(i))ytrain(i))2 m m m很大,不好计算

  • 随机梯度下降法

    • cos ⁡ t ( θ , ( x ( i ) , y ( i ) ) ) = 1 2 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \cos t(\theta ,({x^{(i)}},{y^{(i)}})) = {1 \over {2m}}{({h_\theta }({x^{(i)}}) - {y^{(i)}})^2} cost(θ,(x(i),y(i)))=2m1(hθ(x(i))y(i))2
    • 学习期间,每次更新 θ \theta θ之前使用 ( x ( i ) , y ( i ) ) ({x^{(i)}},{y^{(i)}}) (x(i),y(i))计算 cos ⁡ t ( θ , ( x ( i ) , y ( i ) ) ) \cos t(\theta ,({x^{(i)}},{y^{(i)}})) cost(θ,(x(i),y(i)))
    • 每1000次迭代绘制过去1000次 cos ⁡ t ( θ , ( x ( i ) , y ( i ) ) ) \cos t(\theta ,({x^{(i)}},{y^{(i)}})) cost(θ,(x(i),y(i)))平均值的图像

对于随机梯度下降法,如果图像波动过大,可增大迭代次数取平均;如果上升趋势,调小学习率;如果下降,良好;如果平直,出错。

学习率可以缓慢下降。

17.5 在线学习

适合大量数据流下,每次使用一个数据,用过即弃。

能够实时跟随用户偏好,例如CTR学习。

不使用固定数据集,而是连续的数据集。

17.6 减少映射与数据并行

image-20220404152520941

image-20220404152609806

Hadoop开源平台

18. 第十八章 应用示例:照片OCR

18.1 问题描述与OCR流水线

照片光学字符识别(Photo Optical Character Recognition)

OCR流程

image-20220404152928993

18.2 滑动窗口(Sliding Windows)

  1. 文本识别

    首先训练好一个可以对小图片中是否有字符进行分类的分类器,然后用窗口滑动框出原始图片的小区域,进行分类,最后将相邻很近且都有文字的地方连接成大矩阵(二维滑动,监督学习)。

    image-20220404153350115

  2. 再用一维滑动窗口分割出每个字符

    image-20220404153505772

  3. 字符分类(监督学习,多分类)

    image-20220404153543026

18.3 获取大量数据:人工数据合成

  1. 从零开始自行生成

    对于OCR任务,可以获取不同的字库,将字体放到不同的背景上,然后用模糊算子或者仿射变换得到数据集。

  2. 通过引入失真来合成数据

    例如:拉伸压缩变换

    引入的失真应该代表测试集中的噪声/失真类型。

    image-20220404154959088

    通常情况下,向你的数据添加纯粹的随机/无意义的噪音是没有帮助的。

    image-20220404155011411

  3. 讨论得到更多数据

    在花费精力之前,请确保你有一个低偏差的分类器(绘制学习曲线)。例如,不断增加神经网络中的特征数/隐藏单元数,直到你有一个低偏差的分类器。

    要获得10倍于我们目前所拥有的数据,会有多少工作?

    • 人工合成数据
    • 自己收集
    • 众包(亚马逊众包平台)

18.4 顶层分析:每一部分工作怎么样

估算每个组成部分造成的误差(上限分析)。

核心思想:假设一个模快是完美的,看看它对提升整个系统的性能的增益是多少?值不值得花费大量的时间,避免浪费时间。木桶效应。不要凭直觉决定要干什么!!!

19. 第十九章 总结与感想

总结主要章节:

  • 监督学习
    • 线性回归;逻辑回归;神经网络,SVM
  • 无监督学习
    • k-means;PCA;异常检测
  • 具体应用
    • 推荐系统;大规模机器学习
  • 构建机器学习系统的利器
    • 偏差方差分析;正则化;决定下一步做什么;评估学习算法;学习曲线;误差分析;上限分析

有朝一日能够造福其他人的生活!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值