在这节中主要讲的是如何更好地拟合逻辑回归模型的参数θ.具体来说,要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题。

我们有一个训练集,训练集中有m个训练样本:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},像之前一样,每个样本用n+1维特征向量表示,如下:

    和以前一样x0=1,第0个特征一直是1.而且因为这是一个分类问题的训练集,所以所有的标签y不是0就是1.假设函数如下所示,它的参数是θ.
    下面要讲的问题是,对于这个函数如何选定合适的参数θ.
    回归一下之前讲线性回归模型的时候,使用了如下的代价函数。
    下面将对这个函数换一种写法:
    那么此时代价函数等于1/m * 这个Cost项在训练集范围上的求和。可以除去上标来对该公式简化。它是在输出的预测值是h(x),但实际值是y的时候我们的学习算法付出的代价。去掉上标之后,这个代价值就是 1/2 * 预测值与实际值差的平方。这个代价函数在线性回归里面是十分好用的,但是我们现在要用在逻辑回归里。如果我们要最小化代价函数J,它也能工作。但是如果我们这样做的话它就会变成参数θ的非凸函数。
    当我们把代入J(θ)中,因为hθ(x)是一个很复杂的非线性函数,我们很有可能得到的函数图像如下,它有很多局部最优值。
    如果我们对非凸函数用梯度下降法,并不能保证可以收敛到全局最小值。我们更希望得到的是一个凸函数,这样对它使用梯度下降法的话就可以收敛到该函数的全局最小值。所以,我们重新定义这个算法要付出的代价。
    这看起来是一个很复杂的函数,我们画出这个函数。图像如下:
    这个函数的性质有:
        如果y=1而且hθ(x)=1,那么代价值就为0.但是如果y=1但是预测值hθ(x)=0的时候,此时代价值趋于∞.
    上面为y=1的情况。下面来看y=0的情况。
    当实际值y=0时,预测值hθ(x)=0的情况下付出的代价值就为0,预测值hθ(x)=1的情况下付出的代价值趋于∞.以上讲的主要是单训练样本的代价函数。下面将将其推广得到整个训练样本的代价函数,接着对其运用梯度下降法。
    python代码:
1 import numpy as np
2 def cost(theta, X, y):
3 theta = np.matrix(theta)
4 X = np.matrix(X)
5 y = np.matrix(y)
6 first = np.multiply(-y, np.log(sigmoid(X* theta.T)))
7 second = np.multiply((1 - y), np.log(1 - sigmoid(X* theta.T)))
8 return np.sum(first - second) / (len(X))

[斯坦福大学2014机器学习教程笔记]第六章-代价函数(Cost function)的更多相关文章

  1. [斯坦福大学2014机器学习教程笔记]第六章-决策界限(decision boundary)

    这一节主要介绍的是决策界限(decision boundary)的概念,这个概念可以帮组我们更好地理解逻辑回归的假设函数在计算什么. 首先回忆一下上次写的公式. 现在让我们进一步了解这个假设函数在什么 ...

  2. [斯坦福大学2014机器学习教程笔记]第五章-控制语句:for,while,if语句

    在本节中,我们将学习如何为Octave程序写控制语句. 首先,我们先学习如何使用for循环.我们将v设为一个10行1列的零向量. 接着,我们写一个for循环,让i等于1到10.写出来就是for i = ...

  3. IOS学习之斯坦福大学IOS开发课程笔记(第六课)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/28398697 作者:小马 这节课主要讲述多个MVC是怎样协同工作的.到眼下为止.全 ...

  4. Deep Learning 8_深度学习UFLDL教程:Stacked Autocoders and Implement deep networks for digit classification_Exercise(斯坦福大学深度学习教程)

    前言 1.理论知识:UFLDL教程.Deep learning:十六(deep networks) 2.实验环境:win7, matlab2015b,16G内存,2T硬盘 3.实验内容:Exercis ...

  5. Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)

    理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...

  6. Deep Learning 12_深度学习UFLDL教程:Sparse Coding_exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程.Deep learning:二十六(Sparse coding简单理解).Deep learning:二十七(Sparse coding中关于矩阵的范数求导).Deep ...

  7. Deep Learning 13_深度学习UFLDL教程:Independent Component Analysis_Exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程.Deep learning:三十三(ICA模型).Deep learning:三十九(ICA模型练习) 实验环境:win7, matlab2015b,16G内存,2T机 ...

  8. Deep Learning 11_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)

    理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一 ...

  9. Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程和http://www.cnblogs.com/tornadomeet/archive/2013/04/09/3009830.html 实验环境:win7, matlab ...

随机推荐

  1. java面试题2-自己整合的

    1.HashMap的底层实现原理 HashMap是数组+链表组成的实现了Map.Cloneable.Serializable接口,继承了AbstractMap类 HashMap是否线程安全? Hash ...

  2. 看动画学算法之:排序-count排序

    目录 简介 count排序的例子 count排序的java实现 count排序的第二种方法 count排序的时间复杂度 简介 今天我们介绍一种不需要作比较就能排序的算法:count排序. count排 ...

  3. powershell中使用Get-FileHash计算文件的hash值

    今天在公司一台windows服务器上.需要对两个文件进行比对,笔者首先就想到了可以使用md5校验 但是公司服务器上又不可以随意安装软件,于是笔者想到了可以试试windows自带的powershell中 ...

  4. 关于KeePass基于csv格式的批量导入与导出

    在KeePass的导出选项中,有一个KeePass CSV(1.x),导出后格式如下: "Account","Login Name","Passwor ...

  5. 【JAVA】JAVA相关知识点收集

    下面这些链接都是我这段时间(7月-9月)看过的.感觉自己现在处于一个疯狂吸收知识的阶段,如果是文字的方式一点一点搬运到自己的博客既重复又费时间,只有等自己积累到一定程度后才能进行原创性高质量的产出吧. ...

  6. uni-app开发注意事项

    关于vue 1.注意 如果使用老版的非自定义组件模式,即manifest中"usingComponents":false,部分模版语法不支持,但此模式已于2019年11月起下线. ...

  7. phpcms v9.6.0任意文件上传漏洞

    距离上一次写博客已经过去很长一段时间了,最近也一直在学习,只是并没有分享出来  越来越发现会的东西真的太少了,继续努力吧. 中午的时候遇到了一个站点,看到群里好多人都在搞,自己就也去试了试,拿下来后发 ...

  8. 虚拟机CentOS开机黑屏解决方案

    默认配置 错误: 1.直接就是黑屏,连杠杠都没有 2.centos系统关不掉 3.关闭vmware提示:虚拟机XXX繁忙 解决方案一: 1.以管理员身份运行cmd控制台程序 2.在cmd窗口中输入ne ...

  9. EasyUI 日期控件赋值

    $("#BillDateE").datebox("setValue", '2020/9/28'); $("#BillDateB").date ...

  10. Python练习题 035:Project Euler 007:第10001个素数

    本题来自 Project Euler 第7题:https://projecteuler.net/problem=7 # Project Euler: Problem 7: 10001st prime ...