机器学习基石(10)--Logistic Regression

如果我们想要知道的并不是绝对的是或者非,我们只想知道在是非发生的概率(只想知道概率,不想知道结果)是多少的时候:

虽然我们想要知道左边的完美数据,但是在实际生活中,我们只有右边的数据,也就是一些确定的结果,不可能有概率值这个事情让我们知道。而右边的数据可以看成是有噪声的不完美的数据。

怎么解决这样的问题呢?

有一种叫做sigmoid的函数可以满足这些要求。

这个函数(logistic function)可以把任何数转化成0到1之间的值。那么logistics regression的Ein怎么衡量呢?

假设我们的hypothesis h和真实的f差不多,那么他们两个产生同样结果的概率也差不多。而f真正产生这个结果的几率是很大的。

此时,我们就可以把问题转换成,找一个几率最大的h就行了。

由于logistic function的一个特点:1–h(x)=h(–x),可以得出h的概率为:

likelihood(h) = P(x1)h(+x1)×P(x2)h(–x2)×......P(xN)h(–xN)

= P(x1)h(x1)×P(x2)h(y2x2)×......P(xN)h(yNxN)

我们的目标就是最大化这个likelihood。

现在的目标是找一个w使得Ein最小。

又是一个凸函数,目标还是找出谷底在哪里。于是我们可以用替换的方式来解这个微分方程。

最后我们得出下图这样的解,和Linear Regression一样,找梯度是0的点;但是又和Linear Regression不一样,这不是一个线性方程式,所以要找另外一种解法。

先复习一下PLA的知错能改的解法:

上式有两个关键的地方:

(1)v:表示更新的方向(往哪个方向走)

(2)η:表示更新的大小(每次走几步)

所以抽象提炼一下,每次更新需要知道方向和该方向的长度即可:

想象一个往山谷谷底滚的球。我们需要知道滚的方向和每次滚多远。如果想要滚得很快,我们每次就挑找山谷最陡的地方往下滚。所以可以得出:

这个式子还不是线性的,我们还是没有办法解它,但是我们可以用泰勒展开(多维度)来求解:

于是我们把方程变成了关于vT的线性方程。

当两个向量是完全反方向的时候,这两个向量的内积才会最小,才会有min的效果。因为我们要求v是单位向量,所以Ein(wt)也要normalize一下。这就是梯度下降的方法。

在推导梯度下降的时候,假定η是已知的,但是我们回头来看怎么选择η呢?

选择固定的或大或小的η都不合适,我们可以选择动态的η,使得在坡度大的时候往前走的多一点,坡度小的时候往前走的少一点。η应该和坡度成正相关。

fixed learning rate是一个固定的η,因为这个learning rate是原来η和坡度的比例系数,我们可以替代之前动态的η。

总结:

逻辑回归:

优点:计算代价不高,易于理解和实现。

缺点:容易欠拟合,分类精度可能不高。

适用:数值型和标称型数据。

 1 #先定义一个sigmoid函数
 2 def sigmoid(inX):
 3     return 1.0/(1+exp(-inX))
 4 #开始计算随机梯度下降
 5 def GradientDscent(data,label):
 6     #将data和label矩阵化
 7     dataMat = mat(data)
 8     labelMat = mat(label).T
 9     i,j = shape(data)
10     #设置一些梯度下降算法所需要的参数
11     #每次的步长
12     eta = 0.001
13     #最大迭代次数
14     max_iteration = 500
15     #先创造一个1的array赋值给w
16     w= ones((j,1))
17     for k in range(max_iteration):
18         #遍历每一个k,优化w
19         h = sigmoid(dataMat*w)
20         error = (labelMat - h)
21         w = w + eta*dataMat.T*error
22         return w
时间: 2024-12-13 11:14:50

机器学习基石(10)--Logistic Regression的相关文章

机器学习基石笔记-Lecture 10 Logistic regression

