文章目录

  • 9. 第九章 神经网络:学习(Neural Network:learning)
    • 9.1 代价函数
    • 9.2 反向传播算法(Backpropagation algorithm,BP)
    • 9.3 反向传播直觉
    • 9.4 实现注意:展开参数
    • 9.5 梯度检测(Gradient checking)
    • 9.6 随机初始化(Random initialization)
    • 9.7 组合到一起
    • 9.8 无人驾驶(Autonomous driving example)
  • 10. 应用机器学习(Advice for applying machine learning)
    • 10.1 决定下一步做什么
    • 10.2 评估假设(Evaluating a hypothesis)
    • 10.3 模型选择和训练,验证,测试集(Model selection and training/validation/test sets)
    • 10.4 诊断偏差与方差(Diagnosing bias vs. variance)
    • 10.5 正则化和偏差/方差(Regularization and bais/variance)
    • 10.6 学习曲线(Learning curves)
    • 10.7 接下来做什么(回顾本章开始的例子)
  • 11. 第十一章 机器学习系统设计(Machine learning system design)
    • 11.1 确定优先级:垃圾邮件分类示例
    • 11.2 误差分析(Error analysis)
    • 11.3 不对称性分类的误差评估(Error metrics for skewed classes)
    • 11.4 权衡查准率和查全率(Trading off precision and recall)
    • 11.5 机器学习数据

9. 第九章 神经网络:学习(Neural Network:learning)

9.1 代价函数

神经网络主要用于分类任务。

训练集:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}\{ ({x^{(1)}},{y^{(1)}}),({x^{(2)}},{y^{(2)}}),...,({x^{(m)}},{y^{(m)}})\}{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}

LLL表示神经网络总层数,Sl{S_l}Sl​表示第lll层的神经元数量(不包含偏置)。

  1. 二分类(Binary classification)

    标签y∈{0,1}y \in \{ 0,1\}y∈{0,1},输出层一个神经元,hθ(x)∈R{h_\theta }(x) \in Rhθ​(x)∈R

  2. 多分类(Multi-class classification)

    KKK类,y∈RKy \in {R^K}y∈RK,输出层KKK个神经元,hθ(x)∈RK{h_\theta }(x) \in {R^K}hθ​(x)∈RK

神经网络代价函数:J(Θ)=−1m[Σi=1mΣk=1Kyk(i)log⁡(hθ(x(i)))k+(1−yk(i))log⁡(1−(hθ(x(i)))k)]+λ2mΣl=1L−1Σi=1slΣj=1sl+1(Θji(l))2J(\Theta ) = - {1 \over m}[\mathop \Sigma \limits_{i = 1}^m \mathop \Sigma \limits_{k = 1}^K y_k^{(i)}\log {({h_\theta }({x^{(i)}}))_k} + (1 - y_k^{(i)})\log (1 - {({h_\theta }({x^{(i)}}))_k})] + {\lambda \over {2m}}\mathop \Sigma \limits_{l = 1}^{L - 1} \mathop \Sigma \limits_{i = 1}^{{s_l}} \mathop \Sigma \limits_{j = 1}^{{s_{l + 1}}} {(\Theta _{ji}^{(l)})^2}J(Θ)=−m1​[i=1Σm​k=1ΣK​yk(i)​log(hθ​(x(i)))k​+(1−yk(i)​)log(1−(hθ​(x(i)))k​)]+2mλ​l=1ΣL−1​i=1Σsl​​j=1Σsl+1​​(Θji(l)​)2

9.2 反向传播算法(Backpropagation algorithm,BP)

目标:min⁡θJ(Θ)\mathop {\min }\limits_\theta J(\Theta )θmin​J(Θ)

需要计算:J(Θ)J(\Theta )J(Θ)和∂∂Θij(l)J(Θ){\partial \over {\partial \Theta _{ij}^{(l)}}}J(\Theta )∂Θij(l)​∂​J(Θ),梯度计算——反向传播算法

δj(l)\delta _j^{(l)}δj(l)​表示第lll层第jjj个节点的误差

对于每个输出单元(L=4L=4L=4):

  • δ(4)=a(4)−y∈RK{\delta ^{(4)}} = {a^{(4)}} - y \in {R^K}δ(4)=a(4)−y∈RK
  • δ(3)=(Θ(3))Tδ(4)∙∗g′(Z(3)),g′(Z(3))=a(3)∙∗(1−a(3)){\delta ^{(3)}} = {({\Theta ^{(3)}})^T}{\delta ^{(4)}} \bullet * g'({Z^{(3)}}),g'({Z^{(3)}}) = {a^{(3)}} \bullet * (1 - {a^{(3)}})δ(3)=(Θ(3))Tδ(4)∙∗g′(Z(3)),g′(Z(3))=a(3)∙∗(1−a(3))按对应元素相乘
  • δ(2)=(Θ(2))Tδ(3)∙∗g′(Z(2)),g′(Z(2))=a(2)∙∗(1−a(2)){\delta ^{(2)}} = {({\Theta ^{(2)}})^T}{\delta ^{(3)}} \bullet * g'({Z^{(2)}}),g'({Z^{(2)}}) = {a^{(2)}} \bullet * (1 - {a^{(2)}})δ(2)=(Θ(2))Tδ(3)∙∗g′(Z(2)),g′(Z(2))=a(2)∙∗(1−a(2))
  • δ(1){\delta ^{(1)}}δ(1)无,因为它对应输入层不会存在误差

综上:∂∂Θij(l)J(Θ)=aj(l)δi(l+1){\partial \over {\partial \Theta _{ij}^{(l)}}}J(\Theta ) = a_j^{(l)}\delta _i^{(l + 1)}∂Θij(l)​∂​J(Θ)=aj(l)​δi(l+1)​,不考虑正则化。

具体实现:

  • 训练集:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}\{ ({x^{(1)}},{y^{(1)}}),({x^{(2)}},{y^{(2)}}),...,({x^{(m)}},{y^{(m)}})\}{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}

  • 设置Δij(l)=0\Delta _{ij}^{(l)} = 0Δij(l)​=0(for all l,i,jl,i,jl,i,j),作为中间变量,累加项

  • 对于所有的i=1tomi=1 to mi=1tom进行如下操作:

    • 设置a(1)=x(i){a^{(1)}} = {x^{(i)}}a(1)=x(i)
    • 前向传播计算所有的a(l){a^{(l)}}a(l),l=2,3,...,Ll=2,3,...,Ll=2,3,...,L
    • 利用y(i){y^{(i)}}y(i),计算δ(L)=a(L)−y(i){\delta ^{(L)}} = {a^{(L)}} - {y^{(i)}}δ(L)=a(L)−y(i),然后依次计算δ(L−1),δ(L−2),...,δ(2){\delta ^{(L - 1)}},{\delta ^{(L - 2)}},...,{\delta ^{(2)}}δ(L−1),δ(L−2),...,δ(2)
    • Δij(l):=Δij(l)+aj(l)δi(l+1)\Delta _{ij}^{(l)}: = \Delta _{ij}^{(l)} + a_j^{(l)}\delta _i^{(l + 1)}Δij(l)​:=Δij(l)​+aj(l)​δi(l+1)​
  • ∂∂Θij(l)J(Θ)=Dij(l){\partial \over {\partial \Theta _{ij}^{(l)}}}J(\Theta ) = D_{ij}^{(l)}∂Θij(l)​∂​J(Θ)=Dij(l)​

9.3 反向传播直觉

反向传播在做什么?

J(Θ)=−1m[Σi=1mΣk=1Kyk(i)log⁡(hθ(x(i)))k+(1−yk(i))log⁡(1−(hθ(x(i)))k)]+λ2mΣl=1L−1Σi=1slΣj=1sl+1(Θji(l))2J(\Theta ) = - {1 \over m}[\mathop \Sigma \limits_{i = 1}^m \mathop \Sigma \limits_{k = 1}^K y_k^{(i)}\log {({h_\theta }({x^{(i)}}))_k} + (1 - y_k^{(i)})\log (1 - {({h_\theta }({x^{(i)}}))_k})] + {\lambda \over {2m}}\mathop \Sigma \limits_{l = 1}^{L - 1} \mathop \Sigma \limits_{i = 1}^{{s_l}} \mathop \Sigma \limits_{j = 1}^{{s_{l + 1}}} {(\Theta _{ji}^{(l)})^2}J(Θ)=−m1​[i=1Σm​k=1ΣK​yk(i)​log(hθ​(x(i)))k​+(1−yk(i)​)log(1−(hθ​(x(i)))k​)]+2mλ​l=1ΣL−1​i=1Σsl​​j=1Σsl+1​​(Θji(l)​)2

