はじめに
Kaggleなどでデータ分析のコンペティションに参加する際には、はじめに何も処理が施されていないcsvファイル(生データ)が与えられます。私がデータサイエンスを学ぶ上で一番やってよかったことは、
この与えられた生データをじっくりと眺め、それぞれのデータの意味を考察すること
です。これにより、データを分析する力と、課題に対して深く考察する力が身につきました。
私自身の失敗談とそこから得た気づき
私はデータサイエンスをはじめたてのころ、csvファイルをダウンロードするやいなや「考察して」というプロンプトと共に生成AIに投げていました。考察も特徴量エンジニアリングも全てAIに任せていました。
しかし、この方法では思考力と分析力が一向に身に付かず、順位も全く上昇しませんでした。ここで私は、自分自身の思考力と分析力は、自分自身が考察することによってのみ身につくということに気がつきました。
AIに全て分析、考察を任せてコンペに参加することは、時間の無駄でしかありません。思考力と分析力を養うためには、AIに丸投げするのではなく、生データと向き合って自分なりに考察するプロセスが欠かせないのです。
そして私は、多くのコンペに参加していくうちに「あれ?これ前回やった前処理と同じパターンじゃね?」と思うことがありました。この記事では、自力でデータの前処理を行う際のおおまかな分類方法を以下にまとめました。
前処理の5つのパターン
生データに対して行う前処理は、主に以下の五つのパターンで分類できます。
- 除外する
- 数値データに変換する
- 処理を加えたグループに分ける
- ワンホットエンコーディングを行う
- 生データを使用する
今回は、タイタニック号を具体例としてみていきたいと思います。
Titanic - Machine Learning from Disaster
このコンペティションは、データ分析の登竜門として知られています。
年齢、性別、チケットクラスなどのデータから乗客一人一人のペルソナを作成し、最終的にタイタニック号沈没時にその人が生存したか死亡したかを予測します。
1. 除外するデータの例
例:PassengerId(乗客のID) など
乗客のIDは、単なる連番であり生存率に直接的な因果関係がありません。モデルに不要なノイズを与えないために、予測モデルの特徴量からは真っ先に除外する判断をします。他にも、欠損値が多くて使い物にならないデータも除外対象になります。
2. 数値データに変換するデータの例
例:Sex(性別) など
male(男性)や female(女性)といった文字列データは、機械学習モデルがそのままでは理解できません。これらを 0 や 1 の数値にマッピング(ラベルエンコーディング)することで、モデルが処理できる形に数値変換を行います。
3. 処理を加えたグループに分けるデータの例
例:Age(年齢) など
年齢は連続した数値ですが、そのまま使うだけでなく「子供」「成人」「高齢者」のようにいくつかのグループに切り分けることで、世代ごとの生存率の傾向をモデルがより捉えやすくなることがあります。Pythonのpandasというライブラリにはqcutという関数があり、これを使うことで指定した数量ごとにデータを均等なグループに分割することができます。
4. ワンホットエンコーディングを行うデータの例
例:Name(名前) など
ワンホットエンコーディングとは、カテゴリ型のデータを「0」と「1」だけで表現する手法のことです。YesかNoで答えられる分岐を用意して、それに応じて「0」と「1」のラベルを決定します。
名前の中に含まれる Mr. や Miss. といった敬称(Title)を抽出し、それをワンホットエンコーディングすることで、「社会的地位は高いか?」や「結婚しているか?」といった新たな視点の特徴量を作成することができます。
5. 生データを使用する例
例:Pclass(チケットクラス) など
チケットクラスは、最初から 1, 2, 3 といった数値で格納されています。さらに「1等客室(数値が小さい、または大きい)ほど生存率が高いかもしれない」というような、数値そのものが持つ意味や順序が最初から活かせるため、複雑な加工をせず生の数値データのままで使用できます。
おまけ 前処理の例
メモツールでのコンペティションの記録
こんな感じでツールに思考を書き出してみると、自分の思考をわかりやすく整理することができます。また、以前の思考を振り返ることができるため、何かしらのツールに思考の過程を残しておくことは非常におすすめです。
おまけ WandBの紹介
思考力を培うという面では、WandB(Weights & Biases)も非常に役に立ちました。kaggleのノートブック上で行った学習をビジュアライズすることができます。学習のスコアがどのような条件で上がるかの考察が捗ります。
WandB (Weights & Biases)
おまけ GCIの紹介
GCIとは、東京大学の松尾豊教授率いる松尾・岩澤研究室がデータを活用できる人材を育成するために開始したプログラムです。無料でデータサイエンスの基礎について学ぶことができます。興味があれば下記の記事を参照してみてください。
おわりに
私は考察と分析を自分で時間をかけて行うようにしたことで、データサイエンスのスキルがみるみると上達していきました。
AIに丸投げせずに、ビジュアライズなどを用いて自分なりの分析する過程を踏むことが、データサイエンスの成長の近道になるはずです。
最後まで読んでいただきありがとうございました。
