やり直す? ▪ もっと良い方法があります リッジ回帰 - 問題の定義 N … データ数 M … 説明変数の数 X … 説明変数のN×M行列 y … 目的変数のN次元ベクトル λ … リッジ回帰の正則化の係数 I … 単位行列 w … 回帰係数 ▪ 問題文 ▪ 説明変数の行列 X と目的変数のベクトル y が与えられます。 ▪ リッジ回帰してください。 ▪ ただし、データは1行ずつ渡され、データが渡されるごとに回帰 係数を求め直す必要があります。
リッジ回帰 - 修正コレスキー分解を使って を求める def ldl_solve(LD, b): n = len(LD) x = b.copy() for i in range(n): x[i] -= np.dot(LD[i, :i], x[:i]) x /= LD.diagonal() for i in range(n - 1, -1, -1): x[i] -= np.dot(LD[i + 1 :, i], x[i + 1 :]) return res
どうやって計算するの? X … 説明変数の行列 y … 目的変数のベクトル x i T … Xのi行目 x*T … 予測したいデータ K … i行j列の要素はk(x i T, x j T) k* … i番目の要素はk(x i T, x*) k** … k(x*, x*) λ … ノイズの分散 I … 単位行列 カーネル関数が適切であれば対称正定値