个性化阅读
专注于IT技术分析

如何解决机器学习问题

本文概述

计算机的主要任务之一是使人工任务自动化。其中一些任务是简单且重复的, 例如”将X从A移到B”。当计算机必须对很难形式化的问题做出决策时, 它变得更加有趣。那就是我们开始遇到基本机器学习问题的地方。

机器学习问题封面插图

从历史上看, 此类算法是由对领域有深入了解并主要基于规则的科学家或专家构建的。随着计算能力的爆炸式增长以及大而多样的数据集的可用性, 重点已转向更加计算的方法。

如今, 最流行的机器学习概念与神经网络有关, 根据我的经验, 这在许多人中给人一种印象, 即神经网络是解决所有推理问题的一种奇迹武器。实际上, 这与事实相去甚远。在统计学家看来, 它们形成了一类具有相关优势和劣势的推理方法, 而这完全取决于神经网络是否将成为最佳解决方案的问题。

通常, 有更好的方法。

在本文中, 我们将概述攻击机器学习问题的结构。没有必要对特定的机器学习模型进行过多的详细讨论, 但是如果本文引起人们的兴趣, 则后续文章可以为一些有趣的机器学习问题提供详细的解决方案。

但是, 首先, 让我们花一些力气来说明为什么面对机器学习问题时, 你应该比在自动思考”神经网络”时更加谨慎。

神经网络的优缺点

使用神经网络, 可以通过加权”网络”进行推断。权重在所谓的”学习”过程中进行校准, 然后应用于分配结果给输入。

听起来很简单, 所有的权重都是校准网络的参数, 通常, 这意味着太多的参数让人无法理解。

神经网络理论输入输出图

因此, 我们也可以仅将神经网络视为一种将输入与输出连接起来的推理黑匣子, 而在两者之间没有特定的模型。

让我们仔细研究这种方法的利弊。

神经网络的优势

  • 输入是数据本身。即使很少或没有功能设计, 也可以使用。
  • 训练有素的技能。无需功能工程, 就不需要直觉或领域专业知识等难以开发的技能。标准工具可用于一般推断。
  • 准确性随着数据量的提高而提高。它看到的输入越多, 神经网络的性能就越好。
  • 如果没有有关模型的完整信息, 则可能会胜过经典模型。想一想公众情绪。
  • 开放式推理可以发现未知模式。如果你使用模型并没有考虑任何因素, 它将不会检测到相应的现象。神经网络可能。

成功的神经网络示例:Google的AI通过分析累积的望远镜数据, 发现了一颗绕着遥远恒星运行的行星, 而NASA却没有。

神经网络的缺点

  • 他们需要大量(带注释!)数据。首先, 此数据量并不总是可用。收敛很慢。经过几次观察后, 就可以校准实体模型(例如物理学中的模型), 使用神经网络就可以了。注释是很多工作, 更不用说它本身也不是万无一失的。
  • 没有有关数据内部结构的信息。你对推断所基于的内容感兴趣吗?这里没有运气。在某些情况下, 手动调整数据可以大大提高推理能力, 但是神经网络将无法提供帮助。
  • 过度拟合的问题。通常, 网络具有比数据合理的参数更多的参数, 这导致次优推理。
  • 性能取决于信息。如果有关于问题的完整信息, 则实体模型往往胜过神经网络。
  • 存在采样问题。采样始终是一个棘手的问题, 但是有了一个模型, 就可以快速地提出问题采样的概念。神经网络仅从数据中学习, 因此, 如果获得有偏见的数据, 他们将得出有偏见的结论。

失败的一个例子:一个人际关系告诉我, 一家大型公司(我无法命名)正在研究航空照片中的军用车辆。他们在有这类车辆的图像上找到了, 而其他没有的图像。前一类的大多数图像是在雨天拍摄的, 而后者是在晴朗的天气中拍摄的。结果, 系统学会了将光与阴影区分开。

综上所述, 神经网络形成了一类具有其优缺点的推理方法。

在公众眼中, 它们的流行胜过所有其他统计方法, 这一事实可能与公司治理更多有关。

与寻找来自各个领域的领域专家和艺术家相比, 培训人们使用标准工具和标准化神经网络方法的过程更加可预测。但是, 这并没有改变以下事实:使用神经网络解决一个简单的, 定义明确的问题实际上只是用大炮射击麻雀:它需要大量数据, 需要大量注释工作, 并且反过来可能与实体模型相比, 表现不佳。不是最好的包装。

他们”民主化”统计知识的事实仍然具有巨大的力量。一旦将基于神经网络的推理解决方案视为仅仅是一种编程工具, 它甚至可以帮助那些对复杂算法不满意的人。因此, 不可避免的是, 如果我们只能使用复杂的模型进行操作, 那么现在已经构建了很多东西, 否则这些东西将不存在。

