人工知能プログラミングのための数学がわかる本:回帰モデルで住宅価格を推定する

人工知能プログラミングのための数学がわかる本Ch5をやってみた

今日はこの本の練習問題に取り組みました。この本、特に前半4章の数学の復習の説明が本当にわかりやすく、僕もバッチリ理解できたのでおすすめです。人工知能、だけでなく統計の準備とかで数学やりたい人、文系出身の経済学部の人とかにもすごくいい書籍だと思います。

今回は回帰モデルで住宅価格を推定するという問題です。

そもそも線形回帰モデルとは

直線上の数値予測モデルのこと

これだけだとわかりませんね。僕たちは中学生の頃に、$$y=ax+b$$という式を習いました。これは一次関数でした。この一次関数が線形回帰モデルの基礎になっています。xに観測値を入れるとyにアウトプットとして出てくるわけです。xのことを説明変数、yのことを従属変数、と呼びます。

今回の回帰式(抜粋)

今回はboston housing datasetというpythonのmatplotlibについているデータを利用します。いくつか変数を抜粋して式として表して見ます。$$MEDV=w_0+w_1CRIM+w_2ZN+w_3CHAS+w_4RAD+u$$となっています。

MEDVは住宅価格の中央値でこれがアウトプット。インプットの変数の全ての説明は割愛しますが、CRIMが人口一人当たり犯罪発生件数、ZNが住居区画の占める割合、CHASがチャールズ川の近くなら1, それ以外なら0を割り当てるダミー変数、RADガ高速道路へのアクセスのしやすさを24の間隔尺度で示したものになります。

ダミー変数と間隔尺度

ダミー変数は分類や区別を行うために設けるもので、今回の場合は1なら近い、0なら近くない、と示すことにより川沿いであることが住宅価格に影響が出るのかどうかを調べています。間隔尺度は間隔に意味のある変数をさします。例えば西暦とか、今回のように1~24までで近さを表したものであるとか。でもこの1~24の間には比例的な関係がないことに注意が必要です。間隔尺度が1と間隔尺度が2の住宅は単純に2倍距離が離れているわけではないからです。

最小二乗法って?

最小二乗法は超簡単にいうと残差の二乗和が最小になるようなパラメータや定数項を探して式に当てはめようという方法のことです。データと完全一致する関数を作ることはできないので、ばらつきを極力まで小さくしてパラメータを求めるわけです。

正則化でか過学習を避ける

正則化は結構難しい概念だった・・・。正則化ではモデルを簡単にするためにモデルの係数wを最小化する項を追加します。モデルの係数が大きいほどモデルが複雑だからでしょうか・・? ここで先ほどの最小二乗法の際に使った誤差最小化の式の最後にL2ノルム(詳しくは本書参照)を足し合わせます。こうしてモデルの係数を小さく設定しておくことで過学習を避けることができるようでした。

モデルの評価

モデルの評価を行う際には、いくつか方法があるみたいなのですがここではモデルデータとテストデータを75%/25%に分けるという方法を使いました。モデルの性能を見るために残差をプロットしてみます。そもそも最小二乗法の際には残差を最小化しようと試みていました。こうして出力したモデル関数の説明変数にテストデータを代入して見て、そこでどの程度残差が発生しているかを見ることにより、モデルの評価ができるのです。0付近に満遍なく散らばっていたら問題なし。

モデルの性能の評価

最後がモデル性能の評価でここではMSEとR^2を使います。R^2は計量経済でも散々出てきた。MSEは実測値と予測値の差をとって二乗してプロットの数で割ってあげればOK。つまり小さければ小さいほどモデルの性能がよろしい。R^2はMSEを実測値の分散で割ってあげて、その数を1から引いたもの。1に近ければ近いほど当てはまりが良いとされる。(なんか理解いまいちだな。)

コード

まあとりあえず70%くらい理解したのでコードを書きながら理解して行くことにしました。以下Pythonコードです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする