比較・検証も簡単ではない
昨日の記事の通り,今日は実際にデータを使って比較・検証を行うって話でしたが,実際にやってみるとなかなか難しい.
データを探すのが大変
まず,分析に使うデータの選定が難しい.データは無償公開されているUCI Machine Learning Repositoryから探しているんですが,回帰分析なので出来れば実数データ(Real)オンリーの奴がいいんだけど,これがなかなか.とりあえず今は,WineQualityデータセットで何とかならないか試行錯誤中.
Lassoのパラメータ設定が難しい
Lassoの説明をする前に,まず普通の回帰が最小化する目的関数について簡単に説明します.
普通の回帰
上記の目的関数を最小化するのが普通の回帰です.これは最小二乗法と言って,実際のyと回帰モデルから予測されたy'との残差平方和が最小になるようにモデルを構築することをいいます.ちなみに,残差平方和が小さいほど精度の良いモデルが構築できたということを意味しています.
Lasso回帰
Lasso回帰は上記の目的関数を最小化することを目指すわけですが,この式の第1項は上でも出てきた残差平方和の部分です.で,第2項が罰則項と呼ばれる正則化項です.
昨日の記事で,Lassoが変数選択をしてくれるという話をしましたが,この罰則項の部分がそれを担当しています.
式全体を見ると,この目的関数は,第1項がモデルの精度を評価し,第2項で変数選択を行い,両者の結果を合わせたものを最小化することを目指す,と解釈できます.これは多分,モデル精度と変数の数とのバランスを取る事を意味しているんだと思うんですが,まだよくわかりません!
パラメータ(α)の設定
で,問題のパラメータ設定ですが,この式を見てもらうと,罰則項の部分にαという変数があるのがわかると思います.αの役目は,この式において罰則項にどれだけの影響度を持たせるのか?という部分にあります.極論,αを0にすると,構築されるモデルは普通の回帰と同じものになります(第2項が0になりますからね!).
良いαを決定するには,ある方法を利用しなくてはならないんですが,その話はまた明日ということで!とにかく,パラメータ(α)の設定も色々考えなくてはならないのです!
結局,上記の問題もあって比較・検証は後日ということになりました.なんとか明日には載せられるようにしよう・・・
*注*
今回の記事の中には間違った記述が含まれている可能性があります.気づいた時点で訂正しますが,正しく理解したい方は色々とググってみてください.
画像の出典
scikit-learn, "Generalized Liner Models"
http://scikit-learn.org/stable/modules/linear_model.html