对于单个样本(x(i),y(i))({x^{(i)}},{y^{(i)}})(x(i),y(i))的损失函数:cos⁡t(i)=−y(i)log⁡(hΘ(x(i)))−(1−y(i))log⁡(1−hΘ(x(i)))\cos t(i){\rm{ = - }}{{\rm{y}}^{(i)}}\log ({h_\Theta }({x^{(i)}})) - (1 - {{\rm{y}}^{(i)}})\log (1 - {h_\Theta }({x^{(i)}}))cost(i)=−y(i)log(hΘ​(x(i)))−(1−y(i))log(1−hΘ​(x(i))).

δj(l)\delta _j^{(l)}δj(l)​等于aj(l)a_j^{(l)}aj(l)​的损失的误差,δj(l)=∂∂Zj(l)cos⁡t(i)\delta _j^{(l)} = {\partial \over {\partial Z_j^{(l)}}}\cos t(i)δj(l)​=∂Zj(l)​∂​cost(i)。表征每个神经元的最终输出对结果的影响!

9.4 实现注意:展开参数

矩阵展开成长向量实现。

9.5 梯度检测(Gradient checking)

作用:确定前向传播与反向传播没有bug。

思想:用数值估计梯度(numerical estimation gradient)计算梯度,公式如下:一维情况,ddθJ(θ)≈J(θ+ε)−J(θ−ε)2ε{d \over {d\theta }}J(\theta ) \approx {{J(\theta + \varepsilon ) - J(\theta - \varepsilon )} \over {2\varepsilon }}dθd​J(θ)≈2εJ(θ+ε)−J(θ−ε)​;同理,多维情况,ddθiJ(θ)≈J(θ1,θ2,...,θi+ε,...,θn)−J(θ1,θ2,...,θi−ε,...,θn)2ε{d \over {d{\theta _i}}}J(\theta ) \approx {{J({\theta _1},{\theta _2},...,{\theta _i} + \varepsilon ,...,{\theta _n}) - J({\theta _1},{\theta _2},...,{\theta _i} - \varepsilon ,...,{\theta _n})} \over {2\varepsilon }}dθi​d​J(θ)≈2εJ(θ1​,θ2​,...,θi​+ε,...,θn​)−J(θ1​,θ2​,...,θi​−ε,...,θn​)​,其中θ\thetaθ为参数展开后的向量。

将采用上述公式计算的梯度与反向传播计算的梯度进行比较判断是否存在错误。

最后,在真正运行时将梯度检测去掉,因为它是低效的。

9.6 随机初始化(Random initialization)

对于梯度下降和优化算法,Θ\ThetaΘ需要进行初始化。

随机初始化:在线性模型的训练(比如感知器和Logistic回归)中,我们一般将参数全部初始化为 0。但是这在神经网络的训练中会存在一些问题。因为如果参数都为 0,在第一遍前向计算时,所有的隐藏层神经元的激活值都相同;在反向传播时,所有权重的更新也都相同,这样会导致隐藏层神经元没有区分性。这种现象也称为对称权重现象。为了打破这个平衡,比较好的方式是对每个参数都随机初始化(Random Initialization),使得不同神经元之间的区分性更好。

−ε≤Θij(l)≤ε- \varepsilon \le \Theta _{ij}^{(l)} \le \varepsilon−ε≤Θij(l)​≤ε,通常ε\varepsilonε为较小正数。

9.7 组合到一起

训练一个神经网络。

首先搭建一个网络结构(network architecture):确定输入层,输出层神经元个数;确定隐含层数及各层神经元个数。

  1. 随机初始化权重
  2. 实现前向传播,得到每个样本输入x(i){x^{(i)}}x(i)的输出hΘ(x(i)){h_\Theta }({x^{(i)}})hΘ​(x(i))
  3. 实现代价函数计算J(Θ)J(\Theta )J(Θ)
  4. 实现反向传播,计算梯度∂∂Θij(l)J(Θ){\partial \over {\partial \Theta _{ij}^{(l)}}}J(\Theta )∂Θij(l)​∂​J(Θ)
  5. 使用梯度检测判断反向传播代码正确性
  6. 使用梯度下降或者更先进的优化算法,通过反向传播更新参数Θ\ThetaΘ最小化J(Θ)J(\Theta )J(Θ)

