初心者向け学習方法一覧はこちら
この記事は機械学習についてある程度の概観が理解できている方に向けた記事です。
機械学習についての知識について不安な方は初学者に向けた記事も用意しておりますのでこちらを先に読むことをおすすめします。
解決したい問題
今回はアメリカのマサチューセッツ州にあるボストンという地域の住宅価格の予測を機械学習を用いて行う方法をPythonで実装します。
Pythonにはscikit-learnというモジュールがあり、その中にボストンの住宅の情報と価格がセットになったデータセットがあります。
このデータセットにディープラーニングを利用することで住宅の情報から住宅価格を計算するモデルの作成をします。
機械学習では住宅の情報を説明変数と呼び、住宅価格を目的変数と呼びます。
説明変数だけで目的変数を予測することが機械学習での目標です。
分類としては正解データが用意されているため教師あり学習です。
また、住宅価格という数字を予測したいため回帰問題となります。
データの理解
開発をする上で大切なことはデータについて理解することです。
データについての知識のことをドメイン知識といいます。
ドメイン知識なしで問題を解くことはそれ自体が問題になるほど難しいことです。
まったく知らない分野に機械学習を利用する場合でも最低限の知識の用意をしないと問題をより一層難しくしてしまうためできる限りドメイン知識の勉強をしましょう。
データクレンジング
機械学習をする上で最も時間のかかる作業はプログラミング言語でデータを扱いやすいようにデータをフォーマットするデータクレンジングという作業です。
開発機関の内半年程もかかる場合もあります。
これは意外に思われる方も多いかもしれません。
機械を用いてデータ収集した場合はそこまでデータクレンジングに時間を費やすこともありません。
しかし、人間の手でデータを数えたり入力する場合には、収集できなかったり、回答してもらえなかったことも考えられます。
そういった生のデータを処理するときにはデータ処理に向いたモジュールであるPandasを使用することが多いです。
今回扱うボストンの住宅価格データセットはすでにプログラミングでデータを扱いやすいようになっているためデータクレンジングを行う必要はありません。
データの構成
今回使用するデータについての解説をします。
今回のボストンの住宅価格のデータの情報は以下の通りです。
まずデータのサイズはボストンの住宅情報が13種類あり、
- 犯罪率
- 広い家の割合
- 非小売業の割合
- 川の隣か
- NOx濃度
- 平均部屋数
- 古い家の割合
- 主要施設との距離
- 高速道路へのアクセス
- 固定資産税率
- 生徒と先生の比率
- 黒人の割合
- 低所得者人口の割合
となっています。
直感的にそれぞれの住宅情報と住宅価格の関係について考察します。
- 犯罪率に高いところには住みたくない為、犯罪率が高いと住宅価格は下がる
- 広い家は高い為、広い家の割合が高いと住宅価格も上がる
- 非小売業の割合が高いということは住宅街の為、住宅価格は下がる
- 川の隣というのは洪水のリスクが思い浮かぶ為、住宅価格は下がる
- NOx濃度というのは排気ガスの量とほぼ同じ。排気ガスの低いほど車や工場の少ない田舎であると考えられる。よって田舎は都会よりは住宅価格が下がる
- 平均部屋数と住宅価格には関係がなさそう
- 古い家より新しい家を求める人のほうが多い為、古い家の住宅価格は下がる
- 主要施設や高速道路の近くに家があれば、生活が楽になる為、近いほど住宅価格も上がる
- 固定資産税率が高いというのはお金持ちが住んでいる大きな家であると考えることができる。よって固定資産税率が高いと住宅価格も上がる
- 生徒と先生の比率は生徒のほうが多ければ都会という可能性が高い。NOxの場合と同じ考え方で生徒と先生の比率が高いほうが住宅価格も上がる
- 黒人の割合と住宅価格については人種と住宅価格には関係がなさそう
- 低所得者人口の割合が高いと住宅価格は下がる
以上が住宅情報データから得られた考察です。
また、考察を行わなくともグラフにデータをプロットするという方法もありますが今回はデータについての理解が必要であることを明示的に表すために考察を行いました。
今回のデータの数は506件あります。
つまり、13種類×506個で約6500個の数字を用いて機械学習を行います。
また、その中にデータの欠損はありません。
余談なのですがもしもデータに欠損があった場合には答えにくい情報であるという可能性も考えられます。
例を挙げると、性別や年収などの直接聞きづらい問題があります。
その欠損値に対してもプログラミングで扱えるように適当な数字を割り振る必要があります。
まとめ
今回の記事では問題設定とデータの構造について解説しました!
次の記事では今回使用する機械学習モデルであるディープラーニングの理論の解説と評価の方法について解説しています。
是非こちらもどうぞ!
プログラミングスクールの選び方
転職を検討中の方向け
フリーランス・副業で活躍したい方向け
教養・キャリアアップしたい方向け
給付金について詳しく知りたい方向け