hirolog

20代医大生のブログ。日々の情報収集のアウトプット。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day23

今日の目標

courseraのDeepLearningを始めて4日目になります。

コース4のweek3まで終わらせるのが目標です。

23日目でやった事

コース4:Convolutional Neural Networks week2 途中から

かかった時間:3時間

難易度:★★★☆☆

プログラミング課題ではKerasの導入ののちに、ResNetを実装しました。

Kerasの導入によってNNのモデル作成がさらに簡単にできるようになります。

魚本ではResNetなんてのもあるから知っておいてね、というレベルの紹介だったので、それを実装までできるようになるとはなかなか感動しました。(最大限のお膳立てがあってのことですが)

コース4:Convolutional Neural Networks week3 終了

かかった時間:5.5時間

難易度:★★★★☆

内容は物体検出についてです。物体認識とは異なり、画像のなかに「何の」物体が「どこに」あるのかをboxとしてアウトプットします。

sliding windowについてはcourseraのMLで最後の方にちょろっと紹介されていましたが、今回はさらに踏み込んでどのように実装するか、特にYOLOについての解説でした。やっていることは非常に難しいのですが、さすがNg先生、説明がとてもわかりやすいのでしっかり理解できました。

プログラミング課題は、自動運転で使われるような車、歩行者、信号機等の検出で、この課題はかなり時間がかかりましたが、今まで一番面白かったです。

明日に向けて

コース4を終わらせて、最後のコース5をやっていこうと思います。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day22

今日の目標

courseraのDeepLearningを始めて3日目になります。

コース3を終わらせるのが目標です。

22日目でやった事

コース2:Improving Deep Neural Networks week3課題終了

かかった時間:1.5時間

難易度:★★☆☆☆

実際にtensorflowを用いてNNを実装します。

課題の誘導にかなり負んぶに抱っこ状態でしたが、大きな流れを理解することができました。back propagationが1行で実装できるので、今までのnumpyを使った実装はなんだったのだろうと思うくらい、めちゃくちゃ便利ですね。

コース3:Structuring Machine Learning Projects week1,2終了

かかった時間:6.5時間

難易度:★★☆☆☆

実装する上での注意点を構造化して解説するコースです。

今まで習ったtrain/dev/testsetに加えて、human-levelを同時に考慮に入れつつ、biasなのかvarianceなのか、data-mismatchなのかを判断していきます。error analysisを用いてどのようにしてモデルを改善していくかも解説されています。

このコースではプログラミング課題もなく、2週で終わるためスピードを出して進めることができました。

コース4: Convolutional Neural Networks week1終了

かかった時間:5.5時間

難易度:★★★★☆

やっとディープラーニングの本題に入ってきたという感じです。

畳み込みニューラルネットワークについて基本から解説されています。最後にはnumpyを用いたCNNの実装と、tensor flowを用いた実装の2つがあり、結構時間がかかりました。魚本(ゼロから作るディープラーニング)で一応一通り、理解していたから何とかなりましたが、事前知識ゼロでこれを実装するのは理解にしっかり時間をかけないと、なかなか大変だと感じました。

tensorflowでの実装はまだまだ慣れないです。。

コース4: Convolutional Neural Networks week2 途中まで

かかった時間:2時間

難易度:★★☆☆☆

過去に発表された様々なディープラーニングのモデルが解説されています。

魚本でも載ってはいたもののさらっとだけ解説されていたモデルも、しっかりと踏み込んで解説されており、なかなか面白かったです。

それぞれのモデルが発表された論文を引用しており、授業を聞けば出てきた論文は大体自力で読むことができるようになるとのことです。

論文の発表された年を見ると2015年のものもあったりして、ここ数年で研究が進んでいる分野なのだと改めて感じました。

明日に向けて

今日はかなり頑張って進めたので、明日はじっくり取り組もうと思います。

コース4のweek3までは最低終わらせたいです。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day21

今日の目標

courseraのDeepLearningを引き続きやっていきます。

コース2「Improving Deep Neural Networks」を終わらせられたらいいですね。

