tldr
線形モデルについて学習しました。
線形モデル
単体では精度は高くなく、GBDTやニューラルネットに勝てることはほぼない。
アンサンブルの1つのモデルやスタッキングの最終層に適用するなどの使いみちが主になる。
回帰タスクの場合は以下のような線形モデルになる
y = b_0 + b_1 x_1 + b_2 x_2 + \dots
学習するのは各変数に対する係数b_0, b_1, b_2, ...
。
分類タスクの場合はロジスティック回帰モデルが使われる。
ロジスティック回帰とは、線形回帰にシグモイド関数を適用することにより予測値の取りうる範囲を(0,1)に制限し、確率を予測するモデルとしたもの。
y\prime = b_0 + b_1 x_1 + b_2 x_2 + \dots
\\
y = \frac{1}{1 + exp(-y\prime)}
特徴
- 特徴量は数値
- 欠損値を扱うことはできない
- GBDTやニューラルネットと比較して精度は高くない
- 非線形性を表現するためには、明示的に特徴量を作成する必要がある
- 相互作用を表現するためには、明示的に特徴量を作成する必要がある
- 特徴量は基本的には標準化が必要
- 特徴量を作るときに丁寧な処理が必要
- L1正則化を行った場合、予測に寄与していない特徴量の係数が0になる性質がある
主なライブラリ
- scikit-learnのlinear-modelモジュール
- vowpal wabbit
目的関数
回帰の場合
平均2乗誤差を最小化するように学習する
分類の場合
2値分類の場合はloglossを最小化するように学習する。
マルチクラス分類の場合はone-vs-restと呼ばれる方法とmulti-class loglossを最小化する方法の2種類ある。
ハイパーパラメータ
チューニングが必要なパラメータは基本的に正則化の強さを表す係数のみ。