generated at
高次元正規分布の距離は平均√D, 分散0.7
高次元正規分布の距離は平均√N, 分散0.7
D次元正規分布N_D(0, 1)に従うデータ点の原点からユークリッド距離は、だいたい平均\sqrt{D}標準偏差1/\sqrt{2}の分布に従う
正確にはカイ分布(カイ二乗分布ではない)
標準偏差が意外と小さい


:
mean= 9.972699059944992 sd= 0.70375223347664 mean= 19.98802691399663 sd= 0.7060739521568569 mean= 29.992667664100654 sd= 0.7078926693796469 mean= 39.99309275039724 sd= 0.7074454497781785

py
import numpy as np import matplotlib.pyplot as plt # サンプル数と次元数の設定 num_samples = 100000 dimensions = [100, 400, 900, 1600] # 次元数の例 # 距離の分布をプロット plt.figure(figsize=(10, 6)) for d in dimensions: # d次元の正規分布に従うランダムデータを生成 data = np.random.normal(0, 1, (num_samples, d)) # 各データ点の原点からの距離を計算 distances = np.linalg.norm(data, axis=1) # 平均と分散 print("mean=", distances.mean(), "sd=", distances.std()) # ヒストグラムをプロット plt.hist(distances, bins=30, alpha=0.5, label=f'{d} dimensions', density=True) # グラフの設定 plt.xlabel('Distance from Origin') plt.ylabel('Density') plt.legend() plt.title('Distribution of Distances from Origin in High-Dimensional Space') plt.show()