注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

行走的馒头

Stay Hungry, Stay Foolish

 
 
 

日志

 
 

四、Kernel Smoothing Methods  

2012-09-01 22:50:08|  分类: 统计学习初探索 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

在前面的linear regression中,我们在整体上有一个model,这个model能够去拟合样本空间所有的点。因为能够站在整体角度把一个问题描述的非常清楚和精确往往是大师们的本事,我等小民往往可望而不可及。这个时候,我们对问题就需要从一个local的角度去看待,这时的方法往往是"只见树木不见深林"。这种local的方法本质上都是KNN(K nearest neighbor)的问题,只是在找这K个neighbor的时候我们可以采取不同的策略。Local的策略也称之为memory based methods, 因为我们没有一个对于样本空间上所有地方放之四海而皆准的model,所以对于新来的一个样本,我们就需要遍历所有的样本来求解,不存在offline的训练过程,所以这种方法在实时系统中运用存在很大的挑战。

 

Kernel Smoothers

简单起见,我们这里的讨论都针对X是一维的情况,多维数据的处理是类似的。对于KNN,我们知道,下面是一个用KNN拟合一条有噪声的曲线的示意图。蓝线表示真正的曲线,绿线表示用KNN拟合的效果。

可以看到,这样拟合出来的曲线存在很多问题,比如不连续和不光滑。一种改进就是对于这K个近邻,我们给予它们不同的权重,距离越近,权重越大,距离越远,权重越小。其中一种叫做Nadaraya–Watson kernel-weighted的方法可表示为

其中 一种核函数,叫做Epanechnikov quadratic kernel,可表示为

改进后的示意图如下,可以看到拟合的效果有很大的改进

当然,我们可以使用更加通用的核函数

    

其中 决定了在样本点 处邻域的宽度。在上面的Epanechnikov quadratic kernel中, , 是其辐射的半径,对于高斯核函数来说,就是标准差。Smoothing parameter  控制着邻域的宽度,的值越大,其领域越宽广,所包含的数据越多,这样暗示着variance会越小,但是bias可能会比较大。可以看到,对于Epanechnikov quadratic kernel,其bias是固定的,但是variance跟local density呈现出反比例的关系,因为这时跟邻域数目K没有多少关系,而跟目标样本点本身周围的密度有关。而对于KNN则恰好相反,其bias是跟local density成反比例的,而variance总是不变的。因为KNN总是取K个紧邻,所起variance不受影响,但是如果local density比较小,所取的K个近邻其实都相隔比较远,那么其bias自然就会比较大了。

在自变量X是多维的情形时,核函数把 改成相应的向量 即可。但是在多维的情况下会存在一些问题,比如在每个维度上样本间的距离可能相差很大,这时用一个球形的邻域就不太合适。一种方法是在每个维度上对数据进行标准化,另一种方法是用一个半正定的矩阵 去调整在各个维度上距离的贡献

如果 是对角阵,那么增加或者减少 就会增加或减少特征 的贡献。

 

 

Local Linear Regression

前面使用核函数的local weighted average方法仍然会出现一些缺陷,如下图

可以看到,这种方法在边界处的拟合效果不尽如人意,因为在边界处核函数找到的临近点不具有对称性,这样一来就增大了bias。在local weighted方法中,我们其实认为因变量Y和自变量X没有神马关系,因为我们只是把邻域中所有样本对应的Y值平滑一下作为目标点的Y值。想象一下,在linear regression中,如果Y和X没神马关系,相当于用 这条平行于X轴的直线去拟合,其bias自然大。如果我们增加Y和X的关系,比如,则拟合的效果自然使bias变小了一点。在这里的local方法中,对于每一个目标点我们同样可以使用的model来减小bias,这种方法就叫做local weighted regression。

在local weighted regression中,对于每一个目标点 ,我们要做的就是

这时

需要注意的是,虽然此时我们在所有样本上做weighted linear regression,但是我们只是用它来fit在样本 处的值。

    我们定义二维向量 , 表示 的样本矩阵,其第i行为 。 表示的对角矩阵,其对角线上第i个元素为 。可以得到拟合的值如下

因为 跟因变量Y无关,所以拟合的值是样本值的线性加权。可以看到把最小二乘和核函数联系了起来,因此有时候也叫做equivalent kernel。

下面是local weighted regression的拟合图。可以看出,相比于上面的local weighted average方法,其在边界处拟合的效果更好一点。

 

Local Polynomial Regression

    当然我们可以把local weighted regression扩展到更高的阶数。对于阶数为d的多项式拟合,我们不难得出我们的优化目标如下

下面的图比较了local weighted regression 和local quadratic regression (对应于d=2)。

红色的线表示在 出拟合的曲线。

可以看到,随着阶数d的增大,bias会越来越小,但是variance则越打越大,可以用cross validation等方法来找到其中的tradeoff。

 

Local Likelihood

    其实,任何参数化的model通过对不同的样本赋予不同的weight都可以改写成local的方法。在以前的似然函数的方法中,我们的目标函数是把每个样本的概率取log然后加起来,可见每个样本贡献的权重都是一样的,在local的方法中可以改变每个样本的权重,比如在样本点 处,同前面的local weighted regression类似,设置参数 ,每个样本的似然值可表示为,则针对于 的local的似然函数可以表示为

以前在用似然函数求解的logistic regression等广义线性模型中,我们都是用全局线性关系去刻画的,现在用local 的似然函数可以用局部线性关系的角度去看待。

 

 

Kernel Density Estimation and Classification

 

Kernel density estimation

假设我们现在有一些样本点 ,这些样本点来源于一个未知的分布,这个分布的密度函数为 ,我们要做的事情是估计密度函数在样本点 处的值。为了简单起见,我们这里假设X是一维的。最简单的方法当然是KNN的思想

其中 是 周围宽度为 的邻域。

同kernel smooth类似,一种更加平滑的改进是smooth parzen estimate

在这种方法中,在计算邻域中样本点数目的时候考虑到了这个样本点到目标样本点的距离。一个常用的核函数是高斯核函数。

 

Kernel Classification

对于一个K分类问题,在训练样本中对于每一类我们都可以做kernel density estimation,,对于每个类的先验概率 我们可以从训练样本中去估计,然后通过贝叶斯公式我们得到

 

Naive Bayes

    如果自变量X的维度非常高,这个时候做kernel density estimation可能就不会那么有效,因为在高维空间中数据一般都是相当稀疏的。这时Na?ve Bayesian就发挥作用了,其假设各个特征都是相互独立的,类j下的密度函数可如下所示

尽管我们知道特征相互独立的假设通常都是不正确的,但是na?ve Bayes的效果确实出奇的好,而且na?ve bayes的实现非常简单,在实际中使用的非常广泛,一个著名的例子就是垃圾邮件的分类。

 

 

Radial Basis Functions and Kernels

结合前面的基变换和核函数,我们可以用核函数来进行基变换,形式如下

对于每个基元素都有prototype parameter  和scale parameter  。通常我们可选择D为高斯密度函数。使用高斯核,我们得到目标函数如下

这种方法通常被称为Radial Basis Function network (RBF network)。这时目标函数是非凸的,存在很多局部最优解。然而通常,我们可以把对 的估计和 的估计分开。如果所有的值都确定了,可以看出来对于的估计就是一个最小二乘的问题。而的估计可以用unsupervised的方法,只涉及到自变量X的分布。通常可以使用高斯混合模型去估计

 


  评论这张
 
阅读(3925)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017