難易度:★☆☆☆☆
近年の排出ガス規制によって自動車メーカーは燃費性能の改善が求められており、実際の走行実験による燃費性能の改善が義務付けられています。しかし、この測定には様々な走行条件における測定が必要となるため、測定データを得るためには多大な時間とコストがかかることになります。そこで本クエストでは、この問題への解決手段の1つとして、自動車データを利用し、自動車の燃費を精度高く予測するモデルを作成します。本Questを通じて、データ分析の基本的な手順やモデルの作成方法、さらに、モデルの予測精度向上のために重要な特徴量加工について学びます。
自動車メーカーSIGNATEの新型車開発チームでは、走行実験において排出ガス規制をクリアできずに新型車の開発に失敗するというケースが発生しており、大きな損失を出していました。主な問題は、実際に走行実験を実施しないと排出ガス規制をクリアできる燃費性能であるか評価できない点にありました。あらかじめ燃費性能を計算することができればこの問題を解決できるのですが、燃費は、車の重量やエンジンの仕組みなど、非常に多くの要因が関連して決まるため、計算によって算出することは困難です。そこで新型車開発チームでは、過去の自動車のデータを利用し、燃費を予測する機械学習モデルを作成することで、走行実験前に燃費性能を評価できるようにするプロジェクトを発足しました。走行実験前に燃費性能を評価できれば、効率的に新型車の開発を進めることができ、損失を減らすことができるはずです。実運用可能なモデルを作成することを目標に、プロジェクトを進めていきます。
Mission 1
データ管理部に今回のプロジェクトについて説明し、データを用意してもらったため、データの中身を確認することになりました。データの確認には、Pythonへのデータの読み込みや、データ量等の確認が必要となります。本ミッションでは、ライブラリを使ったデータの読み込み方やデータ量、カラム情報などの確認方法について学びます。
データ分析を始めるにあたって、まずはPython上で扱えるようにデータを取り込まなくてはなりません。
このタスクでは、ライブラリのインポートの方法と、データ分析のための様々なツールが用意されているライブラリ`pandas`を使ったcsvデータの読み込み方法を学びます。
`DataFrame`形式で読み込むことで、各種データについて様々な処理を行う準備ができました。
このタスクでは、読み込んだデータについて、その大きさを調べたり、不要なカラムを削除する方法を学びます。
Mission 2
データの確認が完了したため、モデルを作成する前の事前分析として自動車データの特徴を洗い出すことになりました。どのような情報が燃費と関係性があるのかわからないため、今回は網羅的に特徴を確認していくことにしました。データの特徴を把握することで、予測に役立ちそうな変数やモデルの予測精度を改善するための方策を見つけることができます。データの特徴を見つけるには、データを多角的に見ることが重要です。そこで本ミッションでは、データを俯瞰して見ることや、データの示唆する情報を多面的に捉える方法(探索的分析、EDAと呼ぶ)について学びます。
このタスクでは、データに含まれる各変数について、基本統計量を確認したりヒストグラムを描画することで、その分布の特徴を知る方法を学びます。
データ分析を行うにあたり、分析対象となっているデータの特徴を把握することは重要です。このタスクを通してその基本的な方法を学び、どんなデータに対しても活用できるようになりましょう。
このタスクでは、変数間の相関関係を調べる2つの方法を学びます。
まず、2つの変数の間の相関の強さと性質を表した相関係数を算出する方法を学びます。次に、散布図や箱ひげ図を使って2つの変数をプロットすることで、視覚的にその相関を理解する方法を学びます。
Mission 3
特徴の洗い出しから、4つの変数が燃費と強い関係性を持つことがわかったため、次は実際に燃費予測モデルの作成を実施することになりました。モデルは予測傾向を解釈しやすい重回帰モデルを選択し、ひとまず、特徴量の加工等は行わずにモデルを作成してどれくらいの予測精度となるのか検証することにしました。本ミッションでは、データをモデルに渡すことができる形に変換する方法や、モデルの作成、評価方法について学びます。
このタスクでは、モデルを作成する前の最後のステップとして、与えられたデータを説明変数と目的変数、学習データと評価データに分割する方法を学びます。まず、データフレームから複数のカラムを選択して抽出することで、予測の材料である説明変数Xと、予測の対象である目的変数yにデータを分けます。ここにscikit-learnライブラリに用意されているtrain_test_split関数を適用することで、これらを学習データと評価データに分割します。
このタスクでは、学習済みモデルの精度を評価するための基礎的な手法を学びます。予測モデルの評価には、学習データに対する予測精度だけでなく、評価データに対する予測精度を求めることが大切です。またモデルの予測精度を求めるだけでなく、予測結果を可視化することで、作成したモデルの予測傾向を確認する為の方法を学びます。
Mission 4
作成したモデルは、ある程度の予測精度で燃費を予測できているものの、実運用を想定した場合に現在の予測精度では不十分であると判断されました。そこで、特徴量の加工を行うことで、予測精度の改善を試みることになりました。本ミッションでは、ダミー変数化や対数化といった特徴量加工の方法について学びます。
このタスクでは、質的データを説明変数として扱うための**ダミー変数化**という方法を学びます。前のタスクで説明変数として利用できなかった`drive_system`をダミー変数化した上で、学習データと評価データの分割から予測モデルの評価までを一気におさらいします。
このタスクでは、説明変数の対数化について学びます。線形回帰モデルでは一般に目的変数と説明変数の間の関係性が線形(直線的)な関係であることが望ましく、指数的な関係がある場合、説明変数を対数に変換することで、重回帰モデルの予測精度を向上できることがあります。displacementの対数化を行った上で、もう一度説明変数の選択から予測モデルの評価までを一気通貫で行います。
今回のプロジェクトでは、新型車の走行実験前に燃費性能を評価するために、自動車の燃費を精度高く予測する、実運用可能なモデルを作成することがゴールでした。まずはじめに、データの中身を確認し、データ全体を通して特徴の洗い出しを行いました。その後、数値データのみを用いて重回帰モデルを作成し、予測精度を評価しましたが、実運用には不十分な精度のモデルであると判断されました。そこで、いくつかの特徴量に対して、ダミー変数化や対数化といった特徴量加工を行い、再度重回帰モデルを作成、予測精度を評価したところ、予測精度が向上しました。これでようやく、実運用可能なモデルを作成することができました。本プロジェクトの成果とクエスト全体を通じて学んだことをおさらいしましょう。
Competition
これまで学習したことを元に、SIGNATEの練習問題に挑戦してみましょう。このコンペでは、自動車の属性データからガソリン1ガロンあたりの走行距離を予測するモデル作成にチャレンジします。
Competitionに挑戦する