理解度チェック
- アフィン関数とは?
- アフィン関数を線形関数にするためによく使われる方法は?
- バイアスとは?
- バリアンストは?
- バイアスとバリアンスの関係は?
- 次の手法について説明せよ。
- holdout法
- cross validation法
- leave one out法
- bootstrap法
バイアス項とバリアンス項(分散項)の導出のところで悩んだ。
一般にE[X2] = E[X]E[X]が成り立つと思い込んでしまっていて、バリアンス項って消えるんじゃない?何これ?となっていた..。
XとYが独立な場合はE[XY] = E[X]E[Y]ですが、XとXは独立じゃないので、バリアンスの項は消えませんね。
基本中の基本を忘れてました。
例えばサイコロに{-2, -1, 0, 0, 1, 2}という数字を書いて、2回投げたときにそれぞれ出る値をX、Yとすると、E(XY) = E(X)E(Y) = 0となりますが、E(XX)は0にはなりませんね。
試してみたこと
N個のデータからN回復元抽出(sampling with replacement)すると、あるデータが少なくとも1回は抽出される確率は1-e-1となるってのが面白かったので試してみた。1-e-1は 劣モジュラ関数の最適化や回路の時定数などでも出現する値で興味深い。
import numpy as np import seaborn as sns import matplotlib.pyplot as plt def bootstrap_unique_freq(n): x = np.random.randint(0, n, n) return len(set(x)) / n if __name__ == '__main__': t = 100 # iteration ns = [] # sample size xs = [] # unique sample freq for n in [10, 100, 1000, 10000]: ns.extend(n for _ in range(t)) xs.extend(bootstrap_unique_freq(n) for _ in range(t)) sns.boxplot(x=ns, y=xs) plt.show()
箱ひげ図を書いてみた。
x軸は元のデータ数、y軸はブートストラップサンプルしたときのユニークなデータ数。
0 件のコメント:
コメントを投稿