SHIFTDAYSHIFTDAY

WORKS

制作実績

業務改善、AI活用、体験型ツール開発など、課題を整理し、実際に動く形まで落とし込んだ制作物です。

※守秘義務および情報管理の観点から、 本ページでは公開可能な制作物・検証プロジェクトのみ掲載しています。

体験型ツール開発

電車混雑体験シミュレーター

通勤電車の混雑率を一人称視点で体験できるシミュレーターです。混雑率・視点高さ・車内密度を調整し、数値だけでは伝わりにくい混雑ストレスを可視化しました。

課題

混雑率150%や200%といった数値だけでは、実際にどの程度窮屈なのかを直感的に理解することが難しいという課題があります。

解決アプローチ

乗客を自動配置するシミュレーションを実装し、混雑率に応じて車内密度が変化する環境を構築しました。さらに一人称視点を導入することで、利用者自身が車内にいるような感覚で混雑を体験できるようにしました。

主な機能

  • ・混雑率100〜220%の調整
  • ・一人称視点による混雑体験
  • ・乗客の自動配置アルゴリズム
  • ・視点高さの調整
  • ・リアルタイムな密度再生成
  • ・車内レイアウトの3D可視化

使用技術

UnityC#3DInput System

データ分析・可視化

国勢調査データ分析

国勢調査データを用いて、都道府県ごとの人口構成・人口性比・世帯構成などの地域差を分析した成果物です。地図可視化・相関分析・散布図分析を通じて、地域ごとの特徴や傾向を調査しました。

課題

人口構成や人口性比の地域差は感覚的に語られることが多い一方で、実際にどのような地域特性と関連しているのかを定量的に把握することは容易ではありません。

解決アプローチ

国勢調査データをPythonで加工・集計し、Foliumによる地図可視化、相関係数ヒートマップ、散布図分析を実施しました。可視化結果から仮説を立て、人口構成や人口性比に影響する要因を分析しました。

主な機能

  • ・国勢調査データの加工・集計
  • ・Foliumによる地図可視化
  • ・人口性比の地域分析
  • ・年齢構成の地域分析
  • ・相関係数ヒートマップの作成
  • ・散布図による仮説検証
  • ・地域特性の考察メモ作成
  • ・データ分析レポート作成

使用技術

PythonpandasNumPyFoliumMatplotlibSeabornJupyter Notebook国勢調査データ

機械学習(教師あり学習)

住宅価格予測モデル

住宅の立地・面積・築年数・設備情報などの特徴量から住宅価格を予測する機械学習モデルを構築した成果物です。予測精度の評価だけでなく、SHAPを用いて価格決定要因の分析と説明可能AI(XAI)の実装も行いました。

課題

住宅価格は面積・築年数・設備・立地など多数の要因によって決定されるため、単純な価格予測だけでなく『なぜその価格になるのか』を説明できるモデルが求められます。

解決アプローチ

欠損値補完・カテゴリ変数のダミー変数化を行い、LightGBMによる価格予測モデルを構築しました。さらにSHAPを活用し、モデル全体および個別物件レベルで価格への影響要因を可視化しました。

主な機能

  • ・欠損値補完(中央値・最頻値)
  • ・カテゴリ変数のダミー変数化
  • ・LightGBMによる住宅価格予測
  • ・予測値と実測値の比較による精度評価
  • ・特徴量重要度の可視化
  • ・SHAPによる全体傾向分析
  • ・SHAP Waterfallによる個別物件分析
  • ・説明可能AI(XAI)の実装

使用技術

PythonpandasNumPyLightGBMSHAPscikit-learnMatplotlibSeabornJupyter NotebookKaggle

機械学習(教師なし学習)

顧客セグメンテーション分析

EC購買履歴データを用いて、顧客ごとの購買傾向を分析し、KMeansによる顧客セグメンテーションを行った成果物です。取引明細データを顧客単位の特徴量に変換し、RFM分析・クラスタ数評価・クラスタ解釈・施策提案までを実施しました。

課題

購買履歴データは取引明細単位で蓄積されているため、そのままでは顧客ごとの購買傾向を把握しにくい課題があります。マーケティング施策に活用するには、顧客を購買頻度・購入金額・最終購入日などの観点から分類し、各セグメントの特徴を解釈できる形にする必要があります。

解決アプローチ

Online Retailデータセットを用い、取引明細データをCustomerID単位に集計しました。Recency・Frequency・Monetaryを中心に、購入数量、購入商品種類数、平均注文単価などの特徴量を作成し、標準化・外れ値処理を行った上でKMeansによるクラスタリングを実施しました。さらに、クラスタ重心の比較や決定木による代理モデルを用いて、各クラスタの特徴を解釈し、マーケティング施策に接続しました。

主な機能

  • ・取引明細データの前処理
  • ・キャンセル取引・欠損CustomerIDの除外
  • ・CustomerID単位の特徴量生成
  • ・RFM分析による顧客特徴量作成
  • ・外れ値処理と対数変換
  • ・StandardScalerによる標準化
  • ・Elbow MethodとSilhouette Scoreによるクラスタ数評価
  • ・KMeansによる顧客クラスタリング
  • ・PCAによるクラスタ可視化
  • ・クラスタ重心によるセグメント解釈
  • ・決定木によるクラスタ分類ルールの可視化
  • ・セグメント別マーケティング施策の提案