21日目でやった事

コース1:Neural Networks and Deep Learning  week4終了

かかった時間:3時間

難易度:★★☆☆☆

内容はforward propagationとbackpropagationについての総まとめといった感じです。この辺は何回か学習しているので動画はさらっと聞いていました。

プログラミング課題も誘導がかなりしっかりしていて、ヒントが散りばめられているので迷うことなく進めることができました。

コース2:Improving Deep Neural Networks week1終了

かかった時間:4時間

難易度:★★☆☆☆

train,val,testdataについて、biasとvariance、regularization、gradient checkingなどはMLの内容と多少かぶっています。

dropoutの実装方法やweight initializationはとても勉強になりました。

コース2:Improving Deep Neural Networks week2終了

かかった時間:3時間

難易度:★★☆☆☆

ミニバッチ勾配降下法とmomentum,RMSprop,Adamについて学びました。

これはゼロから作るディープラーニングで一度触れていたものの、かなり曖昧な理解だったのでもう一度しっかり学ぶことができてよかったです。

本よりこちらの動画の説明の方が個人的にはわかりやすかったです。

コース2:Improving Deep Neural Networks week3 課題手前まで

かかった時間:2時間

難易度:★★★☆☆

 内容はハイパーパラメータの調整法、BatchNormalization、softmax、tensorflow導入です。

ハイパーパラメータの調整は今までgridでやるものだと思っていたので、ランダムに取るというのは少し意外でした。BatchNormalizationは初めて学んだ概念で、さらにパラメータを増やすことに驚きましたが、その必要性についてはなんとなく理解できました。この辺りになると、もはや日本語字幕がないので動画を適宜止めつつ英語字幕と格闘していました。softmaxはディープラーニング本で学んだこと以上のことは特にありませんでした。tenforflowは初めて扱うので、動画の説明だけだともはやよくわかりませんでした。。

明日の課題を実際にやってみて感覚が掴めるといいのですが、、

明日に向けて

予定より少し遅れてしまっているので、明日はコース3まで終わらせて遅れを取り戻したいと思います。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day20

今日の目標

Udemyをやろうと思っていたのですが、やる気が全く起こらず無理やりやっても仕方がないので、courseraのDeepLearningを始めました。

20日目でやった事

Udemy途中まで

取り組んだものの、やる気が全くおきませんでした。。多分kaggleにそこまで役に立たないだろうと感じていたのが原因かと思います。勉強全般に関して言えることですが、やはり自分がこれはいいなと納得できる教材で勉強することが一番大事ですね。

kaggleで必要そうであれば再度取り組みます。

coursera DeepLearning: Neural Networks and Deep Learning 3週目まで

かかった時間:8.5h

難易度:★★☆☆☆

3週目までの内容はほとんど、courseraのMachineLearningとゼロから作るDeepLearningですでに習ったことだったので、動画を倍速にしながら進めていきました。

このコースは1週間の間は無料で受講することができ、修了証まで発行することができるので、1週間でなんとかやり切りたいと思います。

なお、進め方はこの記事を参考にさせていただく予定です。

qiita.com

明日に向けて

やる気はみなぎっているので明日はcourseraにフルコミットしようと思います。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day19

今日の目標

今日は引き続きudemyを進めます。

19日目でやった事

Keggle m5 notebook

Udemy python for  time series data analysis

section6: time series with pandas

section7: time series analysis with statsmodel

section8:general forecasting model 途中まで

すぐ終わるだろうと思いきやなかなか進みません。。ここにきて若干ペースが下がってきました、、

statsmodelに関しては今まで全く聞いたことがなかったので、forecastingの手法としてkaggleコンペのM5に生かすことができたら嬉しいです。

明日に向けて

明日こそは気合いでこのudemyを終わらせてやります。

udemyを終わらせた時点で一応M5の準備はできているはずなので、実際に特微量、モデルをいじっていくフェーズに入ります。

ただ、この企画中にcourseraディープラーニングをやりたいと思っていたこと、そしてm5の終了まであと1ヶ月あることから、6/1からはディープラーニングのコースを進めて行こうと思います。企画中に終わるといいなあ。

