SIGNATEの 【練習問題】銀行の顧客ターゲティング をDataikuで実施しました。
本記事では、Dataikuを用いて、ノーコードで二値分類を行う手順について解説します。
前回まで
前回は、データのインポートから、欠損値の確認、相関行列の分析、可視化を通じたデータの理解までを行いました。Dataikuを活用することで、これらの工程をノーコードで効率的に進めることができました。今回は、機械学習モデルの構築に焦点を当て、データの前処理、特徴量エンジニアリング、モデルの学習・評価を行います。
前処理
trainデータとtestデータの統合(ユニオン)
それぞれのデータを別々に前処理すると手間がかかるため、Visual Recipesの「Stack」を使用し、train
とtest
を1つのデータセットに統合します。
train
を選択し、Visual Recipesの「Stack」をクリックします。
特徴量の選択
統合したデータに対して特徴量として使用する列を選択します。
今回は、分析したid, duration, pdays, previous, job, education, marital, default, housing, loan
と目的変数であるy
、統合データを判別するためのoriginal_dataset
を選択します。
train_stacked
をクリックして、Visual recipesの「Prepare」をクリックします。
- 「ADD A NEW STEP」をクリックして、
Delete/keep columns by name
を選択します。
- 特徴量として使用する列を選択します。
Column multiple:id, duration, pdays, previous, job, education, marital, default, housing, loan, y, original_dataset Keep
one-hot encoding(ダミー変数化)
pdays
を「-1」と「それ以外」に分割。previous
を「0」と「それ以外」に分割。あとのカテゴリデータはohe-hot encoding(ダミー変数化)を実施。
まずは、pdaysとpreviousをone-hot encoding(ダミー変数化)します。
- 「ADD A NEW STEP」をクリックして、
Formula
を選択します。- 「Formula for」をpreviousに変更して、previousを「0」と「それ以外」に分割する処理を記載します。その後、「APPLY」をクリックします。
if(previous == 0, 0, 1)
次に、カテゴリデータをone-hot encoding(ダミー変数化)します。
- 「ADD A NEW STEP」をクリックして、
Unfold
を選択します。
- 各カテゴリデータに対して設定していきます(サンプルとして、
job
を選択)Columm:job Prefix(empty for no prefix):job_
他の列も同様に行います。
次は、
Unfold
で出力された列の欠損値を0埋めしていきます。
- 「ADD A NEW STEP」をクリックして、
Fill empty cells with fixed value
を選択します。
- one-hot encoding(ダミー変数化)した列に対して値(0)を設定します。
column multiple:job_blue-collar, job_entreprenuer, job_manegement, job_job_retired, job_services, job_technician, job_admin., job_self-employed, job_housemaid, job_unemployed, job_unknown, job_student, marital_married, marital_single, marital_divorced, education_secondary, education_primary, education_tertiary, education_unknown, default_no, default_yes, housing_no, housing_yes, loan_no, loan_yes value to fill with:0
trainデータとtestデータを分割
モデルを作成する前に、統合したデータをもとの2つのデータセットに分割します。
train_stacked_prepared
をクリックして、Visual recipesの「Split」をクリックします。
機械学習
これから本題の機械学習のハンズオンに移っていきます。
モデルの作成
train_spllit
をクリックして、「LAB」をクリックします。
- Visual MLから「AutoMLPrediction」を選択します。
特徴量の選択
今回のモデルに使用する特徴量の選択を行います。
- 今回のモデルで使用する特徴量の選択を行います。
one-hot encoding(ダミー変数化)で生成された列とyとの相関が高かった
duration、pdays、previous
を選択します。(サンプルで、jobを排除します。)
アルゴリズムの設定
アルゴリズムを選択します。
- 今回は、デフォルトで設定されている項目をそのまま使用します。

Random Forestとは?
複数の決定木を組み合わせて予測するアルゴリズムです。
仕組み
- データをランダムに複数のグループに分割します。
- 各グループ毎に異なる決定木を作成します。
- すべての決定木の予測結果を集約し、最も多い結果を最終予測とする。
Logistic Regressionとは?
データを2つのクラスに分類するアルゴリズムです。
仕組み
- 特徴量の重みを学習し、スコアを計算します。
- スコアを0 ~ 1の確率に変換します。
- スコアが、0.5以上なら「1」それ以外なら「0」と分類します。
結果確認
- 上記の設定が完了したら、Trainを押して学習させます。
- モデルの確認をします。
- Confusion matrix
Confusion Matrix(混同行列)とは?
Confusion Matrixは、分類モデルの予測結果と実際の値を比較し、どれくらい正しく分類できたかを示す表です。
Predicted(Positive) Predicted(Negative) Actually(Positive) True Positive (TP) False Negative (FN) Actually(Negative) False Positive (FP) True Negative (TN) 各要素の意味
- True Positive (TP):真陽性 → 実際にPositiveであり、正しくPositiveと予測
- False Positive (FP):偽陽性 → 実際はNegativeなのに、誤ってPositiveと予測
- False Negative (FN):偽陰性 → 実際はPositiveなのに、誤ってNegativeと予測
- True Negative (TN):真陰性 → 実際にNegativeであり、正しくNegativeと予測
- Confusion matrix
予測
- Predict y(binary)を選択して、Apply model on data to predictの「Score」をクリックします。
- Input datasetのInput datasetに
test_split
を選択して、「CREATE PECIPE」をクリックします。
提出
お疲れさまでした。最後のハンズオンとして、予測したデータをダウンロードして提出します。
test_split_scored
を選択して、「Prepare」をクリックします。
- 「CREATE RECIPE」をクリックします。
- ADD A NEW STEP」をクリックして、
Delete/keep columns by name
を選択します。
- 「RUN」をクリックします。
- SIGNATEの「投稿」をクリックして、投稿します。
評価
評価は、0.76でした。

改善案
- 特徴量エンジニアリングの強化
- 今回使用しなかったtrainデータの列を活用し、新しい特徴量を追加すること
- 既存の特徴量を組み合わせること
- アルゴリズムの多様化
- 他のモデル(SVM, XGBoost, LightGBM など)を試すこと
- データの前処理の工夫
- 異常値の処理やデータの正規化・標準化を行うこと
- 特徴量のスケールが異なる場合は、適切なスケーリング手法を適用する。
感想
Dataikuを使用すると、前処理の状況を常に可視化しながら進められるため、とても分かりやすく感じました。また、アルゴリズムの選択も直感的に行えるので、手軽に試行錯誤できる点が便利でした。今後は特徴量の工夫や別のアルゴリズムの活用にも挑戦し、さらなる精度向上を目指したいと思います。
機械学習の精度向上には、データの工夫やアルゴリズムの選択が重要ですが、Dataikuなら初心者でも直感的に試行錯誤できます。これから二値分類に挑戦する方や、より高度な分析に興味がある方は、ぜひ一緒に学んでいきましょう!