以下内容摘抄于七月算法(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)