LR(逻辑回归)

首先说一下线性回归模型:它试图学得一个通过属性的线性组合来进行预测的函数,即:

h(x) = w0 + w1x1 + w2x2 + ... + wnxn

写成向量形式为:h(x) = wTx

逻辑回归是一种分类算法,本质上是线性回归,它通过引入对数几率函数将线性回归得到的连续值映射到0~1之间,

从而可以用在分类问题上

逻辑回归的预测函数为:

对于任意确定的x和w,有:

可以合并写成:

对P(y|x,w)取极大似然函数:

取对数似然函数:

(即令每个样本属于其真实类别的概率总和越大越好)

上面的函数是关于w的凸函数,通过梯度上升法求对数似然函数的极大值(即最大值),

可以得到回归系数的更新方程为:

逻辑回归算法的优缺点:

优点:实现简单,易于理解和实现,计算代价不高,速度很快,存储资源低;

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

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

逻辑回归算法的python实现

参考链接:http://blog.csdn.net/moxigandashu/article/details/72779856

 1 #coding=utf-8
 2
 3 from numpy import *
 4
 5 # 创建测试数据
 6 def loadDataSet():
 7     dataMat = []; labelMat = []
 8     fr = open(‘testSet.txt‘)     # 测试数据的规格:100*3
 9     for line in fr.readlines():
10         lineArr = line.strip().split()     # strip():删除首尾处的空格;split():不带参数时以空格进行分割
11         dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
12         labelMat.append(int(lineArr[2]))
13     return dataMat,labelMat
14
15 def sigmoid(inX):
16     return 1.0/(1+exp(-inX))
17
18 # 用梯度上升法求回归系数
19 def gradAscent(dataMatIn, classLabels):
20     dataMatrix = mat(dataMatIn)     #将输入数据转换为矩阵
21     labelMat = mat(classLabels).transpose()     #将分类标签的行向量转换为列向量
22     m,n = shape(dataMatrix)     # 输入数据的规格:100*3
23     alpha = 0.001       #迭代步长
24     maxCycles = 500     #迭代次数
25     weights = ones((n,1))     #权重向量的初始值设为1,列向量
26     for k in range(maxCycles):
27         h = sigmoid(dataMatrix*weights)     #计算预测函数的值
28         error = (labelMat - h)
29         weights = weights + alpha * dataMatrix.transpose()* error     #更新权重向量
30     return weights
31
32 # 用学习到的回归系数来画出决策边界
33 def plotBestFit(weights):
34     import matplotlib.pyplot as plt
35     dataMat,labelMat=loadDataSet()
36     dataArr = array(dataMat)
37     n = shape(dataArr)[0]
38     xcord1 = []; ycord1 = []
39     xcord2 = []; ycord2 = []
40     for i in range(n):
41         if int(labelMat[i])== 1:
42             xcord1.append(dataArr[i,1]); ycord1.append(dataArr[i,2])
43         else:
44             xcord2.append(dataArr[i,1]); ycord2.append(dataArr[i,2])
45     fig = plt.figure()
46     ax = fig.add_subplot(111)
47     ax.scatter(xcord1, ycord1, s=30, c=‘red‘, marker=‘s‘)     # marker=‘s‘:表示用小正方形画点
48     ax.scatter(xcord2, ycord2, s=30, c=‘green‘)
49     x = arange(-3.0, 3.0, 0.1)
50     y = (-weights[0,0]-weights[1,0]*x)/weights[2,0]     # 得到最后的预测函数:f(x)=w0 + w1x1 + w2x2,令f(x)=0,得到:x2=(-w0-w1x1)/w2
51     ax.plot(x, y)
52     plt.xlabel(‘X1‘); plt.ylabel(‘X2‘);
53     plt.show()
54
55 # 测试逻辑回归算法
56 dataArr,labelMat=loadDataSet()
57 weights=gradAscent(dataArr,labelMat)
58 plotBestFit(weights)

 测试的分类结果:

时间: 2024-10-08 15:42:58

LR(逻辑回归)的相关文章

Coursera《machine learning》--(6)逻辑回归

六 逻辑回归(Logistic Regression:LR) 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就是由于这个逻辑函数,使得逻辑回归模型成为了机器学习领域一颗耀眼的明星,更是计算广告学的核心. 6.1 分类问题(Classification) 本小节开始介绍分类问题(该问题中要预测的变量y是离散值),同时,还要学习一种叫做逻辑回归的算法(Logistic regression),这是目前使用最广泛的一种算法.虽然该算法中

逻辑回归(LR)总结复习

摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 最基本的LR分类器适合于对两分类(类0,类1)目标进行分类:这个模型以样本特征的线性组合sigma(theta * Xi)作为自变量,使用logistic函数将自变量映射到(0,1)上. 其中logistic函数(sigmoid函数为): 函数图形为: 从而得到LR的模型函数为:,其中待定. 2.算法推导 建立的似然函数: 对上述函数求对数: 做下函数变换: 通过梯度下

逻辑回归算法的原理及实现(LR)

Logistic回归虽然名字叫"回归" ,但却是一种分类学习方法.使用场景大概有两个:第一用来预测,第二寻找因变量的影响因素.逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种.通过历史数据的表现对未来结果发生的概率进行预测.例如,我们可以将购买的概率设置为因变量,将用户的特征属性,例如性别,年龄,注册时间等设置为自变量.根据特征属性预测购买的概率.逻辑回归与回归分析有很多相似之处,在开始介绍逻辑回归之前我们先来看下回归分析. 回归分

逻辑回归LR

逻辑回归算法相信很多人都很熟悉,也算是我比较熟悉的算法之一了,毕业论文当时的项目就是用的这个算法.这个算法可能不想随机森林.SVM.神经网络.GBDT等分类算法那么复杂那么高深的样子,可是绝对不能小看这个算法,因为它有几个优点是那几个算法无法达到的,一是逻辑回归的算法已经比较成熟,预测较为准确:二是模型求出的系数易于理解,便于解释,不属于黑盒模型,尤其在银行业,80%的预测是使用逻辑回归:三是结果是概率值,可以做ranking model:四是训练快.当然它也有缺点,分类较多的y都不是很适用.下

机器学习(四)—逻辑回归LR

1.关于模型在各个维度进行不均匀伸缩后,最优解与原来等价吗?  答:等不等价要看最终的误差优化函数.如果经过变化后最终的优化函数等价则等价.明白了这一点,那么很容易得到,如果对原来的特征乘除某一常数,则等价.做加减和取对数都不等价. 2. 过拟合和欠拟合如何产生,如何解决?  欠拟合:根本原因是特征维度过少,导致拟合的函数无法满足训练集,误差较大:  解决方法:增加特征维度:  过拟合:根本原因是特征维度过大,导致拟合的函数完美的经过训练集,但对新数据的预测结果差.  解决方法:(1)减少特征维

逻辑回归(Logistic Regression, LR)

1.什么是逻辑回归: 2.逻辑回归的流程及推导: 3.逻辑回归的多分类 4.逻辑回归VS线性回归 5.逻辑回归 VS SVM 1.什么使逻辑回归: 名为回归,实际是分类,通过计算$P(y=0|x;\theta )$的大小来预测分类类别,预测的是类别0,1,而不是概率,但计算的是概率:$0\leq P(y=0|x;\theta )\leq 1$,是个概率值,本身并没有非0即1的概念: 二项逻辑回归:x是输入,y是输出: $P(y=0|x)=\frac{1}{1+e^{-z}}$ $P(y=0|x)

sklearn逻辑回归(Logistic Regression,LR)调参指南

python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share sklearn逻辑回归官网调参指南 https://scikit-learn.org/stable/modules/generated/sklearn.linear

机器学习—逻辑回归理论简介

下面是转载的内容,主要是介绍逻辑回归的理论知识,先总结一下自己看完的心得 简单来说线性回归就是直接将特征值和其对应的概率进行相乘得到一个结果,逻辑回归则是这样的结果上加上一个逻辑函数 这里选用的就是Sigmoid函数,在坐标尺度很大的情况下类似于阶跃函数 在确认特征对应的权重值也就是回归系数的时候 最常用的方法是最大似然法,EM参数估计,这个是在一阶导数能够有解的前提下 如果一阶导数无法求得解析值,那么一般选取梯度上升法,通过有限次的迭代过程,结合代价函数更新回归系数至收敛 //////////

逻辑回归算法

使用线性模型进行回归学习,但若要做分类任务该怎么办呢?答案蕴含在广义线性模型中:只需要找一个单调可微的函数将分类任务的真实标记y与线性回归模型的预测值联系起来. 对数几率函数是一个常用的替代函数: 该函数的图像如下图(来源:维基百科): 对数几率函数又称作"sigmoid函数",将z值转化为一个接近0或1的y值. 二.逻辑会回参数求解过程 三.Logistic Regression的适用性 1) 可用于概率预测,也可用于分类. 并不是所有的机器学习方法都可以做可能性概率预测(比如SVM