見出し画像

研究が始まりました。Vol.1

初めまして、九州工業大学、本田研究室の金丸です。これからの研究の過程を記録したり、情報交換のために研究日誌をすることになりました。研究活動に関する個人的な日記や、皆さんに役立ちそうな情報があればこのnoteに記していこうかなと考えています。

今回はゼミで使用した、あるデータセットについて簡単に紹介して、それを実際に使った重回帰分析までを記録しようと思います。

まずはKaggleのLife Expectancyについて紹介します。

これは回帰分析と相性がいいデータではないかと思います。全部で22個の要因があります。そのうちのcountry, year, statueの3つを除いた19個の要因は、Life Expectancyを目的変数とした時、それと全体的に相関が強いものが多く、また単調データなので、回帰モデル作成の際に扱いやすいのではないかと思います。

次にデータセットの内容について見ていきます。
WHO(世界保健機関)傘下の世界保健観測所(GHO)データリポジトリはすべての国の健康状態やその他多くの関連要因を記録しており、今回のデータセットは、健康データ分析の目的で一般公開されているものになります。先進国、途上国を含む193か国において、2000年から2015年までの15年間で各刻の平均寿命とそれに関連しうる多数の要因を記録した観測データです。

次にデータの要因についてみていきます。

Counttry 国
Year 年代
Statue 国の状態
Life expectancy 平均寿命
Adult morality 成人のモラルレベル
Infant deaths 乳児死亡率
Alcohol 1人当たりのアルコール消費量 単位:L
Percentage expenditure 一人当たり国内総生産に占める保健医療費の割合(%)
Hepatitis B 1歳児のB型肝炎(HepB)予防接種率(%)
Measles 麻疹(はしか)-人口1000人あたりの報告数
BMI 身長と体重から算出した肥満度 Average Body Mass Index
Under-five deaths 1000人あたりの5歳児以下の死亡数
Polio 生後1年までのポリオ菌予防接種率
Total expenditure ヘルス分野の政府の総支出額に占める割合%
Diphtheria 1歳児のジフテリア破傷風トキソイド・百日咳(ひゃくにちぜき)予防接種率(%)
HIV/AIDS 出生1,000人当たりの死亡数 HIV/エイズ(0~4歳児)
GDP 国内総生産
Population 国の総人口
thinness 1-19 years 10~19歳の子供の痩せの有病率%
thinness 5-9 years 5~9歳の子供の痩せの有病率%
Income composition of resources 人間開発指数 0~1 人間開発指数:国を長寿、知識、生活レベルの3つの分野のトータルで発達レベルを評価したもの
Schooling 就学年数 年

ゼミでは、このデータを用いて以下の重回帰分析をしました。
・包除積分モデルを用いた重解析
・NN(MLPモデル)を用いた重解析

解析の流れとしては、
1:データ前処理([0,1]に正規化&欠損値を除去→データ数1649件)
2:trainデータで学習(データをtrain:test=80%:20%に分割)
3:testデータで予測・評価
です。

※1:正規化にはY = (X-xmin) / (xmax-xmin)を使用
※2:包除積分モデルにはstasmodelのOLS(最小二乗法)を適用
※3:NNには、KerasのSequential()を使用

1データの前処理
Life Expectancyのデータを[0,1]に正規化しました。
包除積分は、単調増加性にする必要があるので、平均寿命と負の相関のある要素はデータのスケールを逆転させました。

2trainデータで学習
・包除積分モデル
k-加法ですが、今回はk=2を紹介します。説明変数が18個なので、2加法では18C2=171個になります。
Pythonライブラリのstasmodelの、OLS(最小二乗法)を用いて学習させました。stasmodelはsummaryメソッドと呼ばれるものがあり、これを使うことで回帰評価を出力してくれる非常に便利なツールです。

・NN
Kerasという高水準のニューラルネットワークライブラリを使って学習させました。入力層、中間層が3層(各36ノード)、出力層で全結合、バッチサイズ50、エポック数200の条件です。

3テストデータで予測・評価

最後に上記の2つのモデルについて
・予測値-実測値
・残差平方和、決定係数
で評価をしました。

評価
予測値(縦軸)と実測値(横軸)のグラフ

両者とも一般的に精度のよいモデルができているのではないでしょうか。

少し長くなりましたので、まとめたいと思います。
・「Life Expectancy」:回帰分析と相性の良い単調データ
・Kaggle:データ解析用のデータセットが多数存在するサイト 
・Keras:NNライブラリ ほかにもNNライブラリはありますが、初心者の私でも非常に理解しやすく使いやすかったです。

データセットを探すのは大変だと思いますが、Kaggleは上記で述べたように解析用のデータが本当に多い印象でしたので、機会があればぜひ試してみてください。

この記事が気に入ったらサポートをしてみませんか?