机器学习-逻辑回归

前言

逻辑回归虽然叫回归,实际上是一个二分类模型,要知道回归模型是连续的,而分类模型是离散的,逻辑回归简单点理解就是在线性回归的基础上增加了一个 sigmoid 函数

逻辑回归 = 线性回归 + sigmoid 函数

回顾线性回归
  • 表达式: y = w x + b y = wx + b y=wx+b
sigmoid 函数
  • 什么是sigmoid 函数

  • sigmoid 是以0.5为分界线的激活函数,主要用于将结果输入sigmoid 函数中sigmoid函数会输出一个[0,1] 区间的概率值,0.5以上为一类,0.5以下为一类,这样完成二分类任务

  • 公式:$sig(x) = \frac{1}{1+e^{-x}} $

逻辑回归的公式
  • z = w x + b z = wx+b z=wx+b

  • y = 1 1 + e − z y =\frac{1}{1+e^{-z}} y=1+ez1

  • 所以可以写成 y = 1 1 + e − w x + b y =\frac{1}{1+e^{-wx+b}} y=1+ewx+b1

逻辑回归的损失
  • J = − [ y l n a + ( 1 − y ) l n ( 1 − a ) ] J = -[ylna+(1-y)ln(1-a)] J=[ylna+(1y)ln(1a)]
  • 逻辑回归损失函数体现在“预测值” 与 “实际值” 相似程度上
  • 损失值越小,模型会越好,但是过于小也要考虑过拟合的原因
梯度下降与参数更新

梯度下降: Δ θ j = 1 m X T ( h − y ) \Delta\theta_j=\frac{1}{m}X^T(h-y) Δθj=m1XT(hy)

deltatheta = (1.0 / m) * X.T.dot(h - y)

更新参数: θ j = θ j − α Δ θ j \theta_j = \theta_j - \alpha\Delta\theta_j θj=θjαΔθj

theta = theta - alpha * deltatheta
代码
import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('ex2data1.txt',delimiter=',')

x =  data[:,:-1]
y = data[:,-1]

x -= np.mean(x,axis=0)
x /= np.std(x,axis=0)

X =  np.c_[np.ones(len(x)),x]

def mov(theta):
    z =  np.dot(X,theta)
    h = 1/(1+np.exp(-z))
    return h

def cos(h):
    j = -np.mean(y*np.log(h)+(1-y)*np.log(1-h))
    return j

def tidu(sus=10000,aphe=0.1):
    m,n = X.shape
    theta = np.zeros(n)
    j = np.zeros(sus)
    for i in range(sus):
        h = mov(theta)
        j[i] = cos(h)
        te = (1/m)*X.T.dot(h-y)
        theta -= te * aphe
    return h,j,theta

if __name__ == '__main__':
    h,j,theta = tidu()
    print(j)
    plt.plot(j)
    plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多项式逻辑回归逻辑回归的一种扩展,它允许非线性关系建模。公式推导过程如下: 假设我们有一个二分类问题,输入特征为 x,输出为 y,我们想要建立一个多项式逻辑回归模型。 1. 首先,我们假设存在一个函数 h(x),该函数可以将输入特征 x 映射到一个连续的实数域上。这个函数 h(x) 通常被称为决策函数或者假设函数。 2. 定义 sigmoid 函数 g(z) = 1 / (1 + e^(-z)),其中 z 是一个实数。sigmoid 函数的值域在 (0, 1) 之间。 3. 对于二分类问题,我们可以将输出 y 理解为在类别 1 的概率,即 P(y = 1 | x)。因此,我们可以将决策函数 h(x) 的输出通过 sigmoid 函数进行映射,得到 P(y = 1 | x)。 4. 假设我们想要建立一个 k 阶的多项式逻辑回归模型,我们可以将输入特征 x 按照多项式的形式进行扩展。例如,当 k = 2 时,我们可以构造出以下特征组合:[1, x, x^2]。 5. 假设我们有 m 组训练样本,每个样本的特征表示为 x^(i) = [1, x^(i), (x^(i))^2, ..., (x^(i))^k],其中 i 表示第 i 组训练样本。 6. 我们可以通过最大似然估计来求解模型参数。假设我们的训练集标签为 y^(i),我们可以定义似然函数 L(θ) = ∏(i=1->m) P(y^(i) | x^(i); θ),其中 θ 表示模型的参数。 7. 对于二分类问题,似然函数可以写成 L(θ) = ∏(i=1->m) (g(θ^T * x^(i)))^(y^(i)) * (1 - g(θ^T * x^(i)))^(1 - y^(i))。 8. 我们的目标是最大化似然函数,即求解使得 L(θ) 最大化的参数 θ。通常我们会使用梯度下降等优化算法来求解最优参数。 以上就是多项式逻辑回归公式推导的基本过程。通过将输入特征进行多项式扩展,我们可以更灵活地建模非线性关系。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值