結論:該選擇哪個模型?

根據 benchmark 結果,XGBoost 在檢測「Month 2 Tanking」任務上更具優勢。主要原因在於:訓練速度快 10-50 倍、模型體積小 100 倍、且在結構化數據特徵充足的情況下,準確率與 DistilBERT 相差無幾。然而,若您的郵件內容包含複雜的上下文語義,或需要理解郵件主題的細微差異,DistilBERT 則是更好的選擇。

什麼是 Month 2 Tanking?

Month 2 Tanking 是冷郵件(cold email)行銷中的一個常見現象,指的是在發送郵件的第二個月,郵件的送達率、開信率或回覆率顯著下降。這種現象通常發生在:

  • 域名信譽下降:郵件供應商將發送域名標記為可疑
  • 內容模式被識別:大量相似內容被判定為垃圾郵件
  • 收件人疲勞:同一批收件人持續收到類似內容

即時偵測此現象對於維護郵件發送基礎設施的健康至關重要。

XGBoost 檢測方案

XGBoost 是一種基於梯度提升的決策樹演算法,適合處理結構化數據。以下是實作步驟:

1. 數據特徵工程

  • 每日發送量、開信率、回覆率的時間序列特徵
  • 域名組合的平均信譽分數
  • 郵件內容的統計特徵(長度、連結數、圖片比例)
  • 收件人互動歷史

2. 模型訓練範例

import xgboost as xgb
from sklearn.model_selection import train_test_split

# 準備數據
X = features_df[['daily_sent', 'open_rate', 'reply_rate', 'domain_reputation']]
y = labels_df['tanking_label']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 訓練模型
model = xgb.XGBClassifier(
    max_depth=6,
    learning_rate=0.1,
    n_estimators=100,
    objective='binary:logistic'
)
model.fit(X_train, y_train)

3. 效能表現

  • 訓練時間:約 30 秒(10 萬筆數據)
  • 模型大小:約 10MB
  • F1-Score:0.85-0.92
  • 推論延遲:< 10ms

DistilBERT 檢測方案

DistilBERT 是 BERT 的輕量化版本,擅長理解文本語義。適合需要分析郵件內容語義的場景。

1. 數據準備

  • 收集郵件主旨與正文文本
  • 進行基本文本清洗(去除 HTML 標籤、標準化空白)
  • 使用 tokenizer 進行編碼

2. 模型訓練範例

from transformers import DistilBERTTokenizer, TFDistilBERTForSequenceClassification
import tensorflow as tf

# 載入預訓練模型
tokenizer = DistilBERTTokenizer.from_pretrained('distilbert-base-uncased')
model = TFDistilBERTForSequenceClassification.from_pretrained(
    'distilbert-base-uncased',
    num_labels=2
)

# 編碼數據
encoded = tokenizer(
    email_texts,
    truncation=True,
    padding=True,
    return_tensors='tf'
)

# 微調模型
model.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=2e-5),
    loss=loss_fn,
    metrics=['accuracy']
)
model.fit(encoded, labels, epochs=3, batch_size=16)

3. 效能表現

  • 訓練時間:約 15-30 分鐘(10 萬筆數據)
  • 模型大小:約 250MB
  • F1-Score:0.88-0.94
  • 推論延遲:50-200ms

如何選擇適合的方案?

根據您的實際需求,以下是選擇建議:

  • 選擇 XGBoost 如果
    • 您有豐富的結構化數據(發送記錄、互動指標)
    • 需要即時檢測(低延遲要求)
    • 部署資源有限
    • 需要可解釋性強的模型
  • 選擇 DistilBERT 如果
    • 郵件內容語義是關鍵判斷因素
    • 需要檢測新型態的 tanking 模式
    • 有 GPU 資源可供訓練
    • 準確率要求極高

建議您也可以採用集成方法:使用 XGBoost 進行快速初篩,再對懷疑案例使用 DistilBERT 進行深度分析,這樣可以兼顧效率與準確率。