逻辑回归

上一节我们知道,使用线性回归来处理 0/1 分类问题总是困难重重的,因此,人们定义了逻辑回归来完成 0/1 分类问题,逻辑一词也代表了是(1)非(0)

Sigmoid预测函数

在逻辑回归中,定义预测函数为:
hθ(x)=g(z)h_θ(x)=g(z)hθ​(x)=g(z)

其中, z=θTxz=θ^Txz=θTx 是分类边界,且 g(z)=11+e−zg(z)=\frac 1{1+e^{−z}}g(z)=1+e−z1​ 。

g(z)g(z)g(z) 称之为 SigmoidFunctionSigmoid\ FunctionSigmoid Function,亦称 LogicFunctionLogic\ FunctionLogic Function,其函数图像如下:

可以看到,预测函数 hθ(x)h_θ(x)hθ​(x) 被很好地限制在了 0、1 之间,并且,sigmoidsigmoidsigmoid 是一个非常好的阈值函数:阈值为 0.5 ,大于 0.5 为 1 类,反之为 0 类。函数曲线过渡光滑自然,关于 0.5 中心对称也极具美感。

决策边界

决策边界,顾名思义,就是用来划清界限的边界,边界的形态可以不定,可以是点,可以是线,也可以是平面。Andrew Ng 在公开课中强调:“决策边界是预测函数 hθ(x)hθ(x)hθ(x) 的属性,而不是训练集属性”,这是因为能作出“划清”类间界限的只有 hθ(x)hθ(x)hθ(x) ,而训练集只是用来训练和调节参数的。

  • 线性决策边界:
    hθ(x)=g(θ0x0+θ1x1+θ2x2)h_θ(x)=g(θ_0x_0+θ_1x_1+θ_2x_2)hθ​(x)=g(θ0​x0​+θ1​x1​+θ2​x2​)

  • 非线性决策边界:
    hθ(x)=g(θ0x0+θ1x1+θ2x2+θ3x12+θ4x22)h_θ(x)=g(θ_0x_0+θ_1x_1+θ_2x_2+θ_3x^2_1+θ_4x^2_2)hθ​(x)=g(θ0​x0​+θ1​x1​+θ2​x2​+θ3​x12​+θ4​x22​)

预测代价函数

对于分类任务来说,我们就是要反复调节参数 θθθ ,亦即反复转动决策边界来作出更精确的预测。假定我们有代价函数 J(θ)J(θ)J(θ) ,其用来评估某个 θθθ 值时的预测精度,当找到代价函数的最小值时,就能作出最准确的预测。通常,代价函数具备越少的极小值,就越容易找到其最小值,也就越容易达到最准确的预测。

下面两幅图中,左图这样犬牙差互的代价曲线(非凸函数)显然会使我们在做梯度下降的时候陷入迷茫,任何一个极小值都有可能被错认为最小值,但无法获得最优预测精度。但在右图的代价曲线中,就像滑梯一样,我们就很容易达到最小值:

逻辑回归定义的代价函数为:
J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))J(θ)=\frac1m∑_{i=1}^mCost(h_θ(x^{(i)}),y^{(i)})J(θ)=m1​i=1∑m​Cost(hθ​(x(i)),y(i))

