MLA-C01の受験にともないチートシートにまとめてみました。
-
データ準備
-
特徴エンジニアリング:
- 数値データの前処理:歪んだ分布を持つ変数をより正規分布に近づけるために、対数変換が用いられます。例えば、収入データのように偏りがある場合に、対数変換を適用すると、極端な値の影響を軽減し、モデルがデータをより効果的に解釈できるようになります。
- カテゴリデータの前処理:カテゴリ変数を数値表現に変換するために、ワンホットエンコーディングが使用されます。例えば、広告キャンペーンの配色のようなカテゴリデータをバイナリ行列に変換し、ニューラルネットワークがカテゴリデータを効果的に解釈できるようにします。
- 特徴分割:日付などの特徴を年、月、日などの個別の特徴に分割することで、モデルが時間データをより効果的に理解して活用できるようになります。
- ビニング:数値変数を範囲に基づいてカテゴリ変数に変換します。例えば、年齢を「子供」「大人」「高齢者」といったカテゴリに分割することができます。
-
データスケーリング:
- 最小最大スケーリング:数値特徴を通常0から1の範囲にスケーリングし、範囲の広い特徴がモデルの学習プロセスを支配するのを防ぎます。
-
データ不均衡への対処:
- オーバーサンプリング:少数クラスのサンプルを複製する。SMOTEのような手法を用いて、少数派クラスの合成例を生成し、データセットのバランスを取ります。
- アンダーサンプリング:多数派クラスのサンプル数を減らす。
- クラスの重み付け:少数クラスの誤分類に対してより高いペナルティを課すことで、モデルが少数クラスに注意を向けるようにします。
-
データ変換:
- JSON データを Apache Parquet 形式に変換する。 Parquet は列指向のストレージ形式であり、分析クエリを高速化します。
-
特徴エンジニアリング:
-
モデル開発
-
モデルの選択:
- 回帰: 連続値を予測するために使用され、例えば、広告費と過去の売上データに基づいて将来の売上収益を予測するのに適しています。
- 分類: カテゴリを予測するために使用されます。例えば、メールがスパムかどうかを予測するバイナリ分類 や、画像を猫、犬、鳥などのさまざまなカテゴリに分類する多クラス分類。
- クラスタリング: ラベル付けされていないデータからパターンを抽出するために使用されます。例えば、購買行動に基づいて顧客をグループ化するなど、特定のユーザー行動を事前に把握せずに閲覧パターンに基づいてユーザーをセグメントにグループ化するのに適しています。
- 強化学習 (RL): エージェントが環境との相互作用を通じて学習し、報酬を最大化するのに適しています。例えば、変動する市場で資産を購入、売却、または保有することでポートフォリオを調整するのに適しています。
-
ハイパーパラメータチューニング:
- グリッドサーチ: 定義されたグリッド上のすべてのハイパーパラメータの組み合わせを試します。トレーニングが安価な場合、またはパラメータ空間が小さい場合に適しています。
- ランダムサーチ: ハイパーパラメータをランダムに選択します。
- ベイズ最適化: 以前のトレーニング結果を利用して、次にテストするハイパーパラメータのセットを提案します。
- ハイパーバンド: パフォーマンスの低いハイパーパラメータ設定を早期に停止し、有望な構成に計算リソースを集中させるように設計されています。
-
過剰適合 (オーバーフィッティング) への対処:
- クロスバリデーション: 複数のデータサブセットでモデルのパフォーマンスを評価し、モデルが特定のデータに過度に適合するのを防ぎます。
- 正則化: 極端なパラメータ値にペナルティを課すことで、モデルを簡素化し、過剰適合のリスクを減らします。
- 早期停止: モデルの検証データのパフォーマンスが低下し始めたら、トレーニングプロセスを停止することで過剰適合を防ぎます。
- ドロップアウト: ニューラルネットワークのトレーニング中に一部のニューロンを無効にすることで、モデルが特定のニューロンに過度に依存するのを防ぎます。
-
モデル評価:
- 精度: モデルが正しく分類したインスタンスの割合を測定します。例えば、モデルが電子メールの85%をスパムか非スパムかに正しく分類した場合、この指標が精度です。
- 再現率(リコール): 実際の陽性例のうち、正しく識別されたものの割合を測定します。不正な取引を検出する際に、実際には不正である取引を見逃さないようにするために重視される指標です。
- F1スコア: 精度と再現率の調和平均であり、両方のバランスを評価する際に使用します。
-
モデルのバイアス評価:
- 特徴帰属ドリフト: モデルが予測を行う際に特定の機能に重み付けまたは依存する方法の変化を監視します。
- データドリフト: モデルのトレーニングに使用されたデータと比較した、時間の経過に伴う入力データの分布の変化を監視します。
-
モデルの選択:
-
モデルのデプロイと運用
-
モデルのデプロイ:
- リアルタイム推論: 低レイテンシーの応答が必要な場合に適しています。
- サーバーレス推論: トラフィックの変動が大きい場合に、需要に基づいて自動的にスケールします。
- バッチ変換: 大量のデータをオフラインで処理するのに適しています。
-
モデルの監視:
- CloudWatch メトリクス: モデルのパフォーマンスを監視し、しきい値を超えた場合にアラートをトリガーします。
- SageMaker Model Monitor: データドリフトや品質ドリフトを検出します。
- SageMaker Debugger: モデルのトレーニング中に発生する勾配消失や過剰適合などの問題を監視およびデバッグします。
-
機械学習ワークフローの自動化:
- SageMaker Pipelines: データ準備からモデルのデプロイまでのエンドツーエンドの機械学習ライフサイクルを自動化します。
- Amazon EventBridge: S3に新しいデータがアップロードされた際にSageMaker Pipelineを自動的にトリガーします。
-
モデルのデプロイ:
-
特徴量エンジニアリング:
- 対数変換: 歪んだ分布を正規分布に近づけるために使用されます。
- ワンホットエンコーディング: カテゴリ変数をバイナリ行列に変換し、モデルがカテゴリ間の関係を理解できるようにします。
- 特徴分割: 時間データを個々の要素に分解し、モデルが各要素のパターンを学習できるようにします。
- ビニング: 数値データをカテゴリグループに分割し、非線形関係の把握を容易にします。
-
モデル評価指標:
- 精度: 正しく分類されたインスタンスの割合を示します。
- 再現率: 実際に陽性であるもののうち、正しく予測された割合を示します。
- F1スコア: 精度と再現率のバランスを取る指標です。
-
機械学習の問題タイプ:
- 回帰: 連続値を予測するのに適しています。
- 分類: カテゴリを予測するのに適しています。
- クラスタリング: ラベルなしデータからグループを特定するのに適しています。
- 強化学習: 環境との相互作用を通じて学習するエージェントを訓練するのに適しています。
-
Amazon SageMaker:
- SageMaker Data Wrangler: データ準備、特徴エンジニアリング、異常検出、視覚化に使用されます。S3、Redshift、Feature Storeなどの複数のソースからデータをインポートできます。
- SageMaker Feature Store: 再利用可能な特徴を保存し、管理します。
- SageMaker Pipelines: 機械学習ワークフローを自動化するために使用されます。
- SageMaker Model Registry: モデルのバージョンを追跡します。
- SageMaker Endpoint: リアルタイム推論のためにモデルをデプロイします。
- SageMaker Processing: データの前処理に使用されます。
- SageMaker Automatic Model Tuning: ハイパーパラメータの調整に使用されます。
- SageMaker Ground Truth: データセットにラベルを付けるのに使用されます。
- SageMaker Debugger: トレーニング中の問題をデバッグします。
- SageMaker Neo: エッジデバイスにモデルを導入するための最適化を行います。
- SageMaker Canvas: コードを書かずに機械学習モデルをトレーニングするのに使用されます。
-
AWS Glue:
- AWS Glue クローラー: S3内のデータのスキーマを自動的に推測し、Glue Data Catalogに登録します。
- AWS Glue ジョブ: データの抽出、変換、ロード (ETL) を実行します。
- AWS Glue DataBrew: データの準備、クレンジング、マスクに使用されます。
- AWS Glue Data Quality: データの品質を監視します。
- AWS Glue のサーバーレスアーキテクチャ: スケーラビリティを確保するために、Spark クラスターを自動的に管理します。
-
Amazon Bedrock:
- サーバーレス環境: 自動スケーリングを提供します。
- 暗号化: 転送中および保存中のデータの暗号化を提供します。
- 検索拡張生成 (RAG): ナレッジベースから情報を取得して応答を強化します。
-
Amazon S3:
- S3 イベント通知: S3バケット内で新しいオブジェクトが作成されたときに、Lambda関数をトリガーします。
- S3 ライフサイクルポリシー: データをアーカイブまたは削除するルールを設定します。
- S3 ゲートウェイエンドポイント: VPC内のリソースが、インターネットを経由せずにS3とプライベートに通信できるようにします。
-
その他のAWSサービス:
- Amazon CloudWatch: メトリクスを監視し、アラームを設定します。
- Amazon Kinesis: リアルタイムのデータストリーミングに使用されます。
- 拡張ファンアウト: 各コンシューマーに専用のスループットを提供し、複数のコンシューマーによるボトルネックを防ぎます。
- Amazon Athena: S3内のデータに対してSQLクエリを実行します。
- Amazon Lambda: サーバーレスコンピューティングに使用され、S3イベントやその他のイベントによってトリガーできます。
- Amazon Transcribe: 音声をテキストに変換します。
- Amazon Translate: テキストを翻訳します。
- Amazon Polly: テキストを音声に変換します。
- Amazon Rekognition: 画像内の不適切なコンテンツを検出します。
- Amazon Comprehend: テキスト内の不適切な言語を検出します。
- AWS Compute Optimizer: EC2インスタンス、Lambda関数、EBSボリュームの使用パターンを分析し、リソースを最適化するための推奨事項を提供します。
- AWS Lake Formation: S3バケットへのアクセス許可を管理します。
- IAMロール: AWSサービスに権限を委任し、他のAWSリソースへのアクセスを可能にします。