Datawhale AI 夏令營第一期(機器學習方向)Task2 筆記:用戶新增預測挑戰賽 —— 從業務理解到技術實現

Datawhale AI夏令營第一期(機器學習方向)Task2筆記:用戶新增預測挑戰賽——從業務理解到技術實現

一、任務核心:業務與技術的“翻譯”

本次Task聚焦“用戶新增預測挑戰賽”的核心邏輯,核心目標是鍛煉“將業務問題轉化為AI技術問題”的能力,具體包含兩大能力:

  • 業務透視眼:從“識別新增用戶”的業務需求倒推特征設計邏輯
  • 數據診斷術:通過可視化等手段挖掘特征中的有效信息

二、賽題核心認知:二分類任務的本質

1. 任務定義

“用戶新增預測挑戰賽”是由科大訊飛主辦的二分類任務,需基于用戶行為數據預測用戶是否為新增用戶(目標字段is_new_did,1表示新增,0表示非新增),評價指標為F1分數(分數越高模型性能越好)。

2. 業務與技術價值

類型具體價值
行業價值精準預測用戶增長趨勢、優化產品迭代方向;降低用戶獲取成本;為AI落地提供量化依據
技術價值解決實際用戶增長預測問題;驗證AI在用戶行為分析中的有效性;建立可復用方法論

3. 數據基礎

  • 輸入數據:包含15個原始字段的用戶行為事件記錄,核心字段包括:
    • did:用戶唯一標識(關鍵)
    • common_ts:事件發生時間戳(時間特征來源)
    • udmap:事件自定義屬性(JSON格式,含助手/插件ID)
    • 其他字段:設備品牌、網絡類型、地域信息等基礎屬性
  • 輸出要求:CSV文件,僅含is_new_did列(值為0或1)

4. 數據關鍵特征(探索發現)

  • 測試集中93%的用戶(did)出現在訓練集中(可直接復用已知標簽)
  • 訓練集中88%的用戶標簽為0(正負樣本不平衡)
  • 事件級數據需轉化為用戶級特征(需按did聚合)

三、解題核心:要點、難點與思路

1. 核心要點與難點

類別具體內容
核心要點從事件級數據提取用戶級特征;處理高維稀疏特征;平衡正負樣本;捕捉時間敏感特征
難點用戶行為聚合(事件→用戶);高維稀疏特征處理;樣本不平衡;時間模式捕捉

2. 基礎解題思路

  • 模型選擇:優先樹模型(如LightGBM),原因是訓練速度快、對高維稀疏特征處理友好
  • 特征方向:時間特征(時段、行為間隔等)、用戶行為聚合特征(行為次數、首次/末次行為時間等)
  • 樣本處理:利用“測試集與訓練集用戶重疊”特性——已知標簽直接復用,未知標簽建模預測

四、Baseline方案:從設計到實現

1. 方案設計邏輯

模塊具體設計依據/優勢
特征設計提取時間特征(時段、停留時長等)符合用戶行為分析理論,捕捉行為模式
模型選擇LightGBM穩定性高、訓練效率快、對預處理需求低
驗證方法五折交叉驗證避免單次驗證的隨機性,提升模型評估可靠性
閾值優化基于F1-score動態調整閾值平衡精確率與召回率,適配樣本不平衡場景

2. 核心優勢與待改進點

類別具體內容
方案優勢- 采用五折目標編碼,避免數據泄露
- 基于LightGBM的并行訓練,速度比XGBoost快3-5倍
待改進點- udmap(JSON字段)未充分解析
- 缺乏特征重要性篩選
- 未處理設備品牌長尾分布

3. 核心代碼邏輯

(1)交叉驗證建模

通過分層K折(Stratified K-Fold)確保各折中正負樣本比例一致,結合早停機制(early stopping)防止過擬合:

n_folds = 5
kf = StratifiedKFold(n_splits=n_folds, shuffle=True, random_state=42)for fold, (train_idx, val_idx) in enumerate(kf.split(X_train, y_train)):X_tr, X_val = X_train.iloc[train_idx], X_train.iloc[val_idx]y_tr, y_val = y_train.iloc[train_idx], y_train.iloc[val_idx]# 創建數據集train_set = lgb.Dataset(X_tr, label=y_tr)val_set = lgb.Dataset(X_val, label=y_val)# 模型訓練(早停機制)model = lgb.train(params, train_set,num_boost_round=5000,valid_sets=[train_set, val_set],callbacks=[lgb.early_stopping(stopping_rounds=200), lgb.log_evaluation(200)])
(2)閾值優化(最大化F1)

默認0.5閾值未必最優,針對正樣本稀少場景(如本任務),在0.1-0.4范圍搜索最優閾值:

def find_optimal_threshold(y_true, y_pred_proba):best_threshold = 0.5best_f1 = 0# 聚焦正樣本稀少場景的候選閾值for threshold in [0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4]:y_pred = (y_pred_proba >= threshold).astype(int)f1 = f1_score(y_true, y_pred)if f1 > best_f1:best_f1 = f1best_threshold = thresholdreturn best_threshold, best_f1