为保证代价函数呈凸形曲线,则定义Cost(hθ(x(i)),y(i))Cost(h_θ(x^{(i)}),y^{(i)})Cost(hθ​(x(i)),y(i))
Cost(hθ(x),y)={−log(hθ(x)),ify=1−log(1−hθ(x)),ify=0Cost(h_θ(x),y)= \begin{cases} −log(h_θ(x)), & \ if\ y=1\\ −log(1−h_θ(x)), &\ if\ y=0 \end{cases}Cost(hθ​(x),y)={−log(hθ​(x)),−log(1−hθ​(x)),​ if y=1 if y=0​

该函数等价于:
Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))Cost(h_θ(x),y)=−y\ log(h_θ(x))−(1−y)\ log(1−h_θ(x))Cost(hθ​(x),y)=−y log(hθ​(x))−(1−y) log(1−hθ​(x))=(log(g(Xθ))Ty+(log(1−g(Xθ))T(1−y)=(log(g(Xθ))^Ty+(log(1−g(Xθ))^T(1−y)=(log(g(Xθ))Ty+(log(1−g(Xθ))T(1−y)

代价函数随预测值 hθ(x)h_θ(x)hθ​(x) 的变化如下:


可以看到,当 hθ(x)≈yhθ(x)≈yhθ(x)≈y 时, cost≈0cost≈0cost≈0 ,预测正确。

最小化代价函数

与线性回归一样,也使用梯度下降法来最小化代价函数:

  • 批量梯度下降法

重复直到收敛(Repeatuntilconvergence):重复直到收敛(Repeat until convergence):重复直到收敛(Repeatuntilconvergence):

fori=1tom:for\ i=1\ to\ m:for i=1 to m:

forj=1ton:for\ j=1\ to\ n:for j=1 to n:

θj:=θj+1m∑i=1m(yi−hθ(x(i)))xj(i)θ_j:=θ_j+\frac 1m∑_{i=1}^m(y_i−h_θ(x^{(i)}))x^{(i)}_jθj​:=θj​+m1​i=1∑m​(yi​−hθ​(x(i)))xj(i)​

通过矩阵型表示
重复直到收敛(Repeatuntilconvergence):重复直到收敛(Repeat until convergence):重复直到收敛(Repeatuntilconvergence):

θ:=θ+α∗1mXT(y−g(Xθ))θ:=θ+α∗\frac1mX^T(y−g(Xθ))θ:=θ+α∗m1​XT(y−g(Xθ))

  • 随机梯度下降法
    重复直到收敛(Repeatuntilconvergence):重复直到收敛(Repeat until convergence):重复直到收敛(Repeatuntilconvergence):

fori=1tom:for\ i=1\ to\ m: for i=1 to m:

θ:=θ+α∗(yi−hθ(x(i)))xj(i)θ:=θ+α∗(y_i−h_θ(x^{(i)}))x^{(i)}_jθ:=θ+α∗(yi​−hθ​(x(i)))xj(i)​

2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授相关推荐

  1. 4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授

    机器学习系统设计–垃圾邮件分类 假定我们现有一封邮件,其内容如下: From: cheapsales@buystufffromme.com To: ang@cs.stanford.edu Subjec ...

  2. 5.5 SVM补充-机器学习笔记-斯坦福吴恩达教授

    SVM补充 决策边界 Coursera 上 ML 的课程对 SVM 介绍有限,参看了周志华教授的<机器学习>一书后,补充了当中对于 SVM 的介绍. 首先,我们考虑用更传统的权值定义式来描 ...

  3. 4.6 大数据集-机器学习笔记-斯坦福吴恩达教授

    大数据集 在机器学习领域,流传着这样一句话: It's not who has the best algorithm that wins. It's who has the most data. 所以 ...

  4. 3.1 再论 0/1 分类问题-机器学习笔记-斯坦福吴恩达教授

    再论 0/1 分类问题 在逻辑回归一章中,我们讨论了 0/1 分类问题,并且知道,通过对特征进行多项式展开,可以让逻辑回归支持非线性的分类问题.假定我们现在有 nnn 维特征,需要进行非线性分类,采用 ...

  5. 1.4 正规方程-机器学习笔记-斯坦福吴恩达教授

    正规方程(Normal Equation) 定义 前面论述的线性回归问题中,我们通过梯度下降法来求得 J(θ)J(θ)J(θ) 的最小值,但是对于学习率 ααα 的调节有时候使得我们非常恼火.为此,我 ...

  6. 8.4 有监督学习与异常检测-机器学习笔记-斯坦福吴恩达教授

    有监督学习与异常检测 很多人会认为异常检测非常类似于有监督学习,尤其是逻辑回归,但我们用一张表格来描述有监督学习与异常检测的区别: 有监督学习 异常检测 数据分布均匀 数据非常偏斜,异常样本数目远小于 ...

  7. 5.4 SVM的使用建议-机器学习笔记-斯坦福吴恩达教授

    SVM的使用建议 使用流行库 作为当今最为流行的分类算法之一,SVM 已经拥有了不少优秀的实现库,如 libsvm 等,因此,我们不再需要自己手动实现 SVM(要知道,一个能用于生产环境的 SVM 模 ...

  8. 5.3 核函数-机器学习笔记-斯坦福吴恩达教授

    核函数 在逻辑回归中,我们会通过多项式扩展来处理非线性分类问题: hθ(x)=θ0+θ1x1+θ2x2+θ3x1x2+θ4x12+θ5x22+⋯h_θ(x)=θ_0+θ_1x_1+θ_2x_2+θ_3 ...

  9. 5.1 代价函数-机器学习笔记-斯坦福吴恩达教授

    代价函数 在逻辑回归中,我们的预测函数为: hθ(x)=11+e−θTxh_θ(x)=\frac 1 {1+e^{−θ^Tx}}hθ​(x)=1+e−θTx1​ 代价函数为: cost=−ylog(h ...

最新文章

  1. SPOJ 375. Query on a tree (树链剖分)
  2. HDLBits 系列(12)All about Karnaugh Map
  3. 解决DexOverflowException: Cannot fit requested classes in the main-dex file
  4. java实现鼠标宏编程_我應該如何編程高級java遊戲中的鼠標/鍵輸入?
  5. Java程序(类的抽象与封装)
  6. hadoop之 参数调优
  7. Pylearn2之YAML
  8. 弹出提示框 自动消失
  9. Go协程池设计思路(Task-Job-Worker)
  10. LeetCode 1049. 最后一块石头的重量 II
  11. android 蒙层广告1,subnvue安卓机打开只显示蒙层,没有任何内容【报Bug】
  12. HTML5 main元素
  13. html 透视效果,html – CSS – 对背景图像的“敲除”/透视效果
  14. SAP License:MM中的几个概念
  15. linux --- inotify 文件系统变化通知机制
  16. 从一个小问题洞察挣钱秘籍,却被90%的数据分析师忽略
  17. Java机器学习库(Java ML)(一、分类)
  18. 解决IDM下载城通网盘,一个网站不允许请求同一个文件两次,即使设置了快捷键也无用的问题
  19. 人生记录 2020-12-31 - 2021-3-10
  20. Python初学者:输入若干个正整数,升序后输出

热门文章

  1. python第一堂课
  2. C#中的三种timer
  3. BellmanFord的队列优化
  4. webform 跨窗体传值
  5. Windows Mobile设备操作演示准备工作小记
  6. 数据结构应用实例#栈#迷宫寻路
  7. css sprite css雪碧图生成工具
  8. java与数据结构(4)---java实现双向循环链表
  9. [zhuan]二叉树遍历算法实现(C#2.0)
  10. C语言指针函数MFC版Demo