逻辑斯蒂回归学习笔记

一.线性模型

1.基本形式

给定由d个属性的示例x=(x1;x2;x3;...;xd),其中xi是x再第i个属性上的取值,线性模型函数f(x)=w1x1+w2x2+....+wdxd+b,用向量的形式写出f(x) = wTx+b中w=(w1, w2, ..., wd)为待求解系数

听着会很抽象,举个例子吧

比如在西瓜问题学习中学得"f好瓜(x) = 0.2*x色泽 + 0.5*x根蒂 + 0.3*x敲声 + 1",则意味着可以通过综合考虑色泽,根蒂,和敲声来判断西瓜好不好,其中根蒂最要紧,敲声比色泽更重要

2.线性回归

   表示试图学得一个线性模型以尽可能准确得预测实值输出标志。

即f(xi) = wxi+b,使得f(xi) ≈ yi

求出 w和b所需方法为最小二乘法

分别对w和b进行求导,得到最优解得闭式,

根据周志华老师所说,这俩个参数得计算是机器学习得入门,如果不懂得计算,那机器学习就很困难了。(加油)

上述我们称之为“多元线性回归”

同样,我们可以利用最小二乘法对w和b进行估计,把w和b统一为w^ = (w;b)

令该求导得值为0,可得:

三.对数线性回归

        既然由线性回归,那我们可不可以产生一个衍生物使得模型预测值逼近y?

        lny = wTx + b,这就是对数线性回归

黑色那条线性回归和对数线性回归得差别有图可以看出,对数线性回归变化小。

四.逻辑斯特回归

单位位阶函数不连续,故不可以直接用作g-(.),如果我们希望它单调可微,可以产生这么一个替代函数

该函数图像与单位位阶比较:

对数几率函数:

将y视作类后验概率估计p(y=1|x),可得到

五:算法得实现

import numpy as np

class LogisticRegression:
    def __init__(self, lr=0.01, num_iter=100000, fit_intercept=True, verbose=False):
        self.lr = lr
        self.num_iter = num_iter
        self.fit_intercept = fit_intercept
        self.verbose = verbose

    def __add_intercept(self, X):
        intercept = np.ones((X.shape[0], 1))
        return np.concatenate((intercept, X), axis=1)

    def __sigmoid(self, z):
        return 1 / (1 + np.exp(-z))

    def __loss(self, h, y):
        return (-y * np.log(h) - (1 - y) * np.log(1 - h)).mean()

    def fit(self, X, y):
        if self.fit_intercept:
            X = self.__add_intercept(X)

        # 初始化模型参数
        self.theta = np.zeros(X.shape[1])

        for i in range(self.num_iter):
            # 计算预测值和损失函数
            z = np.dot(X, self.theta)
            h = self.__sigmoid(z)
            loss = self.__loss(h, y)

            # 计算梯度并更新模型参数
            gradient = np.dot(X.T, (h - y)) / y.size
            self.theta -= self.lr * gradient

            if self.verbose and i % 10000 == 0:
                print(f'Loss at iteration {i}: {loss}')

    def predict_proba(self, X):
        if self.fit_intercept:
            X = self.__add_intercept(X)

        return self.__sigmoid(np.dot(X, self.theta))

    def predict(self, X, threshold=0.5):
        return self.predict_proba(X) >= threshold

 六:总结

逻辑斯特和逻辑挂不上钩的,是一种对于分类问题的机器学习算法。它通过将输入特征与一个sigmoid函数组合,以预测二元分类的概率

它的特点:

无需事先假设数据分布

可得到“类别”的近似概率预测(概率值还可用于后续应用)

可直接应用现有数值优化算法(如牛顿法)求取最优解,具有快速、高效的特点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Quannnnnn___

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值