基於某一次天池預測比賽項目,一周完成baseLine的體驗總結。
- 比賽要求:
本次比賽以阿里電商廣告為研究對象,提供了淘寶平台的海量真實交易數據,參賽選手通過人工智能技術構建預測模型預估用戶的購買意向,即給定廣告點擊相關的用戶(user)、廣告商品(ad)、檢索詞(query)、上下文內容(context)、商店(shop)等信息的條件下預測廣告產生購買行為的概率(pCVR),形式化定義為:pCVR=P(conversion=1 | query, user, ad, context, shop)。
評估指標為:
- 機器學習中的數據預處理
在數據領域中,對數據進行可視化並進行分析對理解數據具有很好的幫助,非常重要。
數據的預處理中,包含數據的清洗、轉化和降維。詳細參考https://www.cnblogs.com/charlotte77/p/5606926.html
在真實的數據中,我們拿到的數據往往可能包含了大量的缺失值,可能包含大量的噪聲,也可以因為人工等原因引入異常點離散點,需要我們對數據進行一波清洗操作。
- 對於比賽提供的原生數據與實際業務進行考慮並理解數據,可以對數據進行描述性統計分析,或者對數據進行可視化分析
- 缺失值處理:模型預測估計,特征統計值填補,特殊值(-1或NAN)代替,直接忽略不作處理,利用相似樣本的均值,直接刪除(如果缺失值所占比例不足3%刪除樣本;如果缺失值所占比例餓超95%且該特征實際意義不大,該特征直接刪除)
- 異常值處理:通過統計分析法尋找異常點,然后進行刪除、不處理、平均值代替或者視為缺失值
- 去重數據處理:對重復出現的數據進行丟棄 drop_duplicates
- 噪聲數據處理:擬合數據
針對實際數據進行數據轉化
- 無量綱化:標准化(scale/StandardScaler)、歸一化(MinMaxScaler)、正則化(normalizing)
- 信息冗余/二值化:將數值特征轉化成布爾值的過程,閾值處理實現二值化
- 定量特征:對一些不連續離散特征數據進行標簽化LabelEncoder(categorical),對有序離散特征數據進行OneHotEncoder(get_dummies, LR和深度學習涉及該環節,且該轉化會使矩陣稀疏化)
- 缺失值:同上
- 信息利用率:由於實際數據並非嚴格的線性,特征之間可能存在互相關系,所以需要多項式特征得到特征的高階交叉項(PolynomialFeatures)
高維度數據增加模型的計算壓力,且無關特征的干擾性強,故對數據進行降維(待研究。。。)
- PCA主成分分析法
- LI懲罰項的模型
- LDA線性判別分析法
- 機器學習中的特征工程
利用領域知識和現有數據,創造出新的特征,用於機器學習算法;可以手動(manual)或自動(automated)。神經網絡的自動特征工程,常常不適用於現實中其他的復雜任務。同時,數據和特征工程決定了模型的上限,改進算法只不過是逼近這個上限而已。參考https://zhuanlan.zhihu.com/p/26444240?utm_source=weibo&utm_medium=social
個人感覺以上的數據預處理其實也是特征工程的一部分,而這部分主要是對數據構建完成后的數據集特征進行處理。
- 處理已有類別特征-如顏色、性別、國籍、郵政編碼等
- 離散無序特征:為分類值,采用one-hot編碼實現特征數值化
- 對不連續離散或非數值(文本,字符)類別特征:LabelEncoder標號處理,根據情況再做one-hot編碼
- 數值特征(可以連續可以離散,實數值)-如年齡、價格等(對數據進行單調轉換,不會對決策樹算法造成影響)
- 標准化
- 連續數值特征離散化:根據實際模型應用情況可以對其進行閾值離散化
- 歸一化
- 正則化
- 時間特征數據類型轉化-如時間戳
- 針對時間戳提取相關的信息,如day、hour等等
- 特征選擇-尋找最優特征子集。特征選擇能剔除不相關(irrelevant)或冗余(redundant)的特征,從而達到減少特征個數,提高模型精確度,減少運行時間的目的。(參考西瓜書11章)
- 去除相關性不大的特征,相關性較高的優選選擇
- 取值變化較小的特征放棄,方差為0,不發散
- 過濾法https://baijiahao.baidu.com/s?id=1582723859862488016&wfr=spider&for=pc:先通過pearson相關系數等方法選擇最優特征方案再進行模型選擇,fearture_selection.SelectKBest/SelectPercentile
- 包裹法:將特征選擇作為特征子集搜索問題,通過模型評估特征子集篩選最優特征子集(典型算法:遞歸特征刪除算法)
- 嵌入式:將特征選擇算法作為組成部分嵌入到學習算法中(決策樹中每次迭代需要對特征進行擇優便是這種思想)
- 特征構造
- 數值特征的簡單變換,加減乘除
- 類別特征和數值特征的組合:通過pandas的groupby操作對某一類別特征的某一數值特征求統計值,(該比賽中,可以對用戶的當小時/當天點擊廣告數進行統計)
- 通過決策樹創造新的特征,將決策樹模型的輸出葉子節點作為新的特征加入模型中。(具體模塊包實現方法:apply()以及decision_path())
- 模型選擇
本比賽的模型模塊包,基於python的sklearn機器學習工具包
https://www.jianshu.com/p/cd5a929bec33 Sklearn快速入門
http://cwiki.apachecn.org/pages/viewpage.action?pageId=10030181 Sklearn0.18中文文檔
https://zhuanlan.zhihu.com/p/29053940?group_id=916424345212342272 常見計算廣告點擊率預估算法總結
https://blog.csdn.net/july_sun/article/details/53088673 機器學習常見分類器比較
本次比賽的模型選擇,先以LR完成基本的base_line,再跑RF、GBDT、XGBoost、LightGBM模型。GBDT+LR、FM和深度學習模型未研究
- LR模型
- 最簡單的線性回歸模型,但是其對正負樣本的額平衡十分敏感,而該比賽項目中的交易樣本與非交易樣本的占比差很大
- 容易欠擬合
- 缺失值對模型的影響,需要進行處理
- 對特征值需要進行歸一化或者標准化處理
在該模型方案中,我們將訓練集和測試集的特征相結合進行缺失值處理、數據轉化、特征提取構造、類別標簽編碼和oneHot編碼、標准化處理等,然后跑模型
- RF隨機森林模型-參考西瓜書第八章
- 對離群點非常敏感,缺失值對決策樹模型的影響不大
- 過擬合
- 計算開銷小。泛化能力強,
- 方差小,錯誤率低
在該模型方案中,我們將訓練集和測試集的特征相結合進行數據轉化、特征提取構造、類別標簽編碼、標准化處理(可有可無,不影響整體)等,然后跑模型
- GBDT梯度下降-https://www.cnblogs.com/rocketfan/p/4324605.html GBDT基本原理
- 降低偏差
- 比RF更易過擬合
- 不適合高維度稀疏矩陣
https://www.jianshu.com/p/005a4e6ac775 https://www.cnblogs.com/rocketfan/p/4324605.html(補) GBDT的基本介紹
https://blog.csdn.net/baoyan2015/article/details/56016169 隨機森林、GBDT和LR的理解和對比
http://blog.sina.com.cn/s/blog_7103b28a0102w6zr.html GBDT和RF的比較
https://www.cnblogs.com/DjangoBlog/p/6201663.html GBDT調參干貨
- XGBoost模型
- 相對於GBDT,在損失函數的優化上在泰勒公式展開后多利用了二階求導函數
- 加了剪枝處理
- 在目標函數中引入正則化,防止過擬合
http://www.52cs.org/?p=429 陳天奇 XGBoost中文版原理介紹
https://blog.csdn.net/sb19931201/article/details/52557382 XGBoost入門
https://blog.csdn.net/qq_28031525/article/details/70207918 RF、GBDT和XGBoost的區別
- LightGBM模型
- 輕量級GBM梯度提升機
- 模型訓練速度飛快,效率高
- 基於直方圖的決策樹算法
- 相對於XGBoost內存上優化
https://blog.csdn.net/niaolianjiulin/article/details/76584785 LightGBM原理介紹
http://www.360doc.com/content/18/0101/17/40769523_718161675.shtml GBDT、XGBoost和LightGBM介紹
https://blog.csdn.net/snoopy_yuan/article/details/75808006 參考同類型比賽經驗,移動推薦算法
https://blog.csdn.net/weixin_37933986/article/details/68488339 機器學習常見損失函數
https://blog.csdn.net/google19890102/article/details/50522945 損失函數
https://www.lfd.uci.edu/~gohlke/pythonlibs/ 黑科技(里面包含很多python第三方庫的下載資源)
https://blog.csdn.net/losteng/article/details/78378958 GBDT+LR
https://blog.csdn.net/lilyth_lilyth/article/details/48032119