tensorflow逻辑回归原理与实现(超详细)

ZSYL ZSYL     2022-12-20     335

关键词:

学习目标

  • 目标
    • 知道逻辑回归的算法计算输出、损失函数
    • 知道导数的计算图
    • 知道逻辑回归的梯度下降算法
    • 知道多样本的向量计算
  • 应用
    • 应用完成向量化运算
    • 应用完成一个单神经元神经网络的结构

1. 神经网络基础

1.1 Logistic回归

逻辑回归是一个主要用于二分分类类的算法。那么逻辑回归是给定一个 x x x , 输出一个该样本属于1对应类别的预测概率 y ^ = P ( y = 1 ∣ x ) \\haty=P(y=1|x) y^=P(y=1x)

Logistic 回归中使用的参数如下:

e − z e^-z ez 的函数如下:

例如:

1.2 逻辑回归损失函数

损失函数(loss function) 用于衡量预测结果与真实值之间的误差。最简单的损失函数定义方式为平方差损失:

L ( y ^ , y ) = 1 2 ( y ^ − y ) 2 L(\\haty,y) = \\frac12(\\haty-y)^2 L(y^,y)=21(y^y)2

逻辑回归一般使用 L ( y ^ , y ) = − ( y log ⁡ y ^ ) − ( 1 − y ) log ⁡ ( 1 − y ^ ) L(\\haty,y) = -(y\\log\\haty)-(1-y)\\log(1-\\haty) L(y^,y)=(ylogy^)(1y)log(1y^)

该式子的理解:

  • 如果y=1,损失为 − log ⁡ y ^ - \\log\\haty logy^,那么要想损失越小, y ^ \\haty y^的值必须越大,即越趋近于或者等于1
  • 如果y=0,损失为 1 log ⁡ ( 1 − y ^ ) 1\\log(1-\\haty) 1log(1y^),那么要想损失越小,那么 y ^ \\haty y^ 的值越小,即趋近于或者等于0

损失函数是在单个训练样本中定义的,它衡量了在单个训练样本上的表现。代价函数(cost function)衡量的是在全体训练样本上的表现,即衡量参数 w 和 b 的效果,所有训练样本的损失平均值

J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) J(w,b) = \\frac1m\\sum_i=1^mL(\\haty^(i),y^(i)) J(w,b)=m1i=1mL(y^(i),y(i))

2. 梯度下降算法

目的:使损失函数的值找到最小值

方式:梯度下降

函数的**梯度(gradient)**指出了函数的最陡增长方向。梯度的方向走,函数增长得就越快。那么按梯度的负方向走,函数值自然就降低得最快了。模型的训练目标即是寻找合适的 w 与 b 以最小化代价函数值。假设 w 与 b 都是一维实数,那么可以得到如下的 J 关于 w 与 b 的图:

可以看到,成本函数 J 是一个凸函数,与非凸函数的区别在于其不含有多个局部最低。

参数w和b的更新公式为:

w : = w − α d J ( w , b ) d w w := w - \\alpha\\fracdJ(w, b)dw w:=wαdwdJ(w,b) b : = b − α d J ( w , b ) d b b := b - \\alpha\\fracdJ(w, b)db b:=bαdbdJ(w,b)

注:其中 α 表示学习速率,即每次更新的 w 的步伐长度。当 w 大于最优解 w′ 时,导数大于 0,那么 w 就会向更小的方向更新。反之当 w 小于最优解 w′ 时,导数小于 0,那么 w 就会向更大的方向更新。迭代直到收敛。

通过平面来理解梯度下降过程:

3. 导数

理解梯度下降的过程之后,我们通过例子来说明梯度下降在计算导数意义或者说这个导数的意义。

3.1 导数

导数也可以理解成某一点处的斜率。斜率这个词更直观一些。

  • 各点处的导数值一样

我们看到这里有一条直线,这条直线的斜率为4。我们来计算一个例子

例:取一点为a=2,那么y的值为8,我们稍微增加a的值为a=2.001,那么y的值为8.004,也就是当a增加了0.001,随后y增加了0.004,即4倍

