「CatBoostと特徴エンジニアリングでテーブルデータ解析AIハンズオン」に参加した

Nov 20, 2022 12:10 · 2175 words · 5 minute read Python 機械学習 AI

「CatBoostと特徴エンジニアリングでテーブルデータ解析AIハンズオン」に参加したので、感想や学んだことをブログに残しておきます。

目次

イベント情報

【ゼロから作るシリーズ】CatBoostと特徴エンジニアリングでテーブルデータ解析AIハンズオン!! - connpass

Discordで主催者の方の画面を共有しながら、Google Colaboratoryでハンズオンを行う形式でした。

今回のお題

Nishika株式会社さんが主催している「中古マンション価格予測コンペ」のデータを使って、中古マンションの価格予測をします。

Nishika - 中古マンション価格予測 2022夏の部

イベントの内容

下記の内容について、座学とGoogle Colaboratoryを使ったハンズオンをしました。

  • テーブルデータとは?
  • 前処理とは?
  • Pandas
  • 使えそうなデータを抽出、不要なデータを削除
  • データクレンジング
  • CatBoost
  • Label Encoding
  • 特徴量エンジニアリング
  • 数学的エンジニアリング、数学的特徴エンジニアリング
  • Count Encoding

ハンズオンの資料、動画、データ

下記で公開してくれています。

資料
【ゼロから作るシリーズ】CatBoostと特徴エンジニアリングでテーブルデータ解析AIハンズオン!! - connpass

ハンズオン動画
【ゼロから作るシリーズ】CatBoostと特徴エンジニアリングでテーブルデータ解析AIハンズオン!! - YouTube

ハンズオンで使ったデータ
Connpassイベントページに書いてあるDiscordサーバ内にURLがあります。
【ゼロから作るシリーズ】CatBoostと特徴エンジニアリングでテーブルデータ解析AIハンズオン!! - connpass

学んだことのメモ

学んだことのメモ書きです。私はこの分野について素人なので、もし内容が間違っていたらTwtiterで教えていただけると嬉しいです。

テーブルデータ

  • Excelのように「いい感じ」にまとまっているデータ。

前処理

  • データを扱いやすい形に手直しする。
  • 「使えないデータ」「欠損したデータ」を削除したり、使えるデータをPandasで抽出したり。
  • 前処理とデータクレンジングが一番時間がかかる。

データクレンジング

  • データの形式を整える。例えば、本来数値であるはずのところに文字などが入っている場合にデータを変換する。
    • 例:和暦を西暦に揃える、「g」「kg」のような単位を揃える
  • 「順序に意味があるもの」と「順序に意味が無いもの」に分ける。順序に意味が無いものはラベル付けする。

CatBoost

  • 任意のしきい値を使ってデータを分割する。
  • 「データがどこに属するのか」を推定する。
  • 「Cat」は「Category」の「Cat」。猫じゃなかった。
  • CatBoost - open-source gradient boosting library
  • 勾配ブースティング決定木。
    • 勾配:ブースティングで前回学習したモデルの勾配を使って新しいモデルを作る。
    • ブースティング:今まで学習したモデルを使って新しいモデルを学習する。

Label Encoding

  • 日本語など文字の情報を数値のラベルに置き換える。

学習に使うデータと検証に使うデータを分ける

  • 学習に使ったデータと別の検証データを使うことで、学習データ以外でも汎用的に使える学習結果であることを証明できる。

特徴量エンジニアリング

  • データ同士の関連性を明示的にAIに伝える。
  • 「AIに関連を伝える」→「AIの出した予測と、予測に寄与した関連性の調査」を繰り返し、精度を上げていく。
  • お題によっては、自分が知っている常識をAIに伝える。
    • 例:建物のある都道府県と駅からの近さが建物の価格に影響する。

CPUとGPU

  • 最近の機械学習はGPUを使わないと時間がかかってしまう。
  • GPUを使うと2分で終わる学習がCPUだと20分かかったりする。
  • GPUの場合はSeedが同じでも計算結果に違いがでることがあるらしい?(なぜ?)CPUだと同じ結果がでるらしい?

数学的特徴エンジニアリング

  • 「データの差」や「しきい値」をAIが自分で判断することは難しいらしい。
  • 数学的エンジニアリングをすることで、カラムの差をAIに教える。
  • 例えば、平均や比でAIに差を伝える。
    • 平均から遠い結果は「データの数が少ない」、平均から近い結果は「データの数が多い」と考えられるらしい。
    • 平均との比で「データが平均に対してどれだけ特異なものか」を表現できる。
  • 中央値や分散など、様々な統計の式が使える。

Count Encoding

  • 出現回数をラベルとして割り当てる。

イベントの感想

「資料」「ハンズオンの内容」共にとても丁寧で、「これ、無料で受けていいんですか?」と思うくらい勉強になったイベントでした。 主催してくださった「OPamp(@warning_voltage) / Twitter」さん、ありがとうございました。

イベント中は初めてのPandasと不慣れなGoogle Colaboratoryの操作でハンズオンについていくのに必死でしたが、あとで資料を見返すと、Excelでデータを操作するのと同じ感覚でPandasでデータを操作していることがよく分かりました。

今回のハンズオンを通して、「データエンジニア」や「データサイエンティスト」と呼ばれる方たちがやっていることの雰囲気を知ることができました。 資料やハンズオン動画が公開されているので、データエンジニアに入門したい方は、今回のコンテンツで一歩を踏み出してみてはいかがでしょうか。

tweet Share