机器学习推导+python实现(二):逻辑回归

本文详细介绍了逻辑回归的数学推导和Python实现。逻辑回归是一种预测概率的模型,通过sigmoid函数将线性函数压缩到0到1之间。文章首先介绍了逻辑回归的基本思想,并探讨了无监督学习在应对未知类别样本中的作用。接着,作者阐述了逻辑回归的数学表达式,包括sigmoid函数和损失函数(交叉熵误差),并展示了如何通过梯度下降法求解最优解。文章提供了Python代码实现逻辑回归,包括数据生成、模型训练和测试,最终得出的预测准确度为87.5%。
摘要由CSDN通过智能技术生成

写在开头:今天开始逻辑回归的内容分享,仍然是参考学习公众号机器学习实验室的思路和内容,尽量在实现的环节多加一些自己的思考,吸收一下。

内容安排

线性回归(一)、逻辑回归(二)、K近邻(三)、决策树值ID3(四)、CART(五)、感知机(六)、神经网络(七)、线性可分支持向量机(八)、线性支持向量机(九)、线性不可分支持向量机(十)、朴素贝叶斯(十一)、Lasso回归(十二)、Ridge岭回归(十三)等。
今天就是从逻辑回归的内容进行分享,逻辑回归的思想其实在现实生活中很常见,比如通过一段编程的能力来定义这个人是不是高手如何,其实里面的自变量比如有算法的能力、代码的能力等等,这其实都和逻辑回归很类似。说到底逻辑回归就是想通过已有的自变量数据,来预测这个样本属于哪一类。之前在学习逻辑回归的时候,在思考一个问题,如果训练集中从未出现过那一类,但是测试集里又实实在在的有这样首次出现的类别样本,逻辑回归应该怎么应付。最后思来想去,觉得没法应付,后面了解到有聚类分析,能够无监督的进行学习,这样的话对于那些首次的样本就可以单独为一类。我觉得这其实就是无监督学习的一个能力所在。话题说远了,接下来让我们开始逻辑回归的内容吧。

1.逻辑回归的数学推导

这里让参考部分书籍的相关公式,遇到的时候会在公式附近添加说明,在介绍逻辑回归函数形式的时候呢,根据周志华老师的“西瓜书”的安排,我们来先介绍一下sigmoid函数,由于这几天才把激活函数的文章写了一下,对sigmoid的印象还是很深刻的,sigomid不管是在激活函数还是在构造逻辑回归上,作用都是将数值压缩到0到1之间,只是说两者压缩后的目的不一样,一个是为了非线性处理神经元,一个是为了概率预测,那么感兴趣的朋友可以点击这里查看激活函数中的sigmoid,不过在这里还是展示一下该函数的公式和图像,
σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1
在这里插入图片描述
从图像来看,当我们输入的值越小就会使得,sigmoid函数的输出值越接近于0,反之就越接近1。于是我们可以将这个看作一个概率,大于0.5就为正例类,小于0.5就为反例类,除此之外,还因为sigmoid的函数求导后导函数为,
d σ ( x ) d x = e − x ( 1 + e − x ) 2 = 1 ( 1 + e − x ) − 1 ( 1 + e − x ) 2 = σ ( x ) ( 1 − σ ( x ) ) \frac{d\sigma (x)}{dx}=\frac{e^{-x}}{(1+e^{-x})^2}=\frac{1}{(1+e^{-x})}-\frac{1}{(1+e^{-x})^2}=\sigma (x)(1-\sigma (x)) dxdσ(x)=(1+ex)2ex=(1+ex)1(1+ex)21=σ(x)(1σ(x)),在计算梯度的时候比较方便,所以又能够看作概率,有方便求导计算所以就很适合做我们的分类函数的选择。但是只有一个x肯定是不够的,就像之前举的例子一样,我们衡量一个人是不是高手还得从多个角度入手,于是这里需要引入一个多元信息,那么就迎来了我们的逻辑回归函数,
y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y=1+e(wTx+b)1更换的地方就是将x变更为了矩阵运算形式,与此系列上一节的多元线性回归形式类似,顺便把记号换成y,和回归接轨,在学习了上一节线性函数基础上的情况下,我们尝试着把公式变得和线性回归差不多,于是公式变形为,
l n ( y 1 − y ) = w T x + b ln(\frac{y}{1-y})=w^Tx+b ln(1yy)=wTx+b这样的形式是不是就和线性回归的很像了,左侧对数里的 y / ( 1 − y ) y/(1-y) y/(1y)可以理解为几率,因为 y y y反应的是x为正的可能性,于是几率就可以理解成反应相对的一个概率,然后左侧就是对数几率,其实感觉左侧这个公式就是用右侧的线性回归去拟合。以一种更加概率的形式来展示一下这个公式,
l n ( p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) ) = w T x + b ln(\frac{p(y=1|x)}{p(y=0|x)})=w^Tx+b ln(p(y=0x)p(y=1x))=wTx+b然后等于1和等于0的概率就为,
p ( y = 1 ∣ x ) = e ( w T x + b ) 1 + e ( w T x + b ) p(y=1|x)=\frac{e^{(w^Tx+b)}}{1+e^{(w^Tx+b)}} p(y=1x)=1+e(wTx+b)e(wTx+b) p ( y = 0 ∣ x ) = 1 1 + e ( w T x + b ) p(y=0|x)=\frac{1}{1+e^{(w^Tx+b)}} p(y=0x)=1+e(wTx+b)1
下面需要来定义损失函数,在线性回归中我们使用的是MSE均方误差,在这里我们使用交叉熵误差,下面是交叉熵误差的来由,其实就是通过极大似然估计得到,希望通过极大似然估计来得到参数的估计值,于是就先得到模型的对数似然函数,这里的操作是对于每一类进行对数似然,
L = ∑ i = 1 m l n p ( y i ∣ x i ; w , b ) L=\sum\limits_{i=1}^{m}lnp(y_i|x_i;w,b) L=i=1mlnp(yixi;w,b)这里的 y i , x i y_i,x_i yi,xi是给定样本,这个公式就是希望每个样本 x i x_i xi等于本身类的概率越大越好,然后我们将 p ( y i ∣ x i ; w , b ) p(y_i|x_i;w,b)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值