mcpField
S
senior-data-scientist

senior-data-scientist

github.com/pixel-process-ugデータ・データベース384 回インストール33 週間前に更新
リポジトリ

senior-data-scientist について

データセットの探索からモデルのデプロイまで、エンドツーエンドのデータサイエンスワークフローを扱うスキルです。前処理、特徴量エンジニアリング、モデル評価、実験追跡、統計検定、可視化、ノートブックの実践方法を示します。

主な機能

  1. 01データセットのプロファイリングと探索分析
  2. 02前処理と特徴量エンジニアリング
  3. 03モデル選択と交差検証
  4. 04ハイパーパラメータ調整と評価
  5. 05MLflow または W&B による実験追跡
  6. 06統計検定と可視化

活用シーン

  1. 01モデル学習前のベースライン設定
  2. 02交差検証による候補モデルの比較
  3. 03実験の追跡と結果の評価
  4. 04デプロイに向けたモデルワークフローの準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill senior-data-scientist

インストール後、Claude Code で/senior-data-scientistを入力して読み込まれたか確認します。

詳細

シニアデータサイエンティスト

概要

データの探索からモデルのデプロイまで、エンドツーエンドのデータサイエンスワークフローを構築します。このスキルでは、データの前処理、特徴量エンジニアリング、モデル選択、ハイパーパラメーター調整、交差検証、MLflow/W&B による実験追跡、統計的検定、matplotlib/seaborn/plotly による可視化、Jupyter ノートブックのベストプラクティスを扱います。

開始時に次のように伝えてください:「データサイエンスワークフローのため、シニアデータサイエンティストのスキルを使用します。」


フェーズ 1:データの理解

目標: モデリングを始める前に、データセットのプロファイルを作成し、ベースラインを確立します。

実行項目
  1. データセットを読み込み、プロファイルを作成します(形状、型、分布)
  2. 欠損値、外れ値、データ品質の問題を特定します
  3. 探索的データ分析(EDA)を実施します
  4. 目的変数と成功指標を定義します
  5. ベースライン性能を確立します
ベースラインモデル(必ずここから開始)
タスクベースラインモデル理由
分類多数派クラス分類器正解率の下限
分類ロジスティック回帰シンプルで解釈しやすい
回帰平均値予測器RMSE の下限
回帰線形回帰シンプルで解釈しやすい
時系列ナイーブ予測(前の値)MAE の下限
時系列季節ナイーブ予測基本的な季節性を捉える
停止 — 次の条件を満たすまでフェーズ 2 に進まないでください:
  • データセットのプロファイルが作成されている(形状、型、分布)
  • 欠損値と外れ値が記録されている
  • 目的変数が定義されている
  • 成功指標が選択されている
  • ベースライン性能が確立されている

フェーズ 2:特徴量エンジニアリング

目標: 生データを、モデル性能を向上させる特徴量に変換します。

実行項目
  1. 欠損値を処理します(補完方法)
  2. カテゴリ変数をエンコードします
  3. 数値特徴量をスケーリング/正規化します
  4. 派生特徴量を作成します
  5. 特徴量選択を行います(冗長または無関係な特徴量を削除)
欠損値処理方法の判断表
方法使用する状況実装
行を削除欠損率が 5% 未満、MCARdf.dropna()
平均値/中央値数値データで外れ値がないSimpleImputer(strategy='median')
最頻値カテゴリデータSimpleImputer(strategy='most_frequent')
KNN 補完構造的な欠損パターンKNNImputer(n_neighbors=5)
反復補完複雑な関係性IterativeImputer()
フラグ付け+補完欠損自体に情報があるis_missing 列を追加して補完
カテゴリ変数のエンコード方法の判断表
方法使用する場面カーディナリティ
ワンホット名義尺度、カーディナリティが低い10 カテゴリ未満
ラベル/順序順序特徴量任意
ターゲットエンコーディングカーディナリティの高い名義尺度10 カテゴリ超
頻度エンコーディング頻度が重要な場合任意
バイナリエンコーディングカーディナリティが非常に高い50 カテゴリ超
スケーリング方法の判断表
スケーラー使用する場面外れ値への頑健性
StandardScalerデフォルトの選択肢(平均=0、標準偏差=1)いいえ
RobustScaler外れ値がある(中央値/IQR)はい
MinMaxScalerニューラルネットワーク、距離ベースの手法 [0,1]いいえ
特徴量の種類とエンジニアリング
特徴量の種類手法
数値対数変換、多項式変換、ビニング、交互作用(A*B、A/B)
時間時、曜日、週末フラグ、イベントからの経過時間、周期特徴量(sin/cos)、ラグ
テキストTF-IDF、単語数、感情スコア、固有表現、埋め込み
カテゴリエンコーディング(上記)、数値特徴量との交互作用
特徴量選択の判断表
方法種類使用する状況
相関行列フィルター初期探索
相互情報量フィルター非線形の関係
再帰的特徴量削減ラッパーモデル固有の選択
L1 正則化埋め込み線形モデル
特徴量重要度埋め込み木ベースのモデル
置換重要度モデル非依存最終検証
停止 — 次の条件を満たすまでフェーズ 3 に進まないでください:
  • 根拠のある方法で欠損値に対処している
  • カテゴリ変数を適切にエンコードしている
  • 数値特徴量をスケーリングしている
  • 学習データのみを使って、train/test 分割の前に特徴量エンジニアリングを行っている
  • 必要に応じて特徴量選択により次元数を削減している

