特徴量の作り方

先日書いた↓の記事のちょっとした続編。

【Kaggle】Bike Sharing Demandを予測してみた - naohachi89’s diary

 

上記のコンペティションについて、参考になる記事があったのでゆるふわな感じで日本語でまとめてみる。全訳はたいへんなので、飽く迄ゆるふわな感じで。記事はこちら。


A simple model for Kaggle Bike Sharing. – brandonharris.io

 

元データからシンプルな特徴量を作ってconditional inference treesで予測したら結構良い精度が出たよというお話。使う言語はR。以下、記事の大まかな流れ。

 

始めに、元データから天気や季節等の、自転車の貸し出しに大きく影響を与えそうな要素をそのまま特徴量とする。windspeedとかは自転車の貸し出し台数にそんな影響ないだろうということで無視する感じ。

次に、日付と時刻に関する情報を特徴量とすることを考える。日付と時刻は元データだと"2011-01-01 00:00:00"という形式なので、そのままだと使えない。そこで日付と時刻を分離させて、その上でそれぞれに関する特徴量を作っていく。

 

日付については、始めに各日付に対して関数を使ってその日付の曜日を割り出し、曜日ごとの貸し出し台数の平均を算出する。すると、どうやら日曜日の貸し出し台数が他の曜日と比べて少ないので、「日曜日か否か」を0/1で示す特徴量を追加する。

時刻については、元データで時刻が1時間刻みで記録されているので、これを0時~23時までの24種類の値を持つカテゴリカルな特徴量とする。次に、貸し出し台数は1日における時間帯(朝、昼、夜等)によって変わってくると考えられるので、1日を6時間ごとに4つのパートに区切って、これもカテゴリカルな特徴量とする。特徴量を作る話はこれでおしまい。

特徴量が出来たら、後はconditional inference treesを使って予測する。予測してみると、0.49523という結構良さげな結果が得られましたとさ。めでたしめでたし

 

feature engineeringはこれまできちんと勉強したことがなかったので、為になる記事だった。ちなみに、貸し出し台数に一番寄与する特徴量は時刻らしい。深夜3時に自転車を借りる人とかほとんどいないだろうし、そりゃそうだ。