All Articles

前処理大全は機械学習に関わる人の必需品

本橋智光さん著の「前処理大全 データ分析のためのSQL/R/Python実践テクニック」を読み終えたのでレビューする。 感想を述べると「機械学習のモデルはなんとなく理解できたけど、モデルをどのようなデータを渡して訓練すれば良いか分からない人に良い」。

良いと思った点

駄目なコードと良いコードが併記されている

本書ではSQLとRとPythonの3つの言語で各前処理のコードの書き方が分かる。個人的にはRは必要なかったが、読む対象を広げているのだなという印象を受ける。

この本は更に良いのは、実装するコードが「Awesome(良い)」と「Not Awesome(悪い)」のさらに2種類に分けてコードが書かれている。特にSQLに関しては書き方に気をつけないとフルサーチになってしまうので、この点に関しては気をつけていったほうが良いなと感じた。

例えばランダムに半分データを撮ってくるSQLを書くと以下のように2種類併記されている。

Not Awesome

SELECT *
FROM sample_database
-- データ行ごとに乱数を生成し、乱数の小さい順にデータを並び替え
ORDER BY RANDOM()
-- 事前にカウントしたデータ数を入力し、抽出する割合を掛ける
LIMIT ROUND(120000 * 0.5)

Awesome

SELECT *
FROM sample_database
-- 乱数を発生し、0.5以下を取り込む
WHERE RANDOM() <= 0.5

正規化や欠損の補完など細かいテクニックが分かる

線形モデルは特に残差が正規分布に従う仮定に基づいているので、値を正規化しないと精度が落ちてしまう。そのような場合での数値の正規化の方法などが書かれている。また欠損の定数の補完、集計値の補完など様々なテクニックが説明されている。

最後に

この本では「前処理」の具体的なテクニックをコードを用いながら学習できると感じた。内容も難しくないので、機械学習やり始めの方はぜひ手にとってほしい。