GH GambleHub

フィーチャーのエンジニアリングとフィーチャーの選択

1)目的と原則

目的:オフラインとオンラインの間で合意された安定した、解釈可能で経済的な機能を構築する。

原則:
  • ポイントインタイム:機能は、将来(漏洩防止)なしで、ソリューションの時点で利用可能なデータから計算されます。
  • ドメインファースト:機能はビジネスメカニズム(預金、セッション、ゲームジャンル、RG/AML)を反映しています。
  • 再利用と契約:フィーチャーストアのバージョン、所有者、数式、SLO。
  • コスト配分:レイテンシーとコンピューティング/ストーリングのコストを考慮します→回収のみを実現します。
  • 観測性:モニタドリフト/安定性/校正;オンライン/オフラインの等価性テスト。

2) iGamingのための特徴的な分類法

RFM/behavioral:窓(10m/1h/1d/7d/30d)によるrecency/frequency/monetary。
セッション:期間、一時停止、デバイスの変更/ASN、動作速度。
財務:預金/出金/チャージバック、支払方法の株式、FX正規化。
ゲーム:ジャンルプロファイル、プロバイダのボラティリティ、RTPクラスタ、win-streak。
マーケティング:チャンネル/UTM、キャンペーンレスポンス、飽和/クールダウン。
RG/AML:制限、自己排除フラグ、速度パターン、BIN/IP再利用。
地理/時間:ローカルカレンダー/休日、ベルトアワー、夜/夜。
グラフ:user-card-device-ipリンク、centrality/components、詐欺リング。
NLP/テキスト:チケット/チャットのテーマとトーン。重要な苦情です。
運用:lag/providerエラー、セッション安定性(SREモデル用)。


3) Windowsと集計(ポイント・イン・タイム)

典型的な窓:10m/1h/24h/7d/30d。各ウィンドウ-count/sum/mean/std/last/max/min、 ratioとrate。

SQLテンプレート(30dデポジット、未来なし):
sql
SELECT u.user_pseudo_id, t.asof,
SUM(CASE WHEN e.type='deposit'
AND e.event_time>=t.asof - INTERVAL '30' DAY
AND e.event_time< t.asof THEN e.amount_base ELSE 0 END) AS dep_30d,
COUNT(CASE WHEN e.type='bet'
AND e.event_time>=t.asof - INTERVAL '7' DAY
AND e.event_time< t.asof THEN 1 END) AS bets_7d
FROM silver.fact_events e
JOIN (SELECT user_pseudo_id, DATE(event_time) AS asof
FROM silver.fact_events GROUP BY 1,2) t USING(user_pseudo_id)
JOIN dim.users_scd u ON u.user_pseudo_id=t.user_pseudo_id
AND t.asof >= u.valid_from AND (u.valid_to IS NULL OR t.asof < u.valid_to)
GROUP BY 1,2;

4)カテゴリカルエンコーディング

ワンホット/ハッシング:レア/ハイカーディナルカテゴリー(ゲーム、プロバイダー)。
Target Encoding (TE): k-fold/leave-one-outとtime-aware anti-leakageによるターゲット平均値。
WOE/IV(リスクスコアリング):IV制御と安定性を備えた単調なビン。

TE(擬似コード、時間認識):
python for fold in time_folds:
train_idx, val_idx = split_by_time(fold)
te_map = target_mean(train[["provider_id","label"]])
val["provider_te"] = val["provider_id"].map(te_map).fillna(global_mean)

5)正規化とスケーリング

最小最大/ロバスト/Zスコア-トレーニングウィンドウで;パラメータをアーティファクトに保存します。
ロングサム/ベットテールのコンバージョンを記録します。
Box-Cox/Yeo-Johnson-対称化が必要な場合。


6)一時的で、季節的な特徴

カレンダー:曜日、時間、市場の休日(参考カレンダー)、有料日。
頻度:移動平均/expon。平滑化(EMA)、デルタ(t − t-1)。
イベントベース:最後の預金/勝利/損失からの時間、「冷却」。


7)グラフ機能(不正/AML)

頂点:user/card/device/ip。エッジ:トランザクション/セッション/ジョイント特性。
特徴:部品のサイズ、程度、betweeness、 pagerank、三重、reappearance。
パターン:毎晩バッチはグラフ→埋め込み/中心性→オンラインキャッシュを構築します。


8) NLP機能(サポート/チャット/レビュー)

基本:TF-IDF/NMFトピック、感情、長さ、苦情の頻度。
Advanced:埋め込み(Sense-BERT)→ウィンドウごとにチケットの平均化。
PII:ポリシーによるプレマスキングとポストマスキング(電子メール、PAN、電話)。


9) 地理/ASNおよび装置

IP→Geo/ASN:キャッシュと更新;タイムアウト/キャッシュなしでオンラインで同期リクエストを行わないでください。
特徴:ASN/DeviceIDの安定性、シフト頻度、ログイン間の間隔。


10)反漏出およびオンライン/オフラインの和解

ポイントインタイム参加、ウィンドウ/ラベルの将来のイベントはありません。
オフラインおよびオンラインのための1つの変換コード(ライブラリ)。
等価性試験:サンプルTでは、機能のオンライン値とオフライン(MAE/MAPE)を比較します。

YAMLのspecsの特徴:
yaml name: deposits_sum_10m owner: ml-risk slo: {latency_ms_p95: 20, availability: 0.999}
offline:
source: silver.payments transform: "SUM(amount_base) OVER 10m BY user_pseudo_id"
online:
compute: "streaming_window: 10m"
tests:
- compare_online_offline_max_abs_diff: 0.5

11)特徴の選択

11.1フィルター

