首页 > 其他分享 >逻辑回归LogisticRegression

逻辑回归LogisticRegression

时间:2024-10-09 20:47:07浏览次数:9  
标签:loss 逻辑 01 迭代 train 回归 LogisticRegression test self

一、逻辑回归的基础介绍

逻辑回归是一个分类模型

它可以用来预测某件事发生是否能够发生。分类问题是生活中最常见的问题:

生活中:比如预测上证指数明天是否会上涨,明天某个地区是否会下雨,西瓜是否熟了

金融领域:某个交易是否涉嫌违规,某个企业是否目前是否违规,在未来一段时间内是否会有违规

互联网:用户是否会购买某件商品,是否会点击某个内容

对于已知的结果,上面问题的回答只有:0,1 。

我们以以下的一个二分类为例,对于一个给定的数据集,存在一条直线可以将整个数据集分为两个部分:

此时,决策边界为$w_1x_1+w_2x_2+b=0$,此时我们很容易将h(x)=w_1x_1+w_2x_2+b>0的样本设置为1,反之设置为0。但是这其实是一个感知机的决策过程。逻辑回归在此基础上还需要在加上一层,找到分类概率与输入变量之间的关系,通过概率来判断类别。

我们可以先回顾一下线性回归模型:

h(x)=w^T x +b

w=[0.1,0.2,0.4,0.2]
b=0.5
def linearRegression(x):
    return sum([x[i]*w[i] for i in range(len(x))])+b
linearRegression([2,1,3,1])
# 2.3

在线性模型的基础上加上一个函数g,即h(x)=g(w^T x+b)g(z)=1/(1+e^{-z})。这个函数就是sigmoid函数,也叫做logistic函数。  
它可以将一个线性回归中的结果转化为一个概率值。此时h(x)表示的就是某件事发生的概率,我们也可以记为p(Y=1|x)

import numpy as np
def sigmoid(x):
    return 1/(1+np.exp(-x))
sigmoid(linearRegression([2,1,3,1]))
# 0.9088770389851438

可以看一下sigmoid函数的图:

import matplotlib.pyplot as plt
x = np.arange(-10, 10, 0.01)
y = sigmoid(x)
plt.plot(x, y)
plt.show()

通过以上内容我们知道逻辑回归的表达式,那么我们怎么进行优化呢?x是我们输入的参数,对于我们是已知的,预测西瓜是否熟了的话,我们需要知道它的大小,颜色等信息。将其输入到预测模型中,返回一个西瓜是否熟了的概率。那么对于怎么得到模型中的参数w和b呢?

二、逻辑回归的优化方法

1:逻辑回归的损失函数