フェーズ 3:モデリング

目標: 候補モデルを選択、学習、評価します。

アクション
  1. 候補アルゴリズムを選択する
  2. 交差検証の戦略を設定する
  3. 候補モデルを学習し、評価する
  4. ハイパーパラメーターを調整する
  5. 最終モデルを選択し、評価する
アルゴリズム選択の判断表
データの特性最初に試すものほかに検討するもの
表形式、10K 行未満Random Forest、XGBoostLogistic/Linear Regression
表形式、10K 行超XGBoost、LightGBMCatBoost、Neural Network
高次元Lasso/Ridge、SVM特徴量選択を用いた Random Forest
時系列Prophet、ARIMALSTM、ラグ特徴量を用いた XGBoost
テキスト分類ファインチューニング済み TransformerTF-IDF + Logistic Regression
画像分類事前学習済み CNN(ResNet、EfficientNet)Vision Transformer
回帰XGBoost、Random ForestLinear Regression、Neural Network
異常検知Isolation ForestLOF、Autoencoder
交差検証戦略の判断表
戦略使用する場面コード
K-Fold(k=5)デフォルト、バランスの取れたデータKFold(n_splits=5)
Stratified K-Fold分類、不均衡データStratifiedKFold(n_splits=5)
Time Series Split時系列データTimeSeriesSplit(n_splits=5)
Group K-Foldグループ化された観測値GroupKFold(n_splits=5)
Leave-One-Out非常に小さいデータセットLeaveOneOut()
評価指標の判断表
タスク主な指標副次的な指標
二値分類AUC-ROCF1、Precision、Recall、AP
多クラス分類Macro F1Accuracy、Confusion Matrix
回帰RMSEMAE、R-squared、MAPE
ランキングNDCGMAP、MRR
異常検知F1、APPrecision@K、Recall@K
ハイパーパラメーター調整の判断表
手法計算リソースの予算探索空間実装
グリッドサーチ低(100 組未満)小規模で既知の範囲GridSearchCV
ランダムサーチ中程度大規模で不確実RandomizedSearchCV
ベイズ最適化(Optuna)任意大規模で計算コストが高いoptuna.create_study()
Successive Halving大規模多数の候補HalvingRandomSearchCV
一般的なハイパーパラメーター(XGBoost/LightGBM)
param_space = {
    'n_estimators': [100, 300, 500, 1000],
    'max_depth': [3, 5, 7, 9],
    'learning_rate': [0.01, 0.05, 0.1],
    'subsample': [0.7, 0.8, 0.9],
    'colsample_bytree': [0.7, 0.8, 0.9],
    'min_child_weight': [1, 3, 5],
}
停止 — 次の条件を満たすまでフェーズ 4 に進まないでください:
  • 少なくとも 2 つの候補モデルを評価している
  • 交差検証を使用している(train/test 分割だけではない)
  • 結果がフェーズ 1 のベースラインを上回っている
  • 根拠を示して最良のモデルを選択している
  • 過学習を確認している(学習データと検証データの差)

フェーズ 4:デプロイ

目標: モデルをシリアライズして本番環境で提供し、監視します。

アクション
  1. モデルと前処理パイプラインをシリアライズする
  2. 予測 API またはバッチパイプラインを作成する
  3. データドリフトとモデルの性能劣化を監視する仕組みを設定する
  4. モデルカード(入力、出力、制約、バイアス)を文書化する
停止 — 次の条件を満たしたらデプロイ完了です:
  • モデルが前処理パイプラインとともにシリアライズされている
  • 予測 API またはバッチパイプラインがエンドツーエンドで動作する
  • データドリフトの監視が設定されている
  • モデルカードが文書化されている

実験の追跡

