卒論の題材は競馬にしました。

こんにちは。

 

せっかく機械学習の勉強をしたのだから、卒論は機械学習のプロジェクトにしようとしている私です。(経営学経営学科)

 

1. 自分の興味あることにしよう。

2. データが集めやすいものにしよう。

3. 機械学習の問題としてポピュラーなものにしよう。

 

ということで機械学習を用いた競馬予測問題を卒論にしようと思います。

 

色々調べたところ、走破タイム予測による回帰問題か対戦型か単純な多クラス分類問題として考えるか。みたいなアプローチで一般的には考えるようです。

 

現在は

機械学習の発展的手法について勉強

・NNのことばっかりの授業が多かったので、それ以外の基本的な手法の勉強

・基本的な統計学の勉強

・競馬術(一般的にはどのような特徴を重視して予測を立てているのか知る)

というふうに色々と勉強中(中間発表まであと10日やけど)でして、まだまだ未熟なのですが

 

いろいろなサイトをみていた時に、"アンサンブル"という手法を見かけて、「これいいやん!」と思いました。

 

これは回帰モデルや分類モデルなどを組み合わせて平均をとったりしながら最終的な予測を出すモデルらしいので、「上記の色々なモデルを組み合わせればどうなるの!」という、浅い考えですが。笑

 

しかし、興味があることや試されていないことを調査するのは研究としてぴったりな気もするので試してみます。

 

本気で取り組もうと思って、GPUNVIDIAのGeForce1080を積んだPCを買ったので、楽しみながら爆速でやっていくぞー!ワクワクします!

 

tensor flow + tensorboardいじりちゅう。

いろいろと触りながら、重みの初期値を変えることによる影響などを体感しております。

 

MNISTの数字認識問題を、隠れ層4層のNNを標準偏差0.01で学習したところこんな感じ。

f:id:thunder-runner:20171101220722p:plain

 

出力層では重みがほぼ真ん中に偏っている。これはreluを活性化関数に使っている状態で0.01や0.001などを標準偏差にしてランダム初期化すると起こるみたい。

f:id:thunder-runner:20171101220735p:plain

 

He重みとか、重みがあまり関係ないバッチノーマライゼーションとかも試そう。明後日。(今日明日はインターンで手を出せそうにない。)

 

まず今日はGeForce1080を積んだ、VR Ready + カジュアルML ReadyのPCの購入ボタンを押すところから始める...!

数学の関数の書き方をプログラムで理解する。

数学の関数って

f(a) = 2a

みたいに書くけど、いまいちピンとこなかった。f(a)とかの意味も学校で詳しく教えてもらったことなかったし。

  

けどこういう風に考えたら直感的に理解した。(swiftで)

let f = {(a:Int) -> Int in
    return 2 * a
}

左辺でaを引数に取って、右辺の値を返しますよ。って考えれば、スッキリ。

 

結果はこんな感じ。

let result = f(2) // 4