机器学习笔记—再谈广义线性模型

前文从线性回归和 Logistic 回归引出广义线性回归的概念,很多人还是很困惑,不知道为什么突然来个广义线性回归,有什么用?只要知道连续值预测就用线性回归、离散值预测就用 Logistic 回归不就行了?还有一些概念之间的关系也没理清,例如线性回归和高斯分布、Logistic 回归和伯努利分布、连接函数和响应函数。

这种困惑是可以理解的,前文为了引导快速入门,从实战解题的角度推出了答案,但对其背后的概率假设解释不足,虽然线性回归专门开辟一节来介绍高斯分布假设,但很多人误以为这一节的目的只是为了证明最小均方误差的合理性,Logistic 回归的伯努利分布假设也需做解释。

线性回归是建立在高斯分布的假设上,Logistic 回归是建立在伯努利分布的假设上。如果不能从概率的角度理解线性回归和 Logistic 回归,就不能升一级去理解广义线性回归,而广义线性模型就是要将其它的分布也包纳进来,提取这些分布模型的共同点,成为一个模型,这样再遇到其它分布,如多项式分布、泊松分布、伽马分布、指数分布、贝塔分布和 Dirichlet 分布等,就可以按部就班地套模型进行计算了。

有些同学不明白的是,「当给定参数 θ 和 x 时,目标值 y 也服从正态分布」,这里 y 服从的是均值为 θTx 的正态分布,当我们训练得到参数 θ 后,那么对于不同的 x 值,y 服从的就是不同均值的正态分布。伯努利分布也一样。

要想掌握广义线性模型,得亲自动手做一个实例。

下面我们从概率的角度重新审视线性回归、Logistic 回归,来加深对广义线性模型的理解。

先说线性回归,假设是 y(i)|x(i);θ~N(θTx(i)2),因为 σ2 对 θ 值和 hθ(x) 值没有影响,所以我们不妨设 σ2=1,那么

把该高斯分布写成指数分布簇的形式:

 

可得:

根据广义线性模型的假设,得:

其中 hθ(x)=η 就是响应函数,其反函数就是连接函数。

如果我们有 m 个例子的训练集 {(x(i),y(i));i=1,...,m},想要学习这个模型的参数 θ,log 似然函数为:

然后最大化该函数即可得解。

再来看 Logistic 回归,假设是给定 x 和 θ 后的 y 服从伯努利分布。

p(y;Φ)=Φy(1-Φ)1-y

把该伯努利分布写成指数分布簇的形式:

可得:

根据广义线性模型的假设,得:

其中 hθ(x)=1/(1+e) 就是响应函数,其反函数就是连接函数。

如果我们有 m 个例子的训练集 {(x(i),y(i));i=1,...,m},想要学习这个模型的参数 θ,log 似然函数为:

然后同样最大化该函数即可得解。

 

由此,大致可得使用广义线性模型的步骤:

1、分析数据集,确定概率分布类型;

2、把概率写成指数分布簇的形式,并找到对应的 T(y)、η、E(y;x) 等。

3、写出 log 最大似然函数,不同的分布所使用的连接函数不一样,并找到使该似然函数最大化的参数值。

 

参考资料:

1、http://cs229.stanford.edu/notes/cs229-notes1.pdf

转载于:https://www.cnblogs.com/NaughtyBaby/p/5300831.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python连接access数据库odbc_对Python通过pypyodbc访问Access数据库的方法详解

看书上通过ODBC访问数据库的案例,想实践一下在Python 3.6.1中实现access2003数据库的链接,但是在导入odbc模块的时候出现了问题,后来查了一些资料就尝试着使用pypyodbc,最后成功了。操作步骤:①安装pypyodbc目前Python…

mysql异机备份

xx.xx..4.43----xx.xx..4.51 1、配置client通过密钥来连接server 43机器上: /root/.ssh 目录下执行 ssh-keygen -t rsa ls /root/.ssh会发现在/root/.ssh下生成一对密钥id_dsa和id_dsa.pub,将生成的公钥id_dsa.pub拷贝到server的/root/.ssh目录下&#…

周末想找个地方敲代码_观看我们的代码游戏,全周末直播

周末想找个地方敲代码by freeCodeCamp通过freeCodeCamp 观看我们的代码游戏,全周末直播 (Watch us Code Games Live All Weekend) Note: this was originally published on our now-defunct blog on July 15, 2015.注意:该文章最初于2015年7月15日发布在…

5.7和5.6的mysql_mysql5.6和5.7的区别

