线性回归原理篇

介绍

经典线性模型自变量的线性预測就是因变量的预计值。

广义线性模型:自变量的线性预測的函数是因变量的预计值。常见的广义线性模型有:probit模型、poisson模型、对数线性模型等等。对数线性模型里有:logistic regression、Maxinum entropy。

1.线性回归原理

当中,为偏置參数。M为特征数目。为基函数(径向基函数(rbf)、sigmoid基函数等),

特别地,当 = ,即为简单的多元线性回归。当然,依据须要我们也能够在后面正则项。

2.參数学习

使用一般的平方和误差作为Loss function,主要有以下两种方法学习參数

(1)依据梯度下降不断迭代,此处会涉及到learing rate(学习速率)

(2)直接利用公式计算。得到一维精确解

平方和误差定义 :

令这个梯度等于零。

终于我们能够得到 (加黑表示为向量)

当然。我们也能够依据实际的情况定义其它的Loss function。

3.思考存在的意义

我们能够利用平方和误差对进行求导,

终于解得

当中, ,

因此,偏置补偿了目标值的平均值(在训练集)与基函数的值的加权求和之间的差。

4.从最根本的广义线性模型角度,导出经典线性模型

1)指数家族

当固定T时,这个分布属于指数家族中的哪种分布就由a和b两个函数决定。以下这样的是伯努利分布,相应于逻辑回归问题

注:从上面可知 ,从而,在后面用GLM导logistic regression的时候会用到这个sigmoid函数。

以下这样的是高斯分布,相应于经典线性回归问题

2)GLM(广义线性模型)

指数家族的问题能够通过广义线性模型来解决。怎样构建GLM呢?在给定x和參数后,y的条件概率p(y|x,θ) 须要满足以下三个如果:

assum1) y | x; θ ~ ExponentialFamily(η).

assum2) h(x) = E[y|x]. 即给定x,目标是预測T(y)的期望,通常问题中T(y)=y

assum3) η = θTx。即η和x之间是线性的

3)经典线性回归

经典线性回归:预測值y是连续的,如果给定x和參数,y的概率分布服从高斯分布(相应构建GLM的第一条如果)。

由上面高斯分布和指数家族分布的相应关系可知,η=μ。依据构建GLM的第2、3条如果可将model表示成:

5.加快模型收敛速度

能够将训练集中的数据处理到某个特征的范围内(当然这样对终于的结果有一定的影响,这个须要依据集体的目标、数据分布等来分析),从而加快模型收敛,此法不仅限于线性回归。主要有以下几种方法

(1)

(2)[X-mean(X)]/std(X);

(3)sigmod

(4)tan

(5)log

6.长处

(1)训练速度快

(2)对趋势比較明显的数据预測效果比較好

7.缺点

(1)easy欠拟合

(2)针对线性不可分的情况效果往往不佳

8.注意事项

(1)特征之间应相互独立(防止多元共线性,对于多元共线性问题,我们也能够通过逐步回归、岭回归的方法解决。从某种意义上来说相似于加入正则项)

(2)特征不宜过多

(3)做下One-hot处理效果还不错

(4)特征与预測变量之间应有一定相关性(能够使用皮尔逊方法检測)

(5)残差e 服从正态分布N(0,σ2) 。

其方差σ2 = var (ei) 反映了回归模型的精度。 σ 越小,用所得到回归模型预測y的准确度愈高

(6) e 的大小不随全部变量取值水平的改变而改变,即方差齐性

參考文献

1.Pattern Recognition And Machine Learning

2.http://blog.csdn.net/lilyth_lilyth/article/details/10032993

时间: 2024-10-13 01:11:00

线性回归原理篇的相关文章

xgboost入门与实战(原理篇)

http://blog.csdn.net/sb19931201/article/details/52557382 xgboost入门与实战(原理篇) 前言: xgboost是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包,比常见的工具包快10倍以上.在数据科学方面,有大量kaggle选手选用它进行数据挖掘比赛,其中包括两个以上kaggle比赛的夺冠方案.在工业界规模方面,xgboost的分布式版本有广泛的可移植性,支持在YARN, MPI, Sun

