Categories
读书有感

统计学习精要(The Elements of Statistical Learning)课堂笔记(二十三):原型方法和最近邻KNN

笔记(二十二)需要等我找到上一本笔记本再说,暂时不知道扔到哪里去了...汗。届时补上。

这一章主要是讲的原型方法(prototype)和最近邻(KNN)。相对而言直觉更强,公式没那么复杂。

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

1. 原型方法

1) 1-NN 最近邻居方法

最极端的情况:只找到最近的一位邻居。

数据集,输入,在中找到与最近的邻居,输出对应的类标记

2) 类中心的方法

类中心: ,相当于对于一群有着同样类标记的点,对x取平均。

输入:,而后在所有类中心中与其最近的类中心

输出:对应的类标记。

3) 对每个类可计算若干个“中心”(称之为原型或者样板,比如在每类中做聚类)。

输入:,而后在所有类中心中与其最近的类中心

输出:对应的类标记。

4) K-NN方法

输入:,在中找到与最近的K个邻居。

输出:(最多的那一类,从众原则的感觉)。

由于这一类方法都比较懒,所以称之为lazy learning methods.

2. K-NN方法的错误率(渐近性质)

1) 结果

为Bayes分类器的错误概率(最优分类器);为1-NN分类器的错误概率。

则有:当样本数时,。接下来会证明这个优良的性质。

2) 分类问题

给定,则

这里我们称 为先验分布,为类分布。从而

,称之为后验概率。

3) Bayes分类器

x对应的,即使得后验概率最大的k。

所以,,从

4) 1-NN分类器

1-NN输出的是离x最近的对应的,则

由于只限训练集,而那部分只跟测试集有关,所以由独立性我们可以拆分为:

,则当时,,,上面一项可以收敛为,为后验概率(条件误差)。

5)由于,设为所有中最大的,则

6)。得证。

下一章会讲到聚类,然后就是降维了。

Categories
读书有感

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

梯度树提升算法(GTBA, gradient tree boosting algorithm)

继续boosting类算法哎。小小预告一下,下节课会直接跳到随机森林,老师貌似是想把各种分类器都一下子讲到,然后有点前后照应的比较~真有意思,若是以前扔给我这种问题我肯定run一个logit regression就不管了,现在倒是有各种线性的、广义线性的、非线性的模型可以试着玩了,爽哎~

------------------

1. 自适应基函数模型

小小的复习一下上节课那个框架。

1. 数据。

2. 模型。 为基函数模型,其中成为基函数集合。为参数。

3. 损失函数(准则)。 为损失函数,然后就转为一个优化问题:

4. 算法。 前向分步算法。

  • 初始化:
  • 迭代:For m=1 to M,
  • 输出

在此框架之下,除了上节课的Adaboost之外,还可以套用多种其他的基函数,然后1)定义损失函数 2)给出迭代那一步的优化算法,就可以实现一种boost提升算法了。

2. 应用回归问题

先采用均方误差的损失函数,定义,这样就可以得到

然后定义:

。这里之后用回归树来求的话,就是梯度回归树算法。

梯度回归树提升算法

  • 初始化:
  • 迭代:For m=1 to M,计算。由用回归树求得.
  • 输出

3. GTBA,梯度树提升算法

先吹捧一下:这个算法就是此书作者本人开发的,然后已经搞出来了软件包,可以做回归也可以做分类,貌似效果还胜过随机森林(当然是作者自己给出的那些例子...)。

损失函数为可微的。

我们的优化目标是,也就是说实际上我们不是直接对进行优化,而是仅仅在所有观测的数据点上优化,所以仅跟在这些观测点上的值有关。感觉这里就是说,我们使用有限的观测到的信息来推断一个连续的函数,然后类推并用于其他未观测到的点。

定义:

,这样这个问题就从一个直接优化的泛函问题转化为一个优化多元函数的问题...而对于一个多元函数,我们可以直接用梯度下降法。定义梯度为:

,这样。类似的,我们可以定义,其中。累加起来,就是

,这里可以是常量也可以随着改变。

定义完梯度下降之后,就是GTBA算法了。

  • 初始化。
  • 迭代:For m=1 to M,计算,然后由用回归树求得
  • 输出

一些梳理

1. 参数。这里显然有如下参数需要设定:

  • M:迭代次数。这是这个算法最主要的参数,需要用Cross-validation来算。
  • J:树的大小。建议4-8,默认为6。
  • :收缩系数。这里可以加上这个参数,决定收缩的速度,0-1之间。
  • :次采样率,0-1直接,默认0.5。用于做subsampling。

2. 特征变量评价

这个算法的一大优势就是可以给出各个自变量的评价。比如的时候我们可能面临特征变量选择问题。

用t表示树中的节点,表示t节点所用的变量,表示t节点产生的均方误差的减小值。之后定义:

,可用这个值来刻画变量的重要性,从而进行特征评价。

3. 通用工具

该算法对于数据无特殊要求,有一批都可以扔进去试试,故可以作为其他算法的benchmark。

此外,从贝叶斯分类器的角度,我们要找的是,这样除了原有可以观测到的之上,还可以衍生出一个向量,即,第k个位置为1如果观测到的对应第k类。一下子就可以扩展整个数据集,也可以进一步对每类都赋一个概率,不单单是0-1这样。

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, 广义矩估计呢?果然是被计量经济学祸害太深了...