照例文章第一段跑题,先附上个段子(转载的哦~):

I hate CS people. They don't know linear algebra but want to teach projective geometry. They don't know any probability but want to use graphical models. They don't understand stats at all but still do machine learning like crazy.

喵。近期被问了好几次machine learning 和statistical learning的差别在哪里,我认为大致如上吧。

这也是为什么。对后面这个词我的好感稍稍好于前面那个的原因...科学总是有意义的嘛,不能总是依靠强力乱猜是不是嘛。

免责声明:下面个人见解部分局限于我个人的见识和思考范围,不适用于全部场景。

请大家弃糟粕取精华,不可一言全信之。

-------------笔记+随想開始------------

高维空间问题

这一段主要是说大名鼎鼎的"维数灾难"。

我们都知道有两个数字决定着OLS中X矩阵的大小。这就是 观測数目N 和观測变量的个数p 。

一般说来。我们都喜欢N比較大。这样能够非常easy的应用大数定律什么的。然而对于p。却是既爱又恨—我们当然喜欢能够观察到个体的非常多个特征,可是所谓"乱花渐欲迷人眼",特征越多噪音也越多。搞不好预測的时候就会有麻烦(关于变量的选择问题。应该是下一节课的内容。心急的能够先看看我曾经的一篇自学笔记)。

为什么维数增多的时候会麻烦呢?这里主要是随着维数增多带来的高维空间数据稀疏化问题。简单地说:

  • p=1,则单位球(简化为正值的情况)变为一条[0,1]之间的直线。假设我们有N个点,则在均匀分布的情况下,两点之间的距离为1/N。事实上平均分布和全然随机分布的两两点之间平均距离这个概念大致是等价的,大家可略微想象一下这个过程。
  • p=2,单位球则是边长为1的正方形,假设还是仅仅有N个点 ,则两点之间的平均距离为1N√。换言之。假设我们还想维持两点之间平均距离为1/N,那么则需N2个点。
  • 以此类题,在p维空间。N个点两两之间的平均距离为N−1/p,或者须要Np个点来维持1/N的平均距离。

由此可见,高维空间使得数据变得更加稀疏。这里有一个重要的定理:N个点在p为单位球内随机分布,则随着p的增大。这些点会越来越远离单位球的中心。转而往外缘分散。这个定理源于各点距单位球中心距离的中间值计算公式:

d(p,N)=(1−21/N)1/p

