はじめに
SIGNATEの 【練習問題】銀行の顧客ターゲティング をDataikuで実施しました。
本記事ではDataikuを用いて、ノーコードで二値分類を行う手順について解説します。
概要
この課題では、銀行の顧客属性データや過去のキャンペーンでの接触情報をもとに、顧客が口座を開設するかどうかを予測します。
使用データ
使用するデータは、以下の2種類です。(データのダウンロードはこちら)
- 学習用データ(train.csv)
- 評価用データ(test.csv)
評価指標
本コンペティションでは AUC(Area Under the Curve) を指標としてモデルの制度を評価します
投稿方法
提出するファイルは、以下の形式の csv(ヘッダなし) で作成します。
id | 申し込み有無 |
1 | 0 |
2 | 1 |
… | … |
1列目にid、2列目に申し込み有無を記載し、SIGNATE上で投稿します。
使用レシピ一覧
本タスクでは、Dataikuの以下のレシピを使用しました。
Visual recipes(データ処理)
- Stack:複数のデータセットを統合(ユニオン)
- Prepare:様々な前処理を実施
- Delete/Keep columns by name:不要な列の削除または必要な列の抽出
- Formula:数式を記述してデータを加工
- Fill empty cells with fixed value:欠損値を特定の値で補間
- Unfold:カテゴリ変数をone-hot encoding(ダミー変数化)
one-hot encoding(ダミー変数化)とは?
カテゴリデータを機械学習モデルが扱える数値データに変換する方法です。
サンプル:色のカテゴリデータ
色 |
---|
red |
blue |
yellow |
one-hot encoding(ダミー変数化)後
red | blue | yellow |
---|---|---|
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
one-hot encodingを行う理由
- ほとんどのモデルは カテゴリデータをそのまま入力できない ため
- 数値の大小による影響を防ぐため
- 例えば、
red=1, blue=2, yellow=3
のように数値を割り当てると、モデルが「blue(2)は red(1)より大きい」など 誤った関係を学習 してしまう。
- 例えば、
- モデルの精度向上のため
- Split:データセットを分割
Lab(機械学習)
- AutoML Prediction:機械学習モデルを自動構築
Other recipes(その他)
- Score:学習済みモデルを用いて予測データのスコアリング
ここまでで事前知識は完了です。では、さっそくDataikuを使って二値分類を実施する手順を説明していきます。
ハンズオン
データ理解
プロジェクトの作成
Dataikuホーム画面の右側にある「NEW PROJECT」をクリックしてプロジェクトを作成します。
データのインポート
- 「IMPORT YOUR FIRST DATASET」をクリックします。
- 「New dataset」の画面から「Upload your files」を選択します。
- 「SELECT FILES」をクリックし、
train.csv
とtest.csv
を選択します。(ctrl
キーを押しながら複数のファイルを選択可能です。) csv
ファイルが選択出来ていることを確認し、「CREATE MULTIPLE DATASET」をクリックします。- 「New dataset name」を確認し、 それぞれ「CREATE AND NEXT」または「CREATE」をクリックします。
train.csv

test.csv

欠損値の確認
train
をクリックして、「Statistics」タブから欠損値等を確認します。- 「CREATE YOUR FIRST WORKSHEET」をクリックします。
- Automated selectionの「Automatically suggest analyses」をクリックします。(簡単に統計分析ができます。)
- 今回は、Select features and let Dataiku suggest interesting cardsの「Univariate analysis on all variables」を選択して、「CREATE SELECTED CARDS」をクリックします。(欠損値の確認などが出来ます。)
- 可視化された統計データを確認します。
y
と各列の相関を確認します。
- 右上の「NEW CARD」をクリックして、Automated selectionの「Automatically suggest analyses」をクリックします。
- Select features and let Dataiku suggest interesting cardsの「Correlation matrix on all numerical…」を選択して、「CREATE SELECTED CARDS」をクリックします。(相関行列を確認できます。)
- 可視化された相関行列を確認します。
duration、pdays、previous
のそれぞれとy
との相関が少し高いことが確認できました。
カテゴリデータの可視化
欠損値や相関の確認ができたので、次は各カテゴリデータ
とy
との関係を確認します。
「Chart」タブをクリックして各グラフを作成します。

正解値データの分布

職種別申込み確率

教育水準別申込み確率

marital別申込み確率

default別申込み確率

housing別申込み確率

loan別申込み確率

連続データの可視化
- 再度「Statistics」タブに遷移します。
- previousを連続データに変換するために「︙」をクリックして、「Treat previous as continuos」を選択します。

y
との相関が高かったduration、pdays、previous
を確認します。(列の並び順を変更しています。)

pdays
にマイナスの値があることが確認できました。
また、グラフと分布とMaxの行
を見てみるとそれぞれ外れ値が存在していることが確認できます。
- これらの分析から以下の情報が分かりました。
- 職種別申込み確率:労働者でない場合に
y
の確率が高い。unknown
がデータとしてある。 - 教育水準別申込み確率:
unknown
がデータとしてある。 - default別申込み確率:
no
のほうがy
が1である確率が高い - marital別申込み確率:
single
のほうがy
が1である確率が高い - housing別申込み確率:
no
のほうがy
が1である確率が高い - loan別申込み確率:
no
のほうがy
が1である確率が高い

まとめ
ここまで、データのインポートから、欠損値の確認、相関行列の分析、そして可視化によるデータの探索までを行いました。Dataikuを活用することで、これらのプロセスをノーコードでスムーズに実施でき、データ分析に集中できる点が大きなメリットです。次回は、機械学習編としてモデル構築について詳しく説明していきます。