那么我们的这个斜率可以理解为当一个点偏移一个不可估量的小的值,所增加的为4倍。

可以记做 f ( a ) d a \\fracf(a)da daf(a)或者 d d a f ( a ) \\fracddaf(a) dadf(a)

  • 各点的导数值不全一致

例:取一点为a=2,那么y的值为4,我们稍微增加a的值为a=2.001,那么y的值约等于4.004(4.004001),也就是当a增加了0.001,随后y增加了4倍

取一点为a=5,那么y的值为25,我们稍微增加a的值为a=5.001,那么y的值约等于25.01(25.010001),也就是当a增加了0.001,随后y增加了10倍

可以得出该函数的导数2为2a。

  • 更多函数的导数结果
函数导数
f ( a ) = a 2 f(a) = a^2 f(a)=a2 2 a 2a 2a
f ( a ) = a 3 f(a)=a^3 f(a)=a3 3 a 2 3a^2 3a2
f ( a ) = l n ( a ) f(a)=ln(a) f(a)=ln(a) 1 a \\frac1a a1
f ( a ) = e a f(a) = e^a f(a)=ea e a e^a ea
σ ( z ) = 1 1 + e − z \\sigma(z) = \\frac11+e^-z σ(z)=1+ez1 σ ( z ) ( 1 − σ ( z ) ) \\sigma(z)(1-\\sigma(z)) σ(z)(1σ(z))
g ( z ) = t a n h ( z ) = e z − e − z e z + e − z g(z) = tanh(z) = \\frace^z - e^-ze^z + e^-z g(z)=tanh(z)=ez+ezezez 1 − ( t a n h ( z ) ) 2 = 1 − ( g ( z ) ) 2 1-(tanh(z))^2=1-(g(z))^2 1(tanh(z))2=1(g(z))2

3.2 导数计算图

