ブログヘッダー画像2

コミックの新刊を買う感覚でデータサイエンスの本を買ってしまうため、感想と共に成仏して行きます

Google CloudのProfessional Data Engineerの資格を取りました

f:id:soichrof:20190210135215j:image

統計学機械学習だけでなく、分析基盤も勉強してみたいなと思い、最初の一歩として、Google CloudのProfessional Data Engieerの認定資格を取りました。

取得にあたって、勉強方法等をつらつら書いて行きます。

 

基本的な情報

資格そのものについては、Googleのドキュメントを見て頂ければいいと思いますが、料金は200ドル*1、試験はお近くのテストセンターで行います。4 or 5択の試験で、基本的にはユースケースに沿ったGCPのサービスを解答する問題がほとんどです。*2

試験結果は試験修了後すぐに出ます*3

正式認定は試験終了後の2日後でした。Googleグッズのクーポンコードも送られてきます。

 

勉強方法

勉強自体は色々やったのですが、結果としてGCPのドキュメントを読めば、受かると思います。

Google Cloud Platform のドキュメント  |  ドキュメント  |  Google Cloud

資格を取ることだけを目的とするなら、カテゴリのストレージ、ビッグデータ機械学習を読むだけで大丈夫だと思います。特に”概念”のセクションは最低でも抑えておいた方がいいです。

 

私の場合は、ドキュメントの熟読の他に、Courseraのコース

Data Engineering on Google Cloud Platform 日本語版 | Coursera

や、どんぴしゃな本を一通りやりました。*4

Data Science on the Google Cloud Platform: Implementing End-to-End Real-Time Data Pipelines: From Ingest to Machine Learning

Data Science on the Google Cloud Platform: Implementing End-to-End Real-Time Data Pipelines: From Ingest to Machine Learning

 

この本は英語になりますが、手を動かしながら楽しめるので、モチベーションの維持に繋がりました。内容もGCPサービスを組み合わせて一つのプロダクトを作っていくような構成で、試験のユースケースに対応しながら勉強できたのも良かったです。

 

試験後

試験に受かったら、ご褒美に自宅の機械学習用のサーバーとして、自作PC一式を買うつもりだったのですが、もうGCPで良くね?*5となってしまって*6Boseスマートスピーカーを買いました。*7

 

 

 

*1:高い…もう更新はしない予定

*2:機械学習そのもののについての問題も少しですが出ます。感覚として、正則化、バッチ正則化レベルくらいの知識、タイタニックチュートリアルをやっていれば解答できるんじゃないかと思っています

*3:パソコン上では”暫定合格”と出てました。暫定ってなんやねん

*4:ただし、もう既に情報が古くなっている箇所も見受けられます。変化が速いのは仕方ないことですね…

*5:完全にgoogleの回し者になってしまった。

*6:sshが出来ればなんでもいいとすら思い始めた…PyCharmのpro版は、エディタのコードを直接ssh先のサーバーで動かせるのでおすすめです。

*7:めっちゃいい音、Youtube生活が捗りマス

CourseraのDeep Learning Specializationを修了しました

f:id:soichrof:20190209171545j:image

ちょくちょく取り組んでいたAndrew Ng先生のDeep Learningの講座を全て修了しました。

(実際に修了したのは、2018年11月頃です…はよ記事にしよって感じですが…)

想像以上に有意義な講座だったため、ちょっとした感想を書こうかと思います。

まずは基本情報をば…

 

何はともあれ料金

まず料金ですが、この講座はSpecializationという括りで、月50ドルの月額制となります。

早く終われば、その分お金が浮くというシステムですね。動画自体は無料で見られますが、課題やディスカッション等へのアクセスはできないようです。

ちなみにですが、5コースすべてを修了すると、自動的に更新が止まるようです。

 

日本語対応?

ここで注意なのですが、説明文では日本語対応と書いてあるコースもありますが、そのコース内の講義すべてが日本語対応しているとは限りません。*1

数式とコードで何を言わんとしているかは、なんとくなく分かりますが、英語絶対ムリ!という方には厳しい箇所があるかも…

それでもAndrew先生は、ゆっくりで非常に聞き取りやすい英語で話してくれるので、英語のリスニングを兼ねていると思うと、儲けもんです。

もちろん、英語字幕はすべての講義で見られますので、Google翻訳を使えば、事足りるのではと思います。

 

数学は出てくる?

これに関してはしっかりと出てきます。主に出てくるのは線形代数微分ですが、線形代数内積もちゃんと説明してくれるため、正直前提知識がほとんどなくても、ついていけると思います。

講義の基本的なスタンスは、脱ブラックボックスなので、これは仕方ない所ですね。

特徴として、{sum} は`np.sum`に置き換えられたりと、実際にコードを組むことを意識して展開されるので、エンジニアの方には頭に入りやすいんじゃないかなと思います。

 

講義形式

講義の基本形式は、こんな感じです。

  • テーマに沿った講義動画
  • 10-20問の選択式のテスト
  • Jupiter notebookを使ったプログラミング課題

このセットを1週間で行います。課題の提出の期限が設けられているため、なんとなくやらなくなってしまうオンライン講座の良くないところもカバーしています。もちろん1週間以内で終えて、次週分の講義を開始しても全く問題ありません。

課題もなかなか面白いものが多いです。例えばですが、こんなものがあります。

