2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【実践】カリフォルニア住宅価格予測で学ぶ、データ分析の定石

2
Last updated at Posted at 2025-09-16

こんにちは!

今年から、いくつかのデータ分析コンペに参加し、中級者向けのコンペで入賞できるまでになりました。

コンペ上位を目指し、多くの本やサイトで分析手法を調べて実践する中で、ようやく実データ分析に共通する手順やポイントが分かってきました。同時に、同じ実データで各手順の分析をまとめてる資料があんまりないな、と感じました。

そこで、自分の経験を記事のシリーズとしてまとめることにしました。

分析には沼があります。しかし、定石を使えば、沼に沈まず、あるいは多少沈んでもなんとか抜け出して目的地に向かっていけるはずです。記事のシリーズを通して、そのような定石をまとめていきたいと思います。

このシリーズでまとめること

このシリーズでは、公開データであるcalifornia housing datasetの住宅価格予測を題材に、分析の定石を紐解いていきます。

扱うデータの説明

今回扱う、california housing datasetの概要は本サイトに詳しく記載されています。一部引用します。

目的変数は、カリフォルニア州の地区における住宅価格の中央値で、10万ドル($100,000)単位で表されます。
このデータセットは1990年の米国国勢調査から派生したもので、1つの国勢調査ブロックグループにつき1行が使用されています。
ブロックグループは、米国国勢調査局が標本データを公表する最小の地理的単位です(通常、ブロックグループの人口は600人から3,000人です)。
世帯とは、家屋に居住する人々の集まりです。
このデータセットでは、平均部屋数と平均寝室数が1世帯あたりの数値で提供されているため、
世帯数が少なく空き家が多いブロックグループ(例:保養所)では、これらの列が驚くほど大きな値になることがあります。
属性情報:
MedInc:地区の世帯収入の中央値
HouseAge:地区の住宅築年数の中央値
AveRooms:1世帯あたりの平均部屋数
AveBedrms:1世帯あたりの平均寝室数
Population:地区の人口
AveOccup:1世帯あたりの平均居住者数
Latitude:地区の緯度
Longitude:地区の経度

住宅価格の中央値が目的変数と書いてくれているので、属性情報+αで住宅価格を予測することが課題です。また親切なことに、外れ値の要因についても言及しています。実際の分析で観察してみます。

補足:この種のデータは多変量データと呼ばれます。画像データのように容量が大きくなく、音声のように時間依存性もありません。比較的扱いやすいデータですので、まとめるにあたり良い題材と考えました。

評価指標

機械学習で評価するのは、未知のデータに対してもうまく予測できること、汎化性能です。

ただ一口に性能と言っても表のいろんな指標があります。従って、どんな性能で評価することが妥当なのか、評価指標を決めることが重要です。

評価指標は分析のタスクに依存します。今回は住宅価格予測という回帰問題がタスクになり、以下のような評価指標が考えられます。

指標 名称 特徴
RMSE Root Mean Squared Error (二乗平均平方根誤差) 高価格帯の大きな絶対誤差を重視
MAE Mean Absolute Error (平均絶対誤差) 偏りなし (全ての絶対誤差を平等に扱う)
MAPE Mean Absolute Percentage Error (平均絶対パーセント誤差) 低価格帯の小さな絶対誤差を過大評価

それぞれの定義はこちらのサイトなどを参考にしてください。

今回は極端に高物件や低物件の影響が受けにくく、一般価格帯の予測評価として有用と考えられるため、MAEを評価指標とします。

分析の全体像

これまでの経験から、一般的な分析手順は以下表のようなかたちに集約されると考えてます。

フェーズ 理屈(なぜやるか) 実践(どうやるか) 分析URL
探索的データ分析とデータクレンジング(EDA,Data Wrangling) データに潜む課題を特定し、
分析可能な状態に整えるため
データの結合、欠損値の補完、データの型変換、外れ値の特定と除去 【実践】カリフォルニア住宅価格データセットで学ぶ、EDAとデータクレンジング
EDAに集中 データの全体像を理解し、仮説を立てるため データの統計量確認、ヒストグラムや散布図の可視化、情報の調査 【実践】カリフォルニア住宅価格データセットで学ぶ、EDAと仮説立て
特徴量エンジニアリング モデルに有益な情報を追加し、精度を上げるため 既存のデータから算出(交互作用項、対数変換など)、ドメイン知識の定量化 【実践】カリフォルニア住宅価格データセットで学ぶ、特徴量エンジと仮説検証
モデル選択と検証評価 課題に最も適したモデルと、未知データへの汎化性能を測定するため 複数のモデルを比較し最適なモデルを選択、選択したモデルの検証と未知データの予測評価 【実践】カリフォルニア住宅価格データセットで学ぶ、モデル選択・検証・評価

ここで、表の中のURLは各フェーズの実際の分析を示してます。このURLを通しデータ分析を追体験できるようになっています。

このシリーズでまとめきれてないこと

今回、この記事の分析で十分検討できてないについて述べておきたいと思います。

精度目標値の設定

今回の分析では、特に目標精度を設定していません。どこまでも良い精度のモデル作れればそれに越したことはないですが、当然そう都合よくは行きません。そのため、分析を始める前に目標値を設定し、それに達しているかでモデル作成できたか評価することが重要です。

目標値はモデル活用による効果量からの逆算により決まることもあります。しかし、そもそも効果の定量化が難しい場合も多々あります。その時には、荒くても分析依頼者が納得できる論理で設定する必要があるでしょう。

検証用データと評価用データの扱い

本記事では、特徴量エンジの後に検証用と評価用データを分けて分析しました。つまり、選択特徴量を決める際に、すでに評価用データの情報をあらかじめ活用しています。

評価用データの場合、本来目的変数を知らないという前提があります。それに対して今回の分析は前提を崩して、目的変数を利用して分析を進めているので、これはデータリークの一種です。

本来は、データクレンジングの段階(外れ値も残ってる段階)で検証用データと評価データを用意しておく必要があります。

この際は検証用データの入力と評価用データの入力の属性情報の分布を比較しながら、評価データが検証用データと同じ特性かを確認するフェーズが必要になるでしょう。もしそれぞれの分布が全然違ってた場合は、評価データの予測精度は期待できませんから。

モデル構築までの泥臭さ

今回は、各フェーズに対し後戻りがないような形でまとめていきました。

理想はこのように後戻りなくモデル構築できることが望ましいですが、実際一度では終わらないことのほうが多いです。実は、今回まとめる中でも選択特徴量を得るために、EDAやモデル検証を何度か見直し精度向上に努めました。

精度向上のためには、特にEDAと特徴量エンジが重要です。しかし、どう調整すればどの程度良くなるかは、モデルに通して見ないとわからないことも多いです。なのでEDAと特徴量エンジとモデル検証をぐるぐる回す必要があります。
その中では、新たなデータを加える、根本的な仮説自体を見直すことが必要になる場合もあります。

おわりに

この記事は、使用するデータセット、評価指標、データ分析の全体像について説明しました。分析の各フェーズの詳細な内容は表のURLにまとめてあるので、ぜひクリックして実際の分析を確認してもらえればと思います!

どのフェーズにおいても大切なことは、目的との繋がりを考える、結果をまとめる、結果を次の分析に活用できるか考えることです。ただ初手の理解が進んでいない段階でそこを意識しすぎると、考えがまとまらずに、時間だけが過ぎていきます。ですから、特に初手の段階はとりあえず手を動かす姿勢も大事かもしれません!

以上です!

この記事が役に立ったと感じたら、いいねやコメントをいただけると、次の記事を書く大きな励みになります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?