机器学习实践中的细节经验

以下是个人的一些想法,后面有时间还会持续更新(但是总是木有时间啊)。

  1. 大多数预测值都比实测值成倍数的缩小或者扩大

    原由:迭代不充分,算法不收敛。

  2. 归一化会缩小训练时长
    一个极端案例:预测未来16个点,5k 数据量,transformer,归一化500迭代次数即可,不归一化,迭代3000次才收敛。

  3. 评测指标mape的弊端
    对于实测值较小时不友好: 需要对目标值划分区间,分开测评。
    机器学习实践中的细节经验_第1张图片

  4. 随机森林回归、决策树回归和线性回归、神经网络的区别:
    训练集的分布不能完全代表总体分布时,用线性回归和神经网络
    前者基于对特征划最优区间,在区间中取均值的方式来估计增量数据目标值,所以在估计新样本目标值时,取值范围只局限于训练集目标值的取值,后者因为拟合的是因变量关于自变量的函数关系则不需要受此限制。
    如果训练集分布可以完全代表总体分布,那么这种差异性可以忽略。
    如果训练集分布不能完全代表总体分布时,前者增量数据实际目标值不在训练集目标值范围内时,就不能被估计出来了,而线性回归因为代表着自变量和因变量的隐含关系,即使拟合的不是很准确,在这种场景下,还是可以拟合出来目标值的部分信息的。
    用随机森林回归、决策树回归出现如下情况时,便可考虑增加样本量,对于增加不了样本量的情况,可选择用线性回归、神经网络拟合,来适当降低误差。
    机器学习实践中的细节经验_第2张图片
    用随机森林、决策树回归估计目标值出现规律性错误时,可以尝试用普通回归,神经网络
    做过一个案例,用随机森林回归对每天的数据做回归估计,有个规律性的估计错误:早和晚上估计不准。换成普通线性回归就没有这个问题了。效果溯源时发现是早晚的特征区间和其他时间段的特征区间合并了,早晚的取值又被这个时间段内的取值给平均了。而线性回归捕捉到了特征和目标值的隐含关系,所以估计对了。

  5. 数据不均衡
    我在第二家公司时,得到了一个玄学经验,到现在我都费解。文本分类时,训练集样本类别不均衡时,对训练集做复制黏贴增加样本量,可以很大程度提高召回率(我的目标是降低漏检),玄学,但因为后来生宝宝我转到工业领域后很少做分类,所以这个经验是不是广泛适用,不得而知了。

  6. 微调优时增加低相关性特征
    我在做很多实验时都发现增加低相关性特征会降低rmse值的现象,与此同时,某个重要特征的重要性会降低(如随机森林可以通过打印rf.feature_importances_查看特征重要性)。不过新增特征有时候也会对模型带来负面影响。关于这个现象的建议是:在微调优的时候,可以加一些微不足道的特征试试。

  7. 时序数据预测
    时序数据预测时,增加增长率特征,屡试不爽。

  8. 线上训模型时注意算法复杂度
    案例:40万条训练,9万条测试,普通笔记本,dt回归、lr回归、knn回归、rf回归、adaboost回归、gbrt回归、bagging回归分别测试,半小时内妥妥出结果,svm回归在训练40分钟不出结果后,我强行关闭了,鉴于svm的最小时间复杂度为 O(n^2),n是样本量,要谨慎线上训练啊。

你可能感兴趣的:(机器学习工程思考,机器学习,决策树,人工智能)