Logistic Regression详解

zz/2024/7/23 13:26:02

Regression是什么?

  • Regression:找到一个模型去表示数据间的关系
  • Linear Regression:使用线性模型拟合数据
  • Logistic Regression:其实本质也是线性拟合,但引入了log,这个之后会详细说

也就是说,不管什么Regression,都是想找到一个模型来拟合数据。

Likelihood

Likelihood与我们平常所说的Probability相反。

举个例子,平常说B站有60%的人是宅男,这个60%就是概率。我们换个思路,如果告诉你一个人是宅男,那他有多大的可能是B站用户呢?我们同意“宅男都混B站”这个判断的话,就说这个宅男100%是B站用户。这里100%就是likelihood。

其实到这里,我们已经完成了一次预测 —— 预测一个宅男是否为B站用户。事实上,这个在现实生活中非常有用。比如根据症状判断是否得了癌症,根据性别年龄等特征判断是否已婚等等。

regression的主要用途就是根据输入的特征做判断,并使本系统的判断与实际输出之间的差值最小。

Logistic Regression

引子:我们常用的是线性拟合,为什么?当然因为线性拟合简单,比如下面的红色数据点,我们可以简单的拿一个线性模型拟合(黄线)

这里写图片描述

可是,如果我们的点不是这么的符合线性条件呢?

使用最大后验概率作为模型质量的评测方式,我们需要使输入的已知点的likelihood最大,从而得到一个比较好的模型。

假设y的取值为1或0(也就是说,所有数据分为两类)

后验概率:

假设

PY1|XxPxθ

(给定输入x,输出为1的概率)

可以得到,

i=1mPYyi|Xxii=1mPxiθyi(1Pxiθ)1yi

如果我们将已有的m个输入输出观察值(x,y)带入这个式子,就可以得到已有的观察值的likelihood。

最大化使这个likelihood,也就是最大化已有的观察值出现的概率,就可以得到相应的拟合模型啦~

定义Likelihood的式子:

目的是找到合适的参数,最大化L

L(θ)=i=1mPxiθyi(1Pxiθ)1yi

接下来就是找相应的模型了,刚才提到

PY1|XxPxθ
也就是后验概率P,需要用一个带参数的模型表示。(下面将P简写为P(x))

在Logistic regression里,我们使用这样的一种模型来拟合likelihood

logP(x)1P(x)=θ0+θx

其实这依旧是线性拟合(等号右边的是线性拟合的式子),

至于为什么等号左边的式子是这样的,主要考虑了输入和输出值域的限制。

我们把这个式子变换一下,就得到了常用的形式:

P(Y=1;x;θ)=11+eθTx=hθ(x)

对L求导:

使导数最小(最好为0)的beta就是我们要求的模型参数,至于怎么使导数最小,我们使用Newton’s method更新权值。

注:L的形式不好计算导数,所以对logL求导。lnL就是经常用到的cost function

J(θ)=logL=1mi=1m[yilog(hθ(xi))(1yi)(1hθ(xi))]

Newton’s Method

Newton’s Method通过对初始点(随机选择)附近的泰勒展开式求导,得到初始点附近的最小点,多次更新,得到局部最优。

具体的求导过程就不列出来了,直接写出更新的公式。

θ(n+1)=θ(n)f(θ(n))f′′(θ(n))

存在多个theta时,就变成了这样,

θ(n+1)=θ(n)H1θJ(θ)

H为Hessian矩阵.

在logistic regression中,梯度和Hessian的求法分别为:

θJ(θ)=1mi=1m(hθ(xi)yi)xi

H=1mi=1m[hθ(xi)(1hθ(xi))xi(xi)T]

至此,我们通过逐步更新参数的值,最终得到模型
hθ(x)

至此,关于01分类问题的regression已经介绍完了(只分两类)
如果想知道关于多分类的问题,可以去下面的链接中了解一下softmax。
http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92


http://www.ngui.cc/zz/2731633.html

相关文章

c3p0配置

简介  C3P0是一个开源的JDBC 连接池&#xff0c;它实现了数据源和JNDI绑定&#xff0c;支持JDBC3规范和JDBC2的标准扩展。目前使用它的 开源项目有 Hibernate&#xff0c;Spring等。 C3P0配置  <c3p0-config> <default-config> <!--当 连接池中的连接耗…

01_Eclipse的使用方法

&#xfeff;&#xfeff; 1选择工作站 Workspace&#xff1a;表示工作站 2切换工作站 选择工作站的方式&#xff1a;File—>SwitchWorkspace这里选择其他的工作站 清除工作站的方式&#xff1a; 找到MyEclipse的安装目录&#xff1a; C:\Program Files\MyEclipse6.6\eclips…

Eclipse集成Android_NDK

&#xfeff;&#xfeff; Eclipse集成Android NDK说明 1 目录 Eclipse集成Android NDK说明... 1 2 为什么要用NDK&#xff1f;... 2 3 为什么要集成&#xff1f;... 2 4 怎样操作&#xff1f;... 2 4.1 预备条件... 2 4.1.1 Cygwin. 2…

HTML5本地存储之Web Storage

Web Storage是HTML5引入的一个非常重要的功能&#xff0c;可以在客户端本地存储数据&#xff0c;类似HTML4的cookie&#xff0c;但可实现功能要比cookie强大的多&#xff0c;cookie大小被限制在4KB&#xff0c;WebStorage官方建议为每个网站5MB。 Web Storage又分为两种&#…

Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)

1.1 Hive简介 1.1.1 什么是Hive Hive是基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供类SQL查询功能。 1.1.2 为什么使用Hive 直接使用hadoop所面临的问题 人员学习成本太高 项目周期要求太短 MapReduce实…

Java + 腾讯企业邮箱 + javamail + SSL 发送邮件(转载:http://www.cnblogs.com/LUA123/p/5575134.html)

说实话腾讯的企业邮箱真心不错&#xff01; 腾讯企业邮箱官网&#xff1a;http://exmail.qq.com/login/ 新用户注册&#xff1a;http://exmail.qq.com/onlinesell/intro 点击开通 你跟着步骤走就行了&#xff0c;没啥难的&#xff0c;如果你没有域名&#xff0c;你就去买一个…

Docker 镜像管理,显示本地镜像,查找镜像,删除镜像,镜像拉取,查看镜像的具体信息,镜像的导入和导出,将配置后的镜像commit成自己的镜像,docker history,等

一、 显示本地镜像&#xff1a; [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest c82521676580 3 weeks ago 109MB [rootlocalhost ~]# 二…

hive表,hive视图,spark处理数据入mysql,shell获取url数据下载json,Spark sql处理json,shell脚本执行kylin,azkaban任务调度

1 Spark获取json数据&#xff0c;并将json数据存hive库 hive表建立Demo --如果存在hive表&#xff0c;直接删除这个hive表。 drop table if EXISTS tb_trade_info; --创建hive表(第一次全量&#xff0c;后续增量) CREATE TABLE IF NOT EXISTS tb_trade_info ( salesmanId VAR…