MLflow のパターン
import mlflow

mlflow.set_experiment("customer-churn-prediction")

with mlflow.start_run(run_name="xgboost-v2"):
    mlflow.log_params(params)
    mlflow.log_metrics({"auc": auc_score, "f1": f1_score})
    mlflow.log_artifact("confusion_matrix.png")
    mlflow.sklearn.log_model(pipeline, "model")
    mlflow.set_tag("version", "2.1")
追跡する項目
カテゴリ項目
パラメーターすべてのハイパーパラメーター、乱数シード
指標学習時と検証時の指標
データデータのバージョン/ハッシュ、特徴量の一覧
成果物プロット、レポート、モデルファイル
メタデータ学習時間、モデルサイズ

統計検定の選択表

質問検定前提条件
2つのグループの平均に差がありますか?t検定(独立)正規分布
2つのグループ(非正規分布)ですか?マン・ホイットニーのU検定なし
対応のある測定値ですか?対応のあるt検定差が正規分布
3つ以上のグループの平均ですか?ANOVA正規分布、等分散
カテゴリ間に関連がありますか?カイ二乗検定期待度数 > 5
分布は正規分布ですか?シャピロ・ウィルク検定n < 5000
2つの分布に差がありますか?コルモゴロフ・スミルノフ検定連続データ
p値のガイドライン
  • p < 0.05:統計的に有意(慣例的な基準)
  • p値と併せて、必ず効果量も報告します
  • 多重比較を補正します(ボンフェローニ法、FDR)
  • 統計的有意性は、実用上の有意性を意味するものではありません

可視化の選択表

データの種類プロットライブラリ
分布ヒストグラム、KDE、箱ひげ図seaborn
比較棒グラフ、グループ化棒グラフmatplotlib
相関散布図、ヒートマップseaborn
傾向折れ線グラフmatplotlib/plotly
構成積み上げ棒グラフ、円グラフ(最大5区分)matplotlib
インタラクティブ散布図、折れ線グラフ、ダッシュボードplotly
可視化のルール
  • すべてのプロットに内容がわかるタイトルを付けます
  • 軸に単位を含むラベルを付けます
  • 色覚多様性に配慮したパレットを使用します(seaborn: colorblind)
  • 棒グラフのy軸は0から始めます
  • 重要な知見をプロット上に直接注釈します

Jupyter Notebookの構成

1. ## Setup (imports, configuration)
2. ## Data Loading
3. ## Exploratory Data Analysis
4. ## Data Preprocessing
5. ## Feature Engineering
6. ## Modeling
7. ## Evaluation
8. ## Conclusions
Notebookのベストプラクティス
  • 共有する前に、カーネルを再起動してすべてのセルを実行します
  • 各セルの内容を絞り、順序立てて構成します
  • 説明にはMarkdownセルを使用します
  • 再利用可能なコードは.pyモジュールに切り出します
  • nbstripoutでバージョン管理します
  • すべての依存関係のバージョンを固定します

アンチパターン/よくある間違い

アンチパターン問題点正しい方法
テストデータで学習するデータリークが発生し、指標が過大になります学習データとテストデータを厳密に分離します
分割前に特徴量エンジニアリングを行うテストデータの情報が特徴量に漏れます学習データだけを使って特徴量を作成します
学習時の指標を報告する汎化できません検証データ/テストデータの指標を報告します
不均衡データで正解率を使う誤解を招きます(多数派クラスが優勢になります)F1、AUC-ROC、またはAPを使用します
テストセットでチューニングするテストデータに過剰適合しますチューニングには検証セットを使用します
ベースラインとの比較を行わない改善を測定できませんまず必ずベースラインを設定します
評価例を都合よく選ぶ選択バイアスが生じます評価セット全体で結果を報告します
ドリフトを監視せずにデプロイする気付かないうちにモデルの性能が低下します入力分布を監視します

統合ポイント

スキル関係
senior-prompt-engineerプロンプト評価では統計的検定手法を使用します
testing-strategyMLテストでは評価手法に従います
performance-optimizationモデル推論の最適化では測定サイクルに従います
acceptance-testingモデル性能のしきい値を受け入れ基準にします
llm-as-judge主観的な出力評価ではLLM-as-judgeを使用します
code-reviewNotebookとパイプラインのコードを品質面からレビューします

スキルの種類

FLEXIBLE — 前処理、モデリング、評価の方法は、データの特性、ビジネス要件、計算リソースの制約に合わせて調整します。4段階のプロセスと実験の追跡を強く推奨します。モデリングの前に、必ずベースラインを設定してください。

コメント