以下內容摘抄於七月算法(julyedu.com)4 月機器學習算法班課堂講義
過擬合
解決方法 正則化
爲什麼正則化能抑制過擬合:從線性迴歸的角度,過擬合就是擬合的曲線過於扭曲,從係數看,就是高次項的係數不爲零
logistic迴歸
損失函數
爲什麼logistic迴歸不用和線性迴歸類似的損失函數?
這是應爲這是非凸的
性能分析
優點
- LR能以概率的形式輸出結果, 而非只是0,1判定
- LR的可解釋性強, 可控度高(你要給老闆講的嘛…)
- 訓練快
- 因爲結果是概率, 可以做ranking model
-添加feature太簡單
應用
- CTR預估/推薦系統的learning to rank/各種分類場景
- 某搜索引擎廠的廣告CTR預估基線版是LR
- 某電商搜索排序基線版是LR(廣告也是哦)
- 某電商的購物搭配推薦用了大量LR
- 某現在一天廣告賺1000w+的新聞app排序基線是LR
性能優化
關於樣本處理
關於樣本的處理
- 特徵離散化後用one-hot編碼處理成0,1值,有助於提高LR的訓練速度
- 如果要用連續值, 注意做scaling,這是爲了降低量剛的影響(但是這個並不是只正對LR)
- 試試分佈式
- 試試採樣,注意採樣方式: 日期 or 用戶 or 行爲。也就是要用層次抽樣。大樣本訓練不能隨機取
關於樣本不平衡問題
- 對樣本分佈敏感
- 下采樣(樣本量足的情況下), 上採樣(樣本數量不太足)
- 修改loss function, 給不同權重
- 指給不同類別的樣本賦予不同的權重。例如當負樣本量明顯小於正樣本時,可以增加負樣本的權重
- 採樣後的predict結果, 用作排序OK, 用作判定請還原(不明白)
關於特徵的優化處理
- 離散化
- 映射到高維空間, 用linear的LR(快, 且兼具更好的分割性)
- 稀疏化, 0,1向量內積乘法運算速度快, 計算結果方便存儲, 容易擴展;
- 離散化後, 給線性模型帶來一定的非線性
- 模型穩定, 收斂度高, 魯棒性好
- 在一定程度上降低了過擬合風險
- 通過組合特徵引入個性化因素(不明白)
- uuid + tag
- uuid + cluster_id…
- 注意特徵的頻度(難道是指用LR來做特徵選擇?)
- 區分特徵重要度
- 可以產出層次判定模型(不明白)
- 聚類/Hash:對樣本進行聚類,將聚類的類別作爲特徵
- 增強了極度稀疏的特徵表達力
- 減小了模型, 加速運算
關於模型/算法的參數優化
- 選擇合適的正則化(L1, L2, L1+L2)
- 正則化係數C:
- C太小,起不來正則化的作用
- C太大,會弱化了源目標函數的作用,使得決策邊界不能很好擬合樣本的分佈
- 收斂的閾值e, 迭代輪數
- 調整loss function給定不同權重
- Bagging或其他方式的模型融合
- 最優化算法選擇(‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’)
- 小樣本liblinear,
- 大樣本sag
- 多分類‘newton-cg’和‘lbfgs’(當然也可以用liblinear和sag的one-vs-rest)