novelty日記

データサイエンスやプログラムなど

ざっくばらんメモ_8:kaggle, projective space

kaggle

Resnet regressionモデルを stackingを含めたアンサンブルモデルの中へ 組み込んで見る.

現在学習中(結構時間がかかる)

projective spaceを利用した線分及び面の表現

(x, y)2次元ユークリッド空間における線分は ax + by + c = (x, y, 1)(a, b, c)T = 0 の形式で表す事ができる.

ここで,l = (a, b, c)を線分と呼ぶ.

この時,係数をk倍した場合の kax + kby + kc = (kx, ky, k)(a, b, c)T = 0 も同じ線分を表しているため,このkに関する軸wを新たに含んだ (x, y, w)の3次元空間をprojective spaceと呼び, 対応する線分上の点を(x/w, y/w)で代表して表現する.

ここで,(x, y, w)が線分上の点を表す条件は 上式で(kx, ky, k)を(x, y, w)で置き換えれば, (x, y, w)(a, b, c)T = 0 になる.

これは面表現に拡張する事が可能で,今度は(x, y, z)3次元ユークリッド空間で 考えた時,ある3次元直線ax + by + cz + d = 0があってそれを法線として捉えれば 対応する平面を構成出来る.

すると結局3次元直線だけを考えておけば良い事になる. 対応するprojective space(x, y, z, w)表現は ax + by + cz + dw = 0 となる.

ここでn = (a, b, c)は法線ベクトル(必ずしも単位長でない)で 原点から平面への距離は D = w / ||n|| で表せる.(http://mathinsight.org/distance_point_plane)