SageMaker TrainingによるADMET予測モデル構築
導入 ― ADMET予測の重要性
製薬開発において、化合物候補が臨床試験に進むまでには多大なコストと時間がかかります。
特に ADMET(Absorption, Distribution, Metabolism, Excretion, Toxicity) の予測は、早期に「有望な化合物」と「失敗する化合物」を振り分けるための必須ステップです。
従来は実験ベースで行われてきましたが、データ駆動の 機械学習モデル を活用することで、大規模な仮想スクリーニングを効率化できます。
今回は、AWSの SageMaker Training を用いて「ADMET予測モデル」を構築する方法を解説します。
全体アーキテクチャ
前回の記事(分子特徴量生成)で作成した特徴量(分子指紋+記述子)を入力として、以下の流れでモデルを構築します。
- 特徴量データの取得
- S3の
processed/features.csv
からロード
- S3の
- 学習ジョブ実行(SageMaker Training)
- アルゴリズム例:XGBoost, PyTorch, TensorFlow
- 評価指標:ROC-AUC, RMSE, Accuracy などタスク依存
- 評価・モデル保存
- モデル成果物をS3に出力
- CloudWatchでメトリクス監視
- モデル登録
- SageMaker Model Registryでバージョン管理
- 承認済みモデルのみデプロイ可能
学習スクリプトの例
train.py
(XGBoostを用いたバイナリ分類:毒性予測タスク)
import argparse
import pandas as pd
import xgboost as xgb
from sklearn.metrics import roc_auc_score
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--train", type=str, default="/opt/ml/input/data/train/train.csv")
parser.add_argument("--validation", type=str, default="/opt/ml/input/data/validation/validation.csv")
parser.add_argument("--model-dir", type=str, default="/opt/ml/model")
args = parser.parse_args()
# データ読み込み
train = pd.read_csv(args.train)
val = pd.read_csv(args.validation)
X_train, y_train = train.drop("label", axis=1), train["label"]
X_val, y_val = val.drop("label", axis=1), val["label"]
# XGBoostデータ形式に変換
dtrain = xgb.DMatrix(X_train, label=y_train)
dval = xgb.DMatrix(X_val, label=y_val)
# モデル学習
params = {
"objective": "binary:logistic",
"eval_metric": "auc",
"max_depth": 6,
"eta": 0.1,
"subsample": 0.8
}
model = xgb.train(params, dtrain, evals=[(dval, "eval")], num_boost_round=200, early_stopping_rounds=10)
# モデル保存
model.save_model(f"{args.model-dir}/xgb_model.json")
# 評価
preds = model.predict(dval)
auc = roc_auc_score(y_val, preds)
print(f"Validation AUC: {auc}")
SageMaker Training ジョブ起動コード(Python SDK)
import sagemaker
from sagemaker.estimator import Estimator
role = sagemaker.get_execution_role()
xgb_estimator = Estimator(
image_uri=sagemaker.image_uris.retrieve("xgboost", "ap-northeast-1", version="1.7-1"),
role=role,
instance_count=1,
instance_type="ml.m5.xlarge",
output_path="s3://your-bucket/models/admet/",
base_job_name="admet-xgboost"
)
xgb_estimator.fit({
"train": "s3://your-bucket/processed/train/",
"validation": "s3://your-bucket/processed/validation/"
})
ベストプラクティス
データ分割
- 化合物の系列依存性を考慮し、単純ランダム分割ではなく「クラスタリング分割」や「時間分割」を検討する
モデル選定
- ADMET予測ではXGBoostが強力なベースライン
- 深層学習(Graph Neural Network, Transformer)との比較も重要
評価指標
- 二値分類:ROC-AUC(毒性有無)
- 回帰:RMSE, MAE(溶解度、クリアランスなど)
- 規制要件を意識し、しきい値依存しない指標を推奨
監査ログ
- 学習データのハッシュ値、特徴量スキーマ、パラメータ設定を保存
- 監査対応を見越したメタデータ管理が必要
医療・製薬ユースケースでの活用例
- 前臨床段階
数百万件の仮想ライブラリをADMETモデルでスクリーニング → 実験候補を数百件に絞り込み - 治験設計
薬物動態予測モデルを用いて適切な投与設計を検討 - 安全性評価
毒性予測モデルで動物実験前にリスクをスクリーニング
まとめ
SageMaker Trainingを活用することで、ADMET予測モデルの学習をクラウド上でスケーラブルかつ再現性高く実行できます。
製薬・医療の研究においては、単に精度を求めるだけでなく「再現性」「監査性」「セキュリティ」が同じくらい重要です。
弊社では、予測モデル開発・パイプライン構築 を支援しています。
- 化合物スクリーニングの効率化
- 安全性評価の早期予測
- 規制要件に対応したAI基盤の整備
ご関心のある方はぜひお問い合わせください。
👉 お問い合わせはこちら