展开全部MySQL 5.7 已经开发两年了。相比 MySQL 5.6,有特别多的改进。团队主要关注速度,性能据报告是比之前62616964757a686964616fe4b893e5b19e31333365643661版本提升了 2 至 3 倍。新特性列表,主要改进:提升 MySQL 安全性改进了…

01:数制转换

01:数制转换 查看提交统计提问总时间限制: 1000ms内存限制: 65536kB描述求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,...&am…

局域网只能看到一部分电脑_win10 网上邻居看不到其它电脑、共享不了文件

最近电脑遇到了局域网文件共享的问题,Win 10 系统在网络和共享中心里无法看到其他电脑,只能看到本机。确认共享已经打开后,通过查找最终解决。下面是解决流程。1.进入:控制面板 – 网络和共享中心 – 更改高级共享设置&#xff0c…

javascript 开发_25个新JavaScript开发人员的免费资源

javascript 开发by freeCodeCamp通过freeCodeCamp 25个新JavaScript开发人员的免费资源 (25 Free Resources for New JavaScript Developers) We asked our campers to share their favorite free resources for new JavaScript developers on Camper News. The list includes…

mysql数据库语法_MySQL数据库语法(一)

MySQL数据库语法数据库管理系统(DBMS)的概述什么是DBMS:数据的仓库方便查询可存储的数据量大保证数据的完整、一致安全可靠DBMS的发展:今天主流数据库为关系型数据库管理系统(RDBMS 使用表格存储数据)常见DBMS:Orcale、MySQL、SQL Server、DB…

作业1---四则运算

一.需求分析: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 1/8 7/24 运算符为 , −, , 并且要求能处理用户的输入,并判断对错,打分统计正确率。 要求能处理用户输入的真分…

python有序数组中删除元素_python刷LeetCode:26. 删除排序数组中的重复项

题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组…

mysql数据库修改数据库名称_MySQL数据库之MySQL 修改数据库名称的一个新奇方法...

本文主要向大家介绍了MySQL数据库之MySQL 修改数据库名称的一个新奇方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。MySQL在5.1引入了一个rename database操作,但在MySQL5.1.23后又不支持这个命令。可以说是一个实验性的…

Lesson 001 —— 数据

Lesson 001 —— 数据 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。数据是信息的表现形式和载体,可以使符号、文字、数字、语音、图像、视频等。 进制 进制也就是进…

工作记录四-etcd与flanneld

######################### etcd用来做flannld的数据中心,记录flannld各主机子网的配置## flannld使各容器实例处于同一子网内,可以相互访问####################### ### 一、etcd安装及使用## 1. 下载编译二进制包git clone https://github.com/coreos…

C#获取刚插入的数据的id

在开发程序中我们经常会遇到两个表或多个表关联同时插入数据的需求。 那么我们刚给主表插入一条数据,接着给副表插入数据时其中一个字段要存储与主表关联的id,那么我们该怎么获取刚插入的那条数据的id呢? insert infor values(,) ;SELECT Ide…

感谢您的提问_感谢您的反馈,我们正在改进的5种方法

感谢您的提问by freeCodeCamp通过freeCodeCamp 感谢您的反馈,我们正在改进的5种方法 (5 Ways We’re Improving Thanks to Your Feedback) This was originally published on our now-defunct blog on September 17, 2015.该文章最初于2015年9月17日发布在我们现已…

sql三个表join_「数据蒋堂」第 31 期:JOIN 简化 – 维度对齐

【数据蒋堂】第 31 期:JOIN 简化 – 维度对齐我们先把上一期中双子表对齐例子的 SQL 写出来:SELECT Orders.id, Orders.customer, A.x, B.y FROM Orders LEFT JOIN (SELECT id,SUM(price) x FROM OrderDetail GROUP BY id ) A ON Orders.idA.id LEFT J…

radius

radius协议使用的是UDP传输协议,UDP协议相对于TCP更快速,无连接的不可靠。radius协议的包格式:0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1-----------…

apt-get常用命令及工作原理

https://blog.csdn.net/mosquito_zm/article/details/63684608转载于:https://www.cnblogs.com/diyunpeng/p/9772866.html

day10_控制文件

---------------------验证互为镜像功能---------------------窗口1cd /oracle/app/oradata/ecomrm control03.ctl 窗口2SQL> startup force;ORACLE instance started.Total System Global Area 285212672 bytesFixed Size 1218992 bytesVariable Size …

堆叠自编码器中的微调解释_25种深刻漫画中的编码解释

堆叠自编码器中的微调解释by freeCodeCamp通过freeCodeCamp 25种深刻漫画中的编码解释 (Coding Explained in 25 Profound Comics) We asked our open source community to share the comics they found most profoundly described coding, via our news site. Here are their…