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\)上的方差,以及模型本身的偏差平方

  1. 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\)

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

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

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

  1. '''
  2. 2.5<Local Methods in High Dimensions>
  3. page 25(figure2.7),26(figure2.8)
  4. function2.7 is f(x)=e^{-8||x||^2}
  5. function2.8 is f(x)=(x_1+1)^3/2
  6. x is uniformally distributed in [-1,1]^p ,p is the dimension
  7. MSE,VARIANCE,BAIS is about f(0)
  8. so for function2.7 f0=1
  9. function2.8 f0=0.5
  10. '''
  11. import numpy as np
  12. import matplotlib.pyplot as plt
  13. def func2_7(X):
  14. return np.array([np.exp(-8*np.dot(i,i)) for i in X])
  15. def func2_8(X):
  16. return np.array([np.power(i[0]+1,3)/2.0 for i in X])
  17. def mse_var_bais(N,T,p,func1,f0):
  18. X = np.zeros((T,p))
  19. for i in range(T):
  20. dt = np.random.uniform(-1,1,N*p).reshape((N,p))
  21. st = [np.dot(j,j) for j in dt]
  22. ind = (st==np.min(st))
  23. #get the nearest neighbor
  24. X[i,:] = dt[ind,:]
  25. arr = func1(X)
  26. mse = np.mean(np.power((arr - f0),2))
  27. var = np.mean(np.power(arr - np.mean(arr),2))
  28. bais = np.power(np.mean(arr)-f0,2)
  29. return mse,var,bais
  30. def getMSE_VAR_BAIS(N,T,f0,func1):
  31. VAR = []
  32. BAIS = []
  33. MSE = []
  34. for i in range(10):
  35. mse,var,bais=mse_var_bais(N,T,i+1,func1,f0)
  36. MSE.append(mse)
  37. VAR.append(var)
  38. BAIS.append(bais)
  39. print i+1
  40. return MSE,BAIS,VAR
  41. #MSE,BAIS,VAR =getMSE_VAR_BAIS(N=1000,T=1000,f0=1,func1=func2_7)
  42. MSE,BAIS,VAR =getMSE_VAR_BAIS(N=1000,T=1000,f0=0.5,func1=func2_8)
  43. xa=[i+1 for i in range(10)]
  44. plt.plot(xa,MSE,'ro-',label='MSE')
  45. plt.plot(xa,BAIS,'bo-',label='sq. BAIS')
  46. plt.plot(xa,VAR,'go-',label='VAR')
  47. plt.legend(loc='upper left')
  48. 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. 我的第一个MFC的ArcGIS Engine程序

    原文 http://blog.csdn.net/zzahkj/article/details/9003518 (第一版,以VC++6.0+AE9.3为例) 首次,学习MFC,写个笔记,MFC还是挺好学 ...

  2. hdu 4620 Fruit Ninja Extreme

    Fruit Ninja Extreme Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  3. haproxy nginx 多路径

    nginx 多路径: location / { root /t/deploy/zjdev/deployedApps/zjzc-web-frontEnd/; index index.html index ...

  4. COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)

    声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改而来,因此同样遵循Code Project Open L ...

  5. C#中删除字符串最后一个字符的几种方法

    转载地址 偶然看到的,记录一下,以免忘记 字符串:string s = "1,2,3,4,5," 目标:删除最后一个 "," 方法:    1.用的最多的是Su ...

  6. curl 浏览器模拟请求实战

    1,curl 常用选项

  7. 【转】10个你必须掌握的超酷VI命令技巧

    摘要:大部分Linux开发者对vi命令相当熟悉,可是遗憾的是,大部分开发者都只能掌握一些最常用的Linux vi命令,下面介绍的10个vi命令虽然很多不为人知,但是在实际应用中又能让你大大提高效率. ...

  8. 总结FormsAuthentication的使用

    一.先看一下使用FormsAuthentication做登录认证的用法 用法一: FormsAuthentication.SetAuthCookie(username, isPersistent); ...

  9. Beauty of Array(模拟)

    M - M Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status P ...

  10. C++中的初始化列表中可以对那些变量或对象进行初始化

    构造函数与其函数体之间可以添加初始化列表,能对某些对象进行初始化.格式为 类名() : 变量1(参数1),变量2(参数2) { } 1.     父类的对象的构造必须在初始化列表中,如: 子类名(): ...