連載
» 2020年06月24日 05時00分 公開

AI・機械学習のデータセット辞典:Boston Housing:ボストンの住宅価格(部屋数や犯罪率などの13項目)の表形式データセット

データセット「Boston Housing」について説明。506件のボストンの住宅価格の「表形式データ(部屋数や犯罪率などの13項目)」+「ラベル(住宅価格)」が無料でダウンロードでき、回帰問題などのディープラーニングや統計学/データサイエンスに利用できる。scikit-learn、Keras/tf.keras、TensorFlowにおける利用コードも紹介。

[一色政彦,デジタルアドバンテージ]
「AI・機械学習のデータセット辞典」のインデックス

連載目次

データセット解説

 Boston Housingデータセット(The Boston house-price data)ボストンの住宅価格データ)は、「1970年代後半における(米国マサチューセッツ州にある)ボストンの住宅価格」の表形式データセット(=構造化データセット)である(図1、米国国勢調査局が収集した情報から抽出&加工して作成されたデータセットである)。

図1 Boston Housingデータセットの内容例 図1 Boston Housingデータセットの内容例
データセットの配布元: 「カーネギー・メロン大学のStatLibデータセットアーカイブ」内にある「bostonデータセット(boston.txt)ファイル」。ライセンス指定なし。なお、かつては公式のリポジトリページ「UCI Machine Learning Repository: Data Set: Boston Housing」も存在したが、現在では削除されている。

 Boston Housingは、主に回帰(数値予測、つまり「住宅価格の予測」)を目的としたディープラーニング/機械学習/統計学の研究や初心者向けチュートリアルで使われている(ただし、ディープラーニングを行うにはデータ数が506件と少なすぎる点に注意が必要だ)。

 Boston Housingは、13属性(説明変数、入力データ)+1属性(目的変数、ラベル=正解を示す教師データ)の14属性で構成されている。各属性(列項目)の意味は以下のようになっている。なお、各種ライブラリでは、説明変数(descriptive variable)となる13列のデータと、目的変数(target variable)となる1列のデータは、別々に取得できるようになっている。下記の「ダミー変数」とは、カテゴリー変数を01の数値にエンコーディングした後の変数である。

  • CRIM: 町別の「犯罪率」
  • ZN: 25,000平方フィートを超える区画に分類される住宅地の割合=「広い家の割合」
  • INDUS: 町別の「非小売業の割合」
  • CHAS: チャールズ川のダミー変数(区画が川に接している場合は1、そうでない場合は0)=「川の隣か」
  • NOX: 「NOx濃度(0.1ppm単位)」=一酸化窒素濃度(parts per 10 million単位)。この項目を目的変数とする場合もある
  • RM: 1戸当たりの「平均部屋数」
  • AGE: 1940年より前に建てられた持ち家の割合=「古い家の割合」
  • DIS: 5つあるボストン雇用センターまでの加重距離=「主要施設への距離」
  • RAD: 「主要高速道路へのアクセス性」の指数
  • TAX: 10,000ドル当たりの「固定資産税率」
  • PTRATIO: 町別の「生徒と先生の比率」
  • B: 「1000(Bk - 0.63)」の二乗値。Bk=「町ごとの黒人の割合」を指す
  • LSTAT: 「低所得者人口の割合」
  • MEDV:「住宅価格」(1000ドル単位)の中央値。通常はこの数値が目的変数として使われる

 ちなみに、執筆時点(2020年6月20日)では、黒人暴行死事件で人種差別が大問題となっているが、このデータには「黒人の割合」が入っているため、そういった人種差別の問題を含んでいる可能性があることに留意してほしい(公平性の観点から、機械学習で使う際には、データから[B]列項目を除外するなどの対策が必要かもしれない)。

 Boston Housingデータセット全体は、以下のようになっている。欠損値はない。

  • データ数は、合計506個(つまり、506行×13列の表形式データと、506行×1列のラベル)
  • 通常は、訓練用データ:404個(80%)と、テスト用データ:102個(20%)に分割する

 なお、元データ(boston.txt)は、506行×14列の表形式データとなっており、最後にある14列目が目的変数(ラベル)なので注意してほしい。

引用のための情報

 このデータセットは、基本的に自由に使用できる(ライセンスは指定されていない。*1「誰でも利用できる」状態のため、CC(Creative Commons)でいう「パブリック・ドメイン・マーク 1.0」に相当すると考えられる。データの取得元を明記する場合は、以下を参考にしてほしい)。

 データセットを引用する際に使える情報を以下にまとめておく。

  • 作成者: Harrison, D. and Rubinfeld, D.L. 'Hedonic prices and the demand for clean air', J. Environ. Economics & Management, vol.5, 81-102, 1978.
  • タイトル: Boston Housing Data
  • 公開日: July 7, 1993
  • URL: http://lib.stat.cmu.edu/datasets配下の、

*1 2020年6月30日修正。OpenMLのbostonデータセットが「Publicly available」であることに基づき、「著作権は放棄していないものと考えられる」という記載を削除して、『「誰でも利用できる」状態……』を追記した。また、関連として「引用のための情報」を追記した。


利用方法

 実際にBoston Housingを使うには、scikit-learn/Keras/TensorFlowといった各ライブラリが提供する機能を利用することをお勧めする。ムダな作業を省いて、効率的に使えるためだ。なお、TensorFlow DatasetsとPyTorchにはBoston Housingは用意されていなかった。

 以下に、それぞれのライブラリで「どのようなコードを書くとBoston Housingが使えるか」の典型的なコードを簡単に示しておく(コードの詳細は解説しない)。基本的に各ライブラリは、Boston Housingデータセットを自動的にダウンロードして使いやすい形にロードしてくれる機能を提供している。

scikit-learn

# !pip install scikit-learn  # ライブラリ「scikit-learn」をインストール

from sklearn.datasets import load_boston

boston = load_boston()

リスト1 scikit-learnでBoston Housingを利用する基本的なコード

 sklearn.datasets.load_boston ()関数を呼び出せばよい。

TensorFlow(tf.keras)/Keras

# !pip install tensorflow  # ライブラリ「TensorFlow」をインストール
# !pip install keras  # tf.kerasの場合は不要だが、Kerasを使う場合はライブラリ「Keras」をインストール

from tensorflow.keras.datasets import boston_housing  # tf.kerasを使う場合(通常)
#from keras.datasets import boston_housing  # tf.kerasではなく、Kerasを使う必要がある場合はこちらを有効にする

(train_data, train_labels), (test_data, test_labels) = boston_housing.load_data(
    test_split=0.2, # 訓練データとテストデータの分割で、何%をテストデータにするか
    seed=123        # シャッフル時に使うランダムシード(任意の数値)を指定可能
  )

リスト2 TensorFlow(tf.keras)/KerasでBoston Housingを利用する基本的なコード

 tf.keras.datasets.boston_housing.load_data()関数を呼び出せばよい。

「AI・機械学習のデータセット辞典」のインデックス

AI・機械学習のデータセット辞典

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。