バリエーション/相関:定数の削除、ρ>0.95の重複。
相互情報(MI)-非線形関係を変更する。
IV/KS(リスク):AML/RGのバイナリターゲット用。

11.2ラッパー

RFE/Sequential FS:小さなセット/ロジスティック回帰。
安定性選択:ブートストラップサンプリングの安定性。

11.3埋め込まれた

L1/Lasso/ElasticNet: rarefaction。
木/GBDT:選択とビジネス解釈のための重要性/SHAP。
Group Lasso:グループ選択(1つの変数のビンフィーチャーのセット)。

パイプライン(スケッチ):
python
X = preprocess(raw)        # one-hot/TE/scale
X = drop_const_and_corr(X, thr=0.95)
rank_mi = mutual_info_rank(X, y)
keep1 = topk(rank_mi, k=200)
model = LGBMClassifier(...)
model.fit(X[keep1], y)
shap_vals = shap.TreeExplainer(model).shap_values(X[keep1])
keep2 = stable_topk_by_shap(shap_vals, k=60, bootstrap=20)
final = keep2

12)安定性、漂流および口径測定

ドリフト:特徴および速度のためのPSI/KS;しきい値を超えるとアラートが表示されます。
安定性:「壊れやすい」TE/WOE(カーディナリティ/シフト)を監視します。
口径測定:プラット/Isotonic;信頼性報告。
スライス分析:市場/プロバイダ/デバイス-メトリクスと予想されるエラーのコスト。


13)コストエンジニアリングとパフォーマンス

機能あたりのコスト(CPF): CPU/IO/ネットワーク/ストレージ→モデル予算。
具現化:重いオフライン、軽いオンライン;ホット機能のTTL/キャッシュ。
リモート検索:非同期+キャッシュのみ;オンラインの特徴のp95 <20-30 ms。
チャージバック:コマンドによるフィーチャー/推論のコストを計算します。


14) Feature Store(整合性カーネル)

レジストリ:名前、数式、所有者、SLO、テスト、バージョン。
オンライン/オフライン同期:1つの変換コード、等価テスト。
ログ/監査:式を変更した人;モデルメトリックに対するバージョンの影響。


15)例

ClickHouse:分の賭け集計:
sql
CREATE MATERIALIZED VIEW mv_bets_1m
ENGINE = SummingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), user_pseudo_id)
AS
SELECT toStartOfMinute(event_time) AS ts_min,
user_pseudo_id,
sum(stake_base) AS stake_sum_1m,
count() AS bets_1m
FROM stream.game_events
GROUP BY ts_min, user_pseudo_id;
反相関の低下(SQLの考え):
sql
-- вычислить корреляции и удалить пары с     ρ    >0.95, сохранив более «дешевую» фичу
WOE binning(スケッチ):
python bins = monotonic_binning(x, y, max_bins=10)
woe = compute_woe(bins)
iv = compute_iv(bins)

16)プロセスとRACI

R(責任ある):Data Eng(パイプライン/フィーチャーストア)、Data Science(設計フィーチャー/選択/メトリック)。
A(説明責任):データ/CDOの責任者。
C(コンサルティング):コンプライアンス/DPO (PII、レジデンシー)、リスク/AML/RG(ポリシー)、SRE (SLO/コスト)、セキュリティ。
I (Informed):製品/マーケティング/オペレーション/サポート。


17)ロードマップ

MVP (3-5週):

1.ポイント・イン・タイム式の上位50機能(ペイメント/ゲームプレイ)のカタログ。

2.Feature Store v1(オンライン/オフライン)+同等性テスト。

3.基本的な選択:定数/相関→MI→L1/SHAPショートリスト(最大60の機能)。

4.ドリフト機能とコストダッシュボードの監視。

フェーズ2(5-10週間):
  • TE/WOEは、時間を意識した検証、グラフ、カレンダー機能を備えています。
  • スライス分析と公平性、確率校正。
  • 重いオフライン機能、オンラインキャッシュ、クォータの具現化。
フェーズ3(10-16週間):
  • ドキュメントの自動生成、CIの安定性の選択。
  • 「高価で役に立たない」機能の自動無効化(CPF→、vklad→)。
  • フィーチャーセットのA/B比較、期待コストのレポート。

18)売り上げ前のチェックリスト

  • すべての機能には仕様(所有者、数式、バージョン、SLO)があります。
  • ポイント・イン・タイムおよびオンライン/オフライン等価テストに合格しました。
  • フィルター→埋め込み(SHAP/L1)→安定性完了。
  • 設定されたドリフトモニタリングと信頼性;しきい値とアラートがあります。
  • CPF/レイテンシは予算に適合します。重い特徴を具現化しました。
  • PIIポリシーが満たされました(CLS/RLS、トークン化、レジデンシー)。
  • カタログにドキュメントとユースケースが追加されました。

19)アンチパターンとリスク

Lakage(将来のイベント/アフターマスプロモーション)。
オンライン/オフライン式の一貫性がない。
Hashing/TEを使用せずにHigh-Cardinalカテゴリから1-Hotを供給し過剰。
「高価な」機能は、品質の測定可能な増加なし。
スライス/公平性分析の欠如-隠れた劣化。
時間を意識したクロスバリデーション→再訓練のないTE/WOE。


20)ボトムライン

Feature Engineeringは、ポイントインタイム、ビジネスセンス、再現性、モニタリング、経済学など、管理された分野です。強力な機能+厳格な選択(フィルター/ラッパー/組み込み)と1つのFeature Storeは、Net Revenueを改善し、不正を削減し、RGを透過的かつ準拠的にサポートする安定した解釈可能で安価なモデルを提供します。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。