アクセスカウンター

  • 302本記事閲覧者数   👀💡:
  • 27今日の足あと    🦶💮:
  • 58792サイト訪問者数(累計)🦶💡:

学びのアウトプット 機械学習 プログラミング

【機械学習】【R】Rでのデータ分析(1) ー銀行の顧客ターゲティング【SIGNATE】ー

2020-04-16

 

どうも、solobochiのbochiです。

 

昨年、データサイエンティスト協会主催のデータサイエンティスト養成講座を受講し、その中でRを使ったデータ分析手法を学んだのでその復習兼ねてまとめておきます。

 

データサイエンティスト養成講座 2019年9月開講決定

 

 



 

 

目次

    1. 概要
    2. データセット
    3. データ分析
    4. 前処理(※別記事)
    5. モデル構築※別記事
    6. 改善※別記事
    7. 評価※別記事

 

 

 

1.概要

データ分析コンテストで有名なKaggleの日本版とも呼ばれるSIGNATEのデータ分析問題を扱います。

 

  • 銀行の定期預金申込キャンペーンについてキャンペーンデータから結果(定期預金のために口座開設したか)を予測する

 

 

 

 

<背景と目的>

銀行の定期預金申込キャンペーンについて、その効果を測定したい。

具体的には、どのような顧客にどのようなアプローチでキャンペーンを打つとより効果的に定期預金申込に繋がるのかを分析したい。

そのためにキャンペーンデータから実際に定期預金申込に至るかどうかを予測するモデルを構築する。

 

 

2.データセット

 

使用するデータは、27,128名の顧客データとキャンペーンの結果(定期預金申込の有無)データ。

最終的にコンペで予測するのは、18,083名のキャンペーンに対する反応(結果)。

 

 

カラム 説明
id int id
age varchar 年齢
job varchar 職種
martial varchar 未婚/既婚(divorced / married / single)
education varchar 教育水準(primary / secondary / tertiary)
default varchar 債務不履行の有無(yes / no)
balance int 保有資産
housing varchar 住宅ローン(yes / no)
loan varchar 個人ローン(yes / no)
contact varchar 連絡方法(cellular / telephone)
day int 最終接触日
month char 最終接触月
duration int 最終接触時間(秒)
campaign int 現在のキャンペーン中の接触回数
pdays int 前回のキャンペーン接触日からの経過日数
previous int 前回のキャンペーンまでの接触実績
poutcome varchar 前回のキャンペーンの実績(success / failure / other)
y boolean 定期預金の申込結果(1:成約、0:非成約)

 

 

 

使ったコマンド

nrow
使用目的:行数カウント
使用方法:nrow(dataframe)

 

 

 



 

 

3.データ分析

まず、学習データ全体での成約率(陽性率)を確認する。

 

27128件中、成約に至った(y:1)のは3174件で、全体の11.7%

 

 

次に説明変数の確認のため、離散変数についてその値ごとに成約率(陽性率)を確認する。

・job( 職種)ごとの成約率

👉成約率(mean)が高いのは、student(学生)、retired(退職者)、management(経営者)、admin(管理職)で、学生、高齢者、失業者、富裕者となった。
👉成約率が低いのは、blue-color(肉体労働者)、services(サービス業)、entrepreneur(企業家)、housemaid(家政婦)で低所得層となった。

並び替えると以下の通り。

 

使ったコマンド

group_by
使用目的:データフレームを指定した変数でグループ化する
使用方法:dplyr::group_by(dataframe,column)

summarise
使用目的:表の集計
使用方法:dplyr::summarise(dataframe,任意の集計処理)

 

同様にして、

・matiral(未婚/既婚)ごとの成約率

👉大きな差は見られないが、single(独身)がやや高めの傾向。

 

・education(教育水準)ごとの成約率

👉primary(初等教育)ほど成約率は低く、secondary(中等教育)、teritary(三次教育、高等教育)と高度になるほど成約率が高くなる傾向。
👉unknownは欠損値のため削除するか補充するか処理が必要となる。

 

・defaulごとの成約率

👉no(債務不履行なし)の方が、yes(債務不履行あり)よりも成約率は高い

 



 

・housing(住宅ローン)ごとの成約率

👉no(住宅ローンなし)の方が、yes(住宅ローンあり)よりも成約率が高い傾向

 

・loanごとの成約率

👉no(個人ローンなし)の方が、yes(個人ローンあり)よりも成約率が高い傾向

 

・contactごとの成約率

👉cellular(携帯)の方が絶対数が多いが、成約率とはあまり相関はなさそう

 

・poutcome(前回実績)ごとの成約率

👉圧倒的にsuccess(前回実績も成功)の場合に成約率が高いが、unknownのデータが多いのでそのままでは利用し難い

 

さらに、変数間の相関を確認する。

使ったコマンド

cor
使用目的:相関係数の確認
使用方法:cor(dataframe) ※表全体、cor(x,y,z)※変数指定

👉ただし、今のままだと文字型の変数が含まれているためエラーになるのでいったん数値型変数に絞って実施してみる

👉まず数値型の変数のみ抽出した別のデータフレームを作成してから相関行列を作成する

👉balance(資産)とage、campaign(接触回数)とday(最終接触日)、previous(接触実績)とpdays(接触日からの経過日数)、y(成約に至ったか)とduration(接触時間)には正の相関が見られる

👉pdays(接触日からの経過日数)とday(最終接触日)には弱い負の相関が見られる

 

 

 

この後、前処理(変数加工)してアルゴリズム構築して実際の分析と評価になりますが、少し長くなったので別記事で。

 

 

 

以上

続く

 

 

 

 

 

⬇️他にもよく見られている記事⬇️

最も訪問者が多かった記事 10 件 (過去 7 日間)
  • この記事を書いた人
  • 最新記事
solobochi

solobochi

(名前):solobochi

(説明)
都内在住の独身アラサー男子
新卒で大手IT企業へ就職して気付けば10年。
このままではマズいという強烈な危機感から会社を休職。


🔸使命に生きたい
🔸好きなひとと好きなことで生きていきたい
これを人生懸けて実現すべく、人生模索中の日々


(Like)
🔹最適化することが好き
🔹PDCAを回すのが好き


(当サイト)
日々思うことを徒然と発信
└(例)
・学びのアウトプット
・投資・資産運用
・プログラミング
・資格試験の対策
・セミナーのレビュー
・書評
etc...

詳しくは自己紹介記事にて。
自己紹介①
自己紹介②
自己紹介③
自己紹介④

おすすめ記事

1

  どうも、solobochiです。     先日(7/6(日))受験した、JDLA(日本ディープラーニング協会)認定のG検定資格に無事合格しました。   &n ...

2

  どうも、solobochiです。     先日、PMP試験に無事合格しました。 振り返り記事のPart2です。試験対策、勉強方法についてはPart3でまとめています。 ...

3

  どうも、solobochiです。   2014年からなのでもうかれこれ6年弱、株や投資信託への投資をしています。 株を始めた頃は社会人5年目、ようやく仕事にも余裕が出てきた頃。 ...

4

  どうも、solobochiです。     昔から読書は好きで、ルーツを辿ると小学生の頃電車通学で、地下鉄丸ノ内線の終点からほぼ終点まで通っていたためその時間にいつも本 ...

5

    どうも、solobochiです。   2019年に入ってからというもの、休日は割とpython触ってます。といってもまだ簡単なサンプルコードをなぞるだけですが。 ...

-学びのアウトプット, 機械学習, プログラミング
-, ,

Copyright© そろボチ , 2020 All Rights Reserved Powered by AFFINGER5.