那么接下来我们来看看含有多个变量的到导数流程图,假设 J ( a , b , c ) = 3 ( a +

3.一元多元逻辑回归自定义实现——tensorflow2

文章目录数学公式一元逻辑回归多元逻辑回归评估公式标椎化决策边界实现一元逻辑回归基本函数实现交叉熵损失函数准确率房屋分类实现加载数据数据处理建立Logistic回归模型设置超参数训练数据训练数据可视化预测预测数据... 查看详情

tensorflow实现逻辑回归——原以为tensorflow不擅长做线性回归或者逻辑回归,原来是这么简单哇!

实现的是预测低出生体重的概率。尼克·麦克卢尔(NickMcClure).TensorFlow机器学习实战指南(智能系统与技术丛书)(Kindle位置1060-1061).Kindle版本.#LogisticRegression#----------------------------------##ThisfunctionshowshowtouseTensorFlowto#solvelogisti 查看详情

逻辑回归模型logisticregression详细推导(含numpy与pytorch实现)

逻辑回归模型LogisticRegression详细推导(含Numpy与PyTorch实现)文章目录​​逻辑回归模型LogisticRegression详细推导(含Numpy与PyTorch实现)​​​​内容概括​​​​广而告之​​​​LR模型介绍​​​​符号说明​​​​Sigmoid函数​​​... 查看详情

利用tensorflow实现多元逻辑回归

利用TensorFlow实现多元逻辑回归,代码如下:importtensorflowastfimportnumpyasnpfromsklearn.linear_modelimportLogisticRegressionfromsklearnimportpreprocessing#Readxandyx_data=np.loadtxt("ex4x.dat").astype(np.float32)y_d 查看详情

tensorflow逻辑斯特回归(logisticregression)的简单实现(代码片段)

Introduction为了简单的介绍和讲解一下Tensorflow的基本操作,我决定做一个简单的逻辑斯特回归实现与代码讲解,但不太会用Markdown的方式来展现一个JupyterNotebook,姑且就按照“说明—实例”的方式来解释逐个代码块好了... 查看详情

logistic回归分类算法原理分析与代码实现

小结      1.逻辑回归的计算代价不高,是很常用的分类算法。集中基于随机梯度上升的逻辑回归分类器能够支持在线学习。      2.但逻辑回归算法缺点很明显-一般只能解决两个类的分... 查看详情

如何完整地掌握一个机器学习模型

...对算法的理解。使用现有工具库:熟练掌握如scikit-learn、TensorFlow、Keras、PyTorch等机器学习框架,了解如何用这些工具快速搭建和训练模型。模型评估与调优:学会使用各种评估指标(如准确率、召回率、F1分数等)评估模型性能... 查看详情

tensorflow逻辑回归(代码片段)

tensorFlow基础见前博客 逻辑回归广泛应用在各类分类,回归任务中。本实验介绍逻辑回归在TensorFlow上的实现理论知识回顾逻辑回归的主要公式罗列如下:激活函数(activationfunction):损失函数(costfunction):其中 损失函... 查看详情

逻辑斯特回归tensorflow实现(代码片段)

#!/usr/bin/python2.7#coding:utf-8from__future__importprint_functionimporttensorflowastf#ImportMNISTdatafromtensorflow.examples.tutorials.mnistimportinput_datamnist=input_data.read_data_sets("../Mnist_ 查看详情

与用于逻辑回归的 Scikit-Learn 相比,Tensorflow 的性能要差得多

】与用于逻辑回归的Scikit-Learn相比,Tensorflow的性能要差得多【英文标题】:MassivelyworseperformanceinTensorflowcomparedtoScikit-LearnforLogisticRegression【发布时间】:2019-01-1606:04:52【问题描述】:我正在尝试在数值数据集上实现逻辑回归分类... 查看详情

tensorflow2.0——代码实现一元逻辑回归(代码片段)

    importtensorflowastfimportnumpyasnpx=np.array([1,2,3,4])y=np.array([0,0,1,1])w=tf.Variable(1.)b=tf.Variable(1.)sigmodX=1/(1+tf.exp(-(w*x+b)))#sigmod函数pre_result=tf.round(sigmod 查看详情

机器学习--逻辑回归的原理与基础实现(代码片段)

文章目录概述一、逻辑回归二、小案例总结概述逻辑回归(LogisticRegression,简称LR),其实是一个很有误导性的概念,虽然它的名字中带有“回归”两个字,但是它最擅长处理的却是分类问题。LR分类器适用于各项广义上... 查看详情

线性回归算法和逻辑斯谛回归算法详细介绍及其原理详解

...和CART决策树算法详细介绍及其原理详解线性回归算法和逻辑斯谛回归算法详细介绍及其原理详解硬间隔支持向量机算法、软间隔支持向量机算法、非线性支持向量机算法详细介绍及其原理详解文章目录相关文章前言一、线性回... 查看详情

tensorflow(01)线性回归

...环境:Anaconda5.2(Python3.6.6)IDE:Pacharm2018.2.3(专业版)TensorFlow:1.8.0(CPU)任务目标实现线性回归模型代码实现代码解析 1-2:导入必要库NumPy、matplotlib 3:导入tensorflow  5-8:设置超参数:学习率 查看详情

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

...概有两个:第一用来预测,第二寻找因变量的影响因素。逻辑回归(LogisticRegression,LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为... 查看详情

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

...概有两个:第一用来预测,第二寻找因变量的影响因素。逻辑回归(LogisticRegression,LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为... 查看详情

pythontensorflow实现sequential深度神经网络回归(代码片段)

  本文介绍基于Python语言中TensorFlow的Keras接口,实现深度神经网络回归的方法。(基于PythonTensorFlowKeras的深度学习回归代码——keras.Sequential深度神经网络)1写在前面  前期一篇文章TensorFlowDNNRegressor实现深度学习的代码详细介... 查看详情

tensorflow逻辑回归之解决欠拟合问题(代码片段)

...梯度下降公式如下公式(4)(推导过程略):  2.tensorflow实现,代码如下:1#coding:utf-82importtensorflowastf3importmatplotlib.pyplotasplt4importnumpyasnp56data=[]7label=[]8np.random.seed(0)910##随机产生训练集11foriinrange(500):12x1=np.random.uniform(-1,1)13... 查看详情