逻辑回归采用的是交叉熵的损失函数,对于一般的二分类的逻辑回归来说交叉熵函数为:J(\theta )=-[yln(y`)+(1-y)ln(1-y`)] ,其中y`是预测值。  

注:有些地方交叉熵的log的底数是2,有些地方是e。由于\frac{log_2(x)}{log_e(x)}=log_2(e)是一个常数,因此无论是啥对于最后的结果都是不影响的,不过由于计算的简便性用e的会比较多一些。  

实际上我们求的是训练中所有样本的损失,因此:  

J(\theta )=-\frac{1}{m}\sum[y_i ln(y_i`)+(1-y_i )ln(1-y_i`)]

注:\theta代表的是所有的参数集合

Q:为什么不采用最小二乘法进行优化?(平方差)

A:因为采用最小二乘法的话损失函数就是非凸了(凸函数的定义是在整个定义域内只有一个极值,极大或者极小,该极值就是全部的最大或者最小)
更多详细地解释可以看这里:https://www.zhihu.com/question/65350200

后面可能会有不少难以解释或者需要花费很大篇幅去解释的地方,大多数比较延展性的知识,我可能还是会放个链接,有需要的朋友可以当作课外拓展去了解下。

注:损失函数的由来

在统计学中,假设我们已经有了一组样本(X,Y),为了计算出能够产生这组样本的参数。通常我们会采用最大似然估计的方法(一种常用的参数估计的方法)。使用到最大似然估计的话,我们还要一个假设估计,这里我们就是假设 

标签:loss,逻辑,01,迭代,train,回归,LogisticRegression,test,self
From: https://blog.csdn.net/qq_52421831/article/details/142794063

相关文章

  • 简明逻辑回归算法
     逻辑回归是一种用于分类问题的统计方法,尽管名称中包含“回归”,但它主要用于二分类任务。为了更好地理解逻辑回归,我们可以通过一个通俗易懂的例子来解释。例子:判断是否通过考试假设你是一名老师,想要根据学生的学习时间来判断他们是否能通过一次考试。我们将“通过考试”定义为......
  • Kingst 金思特 LA5016逻辑分析仪 简单入门使用
    前言:这里我仅简单介绍一下Kingst金思特LA5016逻辑分析仪简单入门使用这个软件的快熟上手使用,有补充的话后续在跟新。购买硬件和安装相关软件。软件直接官网下载即可连接如下:。需要说明的是不仅仅只是LA5016,软件同时也兼容其他版本。使用体验:这个Kingst金思特LA5016逻......
  • 【机器学习】线性回归算法简介 及 数学实现方法
    线性回归简介利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。数学公式:ℎ_(w)=w_1x_1+w_2x_2+w_3x_3+…+b=w^Tx+b概念​利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进......
  • 位运算与逻辑运算简介,用位运算表示逻辑运算
    目录一、什么是位运算1.1按位与,即&1.2按位或,即|1.3按位取反,即~1.4按位异或,即^二、什么是逻辑运算2.1逻辑与,即&&2.2逻辑或,即||2.3逻辑非,即!三、位运算与逻辑运算的区别四、用位运算表示逻辑运算4.1用位运算表示逻辑非“!”4.2用位运算表示逻辑与......
  • 零基础-动手学深度学习-3.6softmax回归的从零开始实现
    鄙人生医转码,道行浅薄,请多谅解~感觉这章的内容超量,代码和详解都非常长,细嚼慢咽ing~首先导入需要的库和上一章讲的训练和测试集MNIST(相比于原码我多加了一个库后面用)importtorchimportmatplotlib.pyplotaspltfromIPythonimportdisplayfromd2limporttorchasd2l......
  • 白骑士的JavaScript教学JavaScript语法基础篇之运算符与表达式 2.2.4 逻辑运算符
            逻辑运算符是用于布尔逻辑运算的符号,它们常用于控制流程和条件判断,帮助程序员编写更复杂和更动态的条件语句。在JavaScript中,主要的逻辑运算符包括逻辑与(‘&&‘)、逻辑或(‘||‘)、逻辑非(‘!‘)以及一些其他特定场景的运算符。逻辑运算符用于将多个布尔值或表达式......
  • 12章3节:回归模型中哑变量的应用和设置
    哑变量是临床医学研究和统计分析中的重要概念,特别是在处理分类变量时具有不可忽视的作用。哑变量的引入帮助研究者将分类变量转化为适合回归分析的形式,避免了因分类变量本身的非数值性或无序性而带来的误导。在本文中,将详细探讨哑变量的基本原理、应用场景及其在R语言中的实现......
  • GATK joint calling的逻辑、原理与优势
    GATK(GenomeAnalysisToolkit)中的jointcalling是一种变异检测策略,它允许同时对多个样本进行变异位点的分析,以提高变异检测的准确性和效率。以下是jointcalling的一些关键原理和优势:数据共享:在jointcalling过程中,信息在所有样本间共享。这意味着如果一个样本在某个位点的......
  • torch神经网络--线性回归
    简单线性回归y=2*x+1importnumpyasnpimporttorchimporttorch.nnasnnclassLinearRegressionModel(nn.Module):def__init__(self,input_dim,output_dim):super(LinearRegressionModel,self).__init__()self.linear=nn.Linear(input......
  • 什么是CART回归树
    CART(ClassificationandRegressionTree,分类与回归树)是一种决策树算法,既可以用于分类问题(Classification)也可以用于回归问题(Regression)。当应用于分类时,称为CART分类树;当应用于回归时,称为CART回归树。什么是CART回归树?CART回归树是一种决策树算法,用于解决回归问题。与......