基于Netty的聊天系统(一)通讯原理篇

今天周六,正好顺便把聊天系统的通讯原理写一下,本来是用XMPP+Openfire做了一个聊天,但是在做群聊那块需要去写插件来主动向表里变去写数据,因为openfire外国人写的,最初设计的群聊是会议室那种形式,和我们现在这种QQ群聊还是有差别的,改造起来比较麻烦,需要去通都源码等等,openfire是基于mina来写的,mina和netty又出自同一作者之手,那么我们就基于netty来写一个吧,首先我们来谈一谈通讯的原理 1:通讯原理 首先比方说A和B两个人要进行聊天(这里我们先讨论一对一这种聊

IO中同步异步,阻塞与非阻塞 -- 原理篇

再补一篇高手写的理论分析,便于更深刻理解 转自:http://blog.csdn.net/historyasamirror/article/details/5778378 ============================================================= 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答

如何快速的开发一个完整的iOS直播app(原理篇)

前言 大半年没写博客了,但我一直关注着互联网的动向,最近会研究很多东西,并分享,今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,由于第一次接触的原因,因此花了很多时间了解直播,整理了直播的原理,当前只是原理篇,后续会持续发布实战篇,教你从零开始搭建一个完整的iOS直播app,希望能帮助到更多的人更快的了解直播. 一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频

Tomcat 原理篇

TOMCAT 原理篇一.Tomcat 组成(Tomcat 由以下组件组成) 1.server a) Server是一个Catalina Servlet容器: b) Server 可以包含一个或多个service组件(元素) 2.service a) server 包含了一个engine组件以及一个或多个connector组件: b) server 中可以配置多个service: 1. 第一个service处理所有Tomcat服务器接收到的web客户端请求: 2. 第二个service处理由Apa

修复损坏的gzip压缩文件之原理篇

引言:UNIX/LINUX下大多数都是用gzip格式来做文件的压缩方案的,而gzip文件损坏的情况也屡见不鲜,常见的有遇到坏扇区.压缩进程io阻塞,或恢复后的压缩文件被破坏等.因近期有做关于gzip文件的修复研究,特分为三个篇章对此成果进行表述,分别为原理篇,方法篇,案例篇.此为第一部分原理篇. gzip的压缩算法本质上是deflate(zip也几乎都用),这个算法其实是由LZ77算法加上一个变形的哈夫曼编码组成的.大概算法流程是:"原始数据--->LZ77--->哈夫曼 "

(转)LCD:LCD常用接口原理篇

关键词:android LCD TFT TTL(RGB)  LVDS  EDP MIPI  TTL-LVDS  TTL-EDP平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos 4210.exynos 4412 .exynos 5250 作者:xubin341719(欢迎转载,请注明作者)欢迎指正错误,共同学习.共同进步! 下载链接:LCD规格书(404份),之前工作用用到的 . LCD规格书00  . LCD规格书0

Esfog_UnityShader教程_遮挡描边(原理篇)

咳咳,有段时间没有更新了,最近有点懒!把不少精力都放在C++身上了.闲言少叙,今天要讲的可和之前的几篇有所不同了,这次是一个次综合应用.这篇内容中与之前不同主要体现在下面几点上. 1.之前我们写的都是只用一个Shader来实现某些效果,而这次我们要使用多个Shader结合起来发挥作用. 2.之前我们只是写的都是纯Shader代码,没有涉及到客户端的C#脚本(你爱用JS也可).而这次也要使用到. 3.这篇教程涉及到的代码量也是之前是之前的几倍了. 4.总的来说之前的都是比较简单的,而这篇就有了些难

Cesium原理篇:7最长的一帧之Entity(下)

上一篇,我们介绍了当我们添加一个Entity时,通过Graphics封装其对应参数,通过EntityCollection.Add方法,将EntityCollection的Entity传递到DataSourceDisplay.Visualizer中.本篇则从Visualizer开始,介绍数据的处理,并最终实现渲染的过程. CesiumWidget.prototype.render = function() { if (this._canRender) { this._scene.initializ