使用技術

PythonpandasNumPyscikit-learnKMeansPCADecisionTreeClassifierMatplotlibSeabornJupyter NotebookUCI Machine Learning Repository

機械学習(時系列予測)

購買履歴データを用いた売上時系列予測モデル

EC購買履歴データを週次売上・注文件数・顧客数などの時系列データに変換し、将来の売上を予測するモデルを構築した成果物です。単純なランダム分割ではなく、時系列順に学習期間とテスト期間を分け、Naive予測、4週移動平均、SARIMAX、LightGBMを比較しながら予測精度を検証しました。

課題

購買履歴データは取引明細単位で蓄積されているため、そのままでは売上推移や需要変動を把握しにくい課題があります。事業計画や在庫・販促施策に活用するには、過去の推移から将来の売上傾向を予測できる形に変換する必要があります。

解決アプローチ

Online Retailデータセットを用い、取引明細を週次単位に集計しました。売上、注文件数、購入数量、顧客数、商品種類数などの指標を作成し、過去週の売上や移動平均を特徴量として時系列予測モデルを構築しました。Naive予測、4週移動平均、SARIMAX、LightGBMを比較し、時系列予測では複雑なモデルが必ずしも単純なベースラインを上回るわけではない点も確認しました。なお、LSTMやGRUなどの深層学習系モデルも検討対象になり得ますが、今回は約1年分の週次データで学習データ点数が少ないため、過学習リスクと評価の妥当性を考慮して採用しませんでした。

主な機能

  • ・取引明細データの週次集計
  • ・売上・注文件数・顧客数・商品種類数の時系列化
  • ・ラグ特徴量の作成
  • ・移動平均特徴量の作成
  • ・時系列順のtrain/test分割
  • ・Naive予測・4週移動平均予測との比較
  • ・SARIMAXによる統計的時系列モデルの構築
  • ・LightGBMによる売上予測
  • ・MAE・RMSE・MAPEによる精度評価
  • ・実測値と予測値の可視化
  • ・LightGBMのgainベース特徴量重要度による予測要因の確認
  • ・データ量に応じたモデル選定と深層学習モデル非採用理由の整理

使用技術

PythonpandasNumPyscikit-learnstatsmodelsSARIMAXLightGBMMatplotlibJupyter NotebookTime Series ForecastingFeature EngineeringOnline Retail Dataset

機械学習(分類・金融データ分析)

信用リスクスコアリング分類モデル

German Credit Dataを用いて、申込者の信用リスクをGood Risk / Bad Riskに分類する機械学習モデルを構築した成果物です。金融機関の与信審査を想定し、単純な正解率だけでなく、ROC-AUC、PR-AUC、Recall、F1、混同行列、誤分類コスト、閾値調整を用いてモデルを評価しました。Logistic Regression、Random Forest、LightGBMを比較し、予測性能・説明可能性・承認率とリスク捕捉率のバランスを踏まえてモデルを検討しています。また、testデータ上の感度分析として確認した閾値0.46と、validationデータ上で誤分類コスト最小となった閾値0.21の両方を比較し、閾値設計の不安定性と実務上の制約条件の重要性も確認しました。

課題

信用リスク判定では、単に分類精度が高いモデルを作るだけでは不十分です。Bad Riskの申込者をGood Riskと判定してしまうと貸倒リスクにつながる一方で、Good Riskの申込者をBad Riskと判定すると収益機会の損失につながります。そのため、金融領域ではモデルの予測精度だけでなく、誤分類コスト、承認率、リスク捕捉率、判断根拠の説明可能性を考慮したモデル設計が重要になります。

解決アプローチ

申込者属性、信用履歴、借入金額、借入期間、口座状況などの特徴量を前処理し、カテゴリ変数のOne-Hot Encodingと数値変数の標準化を行いました。Logistic Regression、Random Forest、LightGBMを比較した結果、今回のデータではLogistic RegressionがROC-AUCやRecallの観点で安定した性能を示しました。さらに、Bad Riskの見逃しを重く評価する誤分類コストを設定し、予測確率に対する閾値調整を行いました。まずtestデータ上の感度分析として、デフォルト閾値0.50よりやや保守的な閾値0.46を確認し、承認率を大きく落としすぎずにBad Risk Recallを改善できる候補として比較しました。一方で、testデータ上で閾値を選ぶことは最終評価を楽観的にする可能性があるため、別途validationデータ上で誤分類コスト最小となる閾値も確認しました。その結果、validation上では閾値0.21が選ばれましたが、test適用時にはApproval Rateが大きく低下し、Total Costも改善しませんでした。この結果から、小規模データでは閾値最適化が不安定になり得ること、また信用リスクモデルでは単純なコスト最小化だけでなく、承認率・収益機会・リスク許容度などの制約条件を含めた閾値設計が必要であることを確認しました。最終的には、性能・安定性・説明可能性を踏まえ、係数によって判断根拠を説明しやすいLogistic Regressionを最終モデルとして整理しました。

