AWS認定機械学習専門知識(MLS)を、２ヶ月の集中期間で取得したやったことまとめ 

# はじめに
AWS認定機械学習専門知識(MLS)について、受験者数の絶対数が少ないのか試験対策に関する参考記事の投稿が少なく情報収集に苦労しました。

今回、２ヶ月ほどの準備をして取得できた試験準備のコツなどについてまとめてみました。機械学習専門知識に関わるAWS関連サービスのイメージを掴んでいただければ幸いです。


# 本記事の主な対象者
- AWS認定の他の試験区分は取得済みで、機械学習専門知識の受験を検討している方
- 取得に向けて有効な学習方法などの情報収集したい方

# 筆者のAWS認定履歴

|AWS認定  |取得日  |
|---|---|---|
|ソリューションアーキテクト - アソシエイト  |2018-05-13|
|デベロッパー - アソシエイト  |2018-06-03|
|SysOpsアドミニストレーター - アソシエイト | 2018-06-10|
|ソリューションアーキテクト - プロフェッショナル  |2018-07-29|
|DevOpsエンジニア - プロフェッショナル  |2018-08-26|
|ビッグデータ専門知識  |2019-08-25|
|セキュリティ専門知識  |2019-12-08|
|機械学習専門知識  |2020-02-23|

昨年12月にラスベガスで開催された re:Invent 2019 で 多くの機械学習関連のサービスのアップデートがアナウンスされました。
今回の受験モチベーションは、機械学習の知識は、エンジニアの教養としてもはや特別なものではなくなってきていると感じ、これらの知識ついて一度体系立てた学習をしてみたくなったのがきっかけです。

# 今回のスコア(2020-02-23受験)
```
総合スコア: 755/1000 (ボーダー750)

スコアと評価
分野 1: データエンジニアリング  ->  十分な知識を有する
分野 2: 探索的データ解析  ->  十分な知識を有する
分野 3: モデリング  ->  再学習の必要あり
分野 4: 機械学習の実装と運用  ->  十分な知識を有する
```