soft binary classification的概念:软二分类,不直接化为-1.1,而是给出一个概率值. 目标函数是一个概率值,但是拿到的data中y只有0.1(或者-1.1),可以看做是有noise的data. logistic hypothesis 通过 theta 转化为 0.1间的数. 目标函数f(x)其实呢就是,那么 那么对N个样本,产生的概率是 对于f的估计h,似然函数为 那么有: 使 用w替换掉h,即求w的极大似然估计 化简后等价于 最后的Ein就是cross-entropy

机器学习实战python3 Logistic Regression

代码及数据:https://github.com/zle1992/MachineLearningInAction logistic regression 优点:计算代价不高,易于理解实现,线性模型的一种. 缺点:容易欠拟合,分类精度不高.但是可以用于预测概率. 适用数据范围:数值型和标称型. 准备数据: 1 def loadDataSet(): 2 dataMat,labelMat = [],[] 3 with open(filename,"r") as fr: #open file

10 Logistic Regression

线性分类中的是非题 --->概率题 (设置概率阈值后,大于等于该值的为O,小于改值的为X) --->逻辑回归 O为1,X为0 逻辑回归假设 逻辑函数/S型函数:光滑,单调 自变量趋于负无穷时,因变量趋于0: 自变量趋于正无穷时,因变量趋于1: 自变量取0,因变量值为0.5 ---模拟概率特性 三种线性模型 逻辑回归使用交叉熵代价函数 最小化代价函数时, 发现无法求出使其值最小的解析解, 类比PLA的迭代法,使用梯度下降法求最小值 eta---学习速率,与梯度大小有关,正比 v---方向,单位长

机器学习基石笔记10——机器可以怎样学习(2)

转载请注明出处:http://www.cnblogs.com/ymingjingr/p/4271742.html 目录 机器学习基石笔记1——在何时可以使用机器学习(1) 机器学习基石笔记2——在何时可以使用机器学习(2) 机器学习基石笔记3——在何时可以使用机器学习(3)(修改版) 机器学习基石笔记4——在何时可以使用机器学习(4) 机器学习基石笔记5——为什么机器可以学习(1) 机器学习基石笔记6——为什么机器可以学习(2) 机器学习基石笔记7——为什么机器可以学习(3) 机器学习基石笔记8

机器学习基石——第9-10讲.Linear Regression

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记.所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解.(https://class.coursera.org/ntumlone-002/lecture) 第9讲-------Linear Regression 从这一节开始,开始涉及到How Can Machines Learn的问题了. 一.Linear

【机器学习】Logistic Regression 的前世今生(理论篇)

Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有非常多细节不正确之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/50359055 写这篇博客的动力是源于看到了以下这篇微博: 我在看到这篇微博的时候大为触动,由于,如果是rickjin来面试我.我想我会死的非常慘,由于他问的问题我基本都回答不上来.

斯坦福大学机器学习公开课:Programming Exercise 2: Logistic Regression

斯坦福大学机器学习公开课:Programming Exercise 2: Logistic Regression---Matlab实现 1 Logistic Regression In this part of the exercise, I will build a logistic regression model to predict whether a student gets admitted into a university. You want to determine each

【机器学习】逻辑回归(Logistic Regression)

注:最近开始学习<人工智能>选修课,老师提纲挈领的介绍了一番,听完课只了解了个大概,剩下的细节只能自己继续摸索. 从本质上讲:机器学习就是一个模型对外界的刺激(训练样本)做出反应,趋利避害(评价标准). 1. 什么是逻辑回归? 许多人对线性回归都比较熟悉,但知道逻辑回归的人可能就要少的多.从大的类别上来说,逻辑回归是一种有监督的统计学习方法,主要用于对样本进行分类. 在线性回归模型中,输出一般是连续的,例如$$y = f(x) = ax + b$$,对于每一个输入的x,都有一个对应的y输出.模

机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)

机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学习算法.恰好遇见这本同样定位的书籍,所以就参考这本书的过程来学习了. 这节学习的是逻辑回归(Logistic Regression),也算进入了比较正统的机器学习算法.啥叫正统呢?我概念里面机器学习算法一般是这样一个步骤: 1)对于一个问题,我们用数学语言来描述它,然后建立一个模型,例如回归模型或者分类模型等