五、上分思路:快速提升方向

1. 特征工程優化

  • 解析udmap:提取JSON中的botIdpluginId,構建用戶使用的助手/插件數量、類型等特征
  • 時間特征深化:用戶首次/末次行為時間、行為間隔、活躍時段分布(如是否在工作日活躍)
  • 用戶行為聚合:按did聚合事件,計算行為次數、涉及模塊/事件類型數量等

2. 數據利用優化

  • 復用已知標簽:測試集中與訓練集重疊的did,直接使用訓練集標簽(無需預測)
  • 處理長尾分布:對設備品牌等長尾特征進行分組(如合并低頻品牌為“其他”)

3. 模型與驗證優化

  • 特征篩選:基于特征重要性剔除無效特征,減少噪聲
  • 樣本平衡:采用SMOTE等方法處理正負樣本不平衡(需注意避免數據泄露)
  • 模型融合:結合LightGBM與XGBoost、CatBoost等模型的預測結果

六、總結與收獲

本次Task通過“用戶新增預測”案例,系統學習了從業務理解到技術實現的全流程:

  1. 明確二分類任務的核心是“平衡精確率與召回率”(F1指標的意義)
  2. 掌握了基于用戶行為數據的特征設計邏輯(時間特征、聚合特征)
  3. 理解了Baseline方案的設計思路(模型選擇、交叉驗證、閾值優化)
  4. 獲得了上分的具體方向(特征深化、數據復用、模型優化)

后續將基于這些思路,進一步實踐進階的特征工程與模型調優方法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88916.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88916.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88916.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【人工智能】華為昇騰NPU-MindIE鏡像制作

本文通過不使用官方鏡像,自己在910b 進行華為mindie的鏡像制作,可離線安裝部署。 硬件:cann 8.0 1. 部署參考文檔: 安裝依賴-安裝開發環境-MindIE安裝指南-MindIE1.0.0開發文檔-昇騰社區 2. 參數說明文檔:https://www.hiascend.com/document/detail/zh/mindie/100/min…

關于我用AI編寫了一個聊天機器人……(番外1)

極大地精簡了1.3.6版本的邏輯。 不會作為正式版發布。 未填充數據。核心結構代碼包含兩個主要部分&#xff1a;數據結構&#xff1a;使用map<string, string>存儲問答對&#xff0c;其中鍵是問題&#xff0c;值是答案主程序流程&#xff1a;初始化預定義的問答對進入無限…

全球鈉離子電池市場研究,市場占有率及市場規模

鈉離子電池是一種新興的儲能技術&#xff0c;利用鈉離子&#xff08;Na?&#xff09;代替鋰離子作為電荷載體&#xff0c;為鋰離子電池提供了一種經濟高效且可持續的替代品。它們的工作原理類似&#xff0c;在充電和放電循環過程中&#xff0c;鈉離子在陽極和陰極之間移動。關…

SwiftUI 全面介紹與使用指南

目錄一、SwiftUI 核心優勢二、基礎組件與布局2.1、基本視圖組件2.2、布局系統2.3、列表與導航三、狀態管理與數據流3.1、狀態管理基礎3.2、數據綁定與共享四、高級功能與技巧4.1、動畫效果4.2、繪圖與自定義形狀4.3、網絡請求與異步數據五、SwiftUI 最佳實踐六、SwiftUI 開發環…

ADC采集、緩存

FPGA學習筆記_李敏兒oc的博客-CSDN博客 TLV5618.v&#xff1a;實現DAC數模轉換&#xff0c;產生模擬信號&#xff0c;輸出指定電壓值 時序圖 FPGA學習筆記&#xff1a;數據采集傳輸系統設計&#xff08;二&#xff09;&#xff1a;TLV5618型DAC驅動-CSDN博客 ADC128S052.v&…

(C++)STL:stack、queue簡單使用解析

stack 棧 簡介 stack 棧——容器適配器 container adapter 與前面學的容器vector、list的底層實現不同&#xff0c;stack功能的實現是要借助其他容器的功能的&#xff0c;所以看stack的第二個模板參數是容器。 最大特點&#xff1a;LIFO&#xff1a;Last In, First Out&#xf…

在Adobe Substance 3D Painter中,已經有基礎圖層,如何新建一個圖層A,clone基礎圖層的紋理和內容到A圖層

在Adobe Substance 3D Painter中&#xff0c;已經有基礎圖層&#xff0c;如何新建一個圖層A&#xff0c;clone基礎圖層的紋理和內容到A圖層 在 Substance 3D Painter 中克隆底層紋理到新圖層的最快做法 操作步驟 添加空白 Paint Layer 在 Layer Stack 頂部點擊 → Paint La…

視頻編碼中熵編碼之基于上下文的變長編碼(Huffman霍夫曼編碼和指數哥倫布)

