Categories
读书有感

≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(十)

一个东西写到10,总会多少有点成就感...只是不知道已经磨掉了多少人的耐心了呢?

此外这节公式密集,大家看着办吧...

-----------笔记开始------------

继续上一讲,先说说EM算法。

MM、EM和GMM

1. MM(混合模型)

(1) 定义:,其中,构成一个离散分布。同时有,且

(2) 隐变量

我们有数据,同时依据条件概率分布,有。记,则,其中

则有为x的边际分布。

(3) GMM(正态混合模型)

,我们有,且

(4) 对数似然函数和最大似然估计

对数似然函数写为。则我们要求的就是,其中

2. EM算法 (expectation maximum,期望最大方法)

(1) 迭代方法: 给定起始值,迭代出。那么问题就是,如何在已知的情况下,求

(2) E1步:求。函数形式已知,故可以求各种条件概率什么的。所以有:

E2步:计算,由于函数形式已知,我们可以计算并将移出来,所以换成线性形式。

(3) M步:求,这样就完成了迭代。需要证明的性质是:随着迭代,越来越大,且收敛。

(4) 定理:

证明:

其中,且,定义为两分布的KL距离。

所以,且。而由M步,,故有

在GMM的情况下,应用EM算法,则有:

(1) E1步:,可以直接计算。

(2) E2步:

(3) M步:注意有约束条件,所以使用拉格朗日乘子法:

,故有一阶条件:。从而,其中

还有一阶条件:,得到

最后,,有

对GMM而言,E步和M步在k=2的时候,求解过程可参见书上。

第七章:模型评估与选择

1. 概念: 我们有数据集,函数族和损失函数,这样得到最优的,然后求得

(有监督的学习)。之后就是对模型进行评估:的精度如何(使用测试集)?模型的选择就是的选择,使得测试误差比较小。

2. 方法:

(1) 数据充分:分成三块,1/2用来训练(train),1/4用来检验(validation),1/4用来测试(test)。其中validation

的概念是,在中,加入J函数来考虑函数族的复杂度,以避免过拟合。而validation就是来调正和选择这里的,再用train和validation重新训练模型。

最后,用test数据集,测试并且评估测试误差。

(2) 数据不充分:一种是cross-validation,分成k(比如5-10)份,极端的就是K=N,ave-win-out;另一种是bootstrap,后续章节详述。

Categories
读书有感

≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(九)

眼瞅着这学期也快接近尾声了,也在讲我越来越不熟悉的东西了...

核平滑与局部方法

1. 核平滑器

(1) K-NN(K近邻)

KNN的思想已经说过很多遍了,大致就是找点x的k个近邻,然后取其平均值作为x点y的预测值。不过这里我们就在想了,可不可以加权呀~于是从最简单的,我们给他按距离算个加权平均:,其中代表权重,离x点越近越大,越远越小。这样听起来更make sense一点嘛~近朱者赤,近墨者黑。

(2) 单峰函数

顾名思义,就是长得像一个山峰的函数,比如我们最经典的正态钟型函数,或者翻过来的二次抛物线函数等等。

(3) 权重(按距离)

我们定义权重,再进一步归一化:

多维的情况下,写成矩阵形式就是,其中A为正定对角阵,然后我们就可以加权了。

2. 局部方法

(1) 一般概念

我们有数据集,然后定义函数族。再定义损失函数, 我们的目标就是最小化

相应的引入了加权的概念之后,我们就可以定义加权损失函数:,然后对于每个x做优化,寻找使其最小化的

(2) 具体例子

(i) 局部回归: ,则损失函数为,其中代表已经归一化的权重。

在线性的情况下,我们有,有点类似于我们常见的加权最小二乘法。这里的思想也是,在x点附近的点权重会比较大,离x远的权重则比较小,整体感觉就是在x点附近做了一个回归分析。

(ii) 局部似然:和局部回归蛮像的,只是把损失函数换成(对数)似然函数,即从最大化 到现在的最大化加权似然函数

3. 密度估计与分类

(1) 密度与分类: 我们有x和观测结果G的联合分布:,其中为先验的结果分布,在有K类结果的情况下,写成。这样,也可以写开为 其中

反过来,后验概率,所以我们有贝叶斯分类器

(2) 密度估计

为了使用贝叶斯分类器,我们需要先对密度进行估计。

(i) 直方图: 最简单的就是根据直方图来估计密度,这个没什么好说的...

(ii) 核估计方法(Parzen):Parzen提出的核密度估计为,该估计当在减小的时候,收敛于

4. 核作为基函数

密度函数,然后定义函数族,则其中我iyigexianxingde参数,为指定的函数类,亦为函数参数。这样的话我们有三个函数的参数,指定某一个便可以简化函数形式。不过这里的问题是,没有很好的算法来求解优化问题。比如对于正态分布,我们以写出来,然后的求解就比较复杂了。

上面的两个是非参数方法,下面说一些参数方法。

