アクセスカウンター

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

機械学習 プログラミング

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

2020-04-19

 

どうも、solobochiのbochiです。

 

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

前回記事↓の続きです。

 

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

 

 

 



 

 

目次

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

 

 

 

4.前処理

データ分析で最も労力を割く部分であり、データ分析の90%ともいわれるデータの前処理。

具体的には、以下のような作業。

・欠損(システム的な欠損(N/A)だけでなく業務的な欠損(unknownや一律0など)も含む)

・負値

・重複

・変数の加工(※型変換、10倍、1/10倍、平均を取るなどして使いやすい形に加工する)

・変数の作成(※閾値を設けてダミー変数もしくは数値データに変換、パーセンタイル点を境にダミー変数化など)

・変数の作成(※複数条件を設定して条件に合致するか否かでダミー変数化、カテゴリ変数の文字列先頭に応じて数値データ化など)

・ダミー変数化(カテゴリ変数に対して使用して、そのvalueの分だけダミー変数の列を自動的に作成する)

 

 

まず欠損について確認。

👉N/AがあればTRUEの件数が表示されるため、今回はN/Aはないことがわかる

 

N/Aではなく、unknownのデータがどの列に存在するかを確認する。

👉3列目:job、5列目:education、10列目:contact、17列目:poutcomeにunknownのデータがあることがわかる

 

具体的には、

・job

 

education

 

contact

👉特に有用そうでもなく全体の25%ほどが欠損なのでこのカラムは使わない

 

・poutcome

👉全体の80%近くが欠損のためこのカラムは使わないとするか、successだった時の成約率の高さに注目してsuccessかどうかのダミー変数に加工して使うかはトライアンドエラーで。

 



 

 

 

続いて負値補正。

使ったコマンド

summary
使用目的:基本統計量の取得
使用方法:summary(dataframe)

 

👉pdaysに負値が存在するので補正する。

 

👉pdaysの負値を補完

 

 

次に、分析しやすいように変数を加工する。

・age

age_range

👉若年層と高齢層で成約率が高そう

使ったコマンド

summarise
使用目的:統計量を算出する、事前にgroupbyでグループ化しておくとグループごとの集計で算出できる
使用方法:dplyr::summarise(dataframe, xxx(mean,min,max,median))

 

・balance

👉保有資産について、0、100、200、500、1000、2000、5000を閾値としてラベリング。

👉資産が増加するほど成約率も上がっていて正の相関が見られる。

👉グルーピングしてラベリングすることで、少数の特異値による影響を抑えることができて傾向が掴めるようになる。データ数が限定的な場合に有効な手法。

 

・day

👉上旬(1日〜10日)、中旬(11日〜19日)、下旬(20日〜31日)にラベリング。

使ったコマンド

select
使用目的:データフレームの列を抽出する
使用方法:dplyr::summarise(dataframe, xxx(mean,min,max,median))

 

・month

👉7月、8月に比べて3月、4月、9月、10月の方が成約率が高い傾向にある

成約率でソートした結果がこちら↓

 

そこで、各月の上旬、中旬、下旬を表す変数を作成します。

 



 

 

 

変数加工の続き、カテゴリ変数のダミー変数化。

 

👉カテゴリ変数がダミー変数化された。

使ったコマンド

select
使用目的:データフレームの列を抽出する
使用方法:select(dataframe,xxx(変数))

使用目的:データフレームの列を削除する(データフレームの特定の列以外を抽出)
使用方法:select(-c(xxx(変数),xxx(変数),,,))

dummies::dummy.data.frame
使用目的:カテゴリ変数をダミー変数化する

使用方法:dummies::dummy.data.frame(dataframe , sep = "_" , names = c("xxx(変数)","xxx(変数)",,,) )

 

 

このあと機械学習アルゴリズムを用いてのモデル構築、評価と続く。

また少し長くなったので続きは別記事で。

 

 

 

 

 

 

以上

 

 

 

 

 

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

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

solobochi

(名前):solobochi

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


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


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


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

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

おすすめ記事

1

  どうも、solobochiです。     先日、PMP試験に無事合格しました。 振り返り記事のPart2です。     目次 前日・当日の流れ 勉 ...

2

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

3

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

4

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

-機械学習, プログラミング
-, , ,

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