curse of dimensionality

  • 输入在p维立方体中符合均匀分布,如果需要覆盖比例r的体积,需要每个维度上\(e_p(r)=r^{1/p}\)

    \(e_{10}(0.01)=0.63,e_{10}(0.1)=0.8\)
  • 输入在p维立方体中负荷均匀分布,p=1时,1000个点达到的采样密度

    在p=10时,需要\(1000^{10}\)个点才能达到

    需要的数据量随维度增加幂增长
  • 输入在p维单位球体中符合均匀分布,使用1-nearest neighbor预测0点的値

    假设有N个训练数据,则这些点到0点距离的中値为

    \(d(p,N)={(1-{(1/2)}^{1/N})}^{1/p}\)

    $ d(10, 500) ≈ 0.52$

    当维度高,数据量小时,最近邻离预测点往往比较远,所以得到的预测偏差大

证明:

p维,半径为r的球体体积为\(V_p(r)=\frac{\pi^{p/2}}{\Gamma(1+p/2)}r^p\)

N个点都在半径为d的球体外的概率为对应部分体积之比\(p(D>d)={(1-d^p)}^N\)

取\(p(D>d)=1/2\),\(d(p,N)={(1-{(1/2)}^{1/N})}^{1/p}\)

  • 1000个训练数据均匀分布在\({[-1,1]}^p\)中,真实\(Y\)和\(X\)的关系,符合以下函数:

    \(Y=f(X)=e^{-8{||x||}^2}\),使用1-nearest neighbor预测在0点的値

    进行bias–variance decomposition

    平均平方误差可以分成在训练集\(\tau\)上的方差,以及模型本身的偏差平方

p = 10时,99%的训练集最近邻离0点的距离都大于0.5

证明:

\(p(D>0.5)={\left(1-\frac{\frac{\pi^{10/2}}{\Gamma(1+10/2)}{0.5}^{10}}{2^{10}}\right)}^{1000}≈0.99757\)

import python
math.pow(1-math.pow(math.pi,5)/120/math.pow(4,10),1000)
figure2.7 **_bais占主要,因为最近邻离的远,函数中有距离项_**

每次训练集采样,得到的最近邻离0点距离差别不大

figure2.8 将函数换成$f(X)={(X_1+1)}^3/2$,Y値只与第一个维度相关

'''
2.5<Local Methods in High Dimensions>
page 25(figure2.7),26(figure2.8)
function2.7 is f(x)=e^{-8||x||^2}
function2.8 is f(x)=(x_1+1)^3/2
x is uniformally distributed in [-1,1]^p ,p is the dimension
MSE,VARIANCE,BAIS is about f(0)
so for function2.7 f0=1
function2.8 f0=0.5
'''
import numpy as np
import matplotlib.pyplot as plt
def func2_7(X):
return np.array([np.exp(-8*np.dot(i,i)) for i in X])
def func2_8(X):
return np.array([np.power(i[0]+1,3)/2.0 for i in X])
def mse_var_bais(N,T,p,func1,f0):
X = np.zeros((T,p))
for i in range(T):
dt = np.random.uniform(-1,1,N*p).reshape((N,p))
st = [np.dot(j,j) for j in dt]
ind = (st==np.min(st))
#get the nearest neighbor
X[i,:] = dt[ind,:]
arr = func1(X)
mse = np.mean(np.power((arr - f0),2))
var = np.mean(np.power(arr - np.mean(arr),2))
bais = np.power(np.mean(arr)-f0,2)
return mse,var,bais
def getMSE_VAR_BAIS(N,T,f0,func1):
VAR = []
BAIS = []
MSE = []
for i in range(10):
mse,var,bais=mse_var_bais(N,T,i+1,func1,f0)
MSE.append(mse)
VAR.append(var)
BAIS.append(bais)
print i+1
return MSE,BAIS,VAR
#MSE,BAIS,VAR =getMSE_VAR_BAIS(N=1000,T=1000,f0=1,func1=func2_7)
MSE,BAIS,VAR =getMSE_VAR_BAIS(N=1000,T=1000,f0=0.5,func1=func2_8)
xa=[i+1 for i in range(10)]
plt.plot(xa,MSE,'ro-',label='MSE')
plt.plot(xa,BAIS,'bo-',label='sq. BAIS')
plt.plot(xa,VAR,'go-',label='VAR')
plt.legend(loc='upper left')
plt.show()