(iii) 混合模型(GMM, Gauss Mixed Model)

,其中参数有,然后可以利用最大似然准则,最大化,具体算法可用EM,下节课详述。

-----稍稍跑题------

GMM,我印象中它怎么是 Generalized Moment Method, 广义矩估计呢?果然是被计量经济学祸害太深了...

Categories
读书有感

≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(八)

平滑splines

有数据集,然后定义目标函数,记为(1)

式。然后我们有如下结论:使(1)最小化的解一定是分段三次多项式。

证明如下。

为函数族上的分段三次多项式(splines),且在首尾两段上是一次多项式,那么他一定有的自由度。

,则当时,有

(2) 我们设也是(1)式的解,则下面证明一定能找到使得目标函数比小,则,

.

(3)记,则

(4) 下面我们证明,(两者内积为0),即

所以得到

(5)有了上述结论后,我们有,然后有,所以对于所有的g,我们都有其二阶导数的范数小于f的二阶导数的范数,故在(1)式中代入g总比代入f大(或者相等)。这样我们就把一个无限维的最优化问题变为了有限维。

子波分析

1. 函数的平移与缩放

平移:

缩放:

组合起来就是。由此,对于每个,我们可以定义一个函数族,写成矩阵形式就是

2. Hoar函数

(1)定义:

(2)Hoar函数的平滑与缩放。定义Hoar函数族为,

。这样我们每个为一组(胖瘦一样)。

定理1(正交):平方可积函数的一个正交基,即对于任意的,有

定理2(增长):随着d的增加,张成的闭子空间逐渐增大,且。这样,d比较小的函数一定能用d比较大的函数(正交基)来表示,比如。直观的理解就是,d越大,分辨率越高。

定理3(完备):

(3)定义,使,或者

(4)定义,然后

定理4:函数族,,则亦为完备基,且,如果。也就是说,之间的空间随着d的增加,彼此正交,且所有的叠起来之后亦为完备空间。

如此,我们称为子波(mother)而为father函数。注意,这里Hoar函数非连续。

在更一般的场合,我们寻找为father函数,然后定义,满足(正交),且(增长),(完备)。

再寻找mother函数满足(同层次内正交)、(相邻层次正交补)和完备。

这样的到底存不存在呢?实证结论是存在,而且很多,不过坏消息是他们的形式都不算简单。

spline和子波分析

spline和子波分析都提供了一组线性基底,其线性组合可以定义函数类。由此,我们可以定义广义线性模型的函数族,为统计学习模型的函数族做约束。

Categories
读书有感

≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(七)

例行的废话。刚刚看了一下Google Analytics里面的统计,那篇七天搞定SAS果然不负众望的摘得了(单篇博文)点击量桂冠。意外的是居然有那么多人会点击到“关于我”这个页面...呃,对我这么好奇么?

2 /learning-sas-in-7-days-1/
3 /coursera上的r语言课程/
4 /r会议小记/
5 /使用lyxxetex编译中文tex和输出中文pdf/
6 /中文文本聚类小尝试(text-clustering-in-r)/
7 /me/
8 /?统计学习精要the-elements-of-statistical-learning?课堂笔记(一)/
9 /快速将word的doc文件转为latex!/
10 /?统计学习精要the-elements-of-statistical-learning?课堂笔记(三)/

不过他的后续就比较悲催了,点击量寥寥。然后还不出意外的,weibo超越google成为了流量来源第一:

1 weibo.com / referral
2 (direct) / (none)
3 baidu / organic
4 google / organic
5 rss / rss
6 r-ke.info / referral
7 cloudlychen.net / referral
8 h2w.iask.cn / referral
9 so.360.cn / referral
10 yihui.name / referral

果然最近墙发威比较厉害...google啊google...

另外,出乎意料的是一些旧文反而受欢迎,哎~还好看到《统计学习精要(The Elements of Statistical Learning)》课堂笔记系列一直有点击,也算是这一系列写的比较值得吧。今天继续。

----------------笔记开始-----------------

貌似是第五章,不过老师一直在讲一些非常基础的数学预备工具:基展开与正则化,其中用到泛函概念若干。我不知道该开心呢,还是不开心呢,还是开心呢,毕竟泛函学过,毕竟泛函忘得也差不多了...

1. 预备知识

在P维欧氏空间内,我们定义两个运算:加法(x+y)和数乘(),然后定义一下函数空间:上的平方可积函数,同样的定义加法和数乘:f+g和).

接下来还有若干概念...呜呼:

  • 线性组合:
  • 线性独立
  • 线性子空间:我们可以定义线性子空间, , 有.
  • 维数

这些概念连上运算加法和数乘一起,构成线性空间。进一步的,我们可以定义内积空间:

  • 内积:(离散)或连续
  • 之后的正交就很容易定义了:或者
  • 还可以定义正交基...
  • 还有正交子空间:
  • 正交补: , 使得,比如最简单的二维空间里面,X轴和Y轴...
  • 范数:

