逻辑回归

逻辑回归分类算法

ⅰ亾dé卋堺 提交于 2019-12-02 11:48:02
逻辑回归由于其简单、高效、可解释性强的特点,在实际用途中十分的广泛:从购物预测到用户营销响应,从流失分析到信用评价,都能看到其活跃的身影。可以说逻辑回归占据了分类算法中非常重要的地位。 逻辑回归:logistic regression,LR。模型公式是Logistic函数,也叫Sigmoid函数。 图像形如S型曲线。它可以将实数映射到[0,1]区间用来做二分类。 一般选择0.5作为阀值,大于阀值的归为类1,小于阀值的归为类0。 公式(Y为决策值,x为特征值,e为自然对数): 如果希望对正例样本有更高的准确率,则可以把阈值适当地调高,例如调高到0.6。 如果希望对正例样本有更高的召回率,则可以把阈值适当地降低,例如降低到0.4。 用python拟合了不同的自变量取值下,与因变量的成像。结果都是S型曲线,取值集中在0和1上。 1.自变量是线性连续值: x = np.arange(-20, 20, 0.1) y =1/( 1+math.e**(-x)) plt.scatter(x, y, c = 'r', marker = 'o') 2.自变量是一元三次方程式的取值: z = np.arange(-20, 20, 0.1) x = 2*z**3+4*z**2+3*z+10 y =1/( 1+math.e**(-x)) plt.scatter(x, y, c = 'r', marker =

利用逻辑回归进行简单的人群分类解决广告推荐问题

五迷三道 提交于 2019-12-02 07:01:06
一、什么是逻辑回归?   逻辑回归又称对数几率回归是离散选择法模型之一,逻辑回归是一种用于解决监督学习问题的学习算法,进行逻辑回归的目的是使训练数据的标签值与预测出来的值之间的误差最小化。logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释,多类可以使用softmax方法进行处理。实际中最为常用的就是二分类的logistic回归。 Logistic回归模型的适用条件: 因变量为二分类的分类变量或某事件的发生率,并且是数值型变量。但是需要注意,重复计数现象指标不适用于Logistic回归。 残差和因变量都要服从二项分布。二项分布对应的是分类变量,所以不是正态分布,进而不是用最小二乘法,而是最大似然法来解决方程估计和检验问题。 自变量和Logistic概率是线性关系 各观测对象间相互独立 原理:   如果直接将线性回归的模型扣到Logistic回归中,会造成方程二边取值区间不同和普遍的非直线关系。因为Logistic中因变量为二分类变量,某个概率作为方程的因变量估计值取值范围为0-1,但是,方程右边取值范围是无穷大或者无穷小。所以,才引入Logistic回归。 Logistic回归实质:   发生概率除以没有发生概率再取对数。就是这个不太繁琐的变换改变了取值区间的矛盾和因变量自变量间的曲线关系。究其原因,是发生和未发生的概率成为了比值

逻辑回归笔记

做~自己de王妃 提交于 2019-12-02 06:50:57
1.分类与回归 对于输入与输出变量均为连续的预测问题为回归问题。而输入连续,输出值离散的的预测问题成为分类问题。 逻辑回归本质上是分类,只不过是用到了回归的思想解决分类的问题。 比如预测某一地区房价,为回归问题。而预测是否得癌症,这样的问题成为分类问题。 2.线性回归 假设现在有一些数据点,我们用一条直线对这些点进行拟合,这个拟合的过程就称作线性回归,这为回归问题。 3.逻辑回归 由于逻辑回归是用来分类的,我们想要的函数是能接受所有的连续输入,然后预测出类别(离散值),这时候我们发现Sigmoid函数(一种阶跃函数)能很好的解决此问题,其公式为 其图形如下: 为了实现Logistic回归分类器,可以将每个特征都乘以一个回归系数,然后把所有的结果相加,如下: z=w0x0 + w1x1 + w2x2 + ... + wnxn 即: 将这个总和代入g(z)中,得到一个范围在0~1之间的数值,其实对于结果g(z)我们可以理解为结果为1类的概率,比如0.3为1类的概率,但这时我们会把它分为0类,如下: 任何大于0.5的为1类,小于0.5的为0类。函数表达式为: P(y=0|w,x) = 1 – g(z) P(y=1|w,x) = g(z) 因此对于正确率有: 4.关于阈值 上面逻辑回归讲到的0.5即我们常设定的阈值,然而实际工作中可能有的阈值不为0.5,比如 1、癌症病人问题,如果设为0

通过简单的例子了解逻辑回归算法

半城伤御伤魂 提交于 2019-12-02 05:26:00
++++通过简单的例子了解逻辑回归算法 Logistic回归是进行分类的基础工具之一。作为数据处理人员,我希望能做很多分类。因此,我认为举例子可以更好地了解Logistic回归如何在更深层次上发挥的作用 当然不推荐这样做: from sklearn.linear_model import LogisticRegression ++++投篮训练 假设我想研究篮球投篮准确度和我的投篮距离之间的关系。更具体地说,我想要一个模型,以英尺为单位计算“距篮筐的距离”,并指出我进行投篮的概率。 首先,我需要一些数据。因此,我在记录每个结果的同时投了不同距离的篮球(1个代表成功,0个代表失误)。在散点图上绘制时,结果如下所示: 来源: https://www.cnblogs.com/Kris777/p/11731758.html

sklearn逻辑回归实战

≡放荡痞女 提交于 2019-12-02 04:03:26
目录 题目要求 ex2data1.txt处理 方案一:无多项式特征 方案二:引入多项式特征 ex2data2.txt处理 两份数据 ex2data1.txt ex2data2.txt 题目要求 根据学生两门课的成绩和是否入学的数据,预测学生能否顺利入学:利用 ex2data1.txt 和 ex2data2.txt 中的数据,进行逻辑回归和预测。 数据放在最后边。 ex2data1.txt处理 作散点图可知,决策大致符合线性关系,但还是有弯曲(非线性),用线性效果并不好,因此可用两种方案:方案一,无多项式特征;方案二,有多项式特征。 方案一:无多项式特征 对ex2data1.txt中的数据进行逻辑回归,无多项式特征 代码实现如下: """ 对ex2data1.txt中的数据进行逻辑回归(无多项式特征) """ from sklearn.model_selection import train_test_split from matplotlib.colors import ListedColormap from sklearn.linear_model import LogisticRegression import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = [

【机器学习】逻辑回归的代价函数及其梯度下降公式推导-转载

痴心易碎 提交于 2019-12-01 20:39:00
1.损失函数及其求解 线性回归模型的模型如下: 逻辑回归的模型定义(需要借助Sigmoid函数): 将上述线性回归的模型带入到g(x)中,得到最终的逻辑回归的模型: 假定上个表达式是等于类 1 的概率,自然等于类 0 的概率等于1减去等于类 1 的概率,如下所述: 将上面两个式子整合为下面一个公式: 那么似然函数为 m表示样本个数,为了方便计算,取对数得 求上式的极大值,引入因子 -1/m,转化为求下式的极小值: 这就是逻辑回归的log损失函数,其中 那我们通过梯度下降更新 theta 其中α是学习步长。 下面给出怎样推导上面的偏导数: sigmoid函数的导数为: g(x)' = g(x)*(1-g(x)) 来源: https://www.cnblogs.com/qinyuguan/p/11717244.html

【机器学习】逻辑回归(logistics regression)

℡╲_俬逩灬. 提交于 2019-12-01 16:21:19
一、逻辑回归的概念 逻辑回归又称logistic 回 归分析,是一种广义的线性回归分析模型,常用于数据挖掘,经济预测等领域。 逻辑回归从本质来说属于二分类问题,是基于Sigmoid函数(又叫“S型函数”)的有监督二类分类模型。 二、 Sigmoid函数 Sigmoid函数公式为: 其导数形式为:(注意,导数形式在后期会被用到) Sigmoid函数其图像如下所示,其取值范围被压缩到0到1之间。 我们知道有监督分类问题需要有带类别标记的训练样本, 中的 就对应训练集中某个样本的信息。 而样本信息通常用一系列特征的线性组合来表示,即 其中 表示 n 个特征, 是每个特征的权重,代表对应特征的重要程度, 是偏移,上式通常被写成向量形式: ( 对应的 等于1)。那么Sigmoid函数就可以相应地写为如下的形式: 假设我们知道了某个样本对应的特征取值和权重参数,那么只要将其带入上式即可得到一个0到1之间的数,通常认为 则属于正类别,反之属于负类别,即这个数其实反映了该样本属于正类别的概率。现在的问题是,我们手上有了训练集,即样本的都是已知的,而模型参数是未知的。我们需要通过训练集来确定未知的值。一旦被确定,每当面临新样本时,我们就可以将其对应的 扔到 中,根据结果是否大于0.5,轻松加愉快地得出新样本的类别了。 三、 逻辑回归为什么要用sigmoid函数而不是用其他呢? 首先需要了解几个知识点

ex3 多分类和神经网络

倾然丶 夕夏残阳落幕 提交于 2019-12-01 16:10:42
介绍 在本练习中,您将实现一对多逻辑回归和神经识别手写数字的网络。在开始编程之前练习,我们强烈建议观看视频讲座并完成相关主题的复习问题。要开始练习,您需要下载起始代码并将其内容解压缩到要完成练习的目录。如果需要,请在开始本练习之前使用octave/matlab中的cd命令更改到此目录。您也可以在课程网站的“环境设置说明”中找到安装Octave/Matlab的说明。 本练习中包含的文件 ex3.m-octave/Matlab脚本,它引导您完成第1部分 ex3 nn.m-octave/matlab脚本,它引导您完成第2部分 ex3data1.mat-手写数字训练集 ex3weights.mat-神经网络练习的初始权重 submit.m-将解决方案发送到我们服务器的提交脚本 displaydata.m-帮助可视化数据集的函数 fmincg.m-函数最小化例程(类似于fminunc) sigmoid-S形函数 [*]lrcostfunction.m-逻辑回归成本函数 [*]one vs all.m-训练一对多分类器 [*]PredictOneVsall.m-使用一对多分类进行预测 [*]predict.m-神经网络预测功能 *表示需要完成的文件 在整个练习中,您将使用脚本ex3.m和ex3 nn.m。这些脚本为问题设置数据集,并调用要编写的函数。不需要修改这些脚本

机器学习作业(二)逻辑回归——Python(numpy)实现

。_饼干妹妹 提交于 2019-12-01 10:20:33
题目太长啦!文档下载【 传送门 】 第1题 简述:实现逻辑回归。 此处使用了minimize函数代替Matlab的fminunc函数,参考了该博客【 传送门 】。 1 import numpy as np 2 import matplotlib.pyplot as plt 3 import scipy.optimize as op 4 5 #S函数 6 def sigmoid(z): 7 g = 1/(1+np.exp(-z)) 8 return g 9 10 #cost计算函数 11 def costFunction(theta, X, y): 12 theta = np.array(theta).reshape((np.size(theta),1)) 13 m = np.size(y) 14 h = sigmoid(np.dot(X, theta)) 15 J = 1/m*(-np.dot(y.T, np.log(h)) - np.dot((1-y.T), np.log(1-h))) 16 return J.flatten() 17 18 def gradient(theta, X, y): 19 theta = np.array(theta).reshape((np.size(theta), 1)) 20 m = np.size(y) 21 h = sigmoid(np

机器学习作业(二)逻辑回归——Matlab实现

こ雲淡風輕ζ 提交于 2019-12-01 08:31:34
题目太长啦!文档下载【 传送门 】 第1题 简述:实现逻辑回归。 第1步:加载数据文件: data = load('ex2data1.txt'); X = data(:, [1, 2]); y = data(:, 3); plotData(X, y); % Put some labels hold on; % Labels and Legend xlabel('Exam 1 score') ylabel('Exam 2 score') % Specified in plot order legend('Admitted', 'Not admitted') hold off; 第2步:plotData函数实现训练样本的可视化: function plotData(X, y) % Create New Figure figure; hold on; pos = find(y==1); neg = find(y==0); plot(X(pos,1),X(pos,2),'k+','LineWidth',2,'MarkerSize',7); plot(X(neg,1),X(neg,2),'ko','MarkerFaceColor','y','MarkerSize',7); hold off; end 第3步:计算代价函数和梯度: % Setup the data matrix