如何解决机器学习问题
已发表: 2022-03-11计算机的主要任务之一是使人工任务自动化。 其中一些任务简单且重复,例如“将 X 从 A 移动到 B”。 当计算机必须对更难以形式化的问题做出决定时,它变得更加有趣。 这就是我们开始遇到基本机器学习问题的地方。
从历史上看,此类算法是由对其领域有深入了解的科学家或专家构建的,并且主要基于规则。 随着计算能力的爆炸式增长和大而多样的数据集的可用性,焦点已经转移到计算能力更强的方法上。
如今,最流行的机器学习概念与神经网络有关,根据我的经验,这给许多人留下了这样的印象,即神经网络是所有推理问题的某种神奇武器。 事实上,这与事实相去甚远。 在统计学家的眼中,它们形成了一类推理方法,具有相关的优势和劣势,这完全取决于神经网络是否会成为最佳解决方案的问题。
很多时候,有更好的方法。
在本文中,我们将概述一种用于攻击机器学习问题的结构。 对于特定的机器学习模型,没有过多的细节讨论的余地,但是如果这篇文章引起了人们的兴趣,后续文章可以为一些有趣的机器学习问题提供详细的解决方案。
然而,首先,让我们花一些精力来说明为什么在面对机器学习问题时应该更加谨慎,而不是自动思考“神经网络”。
神经网络的优缺点
对于神经网络,推理是通过加权“网络”完成的。 在所谓的“学习”过程中对权重进行校准,然后将其应用于将结果分配给输入。
听起来很简单,但所有权重都是校准网络的参数,通常,这意味着人类无法理解的参数太多。
因此,我们不妨将神经网络视为某种推理黑盒,将输入与输出连接起来,中间没有特定的模型。
让我们仔细看看这种方法的优缺点。
神经网络的优势
- 输入是数据本身。 即使很少或没有特征工程也能获得可用的结果。
- 可训练的技能。 没有特征工程,就不需要像直觉或领域专业知识这样难以培养的技能。 标准工具可用于一般推理。
- 准确性随着数据量的增加而提高。 它看到的输入越多,神经网络的性能就越好。
- 当没有关于模型的完整信息时,可能会优于经典模型。 想想公众情绪,一方面。
- 开放式推理可以发现未知模式。 如果您使用模型并忽略它,它不会检测到相应的现象。 神经网络可能。
成功的神经网络示例:谷歌的人工智能通过分析累积的望远镜数据,发现了一颗绕着遥远恒星运行的行星——而 NASA 没有发现。
神经网络的缺点
- 它们需要大量(带注释的!)数据。 首先,这种数据量并不总是可用的。 收敛很慢。 一个实体模型(比如说,在物理学中)可以在几次观察后校准——使用神经网络,这是不可能的。 注释是很多工作,更不用说它本身并不是万无一失的。
- 没有关于数据内部结构的信息。 您对推理的依据感兴趣吗? 这里没有运气。 在某些情况下,手动调整数据会大大提高推理能力,但神经网络将无法提供帮助。
- 过拟合问题。 经常发生网络具有比数据证明更多的参数,这导致次优推理。
- 性能取决于信息。 如果有关于问题的完整信息,实体模型往往会胜过神经网络。
- 有抽样问题。 抽样始终是一个微妙的问题,但有了模型,人们可以很快形成一个有问题抽样的概念。 神经网络只从数据中学习,所以如果他们得到有偏见的数据,他们就会得出有偏见的结论。
失败的一个例子:一个私人关系告诉我,一家大公司(我不能说出名字)正在研究航拍照片上的军用车辆。 他们有这样的车辆和其他没有的图像。 前者的大部分图像是在下雨天拍摄的,而后者则是在晴天拍摄的。 结果,系统学会了区分光与影。
综上所述,神经网络构成了一类推理方法,各有利弊。
在公众眼中,它们的受欢迎程度超过了所有其他统计方法,这一事实可能更多地与公司治理有关。
培训人们使用标准工具和标准化的神经网络方法是一个比从各个领域寻找领域专家和艺术家更可预测的过程。 然而,这并没有改变这样一个事实,即使用神经网络解决一个简单的、定义明确的问题实际上只是用大炮射击麻雀:它需要大量数据,需要大量注释工作,而作为回报可能与实体模型相比,表现不佳。 不是最好的包。