有了范数以后,我们就可以进一步的定义极限:如果 , 则 ;或者连续的,

然后就是闭子空间的概念了:如果 ,且 ,则必有 ,即极限点都在空间内。注,在有限维空间内,只有空集和全集既开又闭。

还有完备基...总之大致的就是一步步的:定义内积 ->; 内积空间 ->; 存在可数的完备正交基 ->; Hilbert空间(有限维完备空间)

2.B-splines(样条)

2.1 定义

B-splines更多的是一种用离散逼近连续的感觉...好吧我承认我是完全的没有接触过这个东西,扫盲中...

首先,我们有一个闭区间[a,b],然后有个点聚集在其中,且依次增大。然后我们就可以定义一个函数集合: ,然后对于d=0 ,定义分段函数 ,然后就可以递归的定义

举个例子呢,就有. 这样下去,有:

  • d=0,0阶的时候,只有一段函数上有非零值;
  • d=1,1阶的时候,有两段函数有非零值;
  • d=2,2阶的时候,有三段函数有非零值...

2.2 性质

  • 性质一: 是分段的d次多项式;
  • 性质二:局部性:, 当 或者
  • 性质三:光滑:是d-1阶光滑的多项式,即d-1阶导数都等于0;
  • 性质四:如果某一函数满足性质三,则必然和只相差一个常数因子。

2.3 d阶B-splines

我们可以用B-splines来逼近任意一个函数,则有,从这个角度看B-splines有点基底的味道。从分段多项式,到光滑的分段多项式,再到d-1阶光滑的d次多项式,我们就有了 d阶B-splines...

------笔记结束---------

讲了这么多,我一直在猜这些到底是用来干什么的呢...不知道接下来的哪些内容用到了完备内积空间、基展开和线性逼近呢?

Categories
读书有感

≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(六)

呃,我觉得我的笔记稍稍有点混乱了...这周讲的依旧是线性分类器,logit为主。anyway,大家将就着看吧。

logistic regression

首先我们考虑最一般的,有K种分类的场合。依旧,我们用来代替作为观测到的分类结果,那么则有:

为最优的预测结果。这里我们希望找到一种线性的形式,还需要使用一些单调变换保证预测值在之间。因此,我们对于每个分类,假设

进一步的,我们取任意类K作为对照组,且各组相加概率之和必为1,所以有:

所以,最终得到两组之间的概率比值为:

最后求解的时候,就是直接用最大似然准则,来求解

这个最大似然函数计算起来比较麻烦,通常很多是数值解。下面以为例,来展示求解过程。

首先我们这个时候有两类,不妨记作1和0,则

则它的对数似然函数:

然后我们求导可得:

之后可以用牛顿法迭代求数值解:

其中二阶导数部分可以化简为:

经过简化之后,这里相当于加权的最小二乘法,目标函数为

所以整个算法可以写作:

0. 令或任意起始值

1. 计算矩阵.

2. 新的.

3. 重复1,2步直至收敛。

这类方法成为IRLS(不断重写的加权最小二乘法)。

LDA和logit选择

其实也没什么定论,两者均为线性,只是一般我们认为LDA需要假设联合正态且方差相等,比较强;而logit假设没有这么强,相比而言更稳定。

perceptional分类器

perceptional分类器是一类相对简单的分类算法,以两类场合为例。为了方便起见,我们假设两类为1和-1,则目标是找出一条直线可以完全分割出来两群点。这里转化成数学的语言,就是找到W使得

或者简化为:

算法也很简单:

1. 给定任意的W值,比如0. 如果,出错。

2. 令新的,重复第一步。

这里可证一个定理:如果原数据集是线性可分的(即W存在),那么在有限步内perceptional算法收敛。其实从第二步可以看出,这样的改进总是趋近于目标的:,一定是在逐步增加的。

同样的算法推广到多累场合,我们就需要引入特征向量,使得条件概率。这样我们的目标就是找到使得

同样的,从0开始,当时,,直至收敛。

不过有意思的是,实践证明,最后使用训练过程中的的平均值效果会更好,而不是最终的值。

--------笔记结束,废话开始--------

到这里,分类器吴老师已经介绍了三类:LDA,Logit和perceptional。其实我一直觉得比较好玩的是分类器和聚类方法的对比——虽然一个是有监督,一个是无监督的学习,不过有的时候我们就算有的观测值也不一定直接就去用——聚类方法某种程度上显得更加自然一些。这也是大家把模型与实际业务相结合起来的成果吧,总要更符合业务上的直觉才可以。是自然的展现群落的形态,还是给定一些条条框框只是去预测?实践中真的是,都去试试才知道那种更符合一个具体案例的需求。这也是在industry玩的比较开心的缘故,没有那么多条条框框,没有那么多“约定俗成“的规矩,需要自己去一步步挖掘这些算法的用武之地。看着一个个自己熟悉或者陌生的模型被逐渐的改造和应用,也是一件蛮开心的事情呢。