難易度:★☆☆☆☆
限られた客室在庫を効率よく、良い値段で販売することが利益の最大化に直結する宿泊業界にとって、宿泊価格を適正に設定できるかは非常に重要な問題です。宿泊サービス提供者は様々な情報を集め、試行錯誤しながら適正価格を算出しています。 これは個人物件を宿泊用に貸し出すAirbnbにおいても当てはまり、貸し手は値付けの問題に悩まされています。 同じ立地の物件の宿泊価格を参考にしようとしても、設備の違いなどによって、価格は異なるからです。さらに、宿泊価格が適正より大きすぎると宿泊者が減少し、適正より小さすぎると、儲け損ないといった機会損失が起こります。もしも、立地や設備情報を入力すれば、自動で適切な宿泊価格を設定してくれるモデルを作れると、貸し手側は価格設定の悩みから解放されます。 そこで本クエストでは、この課題への取り組みの1つとして、民泊サービスであるAirbnbの掲載物件データを利用して、宿泊価格を予測するモデルを作成し、そのモデルを利用して自動で物件の適正価格を設定することに挑戦します。本クエストを通じて、データ分析の基本的な手順や欠損値の対処方法、データ分布の確認方法、さらに、データ分布が異なる時のモデルの作成方法を学びます。
あなたは、不動産会社のマーケティング部に所属するデータサイエンティストです。
会社の売り上げ拡大のために、借り手のいない自社所有物件をAirbnbで民泊物件として貸し出すことにしました。Airbnbで貸し出すために、各物件の宿泊価格を設定する必要がありますが、適正価格はいくらぐらいなのでしょうか。そこで、あなたはAirbnbに掲載されている物件情報から宿泊価格を算出するモデルの作成を依頼されました。Airbnbの宿泊価格算出モデルが作れれば、それを自社物件データに使用することで、自社物件の適正宿泊価格を算出することができるからです。
Mission 1
Airbnbの宿泊価格予測モデルを作成するにあたり、Airbnbの物件情報と宿泊価格のデータが必要です。自社ではAirbnbのデータは所有してないので、Airbnbのサイトからスクレイピングを行いデータを取得しました。ただし、データを取得すればそれで終わりではありません。手に入れた生のデータがそのままモデル学習に使えることは非常にまれであり、また、そもそもデータ内容をきちんと確認しないままにモデルを作成することは、誤認識や不備の検知漏れといったリスクを伴います。このため、データの確認は非常に重要な作業の1つです。本ミッションでは、ライブラリを使ったデータの読み込み方、データ量や種別の確認方法などを学びます。
データ分析を始めるにあたって、まずはPython上で扱えるようにデータを取り込まなくてはなりません。
このタスクでは、ライブラリのimport方法と、データ分析のための様々なツールが用意されているライブラリ`pandas`を使ったcsvデータの読み込み方法を学びます。
`DataFrame`形式で読み込むことで、各種データについて様々な処理を行う準備ができました。
このタスクでは、読み込んだデータについて、その大きさを調べたり、不要なカラムを削除する方法を学びます。
このタスクでは、データに紛れ込んでいる欠損値の確認と、その対応方法を学びます。
欠損値とはデータの欠落のことです。
欠損値をそのままにしておくと、統計的な処理や学習が上手く行かなかったり、分析において様々な弊害の温床になりえます。
これを回避するために、欠損値の存在確認と、それに対処することが必要になります。
Mission 2
宿泊価格を予測するために、どのような要素が宿泊価格に影響するのかを調べてみましょう。
その際に重要となるのは宿泊価格に影響すると思われる仮説を立てることです。
なぜなら、あらかじめ仮説を立てておくことで、闇雲に探索するのを避け、効率の良い探索ができるからです。例えば収容人数や設備は宿泊価格に影響するだろうといった仮説を立てることができます。宿泊価格に影響する要素の仮説を立て、正しいかどうか確認していきましょう。その為の方法論として本ミッションでは、探索的分析について学びます。データ分析ではデータの分布や数値等からデータの特徴を抽出し、それに基づき仮説を立てたり仮説の検証を行います。基本統計量や可視化の方法論についても学んでいきましょう。
このタスクでは、データに含まれる各変数について、基本統計量を確認したりヒストグラムを描画することで、その分布の特徴を知る方法を学びます。
良い分析を行うにあたって、データの特徴を知ることは不可欠です。このタスクを通してその基本的な方法を学び、未知のデータに対しても活用できるようになりましょう。
Mission 3
宿泊価格に影響する要素がわかったので、次は実際に宿泊価格予測モデルの作成を実施することになりました。モデルを作成するためには、モデルが扱えるような形にデータを加工する必要があります。そこで本ミッションではデータ前処理について学びます。ここでの前処理とはモデリングのための前処理についてです。適切な前処理をすることで、モデリングの精度を上げることができます。前処理の種類や、方法にどのようなものがあるのか学んでいきましょう。
データに対して、新しい特徴量を加えたり、モデリングできるように特徴量を加工する方法があります。
このタスクではこれらの具体的なやり方を見ていきましょう。
Mission 4
データの前処理が出来たため、モデリングが出来る状態になりました。いよいよ本クエストのメインである、宿泊価格の予測をする為のモデル作成を実施することになりました。本ミッションではモデリング手法の1つ、重回帰モデルについて学びます。モデルを作成することで、過去の実績から将来の値を予測することができるようになります。具体的なモデルの作り方や作ったモデルの正しい評価方法について学んでいきましょう。
このタスクでは、機械学習を行う前の最後のステップとして、与えられたデータを説明変数と目的変数、学習データと評価データに分割する方法を学びます。
このタスクでは、データ分析において最も基本的なツールである**重回帰モデル**の概念を学び、その`scikit-learn`上の実装である`LinearRegression`を用いて実際に学習を行います。
これまで長々と前処理や下準備の話をしてきましたが、ついに、本格的な統計分析、機械学習の第一歩を踏み出すことになります。
このタスクでは、学習済みモデルの精度を評価するための基礎的な手法を学びます。
予測モデルの評価には、学習データに対する予測精度と評価データに対する予測精度が用いられます。これらを算出し、また予測精度についても可視化を行うことで、予測モデルの精度をより高めるための知見を得ることができます。
Mission 5
宿泊価格を予測するベンチマークモデルを作成することができましたが、自社物件の価格設定に使用するには、更に精度の高いモデルが必要であるという判断がされました。改善案としては、探索的分析で得られた知見を活かし、複数のモデルを作成する方針となりました。本ミッションでは、複数モデルの作成方法を学び、最後に作成したモデルを使用して、このクエストの目的である自社物件の適正価格を算出しましょう。
カテゴリーによって、特徴量間の関係性や分布が大きく異なる場合はカテゴリー毎にモデルを作成することがあります。
複数モデルの作成方法を学びましょう。
作成したモデルを使用して、このクエストの目的である自社物件の価格算出を行います。
本クエストでは、宿泊価格を予測するモデルを作成しました。ただ予測モデルを作るだけでなく、探索的分析からルームタイプのデータの分布が異なることを発見し、それに合わせてモデルを作成することで予測精度の改善も行いました。クエストを通じて学んだこと、そしてクエストの成果をおさらいしましょう。
Competition
これまで学習したことを元に、SIGNATEの練習問題に挑戦してみましょう。このコンペでは、民泊サービスの物件データを使って、宿泊価格を予測するモデルを構築にチャレンジします。
Competitionに挑戦する