それが終わり次第、(6/11頃かな?)kaggleに取り組んで行こうと思います。

締め切り直前の7〜10日間をkaggleにフルコミットする予定です。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day18

今日の目標

今日はKaggleへ向けた勉強を。Udemyで時系列データの扱いを勉強していきます。

18日目でやった事

Udemy python for  time series data analysis

かかった時間:5時間

難易度:★★☆☆☆

Section1:introduction

Section2:course setup

section3:numpy

section4:pandas

section5:data visualization with pandas

numpyとpandasの復習です。

まだ若干曖昧な部分があったので、復習できる良い機会でした。

セクションごとにちゃんと演習問題もあってそこで理解できているか確認できます。

先生も教えるの上手でいい感じです。section6から時系列データに入ります。

明日に向けて

Udemyのpython for  time series data analysis」を明日終わらせたいです。

そしてM5に戻って特微量作成をやって行こうと思います。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day17

今日の目標

今日はKaggleへ向けた勉強を。Kaggleで勝つデータ分析の技術を読み進めていきます。

17日目でやった事

Kaggleで勝つデータ分析の技術

かかった時間:9時間

難易度:★★★☆☆

第3章:特微量の作成

kaggleに焦点をあてた本だけあった特微量についての情報がかなり充実しています。取り組んでいるコンペM5でも活用できそうな特微量作成の手法がたくさんありました。特に時系列データの扱いについてページを割いて書かれてあったのが非常に勉強になりました。

特に使えそうだなと感じたのは、特定の日に関する二値変量を取ること、イベントに関するラグ特微量、clipping、複数の変数の組み合わせあたりでしょうか。

第4章:モデルの作成

kaggleで人気のGBDTについての解説が多かったです。パラメータについては6章で。

第5章:モデルの評価

クロスバリデーションについて丁寧に説明されています。特に、時系列データにおけるクロスバリデーションが詳しく解説されていたのが非常に勉強になりました。実際の分析コンペでどのようにクロスバリデーションを行ったかも解説されていて、内容の充実度がすごいです。

第6章:モデルのチューニング

GBDTのパラメータが勉強になりました。今回はここまで手が回るかな。。特微量選択についても触れています。

第7章:アンサンブル

スタッキングやアンサンブルする際のポイント、注意点など。実際のコンペの例もあってわかりやすいです。

感想

まさにkaggleの教科書です。ここに書いてあることを自分で選択して、データに適応できるようなれば間違いなく上位を狙えるくらい「武器」が揃っている本でした。

kaggleをやるなら必ず横に置いておきたい、そんな本です。

超おすすめ。

明日に向けて

時系列データに関してもう少し知見を深めたいので、Udemyのpython for  time series data analysis」を進めます。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day17

今日の目標

引き続き、Kaggleです。kaggleやってるとひたすら時間が溶けていく現象に名前をつけたいです。

17日目でやった事

Kaggle notebook 写経

かかった時間:7h

大学の課題やっていたので今日はあまり時間が取れませんでした。。

ひたすら写経しながらわからないところを勉強していたら1日が終わりました。

そういう一日があってもいいよね、うん。。

Udemy購入

python for  time series data analysis」とキカガク流アルゴリズム論購入しました。

時系列データの扱いをしっかり学んでいきたいです。

明日に向けて

2日間かけてやっとコンペM5の概要が掴めてきました。

明日はひたすら勉強に時間を割こうと思います。Kaggle本を読み進めていき、次はUdemyを視聴しようと思います。

終わり!今日のブログみじか!

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day16

今日の目標

引き続き、Kaggleと格闘しております。ひたすらに難しい、、けど面白いので頑張っていきます!

16日目でやった事

Kaggle入門 Porto Seguroコンペ 

youtube動画でチュートリアルが解説されています。

GCPを使ったKaggleの戦い方が紹介されており、実際に試してみました。

自分のレベルだとまだGCPは使わなくても良さそうです。でも使えるとかなり便利ですね。