視頻編碼中熵編碼之基于上下文的變長編碼&#xff08;Huffman霍夫曼編碼和指數哥倫布&#xff09; 視頻編碼中熵編碼之基于上下文的變長編碼Huffman霍夫曼編碼和指數哥倫布&#xff09;視頻編碼中熵編碼之基于上下文的變長編碼&#xff08;Huffman霍夫曼編碼和指數哥倫布&#…

游戲玩法的專利博弈

首席數據官高鵬律師數字經濟團隊創作 AI輔助一、數字戰場的護城河&#xff1a;游戲玩法的專利價值覺醒在數字經濟的浪潮中&#xff0c;游戲行業正以每年超15%的增速重塑全球娛樂版圖。2024年中國游戲市場規模突破3257億元&#xff0c;用戶規模達6.74億&#xff08;數據來源&…

小架構step系列11:單元測試引入

1 概述 在還沒有寫什么代碼之前&#xff0c;就引入單元測試&#xff0c;是要強調單元測試的重要性。當一套代碼的生命周期比較長的時候&#xff0c;單元測試更加重要。生命周期長的代碼&#xff0c;不管是產品人員還是開發人員&#xff0c;可能都會換了一批又一批&#xff0c;…

Linux 文件共享之 HGFS 共享配置全解析

一、前言在使用 VMware 虛擬機搭建 Linux&#xff08;以 Ubuntu 為例&#xff09;環境時&#xff0c;常常需要實現主機與虛擬機之間的文件共享&#xff0c;HGFS&#xff08;VMware Host-Guest File System&#xff09;就是一種常用的文件共享方式。通過它&#xff0c;我們可以方…

模塊化設計賦能:定制組裝鋰電池設備的柔性生產解決方案

在鋰電池行業快速迭代的背景下&#xff0c;定制化需求與規模化生產之間的矛盾日益凸顯。傳統鋰電池組裝設備采用固定式架構&#xff0c;功能模塊高度耦合&#xff0c;導致設備換型周期長、兼容性差&#xff0c;難以適應電芯規格頻繁變化、工藝路線持續升級的市場需求。模塊化設…

Kubernetes 架構原理與集群環境部署

一&#xff1a;為什么需要 Kubernetes在業務開始進行容器化時&#xff0c;前期需要容器化的項目可能并不多&#xff0c;涉及的容器也并不多&#xff0c;此時基于 Docker 容器直接部署至宿主機也能實現基本的需求。但是隨著項目越來越多&#xff0c;管理的容器也會越來越多&…

JavaScript中關于環境對象的拓展

1.環境對象的定義環境對象指的是函數內的特殊變量this&#xff0c;this指向函數的調用者它代表當前函數的運行環境在平常我們判斷this經常用口訣誰調用它&#xff0c;它就指向誰&#xff0c;以下是幾種常見情況1. 在全局作用域中&#xff0c;this指向window2.在函數中&#xff…

202507中央城市工作會議

國家終于要給城市"升級系統"了&#xff01;未來城市不再拼命蓋新樓&#xff0c;而是讓現有城區更安全、舒適、智能&#xff0c;且每個城市都要找到自己的特色發展路徑 2025年7月北京“中央城市工作會議”。領導人聚在一起&#xff0c;討論“怎么把中國城市搞得更好”…

springboot如何redis鎖

如何解決超賣問題?超賣問題&#xff1a;就是多個線程并發執行&#xff0c;目前唯一方案是加鎖。如圖&#xff1a;悲觀鎖其實還有數據庫的互斥鎖。悲觀鎖是最常見的樂觀鎖實現的原理&#xff1a;版本號&#xff1a;這種方案就是&#xff1a;扣款庫存的時候首先先查詢版本號&…

minio批量刪除對象不生效

下午在寫minio上批量刪除對象的邏輯&#xff0c;各種改對象名稱&#xff0c;各種核對代碼&#xff0c;發現啥都沒錯&#xff0c;但是刪除就是不生效。 代碼如下&#xff1a; from minio.deleteobjects import DeleteObjectdelete_object_list [DeleteObject("20250626/20…

如何設計實現開發自助重啟工具-01-設計篇

自助重啟系列 如何設計實現開發自助重啟工具-01-設計篇 應用部署作業-02-流程 如何實現自助重啟-03-實現篇 開發自助重啟 說明&#xff1a;有時候研發產線需要重啟&#xff0c;為了保證安全、或者說提升效率&#xff0c;最好有一個統一的研發自助重啟頁面。 這個功能可應…

ChatTongyi × LangChain:開啟多模態AI應用創新之門

阿里云通義實驗室推出的ChatTongyi&#xff08;基于通義千問大模型&#xff09;與LangChain框架的深度集成&#xff0c;為開發者打造了一套高效、靈活、全面的AI開發工具鏈。無論是文本對話、復雜任務自動化&#xff0c;還是圖像理解&#xff0c;這一組合都為多場景智能應用的落…

Android Studio C++/JNI/Kotlin 示例 二

MainActivity.ktpackage com.demo.learn1import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivityclass MainActivity : ComponentActivity() {// 加載原生庫init {System.loadLibrary("native_code")}// 聲明原生方法// 數學…