satopoooonのブログ

自分向けの備忘録

kaggleに挑戦 その1 決定木を使う

はじめに

機会学習のスキルを身に付けたく、kaggleに挑戦中です。

タイタニック号のデータを、ランダムフォレストでモデル化しました。

今回は、ランダムフォレストの基本となる決定木について書こうと思います。

 

簡単に自己紹介すると、僕は材料系メーカーのエンジニアです。

学生時代に統計分析はそこそこ経験していますが、

機会学習は全くの素人でした。

社会人になって、機会学習に興味を持ち、

色々と勉強していくうちにkaggleを知った次第です。

 

タイタニック号のデータ

初心者向けのコンペとして、

「Titanic:Machine Learning From Disaster 」

があります。

タイタニック号の事故について、

どのような要因(年齢、性別、階級等)が乗客の生死を分けたか?

という物を分析するものです。

初心者は初心者らしく、初心者向けのコンペに挑戦します。

 

データのダウンロード

まずはkaggleのサイトから、以下二つのデータをダウンロードします。

  • train.csv (59.76 kb)
  • test.csv (27.96 kb)

kaggleのアカウントを持っていない人は、先に作っておきましょう。

 

上記二つのデータは、それぞれ訓練用(train)データと評価用(test)データです。

訓練用データで、モデルを作成し、評価用データでそのモデルの妥当性を検証します。

 

「訓練用データでどのようなモデルを作成するか」

これがデータ分析者のキモですね。

モデルを作るときは汎化性能を意識する必要があります。

このあたりが、学生の時にやっていた統計分析と違うのかなーと思っています。

(あくまで個人的な意見です。統計分析という単語も個人的経験を指しています。)

 

今回はscikit-learnのランダムフォレストを使ってモデルを作成していきます。

 

ランダムフォレストと決定木分類器

ランダムフォレストってなんぞや?となりますが、

その前に決定木分類器の説明をします。

 

決定木分類器とは、いくつか質問に基づき決断を下すという分類器。

言葉で書いてもよくわからないと思うので、こちらのHPから下記図を引用させて頂きました。

f:id:satopoooon:20171203150323p:plain

上図では、性別、年齢等に関する問を組み合わせて生存可否の決断をします。

親nodeから子nodeに分岐するTree構造になっているので、決定木と呼ばれています。

 

上記図の年齢に関する質問において、10歳を基準に区切っています。

このとき15歳ではダメなのか?5歳ではダメなのか?という疑問を持ちます。

質問の目的は生存、死亡を分岐することなので、一番正確に分岐できる年齢を設定したいですよね。

このモチベーションを定量化するために、「情報エントロピー」「情報利得」を用います。

上記質問で例えると、

10歳以下の人がすべて生存して、それ以外は亡くなったとしたら、情報エントロピーは0となります。

0に近いと正確(理想的)に分岐できていて、1に近いとその質問では全く分岐できていないことになります。

ここで情報利得とは、親nodeと子nodeの情報エントロピーの差です。

子nodeの情報エントロピーが0に近い程(その質問で正確に分岐できている程)、情報利得は大きくなります。

つまり、情報利得が最大になるように質問を設定すれば良いのです。

 

決定木は、質問が多い程、過学習に陥りやすくなります。

そこでランダムフォレストは、上記対策がなされています。

次回はランダムフォレストについて書こうと思います。

 

 

 

 

 

 

 

pycharm インストール

よく使う言語は、VB(A)、C#python、Rとか。

学生の時は、Fortran,Cとか使ってた。

 

流行りだからpythonのスキルを上げたい。

IDEvisual studioを使ってたけど、

pycharmに乗り換えて(python限定だけど)みる。

visual studioは重い気がして好きになれない・・・。

windowsmac、両方で使えるって理由のみでこれにpycharmを選びました。

 

インストールしてみる。

www.jetbrains.com

インタプリタは、anacondaを使用。

下記サイトからDLできます。

https://www.continuum.io/downloads

ver3.6をインストール

 

pycharmを起動すると下記の画面。

「Create New Project」を選択。

f:id:satopoooon:20170305022520p:plain

 

 次の画面で、Interpreterを選びます。

今回はanacondaを選択。

f:id:satopoooon:20170305022638p:plain

 

 以上

 

 

 

Spectacle インストール

windows だと画面のリサイズが結構簡単。

windowsキー」+「矢印」で色々できる。

職場のPCはwindowsだから、macでもやりたい。

探してみたら「Spectacle」ってやつで可能みたい。

インストールしたら、

「opt」+「command」+「矢印」でリサイズができるようになりました。

楽チン。

Eagles導入

回路図作成のため、Eaglesを使ってみた。

いくつかあるCADソフトの中で、Eaglesにした理由は、

OS X,Windows両方に対応しているという点のみ。

 

以下、忘備録として

・プロジェクトの新規作成

Projects/eagle 右クリックでnew project

プロジェクト名は日本語の方が良いみたい(文字化けする?)

 

・回路図の作成

プロジェクト名を選んで右クリックして「new→schematic

 

・libraryの選択

ツールボックス中のf:id:satopoooon:20170219000225p:plainを選択。

 

・libraryの名前

電解コンデンサ:rcl/CPL-EU

コンデンサ:rcl/C-EU

レギュレータ:v-reg/78XXS

端子:wirepad/2,15 1.0

GND/supply1/GND