第 28节 - 逻辑回归之代价函数 (4)

参考视频: 6 - 4 - Cost Function (11 min).mkv

在这段视频中,我们要介绍如何拟合逻辑回归模型的参数θ。具体来说,我要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题。

对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们

也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将

带入到这样定义了的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convex function)。

这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。

线性回归的代价函数为:

我们重新定义逻辑回归的代价函数为:

其中

hθ(x)与 Cost(hθ(x),y)之间的关系如下图所示:

这样构建的 Cost(hθ(x),y)函数的特点是:当实际的 y=1 且 hθ 也为 1 时误差为 0,当 y=1但 hθ 不为 1 时误差随着 hθ 的变小而变大;当实际的 y=0 且 hθ 也为 0 时代价为 0,当 y=0 但 hθ 不为 0 时误差随着 hθ 的变大而变大。

将构建的 Cost(hθ(x),y)简化如下:

带入代价函数得到:

即:

Python 代码实现:

import numpy as np def cost(theta, X, y):  theta = np.matrix(theta) X = np.matrix(X) y = np.matrix(y) first = np.multiply(-y, np.log(sigmoid(X* theta.T))) second = np.multiply((1 - y), np.log(1 - sigmoid(X* theta.T))) return np.sum(first - second) / (len(X))

在得到这样一个代价函数以后,我们便可以用梯度下降算法来求得能使代价函数最小的参数了。算法为:

求导后得到:

在这个视频中,我们定义了单训练样本的代价函数,凸性分析的内容是超出这门课的范围的,但是可以证明我们所选的代价值函数会给我们一个凸优化问题。代价函数 J(θ)会是一个凸函数,并且没有局部最优值。推导过程:

注:虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的 hθ(x)=g(θTX)与线性回归中不同,所以实际上是不一样的。另外,在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。

一些梯度下降算法之外的选择: 除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度(Conjugate Gradient),局部优化法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS) fminunc 是 matlab 和 octave 中都带的一个最小值优化函数,使用时我们需要提供代价函数和每个参数的求导,下面是 octave 中使用 fminunc 函数的代码示例:

function [jVal, gradient] = costFunction(theta)​ jVal = [...code to compute J(theta)...]; gradient = [...code to compute derivative of J(theta)...]; end options = optimset('GradObj', 'on', 'MaxIter', '100'); initialTheta = zeros(2,1); [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

在下一个课程中,我们会把单训练样本的代价函数的这些理念进一步发展,然后给出整个训练集的代价函数的定义,我们还会找到一种比我们目前用的更简单的写法,基于这些推导出的结果,我们将应用梯度下降法得到我们的逻辑回归算法。

sigmoid函数求导_吴恩达老师课程笔记系列第 28节 - 逻辑回归之代价函数 (4)相关推荐

  1. c#怎么拟合函数得到参数_吴恩达老师课程笔记系列第32节 -正则化之代价函数(2)...

    第32节 -正则化之代价函数(2) 参考视频: 7 - 2 - Cost Function (10 min).mkv 上面的回归问题中如果我们的模型是: 我们可以从之前的事例中看出,正是那些高次项导致 ...

  2. 无监督学习与有监督学习的本质区别是什么_吴恩达老师课程笔记系列第三节-无监督学习定义...

    第三节-无监督学习定义 我们将介绍第二种主要的机器学习问题.叫做无监督学习. 上个课程中,已经介绍了监督学习.回想当时的数据集,如图表所示,这个数据集中每条数据都已经标明是阴性或阳性,即是良性或恶性肿 ...

  3. 向量化计算cell_吴恩达老师课程笔记系列第24节-Octave教程之向量化和作业(6)

    5.1 向量化 参考视频: 5 - 6 - Vectorization (14 min).mkv 在这段视频中,我将介绍有关向量化的内容,无论你是用 Octave,还是别的语言,比如MATLAB 或者 ...

  4. 吴恩达机器学习学习笔记第七章:逻辑回归

    分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...

  5. 吴恩达机器学习课程笔记一

    吴恩达机器学习课程笔记 前言 监督学习---`Supervised learning` 无监督学习---`Unsupervised learning` 聚类 异常检测 降维 增强学习---`Reinf ...

  6. Github标星24300!吴恩达机器学习课程笔记.pdf

    个人认为:吴恩达老师的机器学习课程,是初学者入门机器学习的最好的课程!我们整理了笔记(336页),复现的Python代码等资源,文末提供下载. 课程简介 课程地址:https://www.course ...

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

    吴恩达Coursera机器学习课系列笔记 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础 1 Linear Regression with Multiple Variable ...

  8. 吴恩达深度学习代码_吴恩达深度学习笔记(58)-深度学习框架Tensorflow

    TensorFlow 有很多很棒的深度学习编程框架,其中一个是TensorFlow,很期待帮助你开始学习使用TensorFlow,我想在这个笔记中向你展示TensorFlow程序的基本结构,然后让你自 ...

  9. 吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)

    目录 1-1机器学习的相关名词 1-2 什么是机器学习? 1.definition 定义 2.主要的机器学习算法的分类 1-3有监督学习及常用算法 1.定义 2.两种数据类型补充:categorica ...

  10. 吴恩达《机器学习》课后测试Ex2:逻辑回归(详细Python代码注解)

    基于吴恩达<机器学习>课程 参考黄海广的笔记 import numpy as np import pandas as pd import matplotlib.pyplot as plt ...

最新文章

  1. gitlab+jenkins+maven+docker持续集成(四)——Extended E-mail Notification配置
  2. ES报the same id but is a different node instance
  3. Hibernate ORM框架学习日记基础篇-1
  4. Mysql实现企业级日志管理、备份与恢复
  5. Flutter - 弹出底部菜单Show Modal Bottom Sheet
  6. 计算机病毒及其防治评课,区初中信息技术教研活动公开课评课感想
  7. 图片安全检测和数据跨境复制,规避违规风险
  8. 查找空目录Linux,Linux中find批量删除空文件及空文件夹脚本
  9. 2019年,50万大数据DT粉丝都爱的10本书
  10. Halcon OCR识别
  11. 数位笔与数位屏上的光标对不上的解决方法
  12. 非线性微分方程线性化
  13. 【IoT】产品设计之市场概念:市场定位、产品定位、市场需求、产品需求
  14. 【搜索/提问必备】如何正确的在Stack Overflow提问
  15. 5G/NR: CQI 和MCS - 链路自适应,自适应编码
  16. 超详细的程序员未来职业发展路线
  17. Pixelmator Pro Mac(图像编辑软件)
  18. Python中复数取.imag的问题
  19. ubuntu22.04安装dde桌面
  20. 海康iSecure Center 综合安防管理平台安装部署教程 - CentOS系统

热门文章

  1. 包导出Android升级ADT22后会报ClassNotFoundException的原因分析
  2. 使用二分查询数组中的某一个元素,简单示例,详细注解
  3. 单体内置对象_第五章 单体内置对象
  4. 2 VUE.js 内部指令
  5. 微服务容错限流Hystrix入门
  6. ELK 企业内部日志分析系统
  7. Linux学习----文件的使者-Rsync(马哥教育原创)
  8. 分布式框架开发环境部署
  9. oracle 创建表同时添加注释
  10. JQuery iframe页面通过parent方法操作父页面中的元素与方法(实例讲解)