この記事について
JAWS-UG CLI専門支部 #67 MachineLearning入門で実施するハンズオン用の手順書です。
前提条件
必要な権限
作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。
- MachineLearningのフルコントロール権限
0. 準備
0.1. リージョンを指定
コマンド
export AWS_DEFAULT_REGION="eu-west-1"
0.2. 資格情報を確認
コマンド
aws configure list
インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。
結果
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************GMWA iam-role
secret_key ****************obFC iam-role
region eu-west-1 env AWS_DEFAULT_REGION
0.3. バージョン確認
コマンド
aws --version
結果
aws-cli/1.10.66 Python/2.7.12 Linux/4.4.19-29.55.amzn1.x86_64 botocore/1.4.56
0.4. バージョンアップ(必要に応じて)
コマンド
sudo pip install -U awscli
0.5. 変数の確認
コマンド
cat << ETX
AWS_ID: ${AWS_ID}
ML_MODEL_ID: ${ML_MODEL_ID}
TRAINING_DATA_SOURCE_ID: ${TRAINING_DATA_SOURCE_ID}
ETX
結果
AWS_ID: ************
ML_MODEL_ID: ml-model-cli-************
TRAINING_DATA_SOURCE_ID: training-cli-************
1. 学習モデルの評価
1.1. 評価の実行
評価IDの指定
コマンド
EVAL_ID="eval-cli-${AWS_ID}-$(date +%Y%m%d%H)"
変数の確認
最初に作成したデータソースの3割を評価用データとして使用します。
コマンド
cat << ETX
EVAL_ID: ${EVAL_ID}
ML_MODEL_ID: ${ML_MODEL_ID}
TRAINING_DATA_SOURCE_ID: ${TRAINING_DATA_SOURCE_ID}
ETX
結果
EVAL_ID: eval-cli-************
ML_MODEL_ID: ml-model-cli-************
TRAINING_DATA_SOURCE_ID: training-cli-************
評価の作成
コマンド
aws machinelearning create-evaluation \
--evaluation-id ${EVAL_ID} \
--ml-model-id ${ML_MODEL_ID} \
--evaluation-data-source-id ${TRAINING_DATA_SOURCE_ID}
結果
{
"EvaluationId": "eval-cli-************"
}
評価の確認(1)
コマンド
aws machinelearning get-evaluation \
--evaluation-id ${EVAL_ID}
完了前には以下のような結果になります。
結果
{
"EvaluationDataSourceId": "training-cli-************",
"Status": "INPROGRESS",
"Name": "eval-cli-************",
"InputDataLocationS3": "s3://jawsug-cli-ml-************/banking.csv",
"EvaluationId": "eval-cli-************",
"CreatedByIamUser": "arn:aws:iam::************:user/user01",
"MLModelId": "ml-model-cli-************",
"LastUpdatedAt": 1474611149.443,
"StartedAt": 1474611106.459,
"Message": "Current Step: EVALUATION (1/2) 0%",
"PerformanceMetrics": {
"Properties": {}
},
"CreatedAt": 1474611104.298
}
完了後には以下のような結果になります。
結果
{
"EvaluationDataSourceId": "training-cli-************",
"Status": "COMPLETED",
"ComputeTime": 108000,
"Name": "eval-cli-************",
"InputDataLocationS3": "s3://jawsug-cli-ml-************/banking.csv",
"EvaluationId": "eval-cli-************",
"CreatedByIamUser": "arn:aws:iam::************:user/user01",
"MLModelId": "ml-model-cli-************",
"LastUpdatedAt": 1474611287.208,
"StartedAt": 1474611106.459,
"LogUri": "https://eml-prod-dub-emr.s3.amazonaws.com/************-ev-eval-cli/userlog/************-ev-eval-cli?AWSAccessKeyId=********************&Expires=1475216221&Signature=********************************",
"PerformanceMetrics": {
"Properties": {
"BinaryAUC": "0.9395127463458541"
}
},
"CreatedAt": 1474611104.298,
"FinishedAt": 1474611287.208
}
評価の確認(2)
BinaryAUC
が、評価指標です。
0から1で表現され、1に近いほど精度の高い予測が可能とされます。
Management Consoleでも確認が可能です。
評価指標については、Developers.IOを見ればいいと思うよ。
Amazon Machine Learningの評価指標まとめ
コマンド
aws machinelearning describe-evaluations
結果
{
"Results": [
{
"EvaluationDataSourceId": "training-cli-************",
"Status": "COMPLETED",
"ComputeTime": 108000,
"Name": "eval-cli-************",
"InputDataLocationS3": "s3://jawsug-cli-ml-************/banking.csv",
"EvaluationId": "eval-cli-************",
"CreatedByIamUser": "arn:aws:iam::************:user/user01",
"MLModelId": "ml-model-cli-************",
"LastUpdatedAt": 1474611287.208,
"StartedAt": 1474611106.459,
"PerformanceMetrics": {
"Properties": {
"BinaryAUC": "0.9395127463458541"
}
},
"CreatedAt": 1474611104.298,
"FinishedAt": 1474611287.208
}
]
}
評価の確認(3)
Management Consoleで確認します。
ログの確認
コマンド
EVAL_LOG_URI=$(aws machinelearning get-evaluation \
--evaluation-id ${EVAL_ID} \
--query LogUri \
--output text) \
&& curl ${EVAL_LOG_URI}
結果
(省略)
以上です。