虽然对于非凸函数,梯度下降或者更先进的优化算法都可能收敛于局部最小值,但是实际使用中通常可以得到一个比较好的最小值。

9.8 无人驾驶(Autonomous driving example)

可以使用多个神经网络的集成学习组成自动驾驶系统。

10. 应用机器学习(Advice for applying machine learning)

10.1 决定下一步做什么

debug学习算法。

问题描述:假设已经实现正则化线性回归算法预测房价。然后,当在新的数据上进行测试时,发现它的预测结果十分不准确,接下来应该做什么?

  • 获取更多的数据
  • 尝试更少的特征
  • 尝试获取更多特征
  • 尝试添加特征的多项式组合
  • 尝试减小λ\lambdaλ
  • 尝试增大λ\lambdaλ

为了选择出要使用哪种策略来提升机器学习算法的性能,需要使用机器学习诊断(Machine learning diagnostic)来进行决策。

诊断:一个你可以运行的测试,以了解学习算法正在/不在工作,并获得关于如何最好地改善其性能的指导。这个工作会花费大量的时间,但很值得。

10.2 评估假设(Evaluating a hypothesis)

在测试集上的误差。

  1. 线性回归

    • 从训练集学习参数θ\thetaθ,通过最小化J(θ)J(\theta )J(θ)
    • 计算测试集误差:Jtest(θ)=12mtest∑i=1mtest(hθ(xtest(i))−ytest(i))2{J_{test}}(\theta ) = {1\over{2{m_{test}}}}\sum\limits_{i = 1}^{{m_{test}}} {{{({h_\theta }({x_{test}}^{(i)}) - {y_{test}}^{(i)})}^2}}Jtest​(θ)=2mtest​1​i=1∑mtest​​(hθ​(xtest​(i))−ytest​(i))2
  2. 逻辑回归

    • 从训练集学习参数θ\thetaθ,通过最小化J(θ)J(\theta )J(θ)

    • 计算测试集误差:Jtest(θ)−1mtest[Σi=1mtestytest(i)log⁡(hθ(xtest(i)))+(1−ytest(i))log⁡(1−hθ(xtest(i)))]{J_{test}}(\theta ) - {1 \over {{m_{test}}}}[\mathop \Sigma \limits_{i = 1}^{{m_{test}}} {{\rm{y}}_{test}}^{(i)}\log ({h_\theta }({x_{test}}^{(i)})) + (1 - {{\rm{y}}_{test}}^{(i)})\log (1 - {h_\theta }({x_{test}}^{(i)}))]Jtest​(θ)−mtest​1​[i=1Σmtest​​ytest​(i)log(hθ​(xtest​(i)))+(1−ytest​(i))log(1−hθ​(xtest​(i)))]

    • 错误分类度量(Misclassification error)

      则Testerror=1mtest∑i=1mtesterr(hθ(xtest(i))−ytest(i))Test{\kern 1pt} error = {1 \over {{m_{test}}}}\sum\limits_{i = 1}^{{m_{test}}} {err({h_\theta }({x_{test}}^{(i)}) - {y_{test}}^{(i)})}Testerror=mtest​1​i=1∑mtest​​err(hθ​(xtest​(i))−ytest​(i))

10.3 模型选择和训练,验证,测试集(Model selection and training/validation/test sets)