2.5 Local Methods in High Dimensions的更多相关文章

  1. 26 THINGS I LEARNED IN THE DEEP LEARNING SUMMER SCHOOL

    26 THINGS I LEARNED IN THE DEEP LEARNING SUMMER SCHOOL In the beginning of August I got the chance t ...

  2. 反射01 Class类的使用、动态加载类、类类型说明、获取类的信息

    0 Java反射机制 反射(Reflection)是 Java 的高级特性之一,是框架实现的基础. 0.1 定义 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对 ...

  3. Microsoft.AspNet.SignalR 2.2

    Nuget :http://www.nuget.org/packages/Microsoft.AspNet.SignalR/ What is SignalR? ASP.NET SignalR is a ...

  4. Spring Annotation Processing: How It Works--转

    找的好辛苦呀 原文地址:https://dzone.com/articles/spring-annotation-processing-how-it-works If you see an annot ...

  5. REST vs SOAP

    REST vs SOAP These information searched from internet most from stackoverflow. Simple explanation ab ...

  6. ABAP程序执行效率和优化 ABAP Performance Examples

    一.             SQL Interface1.         Select ... Where vs. Select + Check用Select … Where语句效率比Select ...

  7. Introduction to SignalR -摘自网络

    What is SignalR? ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of ...

  8. Web Services and C# Enums -摘自网络

    Web Service Transparency .NET support for web services is excellent in creating illusion of transpar ...

  9. C#基础拾遗系列之二:C#7.0新增功能点

    第一部分: C#是一种通用的,类型安全的,面向对象的编程语言.有如下特点: (1)面向对象:c# 是面向对象的范例的一个丰富实现, 它包括封装.继承和多态性.C#面向对象的行为包括: 统一的类型系统 ...

随机推荐

  1. PL/SQL --> 动态SQL调用包中函数或过程

    动态SQL主要是用于针对不同的条件或查询任务来生成不同的SQL语句.最常用的方法是直接使用EXECUTE IMMEDIATE来执行动态SQL语句字符串或字符串变量.但是对于系统自定义的包或用户自定的包 ...

  2. rnqoj-49-加分二叉树-(区域动归+记忆化)

    区域动归的问题 #include<stdio.h> #include<string.h> #include<iostream> #include<algori ...

  3. 小KING教你做android项目(一)

    写在项目开始之前: 最近关于android的视频教程,入门的书籍也已经有很多了,例如我的入门就是看了mars的视频教程.但是这么一圈学习下来,觉得真正快速提高的,不是在看视频,而是在实际工作中动手做项 ...

  4. REDHAT、CenterOS使用安装Linux系统时的光盘镜像来安装软件

    使用安装Linux系统时的光盘镜像来安装软件 (1)以虚拟机上,安装mysql为例: 查看mysql是否安装 rpm -qa|grep -i mysql    显示下面,证明mysql已安装客户端,下 ...

  5. HTML5 HybridApp开发上手指引

    眼下我们项目是基于AngularJS和ionic框架开发的Hybrid App.支持android phone/pad, iPhone,iPad四个平台版本号.以及微信版. 由于使用的技术有点新,所以 ...

  6. LR性能测试应用

    上半个月,由于工作和上课两边跑,几乎没有属于自己的时间去做自己想做的事,在没有加班的一天晚上,我突然冲动地跑到图书馆借了一本书<LR性能测试应用>——姜艳. 我总喜欢看那些陈旧的书,因为在 ...

  7. Flex布局实践

    介绍常见布局的Flex写法. 你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我只列出代码,详细的语法解释请查阅<Flex布局教程:语法篇>.我的主要参考资料是Landon S ...

  8. Bootstrap的datepicker控件

    为input 控件的text 添加datepicker()方法后,原本的控件change事件无法正常触发.原因是项目中同时使用了用了jquery ui,碰巧它里面也有一个datepicker,名字一模 ...

  9. Springmvc和velocity使用的公用后台分页

    Springmvc和velocity使用的公用后台分页 类别                    [选择一个类别或键入一个新类别] Springmvc和velocity使用的公用后台分页 样式: 使 ...

  10. a:hover span 隐藏/显示 问题

    :hover是我们在CSS设计中最常运用的伪类之一,许多绚丽效果的实现离不开伪类:hover,比如我们常见的纯CSS菜单.相册效果等等. 或许用了这么久的伪类:hover,还有部分朋友还不完全了解ho ...