当p→∞时。d(p,N)→1。(非常显然,当N变大时。这个距离趋近于0。直观的理解就是,想象我们有一堆气体分子。p变大使得空间变大,所以这些分子開始远离彼此;而N变大意味着有很多其它气体分子进来,所以两两之间难免更挤一些。

看过《三体》的,大概会认为这个非常熟悉的感觉吧...四维空间下的"水滴"再也不完美的无懈可击。而一张一维的纸片就毁灭了整个地球呢。

这个距离公式的推导就临时不写了。好麻烦...大致是利用了各个点独立同分布的特性(全然随机情况下),把median距离变为以1/2概率大于中位数的概率集合公式,再进一步展开为单点距离累乘公式。

比方当p=10, N=500的时候,d(p,N)约为0.52,也就意味着有一半多的点离中心的距离大于1/2。

高维问题为什么是问题呢?回想一下K近邻算法,我们用x的邻居来取代x,这样就希望他的邻居们不要离他太远。

显然高维空间使得点和点之间越来越远。

所以说,knn更适合小p大N即低维多观測量的情况,而在高维空间下可能会变得非常麻烦。

这样,statistical learning的主要两个问题就总结完了:

  • 过拟合:为了控制预測误差。我们要选择适合的函数类。
  • 高维空间:随着维数的增多,我们面临着维数灾难。

    这对非常多算法都有波及,主要体如今高维数据稀疏化。

回归的线性方法

这里主要是一些linear regression的东西,作为被计量经济学折磨了这么多年的孩子,我表示非常淡定...此外还加上我们俗称的generalized linear models,即GLM。

一些线性变换而已,无伤大雅。

这里一定要强调的是,在这里我们亲爱的X竟然不是随机变量!多大的一个坑啊。我就华丽丽的掉下去了还问老师为什么无偏性不须要如果均值独立什么的... X不是随机变量意味着什么呢?X是人为设定或者决定的,比方我一天浇200 ml 或者500 ml水,然后看对于植物生长的影响。当时我真的是想"一口老血喷出来"。这也太舒服了吧!

要知道大多数情况下X也是随机变量哇,比方身高体重什么的。如果它不是随机变量而仅仅有扰动项是独立的随机变量的话,整个计量经济学怕是要删掉好多篇幅了呢。我想说的仅仅有。这群搞statistical
learning的好幸福...

X不是随机变量的时候。为了满足无偏性的如果,仅仅须要扰动项不相关且期望方差存在就能够了。期望不为0不要紧,回归的时候放进去常数项就能够了。

此外。对于随意一个正定阵W。我们都能够直接在回归方程两边乘以W。从而β^=(X′W′WX)−1X′W′Y。

也就是说。我们能够给X进行加权处理,加权矩阵W之后能够进行新的OLS预计。且可能会有相应的优良性质。加权最小二乘法我就不在这里复习了。学过计量的应该非常熟悉,比方处理异方差什么的。

再就是我们能够给β加上一些约束条件,这种话最小化问题后面就能够简单的使用拉格朗日乘子法来解。

这次的收获之中的一个就是OLS预计量的计算。在实践中,我们计算OLS预计值并非直接使用β^=(X′X)−1X′Y,而是会事先进行QR分解(利用特征值来算)。即。我们把X分解为化为正交(酉)矩阵Q与实(复)上三角矩阵R的乘积。这样一来,

β^=(X′X)−1X′Y=(R′Q′QR)−1R′Q′Y=R−1(Q′Y)

这样可解Rβ=Q′Y,计算时候的稳定性比直接求逆矩阵来的好非常多,由于计算机必竟有数字长度的限制。各种位数带来的精度损耗最后会累积到预计量上。

最后就是高斯-马尔科夫定理。就是我们常说的BLUE预计量。

我就直接拷贝这个定理了:

在误差零均值。同方差,且互不相关的线性回归模型中,回归系数的最佳无偏线性预计(BLUE)就是最小方差预计。

一般而言。不论什么回归系数的线性组合的最佳无偏线性预计就是它的最小方差预计。

在这个线性回归模型中,误差既不须要假定正态分布,也不须要假定独立(可是须要不相关这个更弱的条件),还不须要假定同分布

进一步的。如果如果扰动项服从正态分布,比方白噪声,那么β^的预计值也服从正态分布。y的预測值也服从正态分布,因此能够直接做一系列基于正态分布的如果检验。特别的,在大样本情况下,就算扰动项不是正态分布,我们也还是能够利用大数定律和中心极限定理...其实一般也是这么做的。

本节课到此结束。老师没有一一推导无偏性最小方差这些性质,我倒是认为对回归方法感兴趣的还是直接去看计量经济学吧。

这东西水还是蛮深的。

≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(三)的更多相关文章

  1. More 3D Graphics (rgl) for Classification with Local Logistic Regression and Kernel Density Estimates (from The Elements of Statistical Learning)(转)

    This post builds on a previous post, but can be read and understood independently. As part of my cou ...

  2. Some 3D Graphics (rgl) for Classification with Splines and Logistic Regression (from The Elements of Statistical Learning)(转)

    This semester I'm teaching from Hastie, Tibshirani, and Friedman's book, The Elements of Statistical ...

  3. The Elements of Statistical Learning第3章导读

    1. 公式(3.4)的推导. 可以直接对公式(3.3)中的$\beta_0$求导就得到$\hat{\beta}_0=\bar{y}-\beta_1\bar{x}$. 对公式(3.3)中的$\beta_ ...

  4. 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week1 Introduction to deep learning课堂笔记

    Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week1 Introduction to deep learn ...

  5. 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化

    1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...

  6. R语言统计学习-1简介

    一. 统计学习概述 统计学习是指一组用于理解数据和建模的工具集.这些工具可分为有监督或无监督.1.监督学习:用于根据一个或多个输入预测或估计输出.常用于商业.医学.天体物理学和公共政策等领域.2.无监 ...

  7. [译]针对科学数据处理的统计学习教程(scikit-learn教程2)

    翻译:Tacey Wong 统计学习: 随着科学实验数据的迅速增长,机器学习成了一种越来越重要的技术.问题从构建一个预测函数将不同的观察数据联系起来,到将观测数据分类,或者从未标记数据中学习到一些结构 ...

  8. 统计学习导论:基于R应用——第二章习题

    目前在看统计学习导论:基于R应用,觉得这本书非常适合入门,打算把课后习题全部做一遍,记录在此博客中. 第二章习题 1. (a) 当样本量n非常大,预测变量数p很小时,这样容易欠拟合,所以一个光滑度更高 ...

  9. 【StatLearn】统计学习中knn算法实验(2)

    接着统计学习中knn算法实验(1)的内容 Problem: Explore the data before classification using summary statistics or vis ...

随机推荐

  1. hibernate 批量抓取

    使用场景: 是查询出来一个集合,然后又查询每个集合对象中的集合.使用set标签中的batch-size属性实现. 数据库中只有5个区道信息: 设置batch-size=”5”,执行的查询语句如下: 而 ...

  2. c Xcode has incompatible definitions in different translations units

    解决方案: build > setting enable module 改为No

  3. linux内核中GNU C和标准C的区别

    linux内核中GNU C和标准C的区别 今天看了一下午的linux内核编程方面的内容,发现linux 内核中GNU C与标准C有一些差别,特记录如下: linux 系统上可用的C编译器是GNU C编 ...

  4. 如何把datetime类型字段修改为int类型

    如何把datetime类型字段修改为int类型 我有一个表为:table1 其中有一个datetime类型的字段  a    现在我想我想把字段a的类型改为int类型 当我执行以下命令时报如下的错误a ...

  5. 启动myeclipse弹窗Please allow Subclipse team to receive anonymous usage statistics for this Eclipse intance

    Please allow Subclipse team to receive anonymous usage statistics for this Eclipse intance(翻译:请允许Sub ...

  6. Autorelease pools 官方文档

    翻译自: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAu ...

  7. cssrefresh.js-CSS文件自动刷新

    一.如何使用cssrefresh.js 使用很简单,类似下面的代码: <head> <link rel="stylesheet" type="text/ ...

  8. Centos7配置ThinkPHP5.0完整过程(一)

    在Centos中配置PHP服务器环境,首先要安装Apache的http服务,然后安装php解析环境,最后再配置ThinkPHP5.0. 首先安装HTTP sudo yum install httpd ...

  9. Kvm:启动报错:error: internal error: process exited while connecting to monitor: 2018-11-12T01:47:14.993371Z qemu-system-x86_64: cannot set up guest memory 'pc.ram': Cannot allocate memory

    今天有台kvm挂了,物理机启动时报错 很明显看报错显示内存不足,无法分配内存,查看物理机内存使用正常,.xml修改虚机内存后启动依然报错 报错: 这时候需要看一下主机确保可以分配多少内存 sysctl ...

  10. table JS合并单元格

    function _w_table_rowspan(_w_table_id,_w_table_colnum){ _w_table_firsttd = ""; _w_table_cu ...