模型选择:

  1. hθ(x)=θ0+θ1x1,d=1{h_\theta }(x) = {\theta _0} + {\theta _1}{x_1},d = 1hθ​(x)=θ0​+θ1​x1​,d=1

  2. hθ(x)=θ0+θ1x1+θ2x2,d=2{h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2},d = 2hθ​(x)=θ0​+θ1​x1​+θ2​x2​,d=2

  3. hθ(x)=θ0+θ1x1+θ2x2+...+θ10x10,d=10{h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + ... + {\theta _{10}}{x_{10}},d = 10hθ​(x)=θ0​+θ1​x1​+θ2​x2​+...+θ10​x10​,d=10

通过每个假设得到一系列θ\thetaθ,然后在测试集上选择出使得Jtest(θ){J_{test}}(\theta )Jtest​(θ)最小的模型,这似乎很合理,假设我们选择d=2d = 2d=2的模型hθ(x)=θ0+θ1x1+θ2x2{h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2}hθ​(x)=θ0​+θ1​x1​+θ2​x2​。

问题在于:选择出的模型可能是一个乐观的错误估计,相当于我们针对测试集又训练了一个额外的参数ddd,这并不能很好的代表泛化误差。

为了解决上述问题,引入验证集(Cross validation,cv)。

训练集:验证集:测试集=6:2:2(打乱顺序)

训练集错误:Jtrain(θ)=12mtrain∑i=1mtrain(hθ(xtrain(i))−ytrain(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​(θ)=2mtrain​1​i=1∑mtrain​​(hθ​(xtrain​(i))−ytrain​(i))2

验证集错误:Jcv(θ)=12mcv∑i=1mcv(hθ(xcv(i))−ycv(i))2{J_{cv}}(\theta ) = {1 \over {2{m_{cv}}}}\sum\limits_{i = 1}^{{m_{cv}}} {{{({h_\theta }({x_{cv}}^{(i)}) - {y_{cv}}^{(i)})}^2}}Jcv​(θ)=2mcv​1​i=1∑mcv​​(hθ​(xcv​(i))−ycv​(i))2

测试集错误:Jtest(θ)=12mtest∑i=1mtest(hθ(xtest(i))−ytest(i))2{J_{test}}(\theta ) = {1 \over {2{m_{test}}}}\sum\limits_{i = 1}^{{m_{test}}} {{{({h_\theta }({x_{test}}^{(i)}) - {y_{test}}^{(i)})}^2}}Jtest​(θ)=2mtest​1​i=1∑mtest​​(hθ​(xtest​(i))−ytest​(i))2

这样就可以用验证集误差去选择模型了。在测试集上去评价模型的泛化能力,对所有模型公平公正。

虽然只分成训练集和测试集,在测试集上选择模型并评估最终结果可能表现也不差。但是这是业余人士的策略,作为专业人士还是要分成训练,验证,测试集!!!

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

假设你的学习算法表现不好(Jcv(θ){J_{cv}}(\theta )Jcv​(θ)或者Jtest(θ){J_{test}}(\theta )Jtest​(θ)较高)。这是偏差问题还是方差问题呢?

偏差(Bias,欠拟合,underfit):Jtrain(θ){J_{train}}(\theta )Jtrain​(θ)是非常高的;Jcv(θ)≈Jtrain(θ){J_{cv}}(\theta ) \approx {J_{train}}(\theta )Jcv​(θ)≈Jtrain​(θ)

方差(variance,过拟合,overfit):Jtrain(θ){J_{train}}(\theta )Jtrain​(θ)是非常低的;Jcv(θ)≫Jtrain(θ){J_{cv}}(\theta ) \gg {J_{train}}(\theta )Jcv​(θ)≫Jtrain​(θ)

10.5 正则化和偏差/方差(Regularization and bais/variance)

正则化线性回归:

模型:hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4{h_\theta }(x) = {\theta _0} + {\theta _1}x + {\theta _2}{x^2} + {\theta _3}{x^3} + {\theta _4}{x^4}hθ​(x)=θ0​+θ1​x+θ2​x2+θ3​x3+θ4​x4,,,J(θ)=12m∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθj2J(\theta ) = {1 \over {2m}}\sum\limits_{i = 1}^m {} {({h_\theta }({x^{(i)}}) - {y^{(i)}})^2} + \lambda \sum\limits_{j = 1}^n {\theta _j^2}J(θ)=2m1​i=1∑m​(hθ​(x(i))−y(i))2+λj=1∑n​θj2​

尝试不同λ\lambdaλ(如:0,0.01,0.02,0.04,0.008,…),根据min⁡θJ(θ)\mathop {\min }\limits_\theta J(\theta )θmin​J(θ)得到一系列θ\thetaθ,找到使得Jcv(θ){J_{cv}}(\theta )Jcv​(θ)最小的θ\thetaθ,最后在测试集进行测试。

偏差/方差关于正则化参数λ\lambdaλ的函数图像:

10.6 学习曲线(Learning curves)

良好的学习曲线:

mmm表示只从整个训练集中取出mmm个样本来训练,而不考虑其他样本。

高偏差:

Jcv(θ){J_{cv}}(\theta )Jcv​(θ)很快下降然后变平缓不再下降,Jtrain(θ){J_{train}}(\theta )Jtrain​(θ),Jcv(θ){J_{cv}}(\theta )Jcv​(θ)变平接近,且值很大。如果模型出现高偏差,那么获取更多的训练数据也没有太大的帮助。

高方差:

如果模型出现高方差,那么获取更多的训练数据可能是有帮助的。

10.7 接下来做什么(回顾本章开始的例子)

问题描述:假设已经实现正则化线性回归算法预测房价。然后,当在新的数据上进行测试时,发现它的预测结果十分不准确,接下来应该做什么?

  • 获取更多的数据——高方差
  • 尝试更少的特征——高方差
  • 尝试获取更多特征——高偏差
  • 尝试添加特征的多项式组合——高偏差
  • 尝试减小λ\lambdaλ——高偏差
  • 尝试增大λ\lambdaλ——高方差

神经网络和过拟合:

  • 小型神经网络

    • 更少的参数
    • 更可能欠拟合
    • 计算简单
  • 大型神经网络
    • 更多的参数
    • 更可能过拟合(可以使用正则化处理)
    • 计算复杂

11. 第十一章 机器学习系统设计(Machine learning system design)

11.1 确定优先级:垃圾邮件分类示例

特征xxx:选择100个单词作为垃圾邮件和非垃圾邮件的关键词。

注意:在实际应用中,常常选择在训练集中最常出现的nnn(10000到50000)个词作为关键词,而不是手动选择。

问题:有各种方法提升性能,如何选择比较困难?

11.2 误差分析(Error analysis)

帮助解决在各种提升性能的方法中进行选择。

  1. 推荐方法

    • 迅速实现一个简单的算法,并且在验证集上进行测试
    • 绘制学习曲线,去决策是否去获取更多的数据或者特征等等
    • 误差分析:手动检查你的算法出错的例子(在交叉验证集中)。看看你是否发现它在哪些类型的例子上有任何系统性的趋势犯错误。
  2. 用一个数字去直观的体现算法性能是重要的
  3. 误差分析应该在验证集上进行

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

不对称性分类:数据集中一种类别的数量比另一种多得多,如:癌症影像识别。

如果有一个偏斜类分类任务(癌症诊断),用分类精确度并不能很好地衡量算法性能,如癌症诊断任务中可能现有数据集中仅有5%的样本为阳性样本,因此即使我们用一个只会输出负类的分类器,也可以获得95%的准确率,但显然这是没有意义的。为解决上述问题,引入下述评价指标。

Precision/Recall:查准率/查全率(召回率)

P=TPTP+FP{P} = {{TP} \over {TP + FP}}P=TP+FPTP​,R=TPTP+FNR = {{TP} \over {TP + FN}}R=TP+FNTP​,F1=2∗P∗RP+RF1 = {{2*P*R} \over {P + R}}F1=P+R2∗P∗R​,F1F1F1是P,R{P,R}P,R的调和平均。

在偏斜类中使用P,R{P,R}P,R评估算法要比仅使用分类误差好得多。

11.4 权衡查准率和查全率(Trading off precision and recall)

在通常情况下,预测为正类,当hθ(x)≥threshold{h_\theta }(x) \ge thresholdhθ​(x)≥threshold。因此选择不同的thresholdthresholdthreshold会得到不同的P,R{P,R}P,R,而F1F1F1是P,R{P,R}P,R的权衡,可以在验证集上使用不同的临界值算出不同的F1F1F1,选择合适的临界值。

11.5 机器学习数据

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

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

海量数据是合理的。

  1. 假设特征x∈Rn+1x \in {R^{n + 1}}x∈Rn+1已经提供了足够的信息,可以去准确的预测出标签yyy。判断这一点:给出这样的特征输入xxx,人类专家是否可以给出正确的输出。
  2. 学习算法可以使用更多的参数(如:逻辑回归,许多特征的线性回归,更多隐含层的神经网络)。
  3. 使用更多的训练数据,不易过拟合。

吴恩达机器学习详细总结(三)相关推荐

  1. 吴恩达机器学习(第三章)——线性代数回顾

    第三章-线性代数回顾 文章目录 第三章-线性代数回顾 矩阵和向量 矩阵的加法 矩阵的乘法 矩阵标量乘法 矩阵向量乘法 矩阵乘法 矩阵乘法的性质 矩阵的逆.转置 矩阵和向量 矩阵(Matrix) 是一个 ...

  2. 吴恩达机器学习笔记(三) —— Regularization正则化

    主要内容: 一.欠拟合和过拟合(over-fitting) 二.解决过拟合的两种方法 三.正则化线性回归 四.正则化logistic回归 五.正则化的原理 一.欠拟合和过拟合(over-fitting ...

  3. 逻辑回归python正则化 选择参数_吴恩达机器学习笔记(三)——正则化(Regularization)...

    1.过拟合的问题(Over-fitting) 如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0),但是可能会不能推广到新的数据. (1)下图是一个回归问题 ...

  4. 吴恩达机器学习【第三天】线性代数基础知识

    前言:昨天又偷懒了,学到一半就跑了 之前觉得机器学习对线性代数的要求很高,但是在这个课程中,老师给出的线性代数基础知识,却很少,更多是强调应用. 文章目录 矩阵是什么 矩阵的加法和减法[与常数相乘] ...

  5. 吴恩达机器学习笔记(三)

    六. 应用机器学习的建议 假如你在开发一个机器学习系统,或者想试着改进一个机器学习系统的性能,你应如何决定接下来应该选择哪条道路? 获得更多的训练实例 尝试减少特征的数量 尝试获得更多的特征 尝试增加 ...

  6. 吴恩达机器学习 Coursera 笔记(三) - 线性回归回顾

    1 矩阵和向量 矩阵 向量 2 加法和标量乘号 加法 标乘 转载于:https://juejin.im/post/5c1953b2e51d4545020b46ce

  7. 吴恩达机器学习之逻辑回归:逻辑回归的假说表示、判定边界、代价函数、简化的成本函数和梯度下降、高级悠哈、多类别分类之一对多(详细笔记,建议收藏,已有专栏)

    吴恩达机器学习栏目清单 专栏直达:https://blog.csdn.net/qq_35456045/category_9762715.html 文章目录 6.逻辑回归(Logistic Regres ...

  8. 干货|机器学习零基础?不要怕,吴恩达课程笔记第三周!逻辑回归与正则

    吴恩达Coursera机器学习课系列笔记 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归 1 Logis ...

  9. 吴恩达机器学习作业Python实现(三):多类分类和前馈神经网络

    吴恩达机器学习系列作业目录 1 多类分类(多个logistic回归) 我们将扩展我们在练习2中写的logistic回归的实现,并将其应用于一对多的分类(不止两个类别). import numpy as ...

  10. 吴恩达机器学习——第三周学习笔记

    二元分类(Binary Classfication) 分类,一种方法是使用线性回归,将所有大于0.5的预测映射为1,将所有小于0.5的预测映射为0.然而,这种方法并不能很好地工作,因为分类实际上不是一 ...

最新文章

  1. 讯飞语音:客户端未被授权
  2. Java基于Quartz的定时任务调度服务(一)
  3. Apache服务器学习笔记
  4. H.264视频RTP负载格式/NALU的类型
  5. 2019年末逆向复习系列之淘宝M站Sign参数逆向分析
  6. 新款 Azure .NET SDK 如何设定 Content-Type
  7. Java进阶之路——从初级程序员到架构师,从小工到专家必会的技能
  8. 【Shell脚本】TDS离线备份还原
  9. Laravel5.3之Container源码解析
  10. cookie、session存储以及cookie使用环境 多数据存储批次加载渲染页面
  11. 我为什么要写《OpenCV Android 开发实战》这本书
  12. linux操作系统实验目的,Linux操作系统实验报告.doc
  13. 全网最全软件版本号相关内容科普
  14. Java Development with Ant: 学习ant的好书!
  15. 洛谷P1600 天天爱跑步
  16. 用vim解压各种格式
  17. deepin添加启动图标(快捷方式)
  18. 微信小程序项目实例——食堂吃哪个
  19. iOS中的时间和日期
  20. index.dat结构分析

热门文章

  1. 图像缩放之双线性插值
  2. svg.draw.js draw rectangle 画矩形
  3. RGB 和 YUV之间的转换
  4. PFQ: a Linux kernel module for packet capturing on multi-core architectures
  5. linux 用户登陆全部记录,Linux—— 记录所有登陆用户的历史操作记录
  6. mysql中常用的筛查语句_数据库中常用的一些关键字
  7. echart 地图 某个地区_使用echarts实现自定义区域地图
  8. @程序员,你会教自己的孩子学习编程吗?
  9. 163editor 网页编辑器 获值
  10. 8音度dsp调音教程_特伦诗DSP电脑调音教程 8音度DSP调音软件使用认知连载一