最近遇到知識點總結
- 1 調參方法
- 2 樣本不平衡問題的處理方式
-
- 2.1 場景
- 2.2 對訓練集還是測試集用?還是全量用?
- 2.3 處理方法有哪些?
- 3 SQL的相關問題
-
- 3.1 缺失值的處理
- 3.2 遇到的坑
- 4 Python
-
- 4.1 一個賊牛逼的三方庫
- 4.2 小技巧
- 5 機器學習
-
- 5.1 模型融合方法
- 5.2 評價名額
最近實習做項目的時候遇到了一些很多細碎的知識點,總結一下。
1 調參方法
之前面試也被問過:你知道的調參方法有哪些啊?
- 記得當時自己的回答就隻有網格調參。但其實之前參加一個風控沙龍,聽說過貝葉斯調參,附上文章連結:貝葉斯調參1- https://mp.weixin.qq.com/s/wHtiZlzHENCcLXosOA3Xbw ; 貝葉斯調參2 - https://mp.weixin.qq.com/s/H6vprWzsZdGmoZQgrQUt6Q
- 但最近項目中自己就用到了另外的調參方式。
總的來說,調參方式有下面三種:
- 網格搜尋。對應sklearn中的GridSearchCV
- 随機搜尋。對應sklearn中的RandomizedSearchCV
- 貝葉斯調參。見上面兩個連結。
參考資料:
- https://blog.csdn.net/juezhanangle/article/details/80051256
- https://blog.csdn.net/qq_36810398/article/details/86699842
- https://blog.csdn.net/gzj533/article/details/77734310
- https://blog.csdn.net/luanpeng825485697/article/details/79831703
2 樣本不平衡問題的處理方式
2.1 場景
最近剛好做的項目是一個二分類問題,全量資料中正負樣本比超過了5:1,一般認為超過4:1則是樣本不平衡,是以需要進行處理。
2.2 對訓練集還是測試集用?還是全量用?
僅針對訓練集進行樣本不平衡問題的處理,測試集不用動,使用平衡後的訓練集來訓練模型,然後喂給測試集即可。
2.3 處理方法有哪些?
根據周志華老師的西瓜書上描述,大概有兩種方法:
- 過采樣。增加少類樣本。典型算法是SMOTE算法
- 欠采樣。減小多類樣本。典型算法是EasyEnsemble算法。
詳細的介紹參考以下博文:
- https://blog.csdn.net/qq_27802435/article/details/81201357#commentBox
- https://blog.csdn.net/heyongluoyao8/article/details/49408131
3 SQL的相關問題
3.1 缺失值的處理
今天做特征工程用SQL提數的時候,需要計算一個名額,最大值/平均值,這時候遇到了一個問題,如果平均值為0的時候,傳回結果就是NaN,當然,後續我們在Python本地去做完全沒有問題,自己之前有個部落格就總結過缺失值的處理方式:Python處理缺失資料
但如果用SQL怎麼處理呢?有如下幾個函數可以處理:即如果為缺失值 可以賦一個值。
- ISNULL()
- NVL()
- COALESCE()
- IFNULL()
具體用法見下面SQL:
COALESCE(max(session_count)/avg(session_count),0) h_m_w2_session_count
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLzcjNyAjNwETMwETNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
參考資料見:
- https://www.w3cschool.cn/sql/27uvbfpg.html
- https://www.w3schools.com/sql/sql_isnull.asp
3.2 遇到的坑
- 後面的表如果字段要用到,記得在最前面的時候寫上,全部用就是 .*
- 多層left join的時候,要選擇合适的主表
- 确認資料的對應性
4 Python
4.1 一個賊牛逼的三方庫
今天剛用的,很好用,pandas_profiling!生成動态互動的資料探索報告
參考:其實也就是一兩行代碼
https://mp.weixin.qq.com/s/gJC3DDXOnwCAZHcLp2oYFQ
4.2 小技巧
資料預處理清洗完畢後,使用一個函數封裝一下,能節省不少時間。
5 機器學習
5.1 模型融合方法
多模型做完之後,希望能融合多模型結果。大概有三種方法:
- 分類問題:Voting
- 回歸問題:Averaging
- Stacking方法。
前兩種都比較好了解,就是最後一種Stacking 沒怎麼看懂!
參考資料:
- https://blog.csdn.net/willduan1/article/details/73618677
- https://zhuanlan.zhihu.com/p/25836678
- https://blog.csdn.net/qq_18916311/article/details/78557722
5.2 評價名額
分類問題的模型做完之後,需要進行評價,而且不同的業務問題對應的評價方式應該是不一樣的,因為側重點不同,是以需要從多種評價名額中選擇你所需要的。
參考資料:
- https://blog.csdn.net/login_sonata/article/details/54288653
- https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html
暫時這麼多,後面繼續補充擴充!加油!