作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
计算机的主要任务之一是使人工任务自动化. 其中一些任务简单而重复,例如“将X从A移动到B”.“当计算机必须对难以形式化的问题做出决策时,它就变得有趣得多. 这就是我们开始遇到基本机器学习问题的地方.
从历史上看, 这样的算法是由对其领域有深入了解的科学家或专家建立的,并且主要基于规则. 随着计算能力的爆炸式增长和大量不同数据集的可用性, 重点已经转向了一种更加计算化的方法.
最普及 机器学习 如今的概念都与神经网络有关, 根据我的经验, 这给很多人留下了这样的印象:神经网络是解决所有推理问题的神奇武器. 事实上,这与事实相去甚远. 在统计学家的眼中, 它们形成了一类具有相关优缺点的推理方法, 这完全取决于神经网络是否是最好的解决方案.
通常,有更好的方法.
在本文中,我们将概述一个解决机器学习问题的结构. 这里没有太多的细节 特定的机器学习模型, 但如果这篇文章引起了人们的兴趣, 后续文章可以为一些有趣的机器学习问题提供详细的解决方案.
第一个, 然而, 让我们花点精力来说明为什么你应该更加谨慎,而不是不假思索地思考。”神经网络在面对机器学习问题时.
对于神经网络,推理是通过一个加权的“网络”来完成的.权重是在所谓的“学习”过程中校准的, 然后, 随后, 用于将结果分配给输入.
这听起来很简单, 所有的权值都是标定网络的参数, ,通常, 这意味着人类无法理解太多的参数.
所以我们不妨把神经网络看作某种连接输入和输出的推理黑匣子, 中间没有特定的模型.
让我们仔细看看这种方法的优点和缺点.
成功的神经网络例子: 谷歌的 人工智能发现一颗行星 通过分析积累的望远镜数据,绕着一颗遥远的恒星运行.
失败的例子: 一个私人关系告诉我,一家大公司(我不能说出名字)正在研究从航空照片中探测军用车辆. 他们有这样的车辆和其他没有的图像. 前一班的大多数照片都是在下雨天拍摄的, 而后者是在晴朗的天气里拍摄的. 因此,该系统学会了区分光和影.
综上所述,神经网络是一类推理方法,它们各有优缺点.
在公众眼中,它们的受欢迎程度超过了所有其他统计方法,这一事实可能更多地与公司治理有关,而不是其他因素.
训练人们使用标准工具和标准化的神经网络方法,比从各个领域寻找领域专家和艺术家要容易得多. 这, 然而, 难道不改变使用神经网络进行简单操作的事实吗, 定义明确的问题实际上只是用大炮打麻雀:它需要大量的数据, 需要大量的注释工作, 作为回报,与实体模型相比,可能会表现不佳. 不是最好的包装.
尽管如此,他们使统计知识“民主化”这一事实仍然具有巨大的力量. 曾经,基于神经网络的推理解决方案被视为纯粹的编程工具, 它甚至可以帮助那些对复杂算法感到不舒服的人. So, 不可避免地, 如果我们只能用复杂的模型来操作,那么现在建造的很多东西就不存在了.
在处理机器学习问题时,您需要经历以下步骤:
让我们详细看看这些项目.
你应该尽可能快地了解你的目标精度. 这将是你努力的目标.
这是最关键的一步. 首先,您的数据应该没有(或很少)错误. 清除这些是必不可少的第一步. 替换缺失的值, 试着找出那些明显是假的模式, 消除重复和您可能注意到的任何其他异常.
至于信息, 如果你的数据信息量很大(在线性意义上), 那么几乎任何推理方法都会给你很好的结果. 如果所需的信息不在那里,那么结果将是噪声. 最大化信息主要意味着在数据中找到任何有用的非线性关系并将其线性化. 如果这能显著改善输入,那就太好了. 如果不是,那么可能需要添加更多的变量. 如果所有这些都没有结果,目标的准确性可能会受到影响.
运气好的话,会有一些有用的单一变量. 如果您(例如)根据学习目标变量绘制了有用的变量图,并发现该图是函数式的(例如),则可以识别有用的变量.e.,输入的窄范围对应输出的窄范围). 然后可以对这个变量进行线性化,例如, 如果它是抛物线, 减去一些值,然后取平方根.
对于有噪声的变量——输入的窄范围对应于输出的宽范围——我们可以尝试将它们与其他变量组合起来.
对精确度有个概念, 您可能想要测量每个变量的条件类概率(用于分类问题),或者应用一些非常简单的回归形式, 例如线性回归(用于预测问题). 如果输入的信息内容得到改善, 那么你的推论也是如此, 当数据还没有准备好时,您不希望在这个阶段浪费太多时间来校准模型. 所以测试要尽可能简单.
一旦你的数据状态良好, 您可以使用推理方法(稍后可能还会对数据进行润色), 如果有必要的话).
你应该使用模型吗? 好吧, 如果您有充分的理由相信您可以为该任务构建一个良好的模型, 那你应该. 如果你不这么认为, 但是有充足的数据和良好的注释, 然后你可以用神经网络实现免提. 然而,在实际的机器学习应用中,通常没有足够的数据.
比赛准确性vs. 掩盖往往会带来巨大的回报. 混合方法通常是完全可以的. 假设数据是这样的,您可以使用一个简单的模型在80%的数据上获得接近100%的准确性? 这意味着您可以快速展示结果, 如果你的系统能识别出它何时在80%友好区域运行, 这样你基本上就解决了大部分问题. 你的客户可能还没有完全满意,但这会很快赢得他们的信任. 没有什么可以阻止您对剩余的数据做类似的事情:现在您需要付出合理的努力, 说, 92%的数据,97%的准确率. 没错,对于其他的数据,这就像抛硬币一样,但你已经产生了一些有用的东西.
对于大多数实际应用,这是非常有用的. 说, 你从事贷款业务,想决定给谁贷款, 你所知道的是,在70%的客户中,你的算法是非常准确的. Great-true, 另外30%的申请人将需要更多的处理, 但70%可以完全自动化. 或者:假设你想让呼叫中心的接线员工作自动化, 你可以在最简单的任务上做得很好(快速和肮脏), 但这些任务覆盖了50%的呼叫? 太好了,如果呼叫中心能可靠地实现50%的呼叫自动化,就能省钱.
总结一下: 如果数据信息量不够, 或者这个问题太复杂了,无法完整地处理, 跳出思维定势. 找出有用且易于解决的子问题,直到你有更好的想法.
一旦你准备好了你的系统,学习,测试和循环它,直到你对结果感到满意.
在前面的步骤之后,所剩无几了. 你有数据, 你有机器学习的方法, 所以是时候通过学习提取参数,然后在测试集上测试推理了. 文献表明,70%的记录应用于培训,30%用于测试.
如果你对结果感到满意,任务就完成了. 但, 更有可能, 你在手术过程中产生了一些新想法, 这些可以帮助你提高准确性. 也许你需要更多的数据? 或者只是更多的数据清理? 或者另一个模型? 不管怎样,你很可能会忙上一段时间.
所以,祝你好运,并享受未来的工作!
机器学习包括所有的推理技术,而深度学习旨在揭示数据中有意义的非线性关系. 因此,深度学习是机器学习的一个子集,也是应用于机器学习问题的自动化特征工程的一种手段.
理想的选择是一种既具有广泛的编程库支持,又允许您专注于数学而不是基础结构的语言. 最流行的语言是Python, 但像Matlab或R这样的算法语言或像c++和Java这样的主流语言都是有效的选择.
神经网络只是机器学习中的一种方法,其优缺点如上所述.
有一些很好的在线课程和总结页面. 这完全取决于一个人的技能和品味. 我个人的建议是:把机器学习看作是统计编程. 加强你的数学能力,避免所有将机器学习等同于神经网络的资料.
一些优点:没有数学, 工程特性, or artisan skills required; easy to train; may uncover aspects of the problem not originally considered. Some disadvantages: requires relatively more data; tedious preparation work; leaves no explanation as to why they decide the way they do, 过度拟合.
世界级的文章,每周发一次.
世界级的文章,每周发一次.