尽管如此,它们使统计知识“民主化”这一事实仍然具有巨大的力量。 一旦基于神经网络的推理解决方案被视为仅仅是一种编程工具,它甚至可以帮助那些对复杂算法感到不舒服的人。 因此,不可避免地,如果我们只能使用复杂的模型进行操作,很多东西现在就不会存在了。
解决机器学习问题
在处理机器学习问题时,您需要执行以下步骤:
- 设定验收标准
- 清理数据并最大化信息内容
- 选择最佳推理方法
- 训练、测试、重复
让我们详细了解这些项目。
设置验收标准
您应该尽可能快地了解您的目标准确性。 这将是你努力的目标。
清理数据并最大化其信息内容
这是最关键的一步。 首先,您的数据应该没有(或很少)错误。 清除这些是必不可少的第一步。 替换缺失值,尝试识别明显虚假的模式,消除重复和您可能注意到的任何其他异常。
至于信息,如果你的数据信息量很大(在线性意义上),那么实际上任何推理方法都会给你很好的结果。 如果所需的信息不在那里,那么结果将是噪音。 最大化信息意味着首先在数据中找到任何有用的非线性关系并将它们线性化。 如果这能显着改善输入,那就太好了。 如果不是,则可能需要添加更多变量。 如果所有这些都没有结果,目标准确性可能会受到影响。
运气好的话,会有一些有用的变量。 您可以识别有用的变量,例如,将它们与学习目标变量作图并发现该图类似于函数(即,输入中的窄范围对应于输出中的窄范围)。 然后可以对该变量进行线性化 - 例如,如果它绘制为抛物线,则减去一些值并取平方根。
对于有噪声的变量——输入的窄范围对应于输出的宽范围——我们可以尝试将它们与其他变量结合起来。
要了解准确性,您可能需要测量每个变量的条件类概率(用于分类问题)或应用一些非常简单的回归形式,例如线性回归(用于预测问题)。 如果输入的信息内容有所改善,那么您的推理也会有所改善,并且您根本不想在此阶段浪费太多时间来校准模型,而此时数据尚未准备好。 所以保持测试尽可能简单。
选择最优化的推理方法
一旦您的数据状况良好,您就可以采用推理方法(如果需要,数据可能稍后仍会被完善)。
你应该使用模型吗? 好吧,如果你有充分的理由相信你可以为这项任务建立一个好的模型,那么你可能应该这样做。 如果您不这么认为,但有大量数据和良好的注释,那么您可以使用神经网络免提。 然而,在实际的机器学习应用中,通常没有足够的数据。
打准确与掩护通常会带来巨大的回报。 混合方法通常完全没问题。 假设数据是这样的,你可以用一个简单的模型在 80% 的数据上获得接近 100% 的准确率? 这意味着您可以快速展示结果,并且如果您的系统可以识别它何时在 80% 的友好区域上运行,那么您基本上已经解决了大部分问题。 您的客户可能还没有完全满意,但这会很快赢得您的信任。 没有什么可以阻止你对剩余的数据做类似的事情:现在通过合理的努力,你可以以 97% 的准确率覆盖 92% 的数据。 诚然,在其余数据上,这是一次抛硬币,但您已经产生了一些有用的东西。
对于大多数实际应用,这非常有用。 假设您从事贷款业务并想决定向谁提供贷款,而您所知道的是,对于 70% 的客户,您的算法非常准确。 太好了——确实,另外 30% 的申请人需要更多处理,但 70% 可以完全自动化。 或者:假设您正在尝试使呼叫中心的接线员工作自动化,您只能在最简单的任务上做得很好(快速而肮脏),但这些任务覆盖了 50% 的呼叫? 太好了,如果呼叫中心能够可靠地自动化 50% 的呼叫,他们就可以节省资金。
总结一下:如果数据信息不够丰富,或者问题太复杂而无法整体处理,请跳出框框思考。 确定有用且易于解决的子问题,直到您有更好的想法。
准备好系统后,学习、测试和循环它,直到您对结果满意为止。
训练、测试、重复
在前面的步骤之后,几乎没有兴趣。 你有数据,你有机器学习方法,所以是时候通过学习来提取参数,然后在测试集上测试推理了。 文献表明 70% 的记录应该用于训练,30% 用于测试。
如果您对结果感到满意,那么任务就完成了。 但是,更有可能的是,您在此过程中提出了一些新想法,这些想法可以帮助您提高准确性。 也许您需要更多数据? 或者只是更多的数据清理? 还是其他型号? 无论哪种方式,您都可能会忙碌很长一段时间。
所以,祝你好运,享受未来的工作!
- 机器和信任:如何减轻 AI 偏见
- Stars Realigned:改进 IMDb 评级系统