Logistic Regression(LR)应用经验
1. LR < SVM/GBDT/RandomForest ?
- LR能以概率的形式输出结果,而非只是0,1判定
- LR的可解释性强,可控度高(你要给老板讲的嘛…)
- 训练快,feature engineering之后效果赞
- 添加feature太简单…
2.关于样本处理
样本量太大怎么办?
- 离散化后用one-hot编码处理成0,1值
- 如果要用连续值,注意做scaling
- 试试spark Mllib
- 试试采样(注意采样方式:日期 or 用户 or 行为)
注意样本的平衡
对样本分布敏感
- 下采样(样本量足的情况下),上采样(样本数量不太足)
- 修改loss function,给不同权重
- 采样后的predict结果,用作排序OK,用作判定请还原
3.关于特征处理
离散化
- 映射到高维空间,用linear的LR(快,且兼具更好的分割性)
- 稀疏化,0,1向量内积乘法运算速度快,计算结果方便存储,容易扩展;
- 离散化后,给线性模型带来一定的非线性
- 模型稳定,收敛度高,鲁棒性好 在一定程度上降低了过拟合风险
通过组合特征引入个性化因素
注意特征的频度
- 区分特征重要度
- 可以产出层次判定模型
聚类/Hash
- 增强了极度稀疏的特征表达力
- 减小了模型,加速运算
4.关于算法调优
假设只看模型
- 选择合适的正则化(L1, L2, L1+L2)
- 正则化系数C
- 收敛的阈值e,迭代轮数
- 调整loss function给定不同权重
- Bagging或其他方式的模型融合
- 最优化算法选择(‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’)
小样本liblinear,大样本sag,多分类‘newton-cg’和‘lbfgs’(当然你也可以用liblinear和sag的one-vs-rest)