主な機能

  • ・German Credit Dataの取得・前処理
  • ・目的変数のGood Risk / Bad Riskへの変換
  • ・カテゴリ変数のOne-Hot Encoding
  • ・数値変数の標準化
  • ・層化抽出によるtrain / validation / test分割
  • ・Logistic Regressionによる信用リスク分類
  • ・Random Forest・LightGBMとのモデル比較
  • ・Accuracy・Precision・Recall・F1による分類評価
  • ・ROC-AUC・PR-AUCによる予測性能評価
  • ・誤分類コストを考慮した閾値調整
  • ・testデータ上の感度分析による閾値0.46の確認
  • ・validationデータでのコスト最小閾値0.21の確認
  • ・閾値調整前後のTotal Cost・Bad Risk Recall・Approval Rate比較
  • ・混同行列によるGood/Bad判定結果の確認
  • ・承認率とBad Risk捕捉率のトレードオフ確認
  • ・小規模データにおける閾値最適化の不安定性確認
  • ・単純なコスト最小化と実務上の承認率制約の比較
  • ・Logistic Regressionの係数による判断根拠の可視化
  • ・金融領域における説明可能性を意識したモデル選定

使用技術

PythonpandasNumPyscikit-learnLogistic RegressionRandom ForestLightGBMMatplotlibSeabornJupyter NotebookClassificationCredit Risk ScoringCost-sensitive EvaluationThreshold TuningSensitivity AnalysisModel InterpretabilityGerman Credit DataUCI Machine Learning Repository

機械学習運用・金融AIガバナンス

信用リスクモデルの運用監視・ガバナンス設計

German Credit Dataを用いて構築した信用リスクスコアリング分類モデルを、実運用で継続利用することを想定し、モデル監視・閾値管理・データドリフト確認・モデルカード作成を行った成果物です。先行成果物である「信用リスクスコアリング分類モデル」では、Good Risk / Bad Riskの分類モデル構築、モデル比較、閾値調整、誤分類コスト評価を行いました。本成果物ではその発展版として、モデルを作って終わりにせず、運用後にどの指標を監視し、どのような変化が起きた場合に再検証・再学習を検討すべきかを整理しました。

課題

信用リスクモデルは、構築時点で一定の精度が出ていても、運用環境では申込者属性、借入条件、審査方針、経済環境などの変化によって性能が劣化する可能性があります。また、Bad Riskの見逃しを抑えようとして閾値を厳しくしすぎると、Good Riskの申込者まで否決し、承認率や収益機会を大きく損なう可能性があります。そのため、金融領域の機械学習モデルでは、予測精度だけでなく、承認率、Bad Risk Recall、Total Cost、予測スコア分布、特徴量ドリフト、再学習判断基準を継続的に確認する運用設計が重要になります。

解決アプローチ

先行成果物で構築したLogistic Regressionによる信用リスクスコアリングモデルを対象に、運用監視を想定した分析を行いました。まず、閾値ごとのApproval Rate、Bad Risk Recall、Precision、Total Costを比較し、リスク捕捉率と承認率のトレードオフを確認できるThreshold Policy Matrixを作成しました。次に、学習時データと監視対象データの特徴量分布を比較し、PSIを用いて特徴量ドリフトを可視化しました。さらに、疑似的な月次監視データを作成し、Approval Rate、Bad Risk Recall、Total Cost、mean_bad_probability、max PSIの推移を確認する監視ダッシュボードを作成しました。最後に、モデルの利用目的、判断上の役割、主要評価指標、閾値ポリシー、監視項目、再学習・再検証条件、制約事項をモデルカードとして整理し、金融AIモデルを実務で管理する際の論点を可視化しました。

主な機能

  • ・信用リスクスコアリング分類モデルの運用監視設計
  • ・閾値ごとのApproval Rate・Bad Risk Recall・Precision・Total Cost比較
  • ・Threshold Policy Matrixによる閾値ポリシーの可視化
  • ・承認率とリスク捕捉率のトレードオフ確認
  • ・学習時データと監視対象データの分布比較
  • ・PSIによる特徴量ドリフトの確認
  • ・特徴量ごとのドリフト重要度の可視化
  • ・月次監視を想定した疑似モニタリングデータの作成
  • ・Approval Rate・Bad Risk Recall・Total Costの月次推移確認
  • ・mean_bad_probabilityによる平均リスクスコアの監視
  • ・max PSIによるデータ分布変化シグナルの監視
  • ・監視指標に基づくアラート条件の整理
  • ・モデルカードによる利用目的・制約・監視項目の明文化
  • ・再学習・再検証を検討すべき条件の整理
  • ・金融領域におけるモデルガバナンスとMLOps観点の整理

使用技術

PythonpandasNumPyscikit-learnLogistic RegressionMatplotlibSeabornJupyter NotebookCredit Risk ScoringModel MonitoringModel GovernanceMLOpsThreshold ManagementCost-sensitive EvaluationPSIFeature DriftScore MonitoringModel CardGerman Credit DataUCI Machine Learning Repository