logistic回归算法原理,logistic回归原理及公式推导
本文主要介绍python机器学习中逻辑回归原理的推导。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010前言Logistic回归原理及推导sigmoid函数目标函数梯度上升法Logistic回归实践数据训练算法优缺点
目录
逻辑回归涉及高等数学、线性代数、概率论和最优化问题。本文试图用最简单易懂的叙述方式向读者解释Logistic回归,少强调公式原理,多强调可视化案例。如果你对数学公式过敏,你会感到不适,后果自负。
前言
虽然逻辑回归中有“回归”一词,但算法是分类算法。如图所示,有两种类型的数据(红点和绿点)分布如下。如果需要对两类数据进行分类,可以用一条直线(w0 * x0 w1 * x1 w2 * x2)来划分。当需要预测新样本(x1,x2)时,将其带入线性函数。如果函数值大于0,则为绿色样本(正样本),否则为红色样本(负样本)。
推广到高维空间,我们需要得到一个超平面(2D中的直线,3D中的平面,N维中n-1的超平面)来分割我们的样本数据,实际上就是求超平面的W参数。这和回归很像,所以命名为Logistic回归。
Logistic回归原理与推导
当然,我们不直接使用Z函数。我们需要将Z值转换为区间[0-1]。转换后的Z值是判断新样本属于正样本的概率。我们用sigmoid函数来完成这个转换过程,公式如下。通过观察sigmoid函数图,如图所示,z值大于0时,值大于0.5,z值小于0时,值小于0.5。使用sigmoid函数,逻辑回归本质上是基于条件概率的判别模型。
sigmoid函数
其实我们现在在求W,怎么才能找到W呢?我们先来看下图,大家都可以看到第二个图形的直线最好。换句话说,最好让这些样本点离直线越远越好,这样新样本的到来就可以很好的划分。如何用公式来表达和计算这个目标函数呢?
这时候就需要最大化这个目标函数值来求。
目标函数
在介绍梯度法之前,我们先来看一个中学知识:求下列函数在x=时的最大值。
解法:求f(x): 2x的导数,使之为0。当x=0时,取最大值为0。但当函数比较复杂时,通过求导数很难计算出函数的极值。这时候就需要用梯度上升法,通过迭代逐步逼近极值。公式如下。我们沿着导数方向(梯度)一步步逼近极值。
使用梯度算法计算该函数的x值:
定义f(x_old):
返回-2 * x _旧
定义校准():
x_old=0
x_new=-6
每股收益=0.01
精度=0.00001
而ABS(x _ new-x _ old)gt;presision:
x _旧=x _新
x_new=x_old eps*f(x_old)
返回x_new
-0.0004892181072978443
梯度上升法
Logistic回归实践
读入数据,并绘制和显示:
定义loadDataSet():
dataMat=[];labelMat=[]
fr=open( data/Logistic/testset . txt )
对于fr.readlines():中的行
lineArr=line.strip()。拆分()
dataMat.append([1.0,float(lineArr[0])),float(lineArr[1])])
labelMat.append(int(lineArr[2]))
返回数据Mat,标签Mat
数据情况
使用梯度迭代公式计算w:
定义乙状结肠(英寸):
return 1.0/(1 np.exp(-inX))
def gradAscent(数据马丁,标签马丁):
dataMatrix=np.mat(dataMatIn)
labelMat=np.mat(labelMatIn)。转置()
m,n=np.shape(数据矩阵)
阿尔法=0.001
最大周期数=500
权重=np.ones((n,1))
对于范围内的k(最大周期数):
h=sigmoid(数据矩阵*权重)
错误=labelMat - h
权重=权重alpha * dataMatrix.transpose() *误差
返回重量
通过计算重量图查看分类结果。
训练算法
优点:易于理解和计算缺点:以上精度不高,是python机器学习Logistic回归原理推导的详细内容。更多关于python机器学习Logistic回归的信息,请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。