逻辑回归——logistic regression

每个机器学习模型模型不论大小,都有它的三要素:模型、策略和算法。所以主要从这三个方面的学习来认知逻辑回归模型。
本次学习参考资料是李航老师的《统计学方法》。

模型

逻辑回归可以与之前的感知机模型比较学习,它们之间的唯一区别便是激活函数的不同,逻辑回归采用的是logistic函数:
在这里插入图片描述
虽说名字是“回归”,但是通常我们也将逻辑回归应用于分类的任务,那它是怎么实现的呢?通过对logistic函数的理解,这是一个将输入值压缩到(0,1)区间的函数,这样我们就可以以0.5为分离超平面,使得计算的概率值结果趋向哪一个概率更大就将其归于哪一类,举例如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
思考一下为什么逻辑回归比感知机模型相对来说更好?
第一,最后计算出的值是一趋于(0,1)之间的值,可以看作是概率值,具有更强的解释性,一个值不再是简单的非此即彼的分类,而是通过概率值来表达这个值更趋向于的分类。
第二,logistic函数是一个单调上升的连续函数,可以直接求导,方便我们之后的梯度下降操作。

策略

同样的,我们需要找到逻辑回归模型模型的损失函数,这里要提到一个概念——最大似然估计(Maximum Likelihood Estimate)(这一部分又感觉没有理解透彻,最大似然一两句感觉讲不清,留到另一个博客详细讲讲)。首先,推到得到我们的似然函数。
两个类别的概率分别如下:
在这里插入图片描述
进一步得到我们的似然函数
在这里插入图片描述
N是我们的数据集
OK,到这一步,我们的目的很明确,就是使得我们的似然函数越大越好! 接下来我们再通过一系列操作来转换这个似然函数。
对似然函数取对数,得到对数似然函数:
在这里插入图片描述
最后,为了和损失函数对应,我们取负值,得到了交叉熵损失函数(这个地方,从极大似然推导的方式,是《统计学方法》里面的方式,而最后的结果也只是得到了上面的对数似然函数,交叉熵函数应当是另一套推导流程,注意辨析)
在这里插入图片描述
至此,我们就得到了我们逻辑回归模型的损失函数——交叉熵损失函数。

算法

同样的,在这里我们运用梯度下降来最小化我们的损失函数。
第一步同样是求得我们的梯度:
在这里插入图片描述j代表的的是一个参数/特征向量里面的第j个参数/特征
i指代第i个数据或标签

代码

class Logistic:
    def __init__(self, xMat: ndarray, yMat: ndarray):
        self.xMat = np.mat(xMat)
        self.yMat = np.mat(yMat)

    def sigmoid(self, x):
        return 1.0 / (1 + np.exp(-x))

    def cost(self, w):  # 计算cost
        left = np.multiply(self.yMat, np.log(self.sigmoid(self.xMat * w)))
        right = np.multiply(1 - self.yMat, np.log(1 - self.sigmoid(self.xMat * w)))
        return np.sum(left + right) / -(len(self.xMat))

    def gradAscent(self, lr, epochs):
        costList = []
        m, n = np.shape(self.xMat)

        ws = np.mat(np.ones((n, 1)))
        for i in range(epochs + 1):
            h = self.sigmoid(self.xMat * ws)
            w_grad = self.xMat.T * (h - self.yMat) / m
            ws = ws - lr * w_grad
            costList.append(self.cost(ws))

        return ws, costList

效果图:
在这里插入图片描述
loss值变化图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值