Google Cloud (GCP)資格受ける前に必読 :Professional Machine Learning Engineer 編



皆さんこんにちは！iret Global Solutions 事業部の浜田です。今回は僕が特に苦戦したProfessional Machine Learning Engineerを受けるにあたって知っておきたかったことを記事にしてみました。もう直ぐベータ版が出るようなので是非活用してみてください。


<h1>事前に意覚えといた方がいいこと</h1>
このProfessional Machine Learning Engineerの試験ですが、Google Cloudのサービスの他に一般的な機械学習についても深く問われます。下記のようなアルゴリズムを選択する必要があるのでまずしっかり覚えてみてください。

<h2>機械学習のアルゴリズム Algorithms </h2>

|名称|英語名|説明|使用例|
|:-----------------|------------------:|:------------------:|:------------------:|
|線形回帰|Linear Regression| 単純に2つの事象の相関性を調べたいときに使用 | 降水量と地盤被害の相関性を調べる|
|ロジスティック回帰 |Logistic Regression|手元のデータから目的のデータを分類する手法、主に病院などでよく使われるイメージ   | 喫煙、飲酒などの生活習慣からその人が病気になるかならないかを予測する|
|決定木|Decesion Trees| ツリー構造を用いて目的変数に影響を及ぼしている説明変数を見つけ出す分析手法 | アンケート調査結果の分析、顧客情報をもとに消費者の行動を分析|
|ランダムフォレスト |Random Forest| 決定木を複数並べて、各決定木の出力結果の平均若しくは多数決を算出して予測を行う|スパムメールの判別 |
|サポートベクターマシン(<strong>SVM</strong>) |Support Vector Machines| パターン識別用に用いられる教師あり機械学習モデル|主にテキスト認識や数字認識、顔認証などに使われる|
|ナイーブベイズ(単純ベイズ分類器)|Naive Bayes| 与えられたデータから考えられるすべての確率を計算し、最も確率の高い結果を出力するため重要でないとされる特徴量の影響をあまり受けず、トレーニングデータが少ない場合でも高い精度を維持 | スパムメールの判別、最新記事のカテゴライズ|
|k近傍法|k-Nearest Neighbors (k-NN)| 分類済みの既知のデータを元に多数決を行い最も近いデータと同じクラスに分類する。シンプルな手法ゆえに割と万能。   | クレジットカードの不正利用検知 |
|k平均法|K-Means Clustering  |  最初にデータに対してランダムにグループ(クラスタ)を割り振り、その後はクラスタ内の平均を求め、各データを近い平均のグループに割り振りなおすという動作を繰り返すことでクラスタ分けを行う。| 会社の人事におけるメンバーグループ分けなど |
|ニューラルネットワーク|Neural Networks (Deep Learning)| 「入力層」、「隠れ層」、「出力層」の3層構造で構成されレイルアルゴリズム。データは事前に層・接続・方向のそれぞれに定義された伝達方法でやり取りが行われている。   |  画像認識、音声認識など|




<h2>教師あり or 教師なし</h2>
続けてこちらが先述したアルゴリズムに教師ありかなしかを加えた表です。教師あり学習は解を与えた状態で学習させる手法となっており「回帰」と「分類」が代表的なものになります。

|アルゴリズム|教師有無|
|:-----------------|------------------:|
|線形回帰|あり|
|ロジスティック回帰|あり |
|決定木|あり |
|ランダムフォレスト|あり |
|サポートベクターマシン(SVM)|あり |
|ナイーブベイズ(単純ベイズ分類器)|あり |
|k近傍法|あり |
|k平均法|<strong>なし</strong> |
|ニューラルネットワーク|あり |

<h2>Precision と Recall</h2> 
そしてこちらがGoogle Cloud の試験でよく問われていた用語になります。いかに簡単な説明を載せていますが自分で調べることを強くお勧めします。

<strong>Precision</strong>
陽性だと予測したサンプルの内どれだけ実際に陽性だったかを指標にしたものです.

<strong>Recall</strong>
機械学習モデルが予め予測した中でと正しく識別したデータの割合です。

例えば、12通のデータセットから8通のスパムメールをAIが検出して、予測された8通のスパムメールのうち、5通が実際のスパムだった場合。この分類モデルのPrecisionは5/8、Recallは5/12になります。


<h1>Google Cloud の機械学習サービス</h1>
さてこちらが私が実際の試験で問われたGoogle Cloud のサービスになっています。

<h4>メインのサービス</h4>
<br>
この辺りがメインになってきますが特に上の三つが一番聞かれました。
<br>
<br>

<strong>Vertex AI</strong> 
開発の幅は広いがめちゃくちゃ高いです

<strong>Auto ML  </strong>
知識がなくても機械学習を行うことが可能です。

<strong>BigQuery ML </strong>
データがBigQuery内にあったらコード書かなくてもSQLでモデルの構築が可能です。

<strong>KubeFlow</strong>
作成・学習・検証、ワークフロー構築、モデルサービングといったMLOpsに関するワークロードをKubernetes上で実行するためのオープンソースツールキット簡単いいうと、MLプロジェクトで必要となるツールの全部がここにあるといった感じです。

<strong>DataFlow</strong>
Apache Beamベースにしたデータ処理のサービス。ストリーム処理とバッチ処理両方に対応していてオートスケールにも対応しているので重い処理や複雑な処理に向いています。

<strong>DataProc</strong>
DataFlowではなくSarkやHadoopを使いたい人用です。

<strong>DataPrep</strong>
GUI操作で機械学習に使用する構造化データと非構造化データを視覚的に探索、クリーニング、準備できるサービス、Data Flowとよく一緒に使われます。

<strong>Data Fusion</strong>
パイプライン構築用プロダクトであり、ノーコード・ローコードで ETL を実装できるものになっています。

<strong>TensorFlow</strong>
ニューラルネットワーク計算によってシミュレーションすることができる計算ライブラリです。

<strong>TensorFlow Extension</strong>
Tensorflowベースend-to-endの機械学習フレームワーク。 大規模な機械学習システムの構築から、本番運用するまで、必要となる機能は一通り揃っています。

<strong>TensorFlow Data Validation</strong>
機械学習用のデータセット検証を目的に開発されたPythonライブラリです。

<h4>データ保管場所</h4>
<strong>BigQuery</strong>

構造化データと半構造化データはここに入れる感じです。
<br>
<br>
<strong>Cloud Strage</strong>

画像、動画、音声、非構造化データは基本ここに入れます。
<br>
<br>

<h4>その他覚えておいた方がいいサービス</h4>
以下のサービスは私の時はあまり聞かれませんでしたが勉強しておいて損はありません。
<br>
<br>

Pub/Sub
Cloud Function
Cloud Build
Cloud Source Repository
Github

<h4>必須とは言わないけどもし時間があったら</h4>
AWSと同様、Google CloudのProfessional Machine Learning Engineerの試験もデータ分析に関連することが度々聞かれます。機械学習とデータサイエンスの関係性は切っても切れないものなのでもし時間があれば以下の記事に目を通してGoogle Cloudのデータ分析関連のサービスを覚えておいた方がいいかもです。 

https://qiita.com/sina-cloud/items/6d47882f2d54f48430bf

<h2>最後に</h2>


さて、いろいろ長々と書いてきましたが一番の近道はやっぱり練習問題を解きまくることです。私はMLに関してはUdemyを使用していました。しっかり練習問題を解くことをお勧めします。

他の資格にも興味ある方は以下の記事に難易度順のランキングを載せているので参考程度に是非

https://qiita.com/sina-cloud/items/bbe1d263c6b69954867f


それでは皆さん、ご武運を。