# AWS認定機械学習専門知識(MLS)について
ここからが本題となります。
まずは、以下の公式ページから試験概要の把握を行いました。

 - [AWS 認定機械学習 トップページ](https://aws.amazon.com/jp/certification/certified-machine-learning-specialty/)
 - [試験ガイド](https://d1.awsstatic.com/training-and-certification/docs-ml/AWS%20Certified%20Machine%20Learning%20-%20Specialty%20Exam%20Guide%20001%20v1.1%20JPN.pdf)

 - [サンプル問題](https://d1.awsstatic.com/training-and-certification/docs-ml/AWS%20Certified%20Machine%20Learning%20-%20Specialty_Sample%20Questions.pdf)

# 具体的な試験準備で効果があったと思えること
実際に受験をしてみて、試験対策として効果があったと思う内容について、主観的な効果度合いで順に記載します。

 - 機械学習に関する基礎の習得
前提として、著者の生業はサーバーサイドのエンジニアで、一般的な機械学習の知識はあれど、教育機関で機械学習アルゴリズムを学んだ経験があったり、対価を頂く仕事として機械学習に携わっている立場ではありません。
今回、専門的な機械学習の知識の習得の為、スタンフォード大学[Andrew Ng](https://www.andrewng.org/)教授の[Coursera機械学習コース](https://www.coursera.org/learn/machine-learning)を年末年始の休暇を利用して集中的に学習しました。
このコースの講義は英語の動画ですが、日本語の字幕が丁寧につけられています。また、無料のオンラインコースですので、AWS認定取得に関わらず、エンジニアの教養として機械学習に触れたい方にもオススメできる内容です。
このコースの詳細な紹介については多くの方がQiita記事を投稿されていますので、紹介はそちらに委ねたいと思います。

  - [数学の苦手なバイオの学生がCourseraの機械学習コースを修了して気づいたこと](https://qiita.com/katsu1110/items/423fc9ac567710a1bd9b)
  - [Coursera機械学習入門オンライン講座虎の巻(文系社会人にオススメ)](https://qiita.com/FukuharaYohei/items/b2143413063376e97948)

 - 動画学習サイトの活用
英語力は必要となりますが、網羅的な試験対策コースがあります。動画を視聴する時間はそれなりに取られます。何れかのサイトを利用しておくと試験前の安心感が得られると思います（サイトのみの紹介、コースはお好みで）

   - [Udemy](https://www.udemy.com/)
   - [Linux Academy](https://linuxacademy.com/)
   - [Cloud Guru](https://acloud.guru/)

## 抑えるべき３つのポイント
実際に認定試験を受けてみて、試験ガイドとは別軸で大きく３つのカテゴリーがあるのかなと感じました。


#### 1. 機械学習に関わるAWS関連サービスの理解
  - 機械学習と間接的に関わるAWS関連サービスを問われます。この部分については、ほぼAWS認定ビッグデータ専門知識の試験内容と重複しています。逆の言い方をすると、先にビックデータを取得する（学習する）と、この部分はおのずとクリアできるのかなと思います。いずれにしても、機械学習のプリプロセスは大量のトレーニングデータを扱う部分ですので、作業量や費用対効果、セキュリティなどの条件に照らした場合、AWSサービスとして何がベストプラクティスなのかの理解が必要です。

#### 2. 機械学習の基礎知識
  - 純粋に機械学習の基礎知識を問われます。例えば、欠損・不均衡データのデータ補完や、オーバーフィッティング（過学習）への対処、学習率・バッチサイズそれぞれ大小の振る舞いなどなど。この部分については、先に紹介した
[Coursera機械学習コース](https://www.coursera.org/learn/machine-learning)をしっかり理解していれば、認定試験をクリアできる知識が身につくかと思います。

#### 3. SageMaker
  - SageMakerのビルトインアルゴリズムを中心に広い範囲で知識を問われます。事前に、[Coursera機械学習コース](https://www.coursera.org/learn/machine-learning)を受講しており、数学的な側面からベースとなる機械学習アルゴリズムのいくつかに触れていましたので、ビルトインアルゴリズムには取っ付き易いものも有りました。ですが、日頃SageMakerを活用している方でも、全てのビルトインアルゴリズムには触れてはいないだろうという位のボリューム感です。ここは素直に、[Amazon SageMaker-開発者ガイド](https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/whatis.html)を、ユースケース（分類、レコメンド、異常検知・・・）を想像しながら読み進めるのがオススメかと思います。

# その他試験TIPS
以下、私見を多分に含むメモです。キーワードの参考に。

 - データ分布
  - 正規分布 / ２項分布 / ポアソン分布 / ベルヌーイ分布
 
 - 欠損データ補完
  - 平均値置換
  - 中央値置換
  - 行削除
  - 機械学習で推定値補完
  - トレーニングデータ追加
 
 - 不均衡データの対処
  - オーバーサンプリング
  - アンダーサンプリング
  - SMOTE
 
 - 外れ値の対処
  - 分散、標準偏差
  - Random Cut Forest
 - トレーニングデータ前処理
  - ビン分割
  - 対数変換
  - One-hotエンコーディング / ラベルエンコーディング
  - Scaling
  - 正則化
  - シャッフル
 - トレーニング
  - 学習率
  - バッチサイズ
  - 過学習/未学習
  - 勾配消失(爆発)問題
  - L1 / L2正則化
  
 - トレーニング評価
  - 混同マトリックス
  - Recall
  - Precision
  - F1
  - ROC / AUC
 - AWS関連サービス
  - S3
  - Kinesis
  - Glue
  - Data Pipeline
  - Batch
  - DMS 
  - Step Functions
  - Athena
  - QuickSight
  - EMR
  - ECR
  - ML
  - SageMaker
  - SageMaker Ground Truth
  - SageMaker Neo
  - IoT Greengrass
  - Comprehend
  - Translate
  - Transcribe
  - Polly
  - Rekognition
  - Forecast
  - Lex
  - Personalize
  - Textract
  - DeepRacer
  - DeepLens

 - SageMakerビルトインアルゴリズム
  - BlazingText
  - DeepAR
  - 因数分解機
  - イメージ分類
  - IP Insights
  - K-Means
  - KNN
  - LDA
  - 線形学習
  - NTM
  - Object2Vec
  - オブジェクト検出
  - PCA
  - RCF
  - セマンティックセグメンテーション
  - Sequence to Sequence
  - XGBoost
  - 強化学習
  
# おわりに
正直に、昨年度アソシエイトレベルの準備を始めた頃は、機械学習専門知識の認定は、天上人のみが取得できるものだと思っていました。ですが今回、認定をひとつづつクリアしていくうちに自然とたどり着くことができました。

大事なことは、行動を起こしてみる。そして学習を習慣づけるといったことではないでしょうか。
今後受験を検討される方の一助になれば幸いです。


#### 著者関連リンク
 - [AWS認定ビッグデータ専門知識(BDS)を、１ヶ月の準備期間で取得した試験準備やったことまとめ](https://qiita.com/go_sougen/items/bfdf5e5d1c6c57ca6141)
 - [AWS認定セキュリティ専門知識(SCS)を、１年の空白期間を経て取得したやったことまとめ](https://qiita.com/go_sougen/items/7a96d2358ffc5eceb960)
 - [AWS認定高度なネットワーキング専門知識(ANS)を、３ヶ月のハンズオン期間を経て取得したやったことまとめ](https://qiita.com/go_sougen/items/ed2df8131b3a2df8a0e8)
 - [AWS認定データベース専門知識(DBS)を、ほぼぶっつけ本番で取得したやったことまとめ](https://qiita.com/go_sougen/items/5e97feaacb387c36e9d1)
 - [AWS認定Alexaスキルビルダー専門知識(AXS)を、ツンデレメイドスキルを作りながら取得したやったことまとめ](https://qiita.com/go_sougen/items/7a78bac3f6a9300901c9)
 - [AWS 認定クラウドプラクティショナー(CLF)を、これまでの振り返りを兼ねて取得したやったことまとめ](https://qiita.com/go_sougen/items/5b5ac0e59fd67e1181ed)