处理机器学习问题

解决机器学习问题时, 你将需要执行以下步骤:

  • 设定验收标准
  • 清理数据并最大化IST信息内容
  • 选择最佳的推理方法
  • 训练, 测试, 重复

让我们详细查看这些项目。

机器学习问题的不同步骤

设定验收标准

你应该尽快了解目标精度。这将是你努力的目标。

清理数据并最大化其信息内容

这是最关键的一步。首先, 你的数据应该没有(或很少)错误。将其清除是必不可少的第一步。替换缺失值, 尝试识别明显是伪造的模式, 消除重复项以及你可能会注意到的任何其他异常情况。

至于信息, 如果你的数据非常有用(在线性意义上), 那么实际上任何推理方法都可以为你带来良好的结果。如果所需的信息不在此处, 则结果将是噪音。最大化信息意味着首先找到数据中任何有用的非线性关系并将其线性化。如果这样可以显着改善输入, 那就太好了。如果不是, 则可能需要添加更多变量。如果所有这些都没有结果, 目标准确性可能会受到影响。

运气好的话, 会有一些有用的变量。例如, 如果你将有用的变量与学习目标变量相对应地绘制, 并且发现该图类似于函数(例如, 输入中的窄范围对应于输出中的窄范围), 则可以识别有用的变量。然后可以将该变量线性化-例如, 如果将其绘制为抛物线, 则减去一些值并取平方根。

对于嘈杂的变量(输入中的窄范围对应于输出中的宽范围), 我们可以尝试将其与其他变量组合。

为了了解准确性, 你可能需要测量每个变量的条件类概率(针对分类问题)或应用一些非常简单的回归形式, 例如线性回归(针对预测问题)。如果输入的信息内容有所改善, 那么你的推论也会有所改善, 并且你根本不想在此阶段浪费太多时间在尚未准备好数据时校准模型。因此, 请保持测试尽可能简单。

选择最佳的推理方法

数据恢复正常后, 就可以采用推理方法(如果需要, 以后可能还会对数据进行打磨)。

你应该使用模型吗?好吧, 如果你有充分的理由相信可以为该任务建立良好的模型, 那么你可能应该这样做。如果你不这样认为, 但是有足够的数据并带有良好的批注, 那么你就可以轻松地使用神经网络了。但是, 在实际的机器学习应用程序中, 通常没有足够的数据。

打准确性和掩护性通常会带来巨大的回报。混合方法通常是完全可以的。假设数据如此简单, 你就可以在80%的数据上获得接近100%的精度?这意味着你可以迅速证明结果, 并且如果你的系统可以确定何时在80%友好区域上运行, 则基本上可以解决大部分问题。你的客户可能还不太满意, 但这将很快赢得你的信任。并没有什么可以阻止你对其余数据执行类似操作的:现在, 你只需付出合理的努力就可以以97%的准确率覆盖92%的数据。没错, 在其余数据上, 这是一次硬币翻转, 但是你已经产生了一些有用的东西。

对于大多数实际应用, 这非常有用。假设你从事的是贷款业务, 并且想要决定向谁贷款, 而且你所知道的是, 在70%的客户中, 你的算法非常准确。太好了-没错, 你其他30%的申请人将需要更多处理, 但是70%可以完全自动化。或者:假设你要使呼叫中心的接线员工作自动化, 你只能在最简单的任务上做得很好(快速而又肮脏), 但是这些任务可以覆盖50%的呼叫?很好, 如果呼叫中心可以可靠地自动执行50%的呼叫, 则可以节省金钱。

总结:如果数据不够丰富, 或者问题太复杂而无法整体处理, 请跳出框框思考。找出有用且易于解决的子问题, 直到你有了更好的主意。

准备好系统之后, 请对其进行学习, 测试和循环, 直到对结果感到满意为止。

训练, 测试, 重复

完成上述步骤后, 几乎没有兴趣了。你有了数据, 有了机器学习的方法, 因此可以通过学习来提取参数, 然后在测试集上测试推论。文献表明, 应将70%的记录用于培训, 将30%的记录用于测试。

如果你对结果满意, 就可以完成任务。但是, 你更有可能在手术过程中提出了一些新的想法, 这些想法可以帮助你提高准确性。也许你需要更多数据?或者只是更多的数据清理?还是其他型号?无论哪种方式, 你都有可能会忙一段时间。

因此, 祝你好运, 并享受未来的工作!

有关:

  • 机器与信任:如何减轻AI偏差
  • 星星重新排列:改善IMDb评分系统
赞(0)
未经允许不得转载:srcmini » 如何解决机器学习问题

评论 抢沙发

评论前必须登录!