LoginSignup
1
1

第2回金融データ活用チャレンジ 企業の成長期? 企業の衰退期?

Posted at

概要

・SIGNATEで2024年1月18日~2024年2月15日のコンペ「第2回 金融データ活用チャレンジ」について新たに特徴量を作成してみた
・地域金融機関に勤務 前回の第1回金融データ活用チャレンジにも参加 今後、データ分析の重要性は増々高まっていくことをぼんやりと想定
・自身が金融機関に勤めていることから金融目線で投稿してみました 初めての投稿であり読みづらければ申し訳ないです
・今回は企業向けローンの返済可否予測 企業向けローンは地域の産業活性化という視点からも非常に重要なものと感じている
・データは金融機関が重視している財務データの指標が少ないことから、財務データに代わる指標の必要性を感じていた
・一般的に企業のライフサイクルには「導入期」、「成長期」、「成熟期」、「衰退期」の4つのライフサイクルがある。「成長期」はローン返済が不可となる確率は低く、「衰退期」はローン返済が不可となる確率が高い
・企業のライフサイクルから「成長期」と「衰退期」がわかれば有効な特徴量となると考え特に雇用に着目した

企業のライフサイクル

1076812.png

導入期:

企業が設立され、事業を開始する段階。
主要な焦点はアイデアの検討、市場調査、製品またはサービスの開発、資金調達など。
成功の鍵は市場のニーズに合った製品やサービスを提供し、事業の基盤を築くこと。

成長期:

企業が市場で存在感を増し、売上高や従業員数が拡大する段階。
成長の課題には組織の拡大、効率の向上、新規市場進出などが含まれる。
成功の鍵は市場での競争力を保ちながら持続可能な成長を実現すること。

成熟期:

企業が市場で確立され、成長が安定する段階。
主要な焦点は収益の最大化、市場シェアの保持、製品やサービスの最適化など。
成功の鍵は効率的な運営、ブランドの維持、顧客ロイヤルティの構築など。

衰退期:

企業が市場での地位を失い、収益が減少する段階。
衰退を逆転するためには、製品の刷新、新しい市場への進出、組織の再構築などが必要。
成功の鍵は柔軟性を持った対応と、変革的な戦略の採用。

特徴量策定にあたっての仮説

■ 企業の成長期局面

 ・創出される雇用が多ければ多いほど売上増加等の企業の業容拡大につながる

 成長期時期はローン返済不可となる可能性は低い?

■ 企業の衰退期局面

・維持される雇用が少なければ少ないほど売上減少、事業縮小などのマイナル要因

衰退時期はローン返済不可となる可能性は高い?

ベースとなる特徴量

■ NoEmp

・融資を受ける前の従業員数

■CreateJob

・企業が融資資金を使用して創出すると予想される雇用の数

■RetainedJob

・融資を受けたことで企業が維持すると予想される雇用の数

「業容が拡大している」「業容が縮小している」ということを雇用の特徴量を使い表現できれば有効ではないか?

追加した特徴量

■成長期指標

qiita.py
train['Expansion'] = train['NoEmp'] + train['CreateJob']
test['Expansion'] = test['NoEmp'] + test['CreateJob']

Expansion =  NoEmp(融資を受ける前の従業員数)
+CreateJob(企業が融資資金を使用して創出すると予想される雇用の数)

将来の従業員数であり成長していることを示す指標

■衰退期指標

qiita.py
train['Decline'] = train['NoEmp'] - train['RetainedJob']
test['Decline'] = test['NoEmp'] - test['RetainedJob']

 Decline = NoEmp(融資を受ける前の従業員数)
-RetainedJob(融資を受けたことで企業が維持すると予想される雇用の数)

従業員の減少数であり大きければ衰退しているを示す指標

検証

チュートリアルのコードにて検証(LightGBM)

image.png

少しだけ増加したが、思ったよりも増加しなかったという印象
決定木系のモデルには相性がいいと実感

相関について可視化

MIS_STATUS との関係についてヒートマップを作成

qiita.py
import seaborn as sns
temp = train[['RetainedJob','NoEmp','CreateJob','MIS_Status']]
temp['Expansion'] = temp['NoEmp'] + temp['CreateJob']
temp['Decline'] = temp['NoEmp'] - temp['RetainedJob']
sns.heatmap(temp.corr(),annot = True)

seaborn.png

課題・理解できない点

NoEmp → 融資を受ける前の従業員数
RetainedJob → 融資を受けたことで企業が維持すると予想される雇用の数

維持される従業員より現在の従業員数が多くなるはずでは?

train データ42,307件のうち8,620件が現在の従業員数より維持される雇用数が多い

データによっては現在の従業員数より維持される雇用のほうが132人も多い
解釈相違?・データ相違?・CreateJobも併せて考慮?

最後に

第2回金融データ活用チャレンジ楽しみながら参加させてもらっています
生成データであり実務面とリンクしないとの意見がありますが、確かにドメイン知識(業界知識)があれば分析の切り口が見つけやすいということはあると思います
ただ最も大切なことはEDA(探索的データ分析)の試行錯誤であり、生成データであってもその姿勢は変わらないと考えています
第3回も変わらず挑戦するので開催を楽しみにしています

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1