難易度:★★☆☆☆
金融会社では個人や法人にお金を貸す、いわゆる融資を行い、返済額に利子を上乗せすることで利益を得ています。しかし、様々な理由から貸したのに返済されない、貸し倒れというケースが発生します。貸し倒れは金融会社として大きな損失であるため、できる限り避けたいですが、一定確率で貸し倒れが起きることは避けられないのが現状です。したがって金融会社は、貸し倒れのリスクを可能な限り減らしたり、貸し倒れても利益がでるように適切に金利を設定したいと考えています。そこで本クエストでは、これまでの個人に関する負債者のデータを利用し、貸し倒れする負債者のパターンを精度高く予測するモデルを作成します。本クエストを通じて、分類問題の基本的な分析手順や、予測の対象となるデータの値の数に偏りがある不均衡データにおける分析方法について学びます。
あなたは良心的で有名な大手消費者金融に勤めるデータサイエンティストです。ある日、営業部門の部長さんとあなたの上司がこんな会話をしているのを耳にしました。
「最近、貸し倒れるケースが多くて困っているんだ。AIの力で貸し倒れそうなお客さんかどうか判別できないだろうか?」
「できなくはないけど、完璧じゃない。本当は完済できるのに、貸し倒れると間違って判定されるお客さんが一定数は出てしまうよ?」
「仕方ない、それでもいいから頼みます。今は藁でもつかみたい状況だから」
「了解。それなら顧客データが必要だけど、用意できる?」
「少しならすぐにでも用意できるよ。それじゃあ担当者を決めておいて。」
あなたは思いました。上司は妙に慎重な物言いをしてたけど、これは会社の業績アップに貢献できるチャンスではないか。ぜひこの仕事、私がやりたい!
そこであなたは迷わずこう言いました。「その仕事、私に任せてください!」
こうしてあなたは、貸し倒れる可能性が高い顧客かどうかを判別するモデル作成を担当することになりました。
Mission 1
あなたが貸し倒れ予測モデルの担当に決まってから程なくして、営業部長さんから顧客データが届きました。顧客データには負債者に関する様々な情報が含まれているとのことです。どのような情報が含まれているのでしょうか?データをプログラムで読み込んで確認してみましょう。本ミッションでは、分析の第一歩として重要なデータの読み込み方を学びます。また読み込んだデータが正しく読み込めたことを確認することも大切になりますので、確認の方法についても学んでいきます。
データ分析を始めるにあたって、まずはPython上で扱えるようにデータを取り込まなくてはなりません。
このタスクでは、ライブラリのimport方法と、データ分析のための様々なツールが用意されているライブラリ`pandas`を使ったcsvデータの読み込み方法を学びます。
このタスクでは、読み込んだ`DataFrame`について、データのサイズや各カラム(列のこと)のデータ型といった基本的な情報の確認と、分析にあたって有用なデータの選別を行います。これらの操作は重要であり、怠ると今後の分析に支障が出る場合があります。しっかりとこなしていきましょう。
Mission 2
データを読み込んで確認したところ、各負債者ごとに貸し倒れたかどうかの情報の他に、借入総額や返済期間、金利、借入目的や信用スコアなどの情報が含まれていました。これらの要素は貸し倒れる可能性とどの程度の関係性があるでしょうか?関係性が高いのであれば予測に有効な情報となるので、調べてみましょう。本ミッションでは、分析の醍醐味の1つである探索的分析について学びます。データ分析ではデータの分布や数値等からデータの特徴を抽出し、それに基づき仮説を立てたり仮説の検証を行います。基本統計量や可視化の方法論についても学んでいきましょう。
このタスクではデータに含まれる各変数について、基本統計量を確認したりヒストグラムを描画することで、その分布の特徴を知る方法を学びます。良い分析を行うにあたって、データの特徴を知ることは不可欠です。このタスクを通してその基本的な方法を学び、未知のデータに対しても活用できるようになりましょう。
ここまでは1つの変数について、その特徴を分析してきました。今度は複数の変数の関係性について見ていきましょう。
データ分析において、予測したい変数とそれに関連した変数との関係性を明らかにすることは非常に重要です。なぜなら、予測したい変数と関係性のある変数ほど、予測において役立つ変数である可能性が高いからです。変数間の関係性を見る1つの方法として、変数間の相関関係を確認する方法があります。相関関係の確認方法には、箱ひげ図や積み上げ棒グラフによる可視化などが挙げられます。
このTaskでは、予測したい変数とそれに関連した変数との関係性について仮説を立て、グラフによる可視化を行うことで仮説を検証します。また、仮説を立てることが難しい変数に関しては、予測したい変数とのグラフを作成することで、相関関係がみられるか探索していきます。そして、相関関係がみられる変数を、機械学習モデルの作成に使用します。
Mission 3
貸し倒れる可能性と関係性の高い要素がわかったので、次にモデル作成の前の準備作業を実施しましょう。本ミッションではデータ前処理について学びます。ここでの前処理とはモデリングのための前処理についてです。適切な前処理をすることで、モデリングの精度を上げることができます。前処理の種類や、方法にどのようなものがあるのか学んでいきましょう。
機械学習モデルにデータを与えるためには、いくつかの変数について値の変換を行う必要があります。
このTaskでは、機械学習モデルに与えることできる形にデータを加工します。
Mission 4
貸し倒れる可能性と関係性の高い要素がわかり、データの前処理もできました。いよいよ予測モデルを作る段階です。本ミッションではモデリング手法の1つ、ロジスティック回帰モデルについて学びます。モデルを作成することで、過去の実績から将来どうなるかを予測することができるようになります。具体的なモデルの作り方や作ったモデルの正しい評価方法について学んでいきましょう。
機械学習モデルには、未知のデータに対する予測精度、すなわち汎化性能の高さが求められます。したがって分析対象のデータを、モデルの学習に使用する学習用データと、汎化性能の測定に使用する評価用データに分割して機械学習モデルを作成するのが一般的です。そこでこのTaskでは、データの分割を行います。
評価関数とは、モデルの精度の良し悪しを定量的に測る指標として使用されるもので、問題の内容に応じて適切に設定する必要があります。今回の目的変数は、貸し倒れする負債者かどうか(1:Yes, 0:No)で、集合を1か0かにグループ分けする分類作業にあたるため、このような問題を2値分類問題あるいは2クラス分類問題と呼びます。分類問題で使用される代表的な評価関数には正解率、再現率、AUC等がありますが、今回はf1_scoreを利用することにします。
それでは、前処理を行ったデータを使ってモデルの学習を行っていきましょう。分類問題で使われる機械学習の手法としては、ロジスティック回帰、決定木、NeuralNet、SVM、KNN、Naïve Bayesなどがあります。今回はロジスティック回帰モデルを使用します。
このタスクでは、学習済みモデルの精度を評価するための基礎的な手法を学びます。また、モデルの分類結果について詳細に確認することで、予測精度改善のための方策を探索します。
Mission 5
ついに貸し倒れる可能性を予測するロジスティック回帰モデルが作れましたが、その精度はとても満足のいくものではありませんでした。もっと精度を上げることはできないでしょうか?手がかりは、ロジスティック回帰モデルにおける閾値(threshold)の概念や、予測の対象となるデータの値の数に偏りがある場合に有効なダウンサンプリングの手法などがあります。本ミッションでは、作成したモデルの予測精度をより改善する為の方法について学びます。ロジスティック回帰モデルにおける閾値(threshold)の調整方法や、ダウンサンプリング手法を使って、より良い予測モデル作成に挑戦しましょう。
このタスクでは、ロジスティック回帰モデルの閾値を調整することで、予測精度の改善に挑戦します。
このタスクでは、ダウンサンプリングという手法を用いることで、予測精度のさらなる改善に挑戦します。また予測結果について考察も行います。
本クエストでは、分類問題の1つとして貸し倒れるかどうかを予測する問題に挑戦しました。ただ予測モデルを作るだけでなく、予測モデルの精度を上げるために、貸し倒れに関係しそうな要素を仮説を立てて検証し、予測精度を改善する試みも行いました。その結果、予測精度を上げることができたと同時に、完済できるはずの人を貸し倒れると予測してしまう場合が一定数は出てしまう問題に気付くことができました。本クエストを通じて学んだこと、そしてクエストの成果をおさらいしましょう。
Competition
これまで学習したことを元に、SIGNATEの練習問題に挑戦してみましょう。このコンペでは、借入総額や返済期間、金利、借入目的などの顧客データを使って、債務不履行リスクを予測するモデルの構築にチャレンジします。
Competitionに挑戦する