我参与了一个机器学习项目,我们处理相对较小的数据集。我注意到我们试图提高性能的方式基本上是尝试一堆具有不同超参数的不同模型,尝试一堆不同的特征集,等等。基本上,我们似乎相当随机地解决了这个问题,而且我们尝试过的任何事情都没有真正的理论基础。这让我大失所望,让我思考这是否是机器学习工程师在实践中所做的事情。
人们是否发现这相当普遍?您如何以非随机尝试一切的方式处理机器学习问题?
我参与了一个机器学习项目,我们处理相对较小的数据集。我注意到我们试图提高性能的方式基本上是尝试一堆具有不同超参数的不同模型,尝试一堆不同的特征集,等等。基本上,我们似乎相当随机地解决了这个问题,而且我们尝试过的任何事情都没有真正的理论基础。这让我大失所望,让我思考这是否是机器学习工程师在实践中所做的事情。
人们是否发现这相当普遍?您如何以非随机尝试一切的方式处理机器学习问题?
以下是我的一些评论:
总的来说,我认为这种方法是平庸的:它不优雅,容易出错(通常不会被检测到),而且目光短浅,因为它忽略了 ML 系统质量的其他方面。
顺便说一下,这种方法可以自动化。如果我的工作可以完全由程序完成,我个人不会感到非常自豪(甚至可能会担心)。
人们是否发现这相当普遍?
在研究中,我的猜测是这在低水平的出版物中很常见,但它不太可能在任何有声望的期刊/会议上通过(因为专家审稿人通常可以检测到它)。
您如何以非随机尝试一切的方式处理机器学习问题?
就是这样,没有食谱……但这就是它的美妙之处,不是吗?:)
在我看来,这有点像医学:一个好的医生有很好的直觉,因为他们有扎实的理论背景和大量的实践。他们不只是遵循一些死板的手册,他们将患者视为一个独特的个体,他们尽最大努力了解问题的各个方面。
在实践中,需要解释/记录模型性能中的所有“挤压”,这意味着理论是强制性的……在学术界,情况并非如此……
我投入生产的所有模型都需要简单、易于扩展和更少的“黑匣子”,否则 MRM 团队将不会验证和批准生产(高风险需要资金)。
例如:如果 logit 或 tree 给出的结果与 ANN 接近。将使用 logit 或树,因为我可以轻松解释它们,并且理论足以通过 MRM 验证和接受。
要了解在非学术界所做的事情,就是参加像 kaggle 这样的比赛(他们使用大量真实世界的数据),或者在互联网上找到任何开放的数据集并提问和回答问题。