TR;DR
- SIGNATE Cup 2026 Spring(会員継続予測)に参戦
- 小規模データにおける過学習抑制と精度の両立を目指し、Databricksのメダリオンアーキテクチャの考え方に基づいてデータを処理
- 最終的には深層学習モデルで高スコアを達成し、実業務を見据えたデータ分析環境の構築経験を得ることができた
目次
はじめに
1.コンペ概要
2.分析環境
3.最終結果とスコア
4.分析の全体像
おわりに
はじめに
はじめまして、MSOL DigitalでITコンサルタントとして活動しておりますuenoです。
今回は、SIGNATEが主催した「SIGNATE Cup 2026 Spring(動画配信サービスの継続フラグ予測)」に参戦した記録を共有します。
さて、本コンペは会員の視聴ログやアンケート等のデータから「サービスを継続するかどうか」を予測する二値分類タスクとなっております。
- SIGNATE Cup 2026 Spring コンペティションページ
TrainデータとTestデータがそれぞれおよそ1,000行と非常に小規模なデータセットである一方、視聴ログなどのリレーションデータが存在し、「いかに過学習を防ぎつつ、質の高い特徴量を生成するか」が問われる難易度の高い課題でした。
本記事では、コンペ期間中の思考プロセスや試行錯誤について、ガイドラインに抵触しない程度に順を追って解説していきたいと思います。
1. コンペの概要
【タスクと目的】
先ほども述べた通り、本コンペは ある動画配信サービスにおける会員の「継続フラグ予測(二値分類)」 がテーマです。
ユーザーの属性情報、視聴ログ、アンケート回答などのデータから、その会員が将来的にサービスを継続するか解約(離脱)するかを予測します。
ちなみに精度評価は、評価関数「Log Loss」を使用されました。予測結果提出後に表示されるスコアが 0 に近いほど、構築した予測モデルの精度が高い ことを示します。
\text{LogLoss} = -\frac{1}{n} \sum_{i=1}^{n} \sum_{j=1}^{m} y_{ij} \log(\hat{y}_{ij})
\begin{array}{cl}
\hline
\text{記号} & \text{意味} \\
\hline
n & \text{データ(サンプル)の総数} \\
m & \text{クラスの総数} \\
y_{ij} & \text{サンプル } i \text{ がクラス } j \text{ に属しているかを表すフラグ(正解なら } 1 \text{、それ以外は } 0 \text{)} \\
\hat{y}_{ij} & \text{サンプル } i \text{ がクラス } j \text{ に属するとモデルが予測した確率} \\
\hline
\end{array}
データセットの規模と特徴
与えられたデータセットの行数は以下の通りです。
- Trainデータ(学習用)
- Testデータ(評価用)
- その他 : 作品情報(films)データ等
【本コンペ最大の難所】
実務では数万〜数百万行あるケースが多いですが、先ほども述べたようにデータが数千行しかないため、少しでも特徴量を複雑にしすぎたりパラメーターを調整しすぎたりするだけで過学習(オーバーフィッティング)が即座に発生 してしまいます。
- 過学習(オーバーフィッティング)に関する参考記事
そのため、今回は以下の2つの目標を掲げて取り組みました。
- 予測精度の向上 :小規模データからいかに「情報の密度」が高い信号を取り出すか
- CV(交差検証)とLB(リーダーボード)スコアの整合性確保 :汎化性能の維持
2. 分析環境
今回は単にNotebook上でスクリプトを回すだけでなく、実業務を意識したエンタープライズ・データサイエンス環境として、以下のツール・ライブラリを活用して分析を行いました。
プラットフォーム・データ管理
-
Databricks (Unity Catalog)
- メダリオンアーキテクチャ(Bronze / Silver / Gold層)を構築
- 生データからクレンジング、特徴量作成、モデル入力までのデータパイプラインを管理
- MLflowで実行したパラメータやモデルを保存
-
Dataiku
- ワークフローの可視化や「人・ガバナンス・オーケストレーション」といったMLOps/LLMOpsの観点での機能評価・比較として一部で試行
- Databricksとの強みの違いや補完性を検証したものの、最終的に組み合わせたかったが断念
使用した主な手法・ライブラリ
-
機械学習 / 深層学習モデル
- 勾配ブースティングツリー / 伝統的手法:LightGBM, CatBoost, SVM (Support Vector Machine), LR (Logistic Regression)
- テーブルデータ向け深層学習(ディープラーニング):TabNet, TabPFN
3. 最終結果とスコア
今回のコンペティションにおいて、最終的に到達したベストスコア(リーダーボード)は以下の通りです。
- Private スコア (LB) : 0.302931
- 最終順位 : 92位/322位(上位28.5%)
- 最終採用モデル : TabPFN
試行錯誤とスコア推移の概要
期間中、単一モデルからアンサンブルまで様々な手法を導入・検証しました。
スコアはLogLossで計算され、0に近ければ近いほど予測精度が出ているとご認識ください。
小規模データにおいて決定木・勾配ブースティングツリーモデルは調整を少しでも誤ると過学習を引き起こしやすい中、最終局面で導入した事前学習済み深層学習モデルがスコアに寄与したのだと考えます。
4. 分析の全体像
本コンペに取り組むにあたり、私は分析プロセスのフレームワークとして「CRISP-DM(Cross-Industry Standard Process for Data Mining)」を採用しました。
CRISP-DMとは?
CRISP-DMは、データ分析をビジネスの成功に導くための標準的なプロセスモデルです。
- IBMによるCRISP-DMの解説ページ
分析を1回の「直線的な作業」と捉えるのではなく、以下の6つのフェーズを サイクリックに回しながらブラッシュアップしていく 点に特徴があります。
- ビジネス理解 (Business Understanding) : 課題の整理・目標設定(=コンペの目的と制約の把握)
- データ理解 (Data Understanding) : EDA(探索的データ分析)によるデータ傾向の把握
- データ準備 (Data Preparation) : 前処理・特徴量エンジニアリング
- モデリング (Modeling) : 機械学習・深層学習モデルの構築と学習
- 評価 (Evaluation) : CVスコアや汎化性能の検証(乖離のチェック)
- 展開 (Deployment) : 予測結果の出力(実業務であればシステム組み込みや運用など)
メダリオンアーキテクチャとの統合
今回、実業務を意識した取り組みとして、CRISP-DMにおける「2. データ理解」「3. データ準備」「4. モデリング」のサイクルを、Databricks (Unity Catalog) の「メダリオンアーキテクチャ」と結びつけて管理しました。
各データ層と分析プロセスの対応は以下の通りです。
-
Bronze層(生データ)
- 提供されたソースデータをそのまま保持
-
Silver層(クレンジング:データ準備初期)
- 列名の正規化、小数点の処理、欠損値の基本処理
- 作品情報と視聴ログを結合
-
Gold層(特徴量統合:データ準備後期〜モデリング)
- 視聴日時・時間統計
- LLMによる特徴量抽出
- 最終統合テーブル
このように「どの処理段階のデータなのか」をアーキテクチャ上で分離・構造化することで、小規模データ特有の「試行錯誤(CRISP-DMのループ)の速さ」と「実験の再現性・データガバナンス」を両立させることができました。
4-1. 探索的データ分析(EDA)
CRISP-DMにおける「データ理解」のフェーズです。提供されたデータを観察・分析する中で、本コンペを攻略するための重要な性質と課題が浮かび上がりました。
例えば動画サイトのデータでありがちな、『職業情報』や『アンケート回答』といった定性データ(テキスト)の存在です。
\begin{array}{clll}
\hline
\text{ID} & \text{アンケート1解答} & \text{アンケート2解答} & \text{アンケート3解答} \\
\hline
1 & \text{非常に良い} & \text{目的がある} & \text{推しの俳優のため} \\
2 & \text{良くない} & \text{目的がない} & \text{医療ドラマ} \\
3 & \text{非常に良くない} & \text{他社乗り換え} & \text{知人の招待クーポン} \\
4 & \text{非常に良い} & \text{目的がない} & \text{知人の招待クーポン} \\
\hline
\end{array}
これらは単純なカテゴリ変数としてID化、または数値化(0と1など)するだけでは、テキストの奥にある「ユーザーの温度感や意図」を拾いきれず、情報を損失してしまうと考えました。
4-2. 前処理・特徴量エンジニアリング
CRISP-DMにおける「データ準備」のフェーズであり、今回の取り組みの中で最も注力したセクションです。DatabricksのUnity Catalogを活用し、目的ごとに作成した特徴量を「Gold層」テーブルとして構造化・統合していきました。
1. メダリオンアーキテクチャによる特徴量(Gold層)の設計
作成した特徴量は、データガバナンスと実験の再現性を保つため、役割ごとにテーブル群に分割して管理・結合しました。下記はその一例です。
- 視聴日時や視聴時間に関する各種統計情報
- ユーザーのプロフィール関係
- ユーザーの活動に関連するデータ等…
2. 特徴量エンジニアリングの一例:NLP手法の応用
従来の「視聴回数」などの単純な集計値だけでは捉えきれない、ユーザーの「潜在的な嗜好」を抽出するため、自然言語処理(NLP)の手法を応用しました。
単純にベクトル化するだけでなく TF-IDFによる重み付け を施しました。例えば、誰もが見るような人気作品の影響度を適度に抑え、ユーザー固有のコアな嗜好や特有の視聴傾向が色濃く反映されるように強調するといったような処理を行います。
単純な集計値では表現できない「作品同士の隠れた関係性」を抽出できたため、小規模データにおける過学習を効果的に抑えつつ、モデルの予測精度向上に大きく寄与しました。
3. LLM(大規模言語モデル)の活用による特徴抽出
ユーザーの属性やアンケートに含まれるテキスト情報を有効活用するため、LLMをパイプラインに組み込みました。
ユーザーの職業情報、作品のジャンル、そしてテキストから「継続・解約」の心理に結びつくシグナルをLLMに分類・抽出させて、密度の高い特徴量としてモデルに提供しました。
4-3. モデリング
CRISP-DMにおける「モデリング」および「評価」のフェーズです。構築した「Gold層」の特徴量テーブルをベースに、過学習を防ぎつつ予測精度を最大化するためのモデル選定・チューニングを行いました。
4-4. 予測結果提出
CRISP-DMにおける「評価」の最終確認、および「展開(Deployment:予測結果の出力)」フェーズです。最終提出に至るまでに、小規模データコンペならではの2つの大きな壁に直面し、試行錯誤を行いました。
1. CVとLBの激しい乖離(ギャップ)
データが少なすぎるゆえに、ローカル環境での交差検証スコア(trとvaで観測)と、提出時の暫定順位表のスコア(Publicスコア)の相関が非常に不安定でした。
特徴量を増やすと学習側のスコアは向上するものの、検証側のスコアが著しく悪化するという「過学習の停滞期」が長く続きました。
そのため対策として以下のことを行いました。
- スコアの絶対値だけでなく、「CV-LBのギャップ分析」を徹底
- 学習スコアと検証スコアのギャップが極端に大きく、Publicスコアが良くても排除
- 安定して高い汎化性能を見せるモデルを選択
2. MLOpsプラットフォームの運用と連携
今回のもう一つのテーマである「Databricks」と「Dataiku」の使い分けや本番運用においても、貴重な経験と課題が得られました。
最終提出の段階では、Dataikuを完全な本番運用フローとして100%機能させきれなかった点に試行錯誤が残りました。
しかし、Databricksでのデータ・特徴量管理と、Dataikuでのガバナンス重視のワークフローの「相互補完的な連携」に可能性を見出せたことは、実務に直結する大きな収穫となりました。
おわりに
一般的に、LightGBMやCatBoostをはじめとする勾配ブースティングツリーなどの強力な手法を使いこなすためには、実業務における大規模データの運用経験が不可欠です。
しかし、今回のようにあえて「小規模データ特有の微弱な信号(シグナル)を探し出す」というチャレンジに深く向き合ったことは、データへの洞察力を養う上で非常に貴重な経験となりました。
今回のコンペで得られた知見を、今後の実業務や次のコンペに活かし、さらにステップアップしていきたいと思います。
最後までお読みいただき、ありがとうございました!
この記事が、同様の課題に向き合っているデータサイエンティストやエンジニアの皆さんの参考になれば幸いです。「LGTM」やコメントをいただけると励みになります!
採用情報
MSOL Digitalでは、ミッション・ビジョンの実現に向けて、新たな仲間を募集しています。
少しでもご興味をお持ちいただけましたら、ぜひエントリーをご検討ください。
- 採用エントリーページ
また、すぐに転職をお考えでない場合でも、カジュアル面談からのスタートも大歓迎です。まずはお気軽にお話しできますと幸いです!
- カジュアル面談・お問い合わせ