課題はJupyter notebook形式で行いますが、穴埋め形式でコードを完成させるタイプのものです。

環境はすべてクラウド上で構築されているため、ブラウザ一つあれば取り組むことができます。

課題は決して簡単ではないのですが、各課題で用意されているディスカッション(掲示板)を活用することもできます。

他の受講者のハマり所や、メンターによる参考サイト等を見ることができるので、すべて自力で解答しなければいけない訳でもないです。

解答をそのままディスカッションに掲載するのは、Courseraの規約違反になるので、ヒントだけ見るイメージですね。*2

 

講義内容

全5コースですが、それぞれについてざっと書きます。

1. Neural Networks and Deep Learning

最初の講義では、まずDeep Learningとはなんぞや?からニューラルネットではない2値分類(Logistic Regression)を出発点とし、多層ニューラルネット、ベクトル化、forward/back propまで、基本的な内容を一気に学びます。このコースだけでニューラルネットが何たるかを学習することができます。

 

2. Improving Deep Neural Networks: Hyperparameter tuning Regularization and Optimization

このコースでは、コース1の発展として、汎化、バイアス/バリアンス分解、l1, l2, ドロップアウト等の正則化手法について学びます。パラメータの初期化方法や、最適化手法、パラメータチューニングの戦略等、実践的な内容になっています。特に、これらはTensor FlowやKerasでコードを組むときに必ず出てくるものなので、ニューラルネットの入門書を読んで、概念は理解できたけど、オプションの指定方法が分からないという方の強い味方になりそうです。*3

 

3. Structural Machine Learning Projects

このコースは他のコースとは毛色が違います。実際に機械学習のシステムを組むときに、どの指標を使うべきなのか、train/dev/testの割合はどうするべきか、ベースラインはどう考えるべきなのかといった、なかなかテキストでは学べないものとなっています。

特に間違ったラベルについてどう考察するかの講義は新鮮でした。どれだけの精度が出たかに注目されがちですが、間違ったものから何を得るか、どういった戦略をとるかは、なかなかテキストには書いてないので、大変勉強になりました。

 

(4, 5はまた時間ができたら書きます…)

 

結局受けてみてどうだった?

まずディープラーニングのテキストをしっかりと読めるようになったというのが大きいですね。簡単なものなら論文を読むこともできるようになりました。

理論と実践がそこそこの難易度で展開されるので、ディープラーニングをちゃんとやりたいと思う方の最初1歩としては、本当にお勧めできます。仮に 3ヶ月かけて15,000円払ったとしても十二分に回収できます。(私は仕事中も空いた時間でこなしてたというのもありますが、だいたい1ヶ月くらいかかりました)

あとは機械学習ライブラリで出たエラー内容を追いやすくなりました。

いままで次元数があってなくてエラーが出ていても、一生懸命ググってそれっぽい解決をしていましたが、”あっ、こことここのレイヤー合ってないやん”みたいに気づけるようになった気がします。

ただ一つ注意点なのですが、このコースを修了したからといってデータサイエンティストや機械学習エンジニアを名乗れるかと言われればそうではありません。

総コーディング量も決して多くありませんし、数ある機械学習手法の一つであるディープラーニングにフォーカスしたものなので…

それでも、入門レベルを超えたディープラーニングの知識を身につけられることは間違いないですし、高いセミナーや変なセミナーに参加するよりも、まずこれやっとけ!と声を大にして言いたいです。

 

ディープラーニング | Coursera

 

 

 

 

*1:2018年10月現在

*2:実際には、これって答えじゃんみたいなディスカッションもあります。。。。

*3:もちろんtf.ver=2.0のeager executionではないです

RユーザのためのRStudio[実践]入門 を読みました

RユーザのためのRStudio[実践]入門−tidyverseによるモダンな分析フローの世界−

RユーザのためのRStudio[実践]入門−tidyverseによるモダンな分析フローの世界−

"宇宙本"と呼ばれる本ですね(^^)

200ページ程ですが、tidyverseパッケージ周りが非常コンパクトかつ、よくまとめられており、最近のR事情を把握したい人にとってはとてもおすすめできる本です。

RStudioの設定から、tidyデータの概念、dplyrをデータの前処理、gglot2を用いたデータの可視化、Rmdを用いたレポーティング等、自分で一通りデータ分析ができる知識が身につくと思います。

主に使うのはHadley神が開発しているパッケージ群tidyverseですね。

www.tidyverse.org

特にdplyrを使ったデータの前処理や、ggplot2エステティックマッピングの機能の説明はかなり役に立ちました。

kaggleのkernelや、R関係の記事を読むと、tidyverseパッケージ群が普通に使われていますし、必須の知識なようです。何より便利です。

私はR言語を1年くらい全く使っていない期間があり、dplyr%>%(パイプ演算子)っておいしいの?状態で、最近のR界隈からは取り残されていたのですが、これでひとまずついて行けそうです。

一つ注意点としては、"入門"とタイトルにありますが、R言語を全く触ったことがない人がこの本から入ると難しく感じるかもしれません。 ただしR言語を勉強する上では避けて通れぬ道、入門書のお供、kaggleのkernelのお供に一冊あってもいいのではないかと…

正直なところ、もっと早くtidyverseを知っておけばよかったと同時に、もうR言語以外使いたくないと思ったのはナイショです。