Logistic Regression‘s Cost Function & Classification (2)

一、为什么不用Linear Regression的Cost Function来衡量Logistic Regression的θ向量

回顾一下,线性回归的Cost Function为

我们使用Cost函数来简化上述公式:

那么通过上一篇文章,我们知道,在Logistic Regression中,我们的假设函数是sigmoid形式的,也就是:

这样一来会产生一个凸(convex)函数优化的问题,我们将g(z)带入到Cost函数中,得到的J(θ)是一个十分不规则的非凸函数,如图所示,如果使用梯度下降法来对该非凸函数进行优化的话,很有可能会导致非常糟糕的局部最优解现象。

二、Logistic Regression的损失函数(单分类)

上面说到,为了避免尴尬的局部最优问题,我们希望Cost 函数能够是一个完美的凸函数,让我们方便准确地进行凸函数优化,求得的局部最优解,往往便是全局最优解。因此,万能的专家们想到了-log这么个函数变换,把我们的假设函数,进行变换,得到一个凸函数形式的Cost函数。

看图像,左边的是y=1的代价随假设函数值大小的变化而变化的图,反之,右边的为y=0的代价随假设函数值大小的变化而变化的图。这里需要说明的是h(x),也就是我们的假设函数,由于使用了sigmoid模型,所以其取值必然是介于[0,1]这一范围的。我们可以清楚地看到,通过-log变换,所得到的Cost 函数图像确实是我们想要的凸函数。

但是,这里有一些问题,当y=1的时候,如果我们的假设函数的值在0左右的话,那么Cost 函数所带来的代价几近无穷,反之当y=0的时候,如果我们的假设函数的值在1左右的话,那么Cost 函数所带来的代价同样几近无穷。

三、梯度下降求解最优损失函数(单分类)

为了方便求解,像上述Cost函数这样的没有重叠的分段函数,往往能够合并成一个式子:

那么我们的损失函数为:

 

好,我们想求得J(θ)的最优解,我们对其进行梯度下降处理,也就是对于J(θ)中的θ向量中的每一个元素,求解J(θ)的偏导,和线性回归的梯度下降算法一样,对于θ中的多个元素,我们采取同步更新的方式,不要算完一个元素,就把这个元素带入到θ中去求解下一个元素。

我们看到,求完偏导的式子和线性回归的式子是一模一样的,但是需要注意的是由于假设函数h(x)的不同,因而线性回归与逻辑回归得到的结果也是

截然不同的。

说到算法,我们可以用for循环对θ中的所有元素进行遍历操作,那么更加高效的方式就是将其进行向量化计算,和之前的线性回归那种一样。

四、Cost Function

既然我们知道了决策边界是由向量θ所决定的,那么我们如何通过算法来确定我们的θ向量呢。像之前的线性回归算法一样,我们

通过一个损失函数来衡量向量θ的好坏。有关于Cost Function,我们在下一篇文章中进行详述。

 

null

Logistic Regression‘s Cost Function & Classification (2)

时间: 2024-08-05 06:48:19

Logistic Regression‘s Cost Function & Classification (2)的相关文章

MachineLear之Logistic regression classifiers 之 One-vs-all Classification

最近在看吴恩达的机器学习课程,当中讲到Logistic regression classifiers 之 One-vs-all Classification,下面是一些个人的总结: 1.对于多分类问题,其实就是划出多条的decision boundary,在训练的时候,其实每一次只是选择一个类进行训练. 2.在具体的实现时,当前训练的类为1,其他类为0,这样训练出每条类的的decision boundary,最后得到的所有参数就是整个的训练的结果.

Logistic Regression to do Binary Classification

使用python的theano编写Logistic Regression进行二分类学习,使用到的数据集可以到这里下载. 我们知道Logistic Regression是在一个多元线性函数的基础上加了一个非线性函数,常用的非线性函数是Sigmoid函数.加上sigmoid之后的输出我们认为是对应分类为1的概率,所以需要学习的参数就是线性加权的系数和截距(bias). h(x) = wx + b g(x) = 1 / ( 1 + exp(-h(x)) ) = 1 / ( 1 + exp( -wx-b

Stanford机器学习---第三讲. 逻辑回归和过拟合问题的解决 logistic Regression & Regularization

原文地址:http://blog.csdn.net/abcjennifer/article/details/7716281 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Standford公开课machin

Logistic Regression & Regularization ----- Stanford Machine Learning(by Andrew NG)Course Notes

coursera上面Andrew NG的Machine learning课程地址为:https://www.coursera.org/course/ml 我曾经使用Logistic Regression方法进行ctr的预测工作,因为当时主要使用的是成型的工具,对该算法本身并没有什么比较深入的认识,不过可以客观的感受到Logistic Regression的商用价值. Logistic Regression Model A. objective function       其中z的定义域是(-I

Machine Learning - Neural Networks Learning: Cost Function and Backpropagation

This series of articles are the study notes of " Machine Learning ", by Prof. Andrew Ng., Stanford University. This article is the notes of week 5, Neural Networks Learning. This article contains some topic about Cost Function and Backpropagatio

Logistic Regression 笔记与理解

Logistic Regression 笔记与理解 Logistic Regression Hypothesis 记为 H(theta) H(theta)=g(z) 其中g(z),是一个叫做Logistic Function的函数,g(z)函数定义如下: 对应图像如下: 这是一个值域为0-1的s型函数,在理解中可以认为: 落在曲线上的任意一点A A的横坐标对应的纵坐标值是z参数,或者说z对象属于"1"的概率. 在Logistic Regression中 g(z)的参数z为: 一个线性或

logistic regression 以及梯度下降

先说下线性回归(直接上图) 如上图所示,根据肿瘤尺寸数据进行判断.设hypothesis函数为根据上图可以看出线性h(x)能够将上述数据进行有效分类,当h(x)>0.5,则为肿瘤患者,当h(x)<0.5,则为正常.但是线性模型会出现下面的一种情况 此时通过调整线性模型的参数后最终得到的线性模型为蓝色的直线,此时就会发现最右侧的红色叉号被预测成了正常,这显然是不合理的,并且后果是严重的(人家有病,你预测正常,影响治疗.....),此外以二分类为例子,假设label={0,1},但是我们使用线性模

More 3D Graphics (rgl) for Classification with Local Logistic Regression and Kernel Density Estimates (from The Elements of Statistical Learning)(转)

This post builds on a previous post, but can be read and understood independently. As part of my course on statistical learning, we created 3D graphics to foster a more intuitive understanding of the various methods that are used to relax the assumpt

ISLR 4.6 Lab: Logistic Regression, LDA, QDA, and KNN

4.6.1 The Stock Market Data > library (ISLR) > names(Smarket ) [1] "Year" "Lag1" "Lag2" "Lag3" "Lag4" [6] "Lag5" "Volume " "Today" " Direction " > dim(Smark