机器学习初学者常犯的6大错误总结

2017年12月26日 由 yining 发表 50641 0
在机器学习中,有很多方法来构建产品或解决方案,而且每种方法都有不同的假设。很多时候,如何识别哪些假设是合理的并不是件容易的事情。在最初的操作中,机器学习新手总会犯一些事后看来往往会觉得很傻的错误。所以,本文列举出了机器学习初学者所犯的6大错误。希望你可以从这些常见错误中学习,并创建更具鲁棒性的解决方案,从而带来真正的价值。


1.认为使用默认损失函数是理所当然的
均方误差很大!在刚开始的时候,这确实是一个令人惊讶的默认值。但是当它涉及到实际应用时,这个现成的损失函数对于你想要解决的商业问题来说是最优的。


以欺诈检测(fraud detection)为例。为了与商业目标保持一致,你真正想要的是对虚假的负面信息与成比例的由于欺诈造成的美元数额损失进行惩罚。使用均方误差可能会给你带来一个好的结果,但是永远不会给出最佳结果。


重点:始终构建一个与解决方案目标紧密匹配的自定义损失函数。




2.使用一种算法/方法来解决所有问题
许多人在完成他们的机器学习初学教程后,会立即开始使用他们在每个用例中学习到的相同的算法。因为他们认为它和其他算法一样有效。这是一个会导致糟糕结果的假设。

解决的办法是:让你的数据为你选择你的模型。在你对数据进行预处理之后,将其馈送到许多不同的模型中,并查看结果是什么。你会很好地知道哪些模型最有效,哪些模型不能很好地工作。

重点:如果你发现自己一次又一次地使用相同的算法,这可能意味着你没有得到最好的结果。


3.忽略异常值
根据不同的情况,异常值可以是重要的,也可以完全忽略。以收入预测为例。当收入大幅增长时,最好办法是观察这种现象,并了解为什么会发生这种情况。

对于由某种类型的错误引起的异常值,可以忽略它们,并从数据中删除。从模型的角度来看,有些模型对异常值比较敏感。以Adaboost为例,它将这些异常值视为困难的案例,并对异常值进行了巨大的权重处理,而决策树可能会简单地将每个异常值计算为一个错误分类。

重点:在开始工作之前,要仔细查看数据,并确定是否应该忽略异常值。


4.未正确处理周期性特征
一天中的几个小时,一周的天数,一年中的几个月,以及风向的变化都是周期性的特征。许多机器学习初学者不知道将这些特征转换成能够保存信息的形式,例如,23时和0时之间的距离是接近的。


以小时为例,处理这一问题的最佳方法是计算sin和cos组件,这样就可以将周期性特征(x、y)表示为一个圆的坐标。在以这种方式表示的时间中,23时和0时只是在数字上相邻,仅此而已。


重点:如果你遇到周期性特征,而且你没有转换它们,那么你就会开始给你的模型带来垃圾数据。




5.未标准化的L1/L2正则化
L1和L2正则化对大系数进行惩罚是使线性或逻辑回归正则化的常用方法;然而,许多机器学习初学者并没有意识到,在应用正则化之前,标准化功能是很重要的。


假设你有一个带有“交易金额”特征的线性回归模型。在没有正则化的情况下,如果交易金额是美元,那么合适的系数将比它们在美分时的系数大100倍。这将导致偏差,并倾向于对规模较小的特征进行惩罚。为了避免问题,标准化所有的特征,并将它们放在同等的基础上,这样正则化就会在你的所有特征上都是一样的。


重点:正则化是很好的,但是如果没有标准化的特性就会带来不必要的麻烦。




6.把线性或逻辑回归中解释系数的绝对值作为重点特征的依据
许多现成的线性回归模型对每个系数都有一个p值,许多机器学习初学者认为,对于线性模型来说,系数越大,特征就越重要。由于变量的大小改变了系数的绝对值,这几乎是不可能的。如果这些特征是共线性的,系数就可以从一个特征转移到另一个。数据集的特性越多,它的特征就越有可能是共线性的,而对于特征重要性的简单解释则越不可靠。


重点:了解什么是最重要的特征是很有必要的,但是不要假设你可以查看这些系数。


这个6个错误并不是全部,只是为了让你去思考可能隐藏在你的解决方案中的所有小问题。为了取得好的结果,重要的是要遵循过程,并且要反复检查你是否在犯一些常见的错误。

欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消