A. 算法设计步骤
数据采集
- 数据类型
- 属性
- 数值型
- 字符串
- 类别
- 标签
- 类别
- 标签
- 属性
数据预处理
数据分析和建模
- 数据可视化
- 分位数图QQ图
- 平行坐标图
- 交会图(散点图)
- 热力图
- 数据分析
- 属性类别统计特征
- 属性之间的相关性
- 数值型,获取异常点
- 复制这些预测 模型表现不好的例子,以加强这些例子在数据集中的比重
- 可以把这些不好的例子 分离出来,然后单独训练
- 如果认为预测模型在真正部署时不会遇到此类异常数据, 则也可以把这些例子排除出数据集
- 一个可行办法是在对数据集进行探究阶段,先产 生四分位数边界,然后看看潜在的异常点的规模对后续建模及预测可能的影响。这样 在分析错误时,可以通过分位数图(quantile-quantile,Q-Q)确定哪些数据可以称为 异常点。
- 行数、列数
- 等到数据规模,可以预估训练时间
- 行数大于列数:惩罚性回归
- 列数大于行数:集成算法
- 线性/非线性
- 线性分类
- 列比行多
- 简单问题
- 对时间有要求,线性分类比非线性分类训练时间短得多
- 非线性分类
- 行比列多得多
- 复杂问题
- 线性分类
- 属性类别统计特征
- 建模
- 算法复杂度:时间和空间
- 算法本身的可操作性:参数相关
- 是否需要预先知道聚类个数,是否需要用户给出领域知识;
- 数据的异常敏感度
- 算法处理有很多属性数据的能力,也就是对数据维数是否敏感
测试方法
- 简单交叉验证
- S折交叉验证
- 留一交叉验证
算法评估
- 训练误差
- 测试误差
- 评估方法
- TP:将正类预测为正类
- FN:将正类预测为负类
- FP:将负类预测为正类
- TN:将负类预测为负类
- 精确率/真正率:TP / (TP + FP)
- 召回率/假正率:TP / (TP + FN)
- 损失函数
- 0-1损失函数 — 分类算法
- L1 - 绝对损失函数:对异常值不敏感
- L2 - 平方损失函数:放大异常值
- 对数损失函数
- 指数损失函数
- 对离群点、噪声非常敏感
- MSE、MAE、RMSE、方差、标准方差
- 风险系数
- 结构风险最小化
- 经验风险最小化
- ROC、AUC
- 算法结果
- 过拟合
- 欠拟合
算法误差
- 误差来源
- variance:variance过大,一般导致过拟合
- bias:bias过大,一般导致欠拟合
- 调参框架
- Loss on Training data
- Loss 过大
- Model Bias
- 增加模型的复杂度
- 其他优化手段
- 新的激活函数
- 自适应 Learning Rate
- Model Bias
- Loss 符合预期
- Loss on testing data
- Loss 符合预期(结束)
- Loss过大
- 过拟合
- 数据
- 更多的训练数据
- 数据增强
- 训练
- Early Stopping:停在testing data(validation set) loss 最小的地方
- 加入正则项:权值越小,曲线约平滑,variance越小,但是bias可能有问题
- 模型
- 简化模型
- 如果是神经网络
- Dropout
- 池化层
- 残差连接
- Normalization
- 数据
- 训练数据和测试数据分布不同
- 过拟合
- Loss on testing data
- Loss 过大
- Loss on Training data