Kaggleで勝つ データ分析の技術 第2章

タスクと評価指標についてです。

評価指標の種類とそれを最適化するためのアプローチが書かれています。

ちなみに現在参加しているM5の評価指標はRMSLEです。

M5のnotebookを読み漁る

よくわからないながらも定石通り、notebookをmostvotesで並び替えて上から読んでいっています。

最初はEDAを2、3個読みつつ、ポイントをノートでまとめていきました。

次にYakovlev氏が書いている一連のnotebookを読み進めていきました。

最初に元データのcsvファイルから特微量を抽出する「Simple FE」

lagについて言及した「Lags features」

Mean encodingなど特微量の作成についての「Custom features」

最後にそれらを集めた「Three shades of Dark」(これは途中まで、明日続きを。)

1行1行理解していくだけでもめっちゃ時間がかかりますが、ただ本を眺めているだけよりも圧倒的に勉強になります。

対応する部分を「kaggleで勝つデータ分析の技術」で調べたりググったりで結構対応できています。

最近久々にめっちゃ英語の文章読んでるなあ。。

にしても疲れた〜〜。のでゆっくり寝て休みます。

明日に向けて

明日も引き続きKaggleやります。

特微量エンジニアリングについてももっと勉強しよう。

 

 

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day15

今日の目標

今日は1ヶ月のゴールとして掲げたKaggleがどのようなものなのかを勉強しようと思います。「Kaggleで勝つ データ分析の技術」を読む予定です。

15日目でやった事

Kaggleで勝つ データ分析の技術 第1章

第1章ではKaggleって何?というところから、参加から提出までの流れ、参加の意義、実際にどのように分析をしていくかの流れが解説されています。分析の流れはKaggleのタイタニックチュートリアルを用いて解説されています。

Kaggleについて色々調べた

主にこちらのサイトに載っているものを軸にみていきました。

/kaggle初心者ガイド - Kaggler-ja Wiki

Kaggleに登録して、タイタニックをやってみた

自分もタイタニックを用いて実際に分析してみました。一応scikit-leanは勉強したのでその知識を使いながら、実際に試してみました。

更新するたびに順位が上がる感覚は結構気持ちよくて、ハマってしまうかもしれません。。

Competitionを探してみた

一通り、現在どのようなコンペが行われているかを見たところ、画像系のコンペが多く、DeepLearningを用いないと難しそうでした。面白そうなコンペもたくさんあり、特に病理画像からグリソンスコアを推測するPANDAはとても興味がありましたが、いつになったらこのレベルに到達できるのだろう、というくらい難しそうでした。。

テーブルデータを用いたコンペとしては、「M5 Forecasting -Accuracy」があり、内容としてはウォルマートの時系列売上データを用いて将来の売上を予測するというものです。

データサイズも大きく、難しそうでしたが、一旦取り組んでみたいと思います。

まずはEDAを読んでみましたが、分析のレベルが非常にレベルが高くてビビりました。とにかく内容を理解するのに一苦労です。

機械学習をはじめて2週間でやることではない気もしますが、焦らずじっくり取り組んでみようと思います。

明日に向けて

とはいえ、いきなりM5にいくのはあまりにも無理があるので、

「Kaggleで勝つデータ分析の技術」を読みつつ、明日はyoutube動画でチュートリアルが解説されている

Kaggle入門 Porto Seguroコンペ Part.1 (イントロ~GCP登録)

https://www.youtube.com/watch?v=NHQTw-ORcSQ&list=PLkBjLQIGEjJnbde-czDnP9kvF9-Um5q6Q

を実装していこうと思います。

残り2週間ちょっとの時間の使い方迷います。。

本当はcouseraのディープラーニングをやろうと思っていたのですが、それで1週間~10日はかかると思われ、そちらをやるとKaggleの時間が取れなくなりそうです。

とりあえず5月一杯はKaggleに全力で取り組んでみて、このまま突っ走れそうだったらKaggleを継続、一度やることを変えたくなったらディープラーニングにいこうと思います。