自学机器学习的失落的路线图
原文:
machinelearningmastery.com/machine-learning-roadmap-your-self-study-guide-to-machine-learning/
在这篇文章中,我列出了一个应用机器学习的具体自学路线图,您可以用它来定位自己并找出下一步。
我认为很多关于框架和系统方法(在我的博客上证明)。我认为这篇文章大量扩展了我之前关于“机器学习自学指南”中自学课程的想法,这真的在社区引起了共鸣。
让我们跳进去…
你在这里。
摄影: electricnerve ,保留一些权利
机器学习路线图
机器学习是一个巨大的研究领域。有许多算法,理论,技术和问题类需要学习,它确实让人感到压倒一切。
机器学习也是跨学科的。你可以从投入的材料跳到程序员,投入到统计学家那里,当假设有如此多的先验知识时,它确实感到沮丧。
我们需要的是一种结构化方法,它提供了一个路线图,用于研究机器学习中的主题和详细程度,还集成了书籍和开放课程等流行资源。
结构化方法通过将注意力集中在您需要学习它时需要学习的内容来解决压倒性问题。它通过对材料展示进行排序来解决挫败感,重点放在实际方面,为工程师和程序员量身定制。
路线图可让您根据自己的位置和目标而定位自己。
自学是道路
自学是指按照自己的进度,按照自己的条件和自己的时间表。
自学是学习机器学习的最佳方式。这并不意味着你必须自己完成所有这一切,远非它。这意味着学习东西是最有效的方式,并利用互联网上最好的课程,书籍和指南。
自学也与本科和研究生学习等更正规的课程兼容。这意味着积极地将材料整合到您自己的知识库中并拥有该过程。拥有这个过程,您可以深入了解您最感兴趣的领域。
机器学习是一门应用学科,就像编程一样。研究这个理论很重要,但你必须投入时间来应用这个理论。你必须练习。这很关键。您需要建立流程,算法和问题的直觉。
自学是路径
照 scui3asteveo ,保留一些权利
能力水平
研究机器学习的结构化方法分为四个级别的能力:
- 初学者
- 初学者
- 中间
- 高级
这四个级别是根据他们面临的问题和他们的学习目标来划定的。反过来,每个级别都有不同的活动,以实现其目标。
每个级别的问题
每个能力水平面临一系列不同的问题,如下:
- 初学者:对实际的机器学习感到困惑。对大量可用信息感到不知所措。对大多数可用信息中未指明的先前知识感到沮丧。
- 新手:被算法的数学描述吓到了。苦苦挣扎应用机器学习来解决问题。丢失寻找机器学习调查的问题。
- 中级:厌倦了介绍性材料。渴望更多细节和更深入的洞察力。渴望展示和推动他们的知识和技能。
- 高级:痴迷于从系统和解决方案中获取最大收益。寻求更大贡献的机会。灵感来推动界限。
学习目标
能力等级中的每个级别都有一个单一的目标,他们可以为实现这一目标而完成许多任务。这些目标如下:
- 初学者:建立一个明确的基础并开始进入该领域。
- 新手:开发和实践应用机器学习的过程。
- 中级:深入理解算法,问题和工具。
- Advanced :开发领域的扩展,例如算法,问题和工具。
自学活动
每个级别的目标都定义了为实现这些目标而开展的活动类型。您可以设计自己的活动(强烈建议您),尽管以下是每个级别的建议活动。
初学者
初学者
- 研究并学习应用机器学习过程中的步骤。
- 充分了解工具或库的详细信息,以完成应用机器学习的步骤。 (基本熟悉工具和库)
- 实践应用机器学习端到端问题的过程。
中间
- 对算法,问题和工具进行小规模调查。
- 通过参与机器学习竞赛并从中学习,提高应用机器学习的技能。
高级
- 以结构化方式开发算法,问题和工具的扩展。
- 参与并为社区做出贡献。
如何使用
此路线图是一个有用的工具,您可以通过各种方式在机器学习掌握的道路上使用:
- 学习指南:将其用作目标和活动的线性指南,供您完成。耐心和努力工作将使您在短期内达到先进水平。
- 简化指南:用作上述线性指南,但将目标缩小到您希望掌握的机器学习的特定区域,而不是应用机器学习的更广泛领域。这可能是一个特定的问题或一类算法。
- 信息过滤器:路线图可用于过滤您遇到的信息和资源。这是一个功能强大的用例,因为您可以快速评估博客文章,文章或书籍是否与您的旅程级别相关。
这条路径适合你!
我为其他工程师和程序员设计了这本指南。
- 你可能知道如何编程。
- 您可以作为工程师或程序员专业工作(或曾经工作过)。
- 您可能是本科生或研究生。
- 您对机器学习或数据科学感兴趣。
- 您可能正在使用机器学习和数据。
机器学习是一个旅程
照片由 GoodNCrazy ,保留一些权利
这种方法适用于已经熟悉开发和构建系统过程的程序员和工程师。他们有一种计算或逻辑方法来思考和思考系统。程序员尤其熟悉自动化的强大功能以及算法的复杂性和特性。
这种方法对于专业程序员以及学习工程,计算机科学或类似学科的学生都是有效的。
- 你不需要成为程序员或优秀的程序员。您可以使用 Weka 等现成的工具,这些工具具有图形用户界面,可以解决机器学习问题并应用机器学习算法。
- 你不需要成为数学家或统计学家。在研究该算法时,您只能获取给定算法所需的统计量,概率和线性代数。
- 你可以阅读指南,书籍和开放课程。它们很容易融入到四个能力水平的细分中。给定的书可能是新手或中级的完美参考,或者可能跨越两个级别。类似地,课程可以整齐地适合于给定的水平,或者可以跨越两个或更多个级别,给出各种机器学习活动的样本。
范围
我建议您将范围集中在分类和回归类型问题以及相关的算法和工具上。这些是两个最常见的潜在机器学习问题,大多数其他问题可以减少到。
有机器学习的子领域,如计算机视觉,自然语言过程,推荐系统或强化学习。这些区域可以简化为分类和回归问题,并且它们的研究完全符合所呈现的路线图结构。我建议你不要潜入这些领域,直到你处于中级水平。
原则
我有一些实用的原则可以帮助您在机器学习中实现快速有效的进步。他们确实构成了路线图。
- 机器学习是一个旅程。你需要知道你现在的位置以及你想去的地方。这需要时间和努力,但有很多帮助。
- 创建半正式的工作产品。以博客文章,技术报告和代码存储库的形式记下您学习和发现的内容。您将很快积累一系列经过验证的技能和知识,供您和其他人反思。
- 及时学习。在您需要之前,不要学习复杂的主题。例如,学习足够的概率或线性代数来理解你正在研究的算法,在开始机器学习之前不要参加 3 年的统计和数学课程。
- 利用现有技能。如果你可以编码,实现算法来理解它们而不是研究数学。使用您认识的语言。专注于您正在学习的一件事,不要通过同时学习新的语言,工具或库来使其复杂化。
- 掌握是理想的。掌握机器学习需要不断学习。你永远无法实现它,你只能继续学习,学习和提高。
提示
以下是有效充分利用本指南和机器学习之旅的 3 个技巧:
- 从一个小项目开始,您可以在一小时内完成。
- 旨在每周完成一个项目,以建立和维持您的动力和可以构建的项目工作区。
- 在您的博客,Facebook,Google +,Github 或您可以在任何地方分享您的结果,以展示您的兴趣,增加技能,知识并获得反馈。
行动步骤
花一点时间写下来:
- 你认为自己处于什么水平,你正在努力解决什么问题?
- 你想达到什么水平,你想做什么?
机器学习很重要
原文:
machinelearningmastery.com/machine-learning-that-matters/
阅读引导机器学习,路易斯提到了一篇我不得不去阅读的论文。该论文的标题是来自 JPL 的 Kiri Wagstaff 的机器学习(PDF),并于 2012 年出版。
机器学习很重要
Kiri 的论点是机器学习研究社区已经迷失了方向。她建议大部分机器学习都是为了机器学习而做的。她指出了三个关键问题:
- 过度关注基准数据:关注 UCI 存储库中的数据集,但很少有人在正在解决的域中产生影响。她指出缺乏实验可重复性的标准,这使得标准数据集的使用无效以及回归和分类问题的偏差。她评论说使用 UCI 存储库比使用合成 daa 更糟糕,因为我们甚至无法控制数据的创建方式。
- 过度关注抽象度量标准:强烈关注算法竞争或烘焙以及使用 RMSE 和 F-measure 等通用指标,这些指标在域中没有直接意义。
- 缺乏跟进:在 Weka 中下载数据集和运行算法非常简单。很难解释结果并将它们与域相关联,但这是产生影响所需要的。
问题的关键在于她将机器学习描述为三类活动,而“机器学习贡献”则侧重于算法选择和忽略问题定义和结果解释的实验。
心态的变化
Kiri 建议研究界需要改变其制定,攻击和评估机器学习研究项目的方式。她评论了三个要解决的问题:
- 有意义的评估方法:测量机器学习系统在域中的直接影响。例如,节省了美元,保留了生命,节省了时间或减少了工作量。选择直接影响测量将对实验设计和数据选择产生影响。
- 外部世界的参与:让域专家参与定义问题和数据,更重要的是使用它们来解释域中结果的重要性。这是为了停止解决意义不大的问题(虹膜植物分类),并开发出足够可靠和有用的系统,以便在实践中采用。
- 关注奖项:选择研究问题的影响。考虑问题域中的现状,并将结果描述为高于该现状的改进水平。吸引社区并激励采用。
开放挑战
Kiri 抛出了挑战并提出了 6 个问题作为研究项目的例子,其中机器学习可以产生影响:
- 法律通过或法律决定依赖于 ML 分析的结果。
- 通过改进 ML 系统提供的决策,节省了 1 亿美元。
- 国家之间的冲突通过 ML 系统提供的高质量翻译得以避免。
- 通过 ML 防御将网络安全入侵率降低 50%。
- 通过 ML 系统推荐的诊断或干预节省人的生命。
- 一个国家的人类发展指数(HDI)增加 10%,归因于 ML 系统。
她特意留下问题,以避免提出单一的问题或技术能力。真正的挑战很难。这些示例旨在激发而不是详尽无遗的优先级问题清单。
最后,Kiri 最后评论了可能阻碍有效解决重要研究问题的障碍。
- 术语:过度使用机器学习术语,这是该领域的一个有用的速记,但基本上是不可穿透的领域。针对更广泛的受众时,需要更通用的语言。
- 风险:当机器学习系统做出后果决定时,谁在犯错误时犯罪?谁维护系统前进? (我不禁觉得土木工程和安全关键制造业已经解决了类似的问题)
- 复杂性:机器学习方法仍然不是一成不变的,而博士仍然需要理解和使用这些方法。我们需要更好的工具。 (我认为商品化的机器学习正在快速发展)。
我认为这是一篇很好的论文,可以激励年轻的研究从竞赛算法转向更有影响力的工作。它让我想起 O’reilly 对武器的呼唤“对重要事项的工作”。我会喜欢一些更具体的例子,可能不那么理想化,更像商业,如 IBM 的 Watson , Siri 和大规模图像分类。
我也不禁感到有一些问题,初学者可以取得进步并获得直接的个人利益。就像分类他们自己的照片,组织他们的文件或在股票市场交易。
快速了解任何机器学习工具(即使您是初学者)
原文:
machinelearningmastery.com/machine-learning-tool-templates/
您如何快速了解机器学习工具?
使用正确的工具可能意味着快速获得良好预测与您无法交付的项目之间的差异。您需要在使用它们之前评估机器学习工具。
您需要知道机器学习工具适合您,适合您的项目并且您可以信任它。
在这篇文章中,您将了解如何快速设计和填写一页的算法描述模板。您可以使用此类机器学习工具模板来评估机器学习工具,并直接与其他工具进行比较和对比。
机器学习工具模板
照片由 visualpun.ch ,保留一些权利。
关于机器学习工具的问题
很难发现机器学习工具是否适合您。
为项目选择和采用机器学习工具是一项重要决策。它必须提供满足项目目标所需的功能。它还必须提供接口,文档,支持以及在实践中实际使用它所需的一切。
有时,了解工具的工作原理或工具的局限性至关重要。您始终需要知道您可以信任该工具来提供其功能,并在您需要时提供足够的支持。
您对机器学习工具有疑问,找到答案可能很难,有时候也很荒谬。更糟糕的是,一旦得到答案,您就没有明确的方法来评估您对该工具或上下文所学到的一切,以便将其直接与其他工具进行比较。
设计和填写工具说明
答案是记录您对机器学习工具的所有具体问题。
花点时间考虑所有问题,如果回答,将允许您决定一个工具是否适合您,以及它是否比您正在考虑的其他工具更适合或(未比较)。
您可以使用这些问题创建一个小的单页工具描述模板。通过研究每个问题,您可以快速填写该模板,并对该工具进行高度定制和定制的描述。
它提供了一种结构化的方法来研究和捕获您需要了解的有关该工具的信息,并提供评估和参考,以便与其他工具进行比较。
您还可以存储,更新,共享并在将来的项目中反复使用它。
描述任何机器学习工具
使用系统过程,您可以描述任何机器学习工具。
快速的 5 步流程
以下是描述任何机器学习工具的快速 5 个步骤。
- 选择工具:选择要描述的工具。这可能来自您之前创建的一个简短工具列表。或者,它可能是一个新工具或工具引起您的注意,您想要了解更多。
- 识别问题:列出您对该工具的疑问。具体问题很有用(例如什么是许可协议?)。更可能的是开放式问题需要信息摘要(例如应用机器学习过程的工具涵盖哪些任务?)。
- 创建模板:将问题放在一个新的文本文档或电子表格中,每个文本都有空格,以便您可以填写答案。这是您的机器学习工具模板。您可能希望保存未完成的模板,并在将来的项目中重复使用它。
- 研究:使用您最喜欢的搜索引擎并研究您的工具。一次关注一个问题,并使用问题中的语言作为搜索条件。尝试在每个问题上花费几分钟来捕捉答案的高级或广泛笔画。
- 完整模板:使用搜索结果填写模板。使用项目符号并关注对问题和您有用且有意义的突出细节。不要将粘贴复制到文本块中。这无助于您更好地理解该工具。
伟大工具描述的提示
以下 8 个提示可帮助您制作出色的机器学习工具说明。
- 快速完成模板。创建模板的时间不要超过 30 到 60 分钟。工具和模板不是项目。快速完成,捕获广泛的笔触并使用模板。您可以随时回来进行另一轮研究。
- 使您的模板成为目标。不要试图捕获机器学习工具的所有属性。在确定它是否对您有用之前,请关注您真正需要回答的关于工具的 5 到 10 个问题。这些问题很可能会集中在该工具的功能和您对该工具可以提供的信任。
- 采用一致的模板。在评估不同工具时,请考虑使用相同的模板。使用相同的结构将使得与其他工具的直接比较和对比变得更加容易。
- 使用电子表格。如果您不喜欢写作,请考虑使用电子表格。将属性列为列标题,并将每一行用作标题下的新点。它会迫使你变得简洁。
- 分享你的结果。与朋友,同事或公开分享您的结果。如果您对评估它的工具感兴趣,那么很可能其他人可能并且可能从您的描述中受益。
- 建立你的结果。您可以在将来重新访问工具说明并进行更新。如果工具在新版本上更改或您即将开始新项目,这将非常有用。
- 了解更多详细信息。如果有问题无法得到明确答案,请考虑通过电子邮件或发布论坛消息与用户甚至该工具的开发人员联系。明确而直接的问题将是最有效的方法。
- 使用项目符号描述。这是一种很好的方法,特别是如果你不喜欢写作。它使描述清晰,有针对性和有用。
模板示例问题
以下是可用于构建机器学习工具模板的 10 个示例问题。
- 该工具的全名,昵称和首字母缩略词是什么?
- 该工具的许可协议是什么?
- 该工具可以使用哪些编程语言?
- 为工具提供了哪些接口(例如图形,命令行,编程等)?
- 该工具周围有哪些社区(例如论坛,插件,博客等)
- 谁创造了这个工具,何时以及为什么?
- 该工具的更新频率以及最后一次发布的时间(例如最近的发布时间表)?
- 该工具涵盖了应用机器学习过程中的哪些任务?
- 该工具提供哪些建模算法?
- 可以用来掌握工具的关键资源是什么(例如书籍,论文,网站)?
您可以描述机器学习工具
您的描述不需要完整。您只需要了解您感兴趣的工具的详细信息,并帮助您决定它是否对您的需求有用。不要创建详尽的工具描述,这对您来说是一个很大的浪费时间。该工具不是项目。
你不需要成为机器学习专家。您不需要知道所有算法是什么或所有术语的含义。您只需要能够描述对您来说很重要的工具属性,以便能够做出决定。
您无需成为该工具的专家。创建工具描述既不要求您成为工具专家,也不会让您成为工具专家。这是一个可以用来快速了解该工具的过程。您可以从网站,书籍,论文,博客等中收集所需的所有信息。
你不需要成为程序员。许多机器学习工具都是需要您成为程序员才能使用它们的库。但是也有许多机器学习工具提供图形,Web 和命令行界面。如果您不是程序员,请专注于描述可以在不编写代码行的情况下使用的工具。
你不需要成为作家。您对该工具的描述不需要很长,也不需要写得很好。您可以使用项目符号捕获所需的信息。您甚至可以使用电子表格来创建说明。
摘要
在这篇文章中,您了解了如何快速创建机器学习工具的描述。
机器学习描述可用于评估机器学习工具,并将其与其他机器学习工具进行比较和对比。它是帮助您确定给定的机器学习工具是否适合您的需求或项目的宝贵帮助。
您可以使用以下 5 个步骤快速描述任何机器学习工具:
- 选择要描述的工具。
- 确定要捕获的工具的属性。
- 将文本文档中的工具属性布局为模板供您完成。
- 使用书籍,论文,网站,论坛和您认为有用的任何其他来源在线研究该工具。
- 使用搜索结果使用项目符号填写模板。
你的下一步
立刻描述机器学习工具!
- 选择要描述的机器学习工具。
- 使用上面的过程来描述它。
- 报告回来,我很想看到你的描述。
你对这个过程有任何疑问吗?给我发电子邮件或发表评论。
机器学习工具
工具是机器学习的重要组成部分,选择合适的工具与使用最佳算法同样重要。
在这篇文章中,您将仔细研究机器学习工具。了解它们的重要性以及您可以选择的工具类型。
机器学习工具
摄影: Lachlan Donald ,保留一些权利。
为何使用工具
机器学习工具使应用机器学习更快,更容易,更有趣。
- 更快:好的工具可以自动化应用机器学习过程中的每一步。这意味着从思想到结果的时间大大缩短。另一种方法是你必须自己实现每个功能。从零开始。这比选择现成的工具要花费更长的时间。
- 更容易:您可以花时间选择好的工具,而不是研究和实现技术来实现。另一种方法是,您必须成为流程每个步骤的专家才能实现它。这需要研究,更深入的练习以理解技术,以及更高水平的工程以确保其有效实现。
- 有趣:初学者获得好成绩的障碍较小。您可以使用额外的时间来获得更好的结果或处理更多项目。另一种方法是,您将花费大部分时间来构建工具而不是获得结果。
有目的的工具
您不想为了自己的利益而学习和使用机器学习工具。他们必须服务于强大的目标。
机器学习学习工具提供了可用于在机器学习项目中提供结果的功能。当您尝试决定是否在工具上学习新工具或新功能时,可以将其用作过滤器。你可以问这个问题:
这如何帮助我在机器学习项目中取得成果?
机器学习工具不仅仅是机器学习算法的实现。它们可以是,但它们也可以提供在处理机器学习问题的过程中的任何步骤都可以使用的功能。
好与伟大的工具
您希望使用最佳工具来解决您正在处理的问题。如何分辨好机器学习工具和优秀机器学习工具之间的区别?
- 直观界面:出色的机器学习工具为应用机器学习过程的子任务提供了直观的界面。在任务的界面中有一个很好的映射和适用性。
- 最佳实践:优秀的机器学习工具体现了流程,配置和实现的最佳实践。示例包括机器学习算法的自动配置和内置于工具结构中的良好过程。
- 可信资源:优秀的机器学习工具维护得很好,经常更新,并且周围有一群人。查找工具周围的活动作为正在使用的标志。
何时使用机器学习工具
机器学习工具可以节省您的时间并帮助您在项目间保持一致性。您可以从使用机器学习工具中获得最大收益的一些示例包括:
- 入门:当您刚入门时,机器学习工具将指导您快速完成良好结果,让您有信心继续下一个项目。
- 日常:当您需要快速获得问题的良好结果时,机器学习工具可以让您专注于问题的细节而不是您需要使用的技术的深度得到答案。
- 项目工作:当您处理大型项目时,机器学习工具可以帮助您构建解决方案原型,找出需求并为您提供可能要实现的系统的模板。
平台与库
有很多机器学习工具。足够谷歌搜索可以让你感到不知所措。
考虑机器学习工具的一种有用方法是将它们分成平台和库。平台提供运行项目所需的全部内容,而库仅提供离散功能或完成项目所需的部分功能。
这不是一个完美的区别,因为一些机器学习平台也是库或某些库提供图形用户界面。然而,这提供了一个很好的比较点,以区分一般案例目的与特定目的工具。
机器学习平台
机器学习平台提供从头到尾完成机器学习项目的功能。即,一些数据分析,数据准备,建模和算法评估和选择。
机器学习平台的特点是:
- 它们提供机器学习项目中每个步骤所需的功能。
- 界面可以是图形,命令行,所有这些或一些组合的编程。
- 它们提供松散的功能耦合,要求您将各个部分连接在一起,以满足您的特定项目需求。
- 它们专为通用目的和探索而设计,而不是速度,可扩展性或准确率。
机器学习平台的例子是:
- WEKA 机器学习工作台。
- R 平台。
- Python SciPy 的子集(例如 Pandas 和 scikit-learn )。
机器学习库
机器学习库提供完成机器学习项目的一部分的功能。例如,库可以提供一组建模算法。
机器学习库的特点是:
- 它们为机器学习项目中的一个或多个步骤提供特定功能。
- 该接口通常是需要编程的应用程序编程接口。
- 它们专为特定用例,问题类型或环境而定制。
机器学习库的示例如下:
- scikit-learn 在 Python 中。
- Java 中的 JSAT 。
- .NET 中的 Accord Framework
机器学习工具接口
考虑机器学习工具的另一种有用方法是通过它们提供的界面。
这可能会令人困惑,因为有些工具提供了多个接口。然而,它提供了一个起点,也许是一个差异点,可以帮助您选择机器学习工具。
以下是常见接口的一些示例。
图形用户界面
机器学习工具提供图形用户界面,包括窗口,指向和点击以及对可视化的关注。图形用户界面的好处是:
- 允许技术水平较低的用户完成机器学习。
- 专注于流程以及如何充分利用机器学习技术。
- 界面对用户施加的结构化过程。
- 更加专注于可视化等信息的图形表示。
带有图形界面的机器学习工具的一些示例包括:
命令行界面
机器学习工具提供命令行界面,包括命令行程序,命令行参数化以及对输入和输出的关注。命令行用户界面的好处是:
- 允许非程序员的技术用户完成机器学习项目。
- 为机器学习项目的特定子任务提供许多小型聚焦程序或程序模式。
- 根据所需的输入和要生成的输出来构建机器学习任务。
- 通过记录或编写脚本命令和命令行参数来提升可重现的结果。
用于命令行界面的机器学习工具的一些示例包括:
如果您喜欢使用这个命令,请在命令行“数据科学命令行:使用经过时间测试的工具面向未来”的命令行上查看有关如何解决机器学习问题的好书。
应用程序接口
机器学习工具可以提供应用程序编程接口,使您可以灵活地决定使用哪些元素以及如何在您自己的程序中使用它们。应用程序编程接口的好处是:
- 您可以将机器学习融入您自己的软件项目中。
- 您可以创建自己的机器学习工具。
- 使您可以灵活地在机器学习项目中使用自己的流程和自动化。
- 允许将您自己的方法与库提供的方法结合使用,并扩展提供的方法。
带应用程序编程接口的机器学习工具的一些示例包括:
- Pylearn2 for Python
- Deeplearning4j for Java
- LIBSVM 代表 C.
本地与远程机器学习工具
比较机器学习工具的最后一种方法是考虑该工具是本地的还是远程的。
本地工具是您在本地下载,安装和使用的工具,在第三方服务器上运行远程工具。
这种区别也可能是混乱的,因为某些工具可以以本地或远程方式运行。此外,如果您是优秀的工程师,您几乎可以将任何工具配置为您自己的服务器上的托管解决方案。
然而,这可能是一个有用的区别,可以帮助您理解和选择机器学习工具。
本地工具
在本地环境中下载,安装和运行本地工具。
- 针对内存数据和算法量身定制。
- 控制运行配置和参数化。
- 集成到您自己的系统中以满足您的需求
本地工具的示例包括:
- Shogun Library for C ++
- Go 的 GoLearn
远程工具
远程工具托管在服务器上,并从本地环境调用。这些工具通常称为机器学习即服务(MLaaS)。
- 量身定制,以便在更大的数据集上运行。
- 跨多个系统,多个内核和共享内存运行。
- 由于大规模运行所需的修改,因此算法较少。
- 更简单的接口提供对运行配置和算法参数化的较少控制。
- 通过远程过程调用集成到本地环境中。
远程工具的示例:
您可以使用一些工具来设置自己的远程解决方案,并将其作为服务集成到您的环境中。例子包括:
摘要
在这篇文章中,您发现了为什么工具在应用机器学习中如此重要。
您了解到,如果没有良好的机器学习工具,您将不得不从零开始实现所有技术,这需要技术和高效工程实践方面的专业知识。
您学习了三种结构化方法来考虑机器学习工具:
- 平台与库
- 图形用户界面与命令行界面与应用程序编程接口的对比
- 本地与远程
你使用什么机器学习工具?
发表评论并分享您当前使用的机床。
找到你的机器学习部落
_ 入门并避免得到错误的建议 _
机器学习是一个充满算法和数据的迷人而强大的研究领域。
问题是,有很多不同类型的人对机器学习感兴趣,每个人都有不同的需求。重要的是要了解您希望从机器学习中获得什么,并根据这些需求定制自学。
如果你不这样做,你可以很容易地走下兔子洞而迷路,失去兴趣而不能得到你想要的东西。
找到你的部落!
在这篇文章中,您将发现对机器学习感兴趣的 10 个主要群体。我叫他们机器学习部落。
您将发现每个部落最有价值的一般需求和资源类型。
重要的是,你可以回顾 10 个部落并发现你的位置,找到像你这样的其他人的安慰,并了解你的下一步可能是什么。
你在哪里适合?发表评论并告诉我。
找到你的机器学习部落
照片,保留一些权利。
避免部落不匹配,这很常见
你对机器学习感兴趣。你四处询问,建议使用特定的课程或书籍。
几个小时后,你会感到沮丧,但你不确定为什么。
这件事发生在你身上吗?
这是因为你选择的资源非常好,它可能不适合你的特定环境。
这是一个常见问题,我称之为不匹配问题。
开发人员和教科书的经典示例
一个典型的例子是有兴趣解决一次性问题的开发人员。他们被推荐为机器学习教科书。
他们购买它,开始阅读,永远不会超过第一章。
对于刚毕业 4 年数学课程的研究生机器学习班的学生来说,教科书是完美的。
对于开发人员而言,它几乎没用,他们在职业生涯的 10 年里将机器学习视为提供结果的工具。
这就是了解对机器学习感兴趣的不同群体以及您所属的群体至关重要的原因。这样您就可以找到像您这样的其他人,并开始使用实际上可以帮助您获得所需解决方案的资源。
10 机器学习部落
在本节中,我们列出了 10 个对机器学习感兴趣的不同人群。
我给出了每个名字,突出了他们的主要目标和兴趣,并列出了该组中的人员可以在接下来的步骤中使用的资源。我还根据商业,学术,工程和数据等一般主题对小组进行了分组。
这些组可能有一些重叠。您也可能属于其中一个或多个。那很好(我很乐意在评论中听到它)。
此外,我们正在限制我们对机器学习的兴趣,而不是所有更广泛的数据科学。
让我们潜入。
部落概述
这是 10 个部落的快照:
- 商业部落
- 1)具有一般兴趣的商业人士
- 2)经理对交付项目感兴趣
- 学术部落
- 3)本科或研究生班的机器学习学生
- 4)机器学习研究员对影响领域感兴趣
- 5)普通研究员对他们的问题建模感兴趣
- 工程部落
- 6)程序员对实现算法感兴趣
- 7)开发人员有兴趣提供一次性预测
- 8)工程师对开发更智能的软件和服务感兴趣
- 数据部落
- 9)数据科学家对获得更好的业务问题答案感兴趣
- 10)数据分析师对更好地解释数据感兴趣
机器学习部落的思维导图
商业部落
通常,这些人对组织中有效利用机器学习感兴趣,但不一定对算法或工具的细节感兴趣。
商务人士可能会使用 _ 商业智能 _ 或 _ 预测分析 _ 等术语,这两个术语都是可以利用机器学习技术的更通用的领域。
1)具有一般兴趣的商业人士
这可能是任何人从一位高管到一位听说过机器学习的顾问,并且正在寻求战略性地利用它,也许是在即将开展的项目或计划中。
这不是我的领域,但是一些可能对更多战略思考有用的资源包括:
- Gartner 的高级分析平台魔力象限,2015 年
- Gartner 的机器学习推动了数字业务,2014 年
- 麦肯锡的机器学习高管指南,2015
我还会在下一节中为“_ 经理 _”推荐这些书。
Gartner 高级分析平台的魔力象限来自 Gartner ,保留所有权利。
2)经理对交付项目感兴趣
这是一个项目经理或类似的领导职位,正在使用机器学习的项目。它可能是项目的核心特征或项目的核心。
有用的资源将是关于该领域的高级视角,其涉及各种类型的问题和算法,而不会涉及太多细节。
查看以下书籍:
学术部落
一般来说,这些人是从学术角度对机器学习感兴趣的人。他们可能是学生(本科生或研究生)或与大学有关的其他人。
其他的例子是博士后,研究员和各种讲座。
学术部落可能会花费大量时间研究研究论文中的特定机器学习算法。您可以在“如何研究机器学习算法”中了解有关研究算法的更多信息。
3)本科或研究生班的机器学习学生
机器学习的学生很可能上课并且对与技术和算法相关的超特定问题感兴趣。
学生具有专注的结构和深入研究材料的时间。他们最好配有教科书。一些最好的机器学习教科书如下:
4)机器学习研究员对影响领域感兴趣
机器学习研究人员有兴趣深入了解机器学习的一个方面,以便为扩展该领域做出微小的补充。
研究人员对研究论文,期刊以及与之相关的组织和网络感兴趣。
教科书没有削减它,它们是次要来源并且已经过时了。
一些备受瞩目的机器学习期刊和会议记录是:
查看 Quora 问题的最佳答案“关于机器学习的最佳会议和期刊是什么? “。
这是人工智能中排名前 50 位的期刊的便捷列表。
5)普通研究员对他们的问题建模感兴趣
一般研究人员可能对机器学习感兴趣,但作为一种工具。他们很可能对使用自己的数据构建描述性或预测性模型感兴趣。
例如,来自客户研究,地质学或生物学领域的科学家拥有自己的数据集,并且正在寻求创建模型以做出预测和/或更好地理解潜在问题。
他们通常对模型准确率不太感兴趣,对模型可解释性更感兴趣。因此,从统计学中借鉴的更简单易懂的方法是优选的,例如线性回归和逻辑回归。
然而,需要良好的系统过程。
我会推荐“_ 工程部落 ”下的资源,特别是“ 开发人员有兴趣提供一次性预测 ”。另请参阅“ 数据部落 ”下的“ 数据科学家 _”小组。
工程部落
通常,一组开发人员习惯于为软件问题提供解决方案并希望结合机器学习。
对于希望进入机器学习的工程师,我推荐的一个好的通用帖子是“程序员机器学习”。
工程师部落可以在机器学习社区获得大量帮助和支持,例如 Q& A 网站上的机器学习社区。有关更多信息,请查看帖子“机器学习社区”。
6)程序员对实现算法感兴趣
程序员开发机器学习技能的一个好方法是使用他们现有的编程技能并从零开始实现机器学习算法。
我在博客文章“通过实现他们从零开始了解机器学习算法”中谈论了这个方法,并提供了很好的技巧和资源。
我从博客文章中推荐的这种方法的三本书是:
7)开发人员有兴趣提供一次性预测
开发人员不一定是优秀的程序员,并且不需要编程来开发和提供准确可靠的预测模型。
在商业环境中可能需要一次性预测模型来获得它可以提供的预测集。它也是一个强大的自我模型,用于练习数据集甚至机器学习竞赛。
通过系统地处理问题并提供独立模型,您可以学到很多东西。
在“处理机器学习问题的过程”中查看我的系统过程,以便端到端地处理机器学习问题。
8)工程师对开发更智能的软件和服务感兴趣
有兴趣将机器学习添加到其软件项目的工程师需要一些算法知识,如何端到端地解决问题的一些知识以及如何使算法在操作环境中可靠地运行的知识。
这一群人从前面描述的两个群体中成长,最好被描述为机器学习工程师。他们希望使用能够提供可靠和准确结果的快速算法,从而平衡这些问题。
该小组还大量使用机器学习库和基础设施。
关于快速启动机器学习库的一些有用资源包括:
另外,查看帖子“构建生产机器学习基础设施”。
数据部落
通常,这些人群主要处于数据角色,但可能需要利用机器学习。
9)数据科学家对获得更好的业务问题答案感兴趣
当你是一名数据科学家时,学习并没有停止。
您必须掌握最新的数据流,技术和算法。这包括描述数据和创建预测模型所需的机器学习技术。
数据科学家可以从“_ 工程部落 ”下列出的更多应用资源中获取他们所需的资源,以及“ 学术部落 _”下列出的更多理论资源。
然而,包含这种组合的一些以数据科学为中心的机器学习资源是:
10)数据分析师对更好地解释数据感兴趣
数据分析师主要关注在商业利益背景下解释数据。有时机器学习算法对于提供更强大的模型很有用。主要是描述性模型,但有时也是预测性的。
与“_ 一般研究员 _”一样,该小组可能在统计和统计推断方面具有良好的基础。此外,鉴于他们最有可能对描述性模型感兴趣,经典方法如线性和逻辑回归可能就足够了。在结果模型中对准确率的可解释性。
上面的许多相同资源都是有用的,尽管可能有更多的统计推断立场。
行动步骤
在这篇文章中,您发现了 10 个对机器学习感兴趣的不同人群。
这是一个方便的思维导图,总结了 10 个部落:
Mind Map of Machine Learning Tribes
您的操作步骤是查看列表并找出您所属的位置。
你的部落是哪一组? 在下面发表评论让我知道。
一年内掌握机器学习
从开发人员到机器学习从业者,
_ 你也可以!_
Per Borgen 是一个灵感来源。
他从开发人员转变为机器学习从业者。他解释了他是如何做到的。
在这篇文章中,您将发现 Per 在过渡时学到的经验教训。
您将发现他采用的两种方法以及如何使用它们。而且你会发现 Per 对初学者的建议,就像你一样,也希望能够进行过渡。
而且你会发现 Per 对初学者的建议,就像你一样,也希望能够进行过渡。
让我们开始吧。
机器学习一年
摄影: Andreanna Moya ,保留一些权利。
一周的机器学习
Per 的第一个实验涉及花一周时间进行机器学习并了解他能走多远。
像许多对机器学习感兴趣的学生一样,他已经完成了 MOOC 的一半,并且无法将他学到的知识转化为实际解决问题。
他将他经验丰富的“机器学习一周”命名为,或者真正的 5 天。
本工作周分解如下:
- 星期一:学习基础知识。
- 星期二:对新数据做出预测。
- 星期三:从零开始编写算法。
- 周四:参加比赛。
- 星期五:关于 Udacity 的研究。
他的方案非常实用,2 天专注于建模,意图获得结果,另一天专注于实现算法。
我真的很喜欢。
他评论说:
当你意识到你可以开始使用毫升来解决现实生活中的问题时,这是一个关键时刻。
我认为 Per 周的重要内容是,有可能在一个工作周内使非常真实和非常有价值的进展。
在 20 到 40 年的职业生涯中,五天不算什么。
他自己说:
如果您对进入机器学习感兴趣,我强烈建议您开始几天或晚上,然后潜入它。
Per 建议采用自上而下和结果优先的方法开始,正如我在机器学习掌握中所教导的那样:
如果您还没有为重物做好准备,请选择自上而下的方法,并尽快解决问题。
一年的机器学习
每走得更远。
一年后,他写了一篇后续帖子,宣布他的第一个机器学习项目正在进行中。
这篇文章的标题是“机器学习一年”,详细介绍了他去年学习机器学习的方式。
他坚持自上而下的方法,这无疑有助于过渡,他说:
事实上,您不需要太多的数学就可以开始使用机器学习,而且您不需要专业学位就可以使用它。
他一年的机器学习自学有很多起伏。他的年度最终导致他在一个模型上工作以提高他的工作场所的销售额。
做得好!
得到教训
Per 在他的整个帖子中汲取了经验教训。
我的观点略有不同。我总结了他从他的经历中学到的 5 个关键课程:
- 1.采用简单的自上而下的方法而不是自下而上的理论方法。
- 2.您不需要更高的学位,只需专注于提供价值。
它也让我摆脱了只有拥有硕士学位或博士学位的专业人士的妄想。
- 3.也许跳过 MOOC,或者找一个适合你的 MOOC。
我也没有完成它,因为我很少使用 MOOC。 …如果我能及时回顾,我会选择 Udacity 的机器学习入门,因为它更容易并且使用 Python 和 Scikit Learn。通过这种方式,我们可以尽快弄脏手,获得信心,并获得更多乐趣。
- 4.不要试图同时学习机器学习和新的编程语言。
在尝试编写 ml 算法的同时学习一门新语言对新手来说太难了。
- 5.通过竞赛实践真实数据的实践。
这方面的主要内容是通过试验算法和数据来迭代地改进结果的经验。
专业提示
我发现其中隐藏了两个专业技巧。
我认为两个掘金可以真正加速进步。
- 找一个教练来支持并一路建议你。
- 询问并查看您是否可以在工作中学习机器学习。
考虑尝试这些策略来真正加快进度。
对于初学者
我真的很喜欢他的最后评论。对初学者来说非常鼓舞人心:
达到这一点肯定是一段漫长的旅程。但也快一个;当我在一周的项目中开始我的机器学习时,我当然没有希望在一年内实际使用它。但这是百分之百的可能。如果我能做到,其他任何人都能做到。
如果 Per 可以做到,为什么不能呢?
摘要
在这篇文章中,您了解了 Per Borgen 如何从开发人员转变为机器学习从业者。
你了解到:
- 您可以在一周内在机器学习方面取得非常实际的进展。
- 你不需要从理论开始或获得更高的学位。
- 您可以在一年内完成转换,如果您坚持并且练习,则可以更少。
你从 Per 的经历中得到了什么?
你是否受到启发?
发表评论,我很想听听你的想法。
通过持续的竞赛精通 Kaggle
原文:
machinelearningmastery.com/master-kaggle-by-competing-consistently/
_ 你如何擅长 Kaggle 比赛?_
这是我被问到的一个常见问题。入门和获得成功的最佳建议是始终如一地参加比赛。你不禁会在机器学习上变得更好。
Triskelion 最近发表了一篇题为“ _ 的文章,反映了一年的 Kaggle 比赛 _ ”将这一点暴露出来。他最初是一名机器学习初学者,最终成为“大师”级别的 Kaggle 竞争对手(达到 10%和前 10 名)
在这篇文章中,我们将回顾 Triskelion 的一贯参与的教训,作为开始一个大师 Kaggle 的方法。
持续竞争
保罗的照片,保留一些权利
一个良好的开端的关键
我认为 Triskelion 的关键开始并有信心继续下去是两个方面:
- 转载结果:他转载了论坛和博文中描述的结果。
- 二手工具:通过再现结果,他发现并开始使用 Vowpal Wabbit 和 scikit-learn 等工具。
重现结果
这是一个显而易见但极其被低估的方法。
缺乏良好的机器学习教程。最好的代理(并且比玩具数据集上的教程更好)是论坛上的“如何击败基准”帖子以及比赛结束时的“我如何发布帖子”。
这样做的原因是这些准教程可以让您深入了解世界级分析师如何思考并解决问题。例如:他们使用的工具,他们如何设置他们的管道,他们使用的参数,过程,一切。
模仿这些元素是一种巧妙的方式来引导您的机器学习技能。
使用好工具
初学者的错误是从零开始重新实现算法。
有大量强大的工具可供使用,您必须利用它们。您将获得更好的结果,更快。这将激励您进一步推动。
Triskelion 很早就发现了 Vowpal Wabbit 并且不怕玩它。大众是一个非常强大的工具,甚至专业人士也很难。
事实上,我在机器学习方面受过训练的“专家”中看到的一个问题是忽视甚至嘲笑现代或不同的工具。他们在 R 或 Weka 中学习机器学习,因此每个问题都只能用他们选择的武器来解决。
您知道并可以使用的工具越多,您就越需要考虑和解决问题。
获得成功的关键
持续竞争是获得成功的关键。
好是相对的,但 Triskelion 现在明显好于一年前(比其他近 20 万竞争对手好),这主要归功于他积极的参与时间表。
他列出了 7 个特定的比赛,但他的个人资料显示他参加了 15 场比赛。
如果你想要擅长机器学习比赛,请跟随他的领导并参加很多比赛。即使您刚刚在前几个中达到基准,您将学到很多关于数据准备和工具的知识。
如果您重现您在博客和论坛上发布的那些竞赛结果,那么收益将是非线性的。
比赛小贴士
最后,Triskelion 完成了许多提示。
- 实践很多:尽可能多地提出挑战,逐步改进。
- 研究评估指标:真正了解 AUC 等(查看指标列表)
- 研究领域:商业案例,论文,最新技术,特色工程
- 团队合作:前 10 名的成绩很难,但他需要团结起来才能实现。
- 阅读论坛:发布比赛帖子,了解获胜解决方案。
- 分享论坛:在给定问题上有很多角度,不要分享太多。
- 使用合奏:它们总能改善结果,可以为您提供简单模型的前 10 名。
- 实验:尝试想法而不是生活在思想中
- 创造力:在盒子外面思考
- 工具:查找并使用好的算法。
- 调整:使用交叉验证,调整所有模型参数。
他的最后一个提示是玩得开心。
这可能是最重要的一点。有竞争力的机器学习非常有趣。找到它的乐趣。在开始时需要一些毅力来克服知识驼峰。做“好”(击败基准)的行为可能是一开始的有趣部分。
5 个程序员在机器学习中的错误
原文:
machinelearningmastery.com/mistakes-programmers-make-when-starting-in-machine-learning/
没有正确的方法进入机器学习。我们都学习略有不同的方式,并且对我们想要做的事情或机器学习有不同的目标。
一个共同的目标是快速提高机器学习效率。如果这是你的目标那么这篇文章强调了程序员在快速成为高效机器学习从业者的道路上所犯的五个常见错误。
程序员在机器学习中开始犯错误
照片归 aarontait 所有,保留一些权利。
1.将机器学习放在基座上
机器学习只是另一种技术,您可以使用它来创建复杂问题的解决方案。
因为它是一个新兴的领域,机器学习通常在研究生的学术出版物和教科书中传达。这使它看起来精英而且难以穿透。
心理转变需要在机器学习中有效,从技术到过程,从精确到“足够好”,但对于程序员有兴趣采用的其他复杂方法也是如此。
2.编写机器学习代码
通过编写代码从机器学习开始可能会使事情变得困难,因为这意味着您至少解决了两个问题而不是一个:技术如何工作以便您可以实现它以及如何将技术应用于给定问题。
一次处理一个问题并利用机器学习和统计环境以及算法库来学习如何将技术应用于问题要容易得多。这使您可以相对快速地检查和调整各种算法,并调整看起来很有希望的一两个算法,而不是花费大量时间来解释含有算法描述的含糊不清的研究论文。
实现算法可以被视为一个单独的项目,以便稍后完成,例如学习练习或原型系统需要我投入运营。一次学习一件事,我推荐从基于 GUI 的机器学习框架开始,无论你是否是程序员。
3.手动做事
一个过程围绕应用的机器学习,包括问题定义,数据准备和结果的呈现,以及其他任务。这些过程以及算法的测试和调整可以而且应该是自动化的。
自动化是构建,测试和部署的现代软件开发的重要组成部分。脚本数据准备,算法测试和调优以及结果的准备有很大的优势,以获得严格和改进速度的好处。记住并重用专业软件开发中学到的经验教训。
无法从自动化开始(例如 Makefiles 或类似的构建系统)可能是由于许多程序员从书本和课程中学习机器学习而不太关注该领域的应用性质。实际上,为应用机器学习提供自动化是程序员的一个巨大机会。
4.重塑常见问题的解决方案
成千上万的人可能已经实现了您正在实现的算法,或者解决了与您正在解决的问题类似的问题类型,利用他们的经验教训。
有很多关于解决应用机器学习的知识。其中大部分内容可能与书籍和研究出版物有关,但您可以访问它。做好功课,搜索谷歌,谷歌图书,谷歌学术搜索,并联系机器学习社区。
如果要实现算法:
- 你必须实现它吗?您可以在库或工具中重用现有的开源算法实现吗?
- 你必须从零开始实现吗?您可以编写审查,学习或移植现有的开源实现吗?
- 您是否必须解释规范算法描述?您可以查看和学习其他书籍,论文,论文或博客文章中的算法描述吗?
照片归功于 justgrimes ,保留一些权利
如果您要解决问题:
- 你必须测试所有关于问题的算法吗?您是否可以利用相同通用类型的此类或类似问题实例进行研究,以提出表现良好的算法和算法类?
- 你需要收集自己的数据吗?他们可以直接使用或作为问题代理的公开数据集或 API 是否可以快速了解哪些方法可能表现良好?
- 你必须优化算法的参数吗?您可以使用启发式算法来配置论文或算法研究中提供的算法吗?
如果您遇到编程库或特定类型的数据结构问题,您的策略是什么?在机器学习领域使用相同的策略。联系社区并询问您可能利用的资源,以加快您的项目学习和进度。首先考虑论坛和 Q& A 网站,然后联系学者和专家,作为下一步。
5.忽略数学
你不需要数学理论来开始,但数学是机器学习的重要组成部分。这样做的原因是它提供了描述问题和系统行为的最有效和最明确的方法。
忽略算法的数学处理可能导致诸如对方法的理解有限或采用算法的有限解释之类的问题。例如,许多机器学习算法在其核心处具有逐步更新的优化。了解正在解决的优化的性质(函数是凸)允许您使用利用这些知识的有效优化算法。
内化算法的数学处理是缓慢的,并且掌握在掌握之中。特别是如果您从零开始实现高级算法(包括内部优化算法),请花时间从数学角度学习算法。
摘要
在这篇文章中,您了解了程序员在开始机器学习时所犯的 5 个常见错误。五节课是:
- 不要把机器学习放在基座上
- 不要写机器学习代码
- 不要手动做事
- 不要重新解决常见问题的解决方案
- 不要忽视数学
UPDATE :继续 HackerNews 和 DataTau 的对话。
哲学毕业生到机器学习从业者(Brian Thomas 采访)
原文:
machinelearningmastery.com/philosophy-graduate-to-machine-learning-practitioner/
机器学习入门可能令人沮丧。有太多东西值得学习,感觉压倒一切。
因此,许多对机器学习感兴趣的开发人员从未开始。在 ad hoc 数据集上创建模型并进入 Kaggle 竞赛的想法听起来令人兴奋。
哲学硕士毕业生是如何开始机器学习的?
在这篇文章中,我采访了 Brian Thomas。
Brian 在使用理论沉重的在线课程感到沮丧后,采用自上而下的实践应用机器学习的方法开始了机器学习。
发现 Brian 的故事以及他使用的工具和资源。
如果 Brian 能找到开始机器学习的方法,那么你也可以。
哲学毕业于机器学习从业者
摄影: Andrew E. Larsen ,保留一些权利。
问:您已经尝试过哪些资源来了解机器学习?
什么有效:
您的 Jump-Start Scikit-Learn 和 R 中的 Jump-Start 机器学习在早期作为 ML 领域的地图非常有价值,使用这两个工具进入并开始使用不同的机器学习模型。我喜欢将所有不同的算法分解并按照地图进行布局,这些地图组织了我付出访问的努力。
从那里我继续使用 R 进行 Brett Lantz 的机器学习,我发现它特别好。
目前我正在通过 Stephen Marsland 的机器学习:算法视角工作。这是非常好的,我发现它比我大约一年前第一次拿起它时更容易通过。
总的来说,看起来效果最好的是进入那里并开始使用不同的数据集和不同的模型。我不得不说特别是 scikit-learn 确实帮助我解决了这个话题。我还要向 IPython 倾诉,呃,我应该说 Jupyter 笔记本。对我来说,能够加载一些数据,从 scikit-learn 中尝试不同的模型,然后添加一些用我自己的话来解释模型和结果的降价单元格是非常有益的。
最近我也经历了一些在线机器学习教程,特别是 Jake VanderPlas 和 Olivier Grisel 关于 scikit-learn 的教程。能够克隆他们的 git repos 并使用代码和他们的演示文稿也是最有启发性的。
- Jake VanderPlas 关于 Scikit-Learn 的 IPython 笔记本
- Oliver Grisel 关于 Scikit-Learn 的 IPython 笔记本
什么行不通:
几乎是我试图通过的 2 或 3 个在线课程,包括 Andrew Ng 的 CS229 ML 课程和 Nando de Freitas 来自 UBC 的在线 ML 课程。
并不是说它们是坏的或者其他什么,我只是没有找到尝试坐下来观看关于随机梯度下降的 50 分钟的讲座非常有帮助,特别是没有数学背景。我开始更好地理解 SGD 将 Marsland 在他的 ML 书中提供的代码粘贴到 Jupyter 笔记本中并玩弄它。
当然我没有正式报名参加这些课程或其他什么,我只是下载了所有的讲座,笔记和作业,并试图通过他们的方式工作。最后它似乎在理论上陷入困境。我认为这说明了很多这个问题:人们在没有很多数学背景的情况下(例如我自己)进入这个问题并看到所有这些数学理论而逃避尖叫。
首先是代码,然后让理论上的理解发展。这似乎是正确的方法,我知道你肯定同情。
问:你能分享一下你的背景和工作吗?
我于 1995 年毕业于大学,获得哲学学士学位。
令人惊讶的是,我无意中打开了进入 IT 就业市场的大门,因为我在这个地方进行了一次行政工作,我正在那里从事合同工作。从那份工作开始,我最终学到了很多关于数据库和编程的知识。
来自哲学的背景,我总是能够把事情分解成他们的组成部分,看看他们如何互相玩耍(这可能解释了我相当不错的解决问题的能力)。然而,来自那个背景,我的数学技能是不存在的!我在高中时代的第二年代数停止了,从来没有超越过那个。
在过去的 7 年里,我一直在一家大型保险公司戴着许多不同的帽子,我的日常职责包括服务器和软件测试管理,其中包括开发大量的 PowerShell(现在是 Python)应用程序以协助实现这一目标。
问:您玩过的算法和数据集的具体示例是什么?
我真正开始研究的第一本 ML 书是 Brett Lantz 的机器学习与 R ,我浏览了那里的所有数据集和算法以及诸如 Iris 数据集的“经典命中”。对于初学者恕我直言,这是一本好书。
与此同时,我通过 Lantz 的书,我也在教自己 Python(通过 Charles Dierbach 的计算机科学导论使用 Python:计算问题 - 解决焦点等书籍,专注于 Python 编程) se,而不是 ML)。
在 Lantz 书之后不久,我发现自己在日常生活中越来越倾向于 Python。我使用的唯一的 Python 机器学习书是 Stephen Marsland 的机器学习:算法视角。
最近我还玩了泰坦尼克号数据集并练习清理数据,选择合适的功能,然后尝试了各种各样的算法,例如 NaïveBayes,k-nearest neighbor, AdaBoost 和随机森林分类器。
我也开始探索使用 GPU 的 Python 软件包(我最近购买了一台带有 NVIDIA GeForce 950M GPU 的华硕笔记本电脑,并在其上运行了一个很好的 CUDA 环境),特别是 Theano。
问:我注意到你已经尝试过 Python 和 R 用于机器学习,你对这两者有什么印象?
实际上我用[而不是 Python]深入研究DOING
机器学习,所以这可能会使我对这两者的观点产生偏差。
然而,它DID
似乎学习机器学习 R 更简单。
这是 Lantz 的书吗?
是因为 R 是一种统计编程语言,因此在编码时你必须正确使用各种数学概念吗?
我绝对认为后者可能与这种印象有关。
然而,现在,我在 Python 领域非常坚定,主要是因为 pandas 和 Theano (我此时的两个最爱)等软件包。我特别感兴趣,并一直在玩 Theano。
我喜欢你可以声明变量,它们的类型,然后构建表达式,然后用这些可以自动编译以供 GPU 使用的函数。
那太酷了!
问:您在深入机器学习方面的目标或抱负是什么?
回到我自己的哲学背景,哲学的好奇心是让我进入它的原因。
机… .learn?怎么样?!?
你不得不承认,这个领域的整个历史和实践都是令人着迷的,触及了各种最终具有哲学性质的问题。此外,随着深度学习等近期发展,整个领域变得越来越有趣。
与深度学习相关的是随着大规模并行 GPU 编程的出现而发生的范式转换。
似乎没有这个,深度学习的最新进展是不可能发生的,告诉 Theano 利用我的 GPU 然后通过深度学习教程算法和 LISA 实验室上的 MNIST 数据流失是很酷的。 ]深度学习网站。
最后的话
感谢 Brian 分享他的故事和经历。
Brian 已经开始了,他已经掌握了解决 R 和 Python 问题的技能,现在正在开展更复杂的深度学习主题。
即使仍然接近开始,他的机器学习之旅也是一个良好的开端。他实际上可以练习应用机器学习。
我认为如果你想开始机器学习,Brian 的故事会鼓舞人心。
你在等什么?
机器学习入门的实用建议
原文:
machinelearningmastery.com/practical-advice-for-getting-started-in-machine-learning/
David Mimno 是康奈尔大学信息科学系的助理教授。他具有自然语言处理(NLP)的背景和兴趣,特别是主题建模。值得注意的是,他是 MALLET 的主要维护者,这是一个基于 Java 的 NLP 库。
我最近发现大卫的一篇博文,题为“为机器学习的学生提供建议”。这是一篇很棒的文章,包括我给程序员和辅导学生的类似建议。
这是一篇很棒的帖子和很棒的建议,我在这篇博客文章中为您总结了这些内容。
入门机器学习书籍
大卫推荐一些非常高级的书籍作为介绍性文章。原因是他的学生都是研究生并且能够应对挑战。我自己不推荐这些文本。
不过,他建议的文字是:
这些可能是现在可用的一些关于机器学习的最佳教科书的选择。当你看到麻省理工学院,斯坦福大学,康奈尔大学和其他美国领先学校的研究生课程时,你会一次又一次地看到它们。
数学入门书籍
大卫评论说,你可以学到的关于线性代数,概率和统计学的任何东西都是有用的。
他接着建议了几本关键书:
实用的机器学习建议
在提出一些介绍性资源后,David 继续在现场开始时提供一些实用的建议。
- 不要指望第一次得到任何东西。 David 建议从多个不同来源阅读相同方法的描述。这与我在算法描述模板中提出的建议相同,我出于必要而提出。
- 实现模型。我同意 David 的观点,在你自己实现它并将其付诸实践之前,你无法完全理解这个模型。 David 建议将您的实现与其他实现进行比较,例如开源中的实现,并寻找并理解所使用的任何提高效率的数学或编程技巧。
- 阅读论文。大卫讲述了一篇关于每日通勤隐藏的论文的轶事。考虑选择算法或问题,并阅读与该论文相关的主要来源。
- 挑选一张纸并在其中生活一周。大卫建议成为一个有纸的人,并且在你熟悉它之前要思考一周。例如,他建议您填写任何派生方程的进展中的空白。我可以根据经验说话,建议你仔细挑选你的论文。我选择的文件花了我多年的时间来交流。
大卫用完美的 John von Neumann 引用完成:
年轻人,在数学中你不懂事物。你只是习惯了他们。
紧紧抓住这句话。事情一段时间没有意义。继续阅读和播放,直到点击(或者至少你有一个功能性的经验理解)。
你有任何辛苦的实用机器学习建议吗?
实用机器学习问题
原文:
machinelearningmastery.com/practical-machine-learning-problems/
什么是机器学习?我们可以阅读机器学习的权威定义,但实际上,机器学习是由正在解决的问题定义的。因此,了解机器学习的最佳方法是查看一些示例问题。
在这篇文章中,我们将首先看一些现实世界中机器学习问题的众所周知和理解的例子。然后,我们将查看标准机器学习问题的分类法(命名系统),并学习如何将问题识别为这些标准案例之一。这很有价值,因为了解我们面临的问题类型可以让我们考虑我们需要的数据以及要尝试的算法类型。
10 机器学习问题的例子
机器学习问题比比皆是。它们构成了您每天在网络或桌面上使用的软件的核心或难点部分。想想推特上的“你想跟随”的建议以及 Apple 的 Siri 中的言语理解。
下面是 10 个机器学习的例子,它们真正奠定了机器学习的全部意义。
- 垃圾邮件检测:根据收件箱中的电子邮件,识别那些垃圾邮件和非垃圾邮件。拥有此问题的模型将允许程序将非垃圾邮件留在收件箱中并将垃圾邮件移动到垃圾邮件文件夹。我们都应该熟悉这个例子。
- 信用卡欺诈检测:给定一个月内客户的信用卡交易,确定客户和非客户进行的交易。具有此决定模型的程序可以退还那些欺诈性交易。
- 数字识别:给定一个手写在信封上的邮政编码,识别每个手写字符的数字。该问题的模型将允许计算机程序读取和理解手写邮政编码并按地理区域对信封进行排序。
- 语音理解:给定用户的话语,识别用户提出的具体请求。该问题的模型将允许程序理解并尝试满足该请求。带 Siri 的 iPhone 具有这种功能。
- 人脸检测:鉴于数百张数码照片的数码相册,请识别包含特定人物的照片。该决策过程的模型将允许程序按人员组织照片。一些相机和像 iPhoto 这样的软件具有这种功能。
照片中的人脸检测示例。
先生的照片。 'sto 根据署名 - ShareAlike 2.0 通用知识共享许可获得许可。
- 产品推荐:鉴于客户的购买历史记录和大量产品库存,请确定该客户将感兴趣并可能购买的产品。该决策过程的模型将允许程序向客户提出建议并激励产品购买。亚马逊有这种能力。还要考虑 Facebook,GooglePlus 和 LinkedIn,建议用户在注册后与您联系。
- 医学诊断:鉴于患者和匿名患者记录数据库中显示的症状,预测患者是否可能患病。程序可以使用该决策问题的模型来为医疗专业人员提供决策支持。
- 股票交易:鉴于股票当前和过去的价格变动,确定该股票是否应该被买入,持有或卖出。这个决策问题的模型可以为金融分析师提供决策支持。
- 客户细分:鉴于用户在试用期间的行为模式以及所有用户的过去行为,请确定将转换为产品付费版本的用户和不转换为付费版本的用户。该决策问题的模型将允许程序触发客户干预以说服客户提前或更好地参与试验。
- 形状检测:给定用户手在触摸屏上绘制形状和已知形状的数据库,确定用户试图绘制的形状。该决定的模型将允许程序显示用户绘制的用于制作清晰图表的那种形状的柏拉图版本。 Instaviz iPhone 应用程序就是这样做的。
这 10 个例子很好地理解了机器学习问题。有一个历史性的例子,有一个需要建模的决定,一个企业或领域的好处,使自己的决策建模和有效。
其中一些问题是人工智能中最难的问题,例如自然语言处理和机器视觉(人类很容易做的事情)。其他人仍然很难,但却是机器学习的经典例子,如垃圾邮件检测和信用卡欺诈检测。
想想你上周在线和离线软件的一些互动。我相信你可以很容易地猜到你直接或间接使用的另外十或二十个机器学习的例子。
机器学习问题的类型
通过阅读上面的示例机器学习问题列表,我相信你可以开始看到相似之处。这是一项有价值的技能,因为善于提取问题的本质将使您能够有效地思考您需要哪些数据以及您应该尝试哪种类型的算法。
机器学习中存在常见的问题类别。下面的问题类是我们 _ 做 _ 机器学习时我们提到的大多数问题的原型。
- 分类:数据被标记为意味着它被分配了一个类,例如垃圾邮件/非垃圾邮件或欺诈/非欺诈。建模的决定是为新的未标记数据分配标签。这可以被认为是歧视问题,模拟群体之间的差异或相似性。
- 回归:数据标有实数值(想想浮点数),而不是标签。易于理解的示例是时间序列数据,如股票价格随时间的变化,建模的决策是预测新的不可预测数据的值。
- 聚类:数据没有标记,但可以根据数据中自然结构的相似性和其他度量进行分组。上面列表中的一个示例是通过没有名称的面部组织图片,其中人类用户必须为组指定名称,例如 Mac 上的 iPhoto。
- 规则提取:数据被用作提取命题规则的基础(先行/结果又名 if-then )。这样的规则可以但通常不是针对性的,这意味着方法发现数据中的属性之间的统计上可支持的关系,不一定涉及正被预测的事物。一个例子是发现购买啤酒和尿布之间的关系(这是数据挖掘民间法,无论是否真实,它是对欲望和机会的说明)。
当您认为问题是机器学习问题(需要根据数据建模的决策问题)时,请考虑您可以轻松地将其置于何种类型的问题或客户或要求要求和工作的结果类型向后。
资源
几乎没有资源提供真实世界机器学习问题的列表。他们可能在那里,但我找不到他们。我仍然为你找到了一些很酷的资源:
- 年度“Humies”奖:这些是通过算法获得的奖品清单,这些算法与人类提出的结果相竞争。这令人兴奋,因为这些算法只能从数据或成本函数中运作,并且能够具有创造性和创造性,足以侵犯专利。惊人!
- AI 效应:一旦人工智能程序获得足够好的结果,它就不再被视为人工智能,而只是技术并且在日常事物中被使用。同样适用于机器学习。
- AI-Complete :指的是人工智能中非常困难的问题,如果解决这个问题就会成为强 AI(AI 在科幻小说中设想的,真正的 AI)的一个例子。计算机视觉和自然语言处理的问题都是 AI 完全问题的例子,也可能被认为是特定领域的机器学习问题类别。
- 2013 年机器学习的十大问题是什么? 这个 Quora 问题有一些很好的答案,并列出了一些广泛的实际机器学习问题。
我们已经回顾了现实世界机器学习问题的一些常见例子以及机器学习问题类别的分类。我们现在有信心评论问题是否是机器学习问题,并从问题描述中挑选元素并确定它是分类,回归,聚类还是规则提取类型的问题。
你知道更多现实世界的机器学习问题吗?发表评论并分享您的想法。
使用来自 UCI 机器学习库的数据集练习机器学习
在哪里可以获得良好的数据集来练习机器学习?
数据集是真实的,因此它们很有趣且相关,虽然足够小,您可以在 Excel 中查看并在桌面上完成工作。
在这篇文章中,您将发现一个高质量,真实世界且易于理解的机器学习数据集的数据库,您可以使用它来练习应用的机器学习。
该数据库称为 UCI 机器学习库,您可以使用它来构建自学程序并为机器学习奠定坚实的基础。
实践练习
摄影: Phil Roeder ,保留一些权利。
我们为什么需要练习数据集?
如果您对应用机器学习感兴趣,则需要练习数据集。
这个问题可以阻止你死。
- 你应该使用哪个数据集?
- 你应该自己收集还是使用现成的?
- 哪一个和为什么?
我教授一种自上而下的机器学习方法,我鼓励您学习端到端解决问题的过程,将该过程映射到工具上,并以有针对性的方式对数据进行处理。有关更多信息,请参阅我的文章“程序员机器学习:从开发人员到机器学习从业者的跳跃”。
那你如何以有针对性的方式练习?
我教导说,最好的入门方法是练习具有特定特征的数据集。
我建议您选择在遇到自己的问题时遇到并需要解决的特征,例如:
- 不同类型的监督学习,如分类和回归。
- 来自数十,数百,数千和数百万个实例的不同大小的数据集。
- 来自少于十个,几十个,几百个和几千个属性的不同数量的属性
- 来自实数,整数,分类,序数和混合的不同属性类型
- 不同的域名会迫使您快速了解和描述您之前没有经验的新问题。
您可以通过设计一个测试问题数据集程序来创建一个学习和学习的特征程序以及解决它们所需的算法。
这样的程序有许多实际要求,例如:
- 真实世界:数据集应该来自现实世界(而不是设计)。这将使他们感兴趣并介绍真实数据带来的挑战。
- 小:数据集需要很小,以便您可以检查和理解它们,并且可以快速运行多个模型以加快学习周期。
- 很好理解:应该清楚地知道数据包含什么,为什么收集数据,需要解决的问题是什么,以便您可以构建调查框架。
- 基线:了解已知哪些算法表现良好以及获得的分数以便您有一个有用的比较点也很重要。当您开始学习时,这很重要,因为您需要快速反馈您的表现(接近最新技术或某些内容已被破坏)。
- 丰富:您需要选择许多数据集,以满足您想要调查的特征和(如果可能的话)您的天生好奇心和兴趣。
对于初学者,您可以从 UCI 机器学习库中获取所需的所有内容以及更多数据集。
什么是 UCI 机器学习库?
UCI 机器学习库是一个机器学习问题的数据库,您可以免费访问。
它由位于加州大学欧文分校的机器学习和智能系统中心托管和维护。它最初由 David Aha 创建,作为加州大学欧文分校的研究生。
25 年来,它一直是需要数据集的机器学习研究人员和机器学习从业者的首选。
UCI 机器学习库
每个数据集都有自己的网页,列出了所有已知的详细信息,包括调查它的任何相关出版物。数据集本身可以作为 ASCII 文件下载,通常是有用的 CSV 格式。
例如,这里是鲍鱼数据集的网页,需要从物理测量中预测鲍鱼的年龄。
存储库的好处
该库的一些有益功能包括:
- 几乎所有数据集都是从域中提取的(而不是合成的),这意味着它们具有真实世界的品质。
- 数据集涵盖了从生物学到粒子物理学的广泛主题。
- 数据集的详细信息通过属性类型,实例数,属性数和可以排序和搜索的已发布年份等方面进行汇总。
- 对数据集进行了充分研究,这意味着它们在有趣的属性和预期的“好”结果方面是众所周知的。这可以为比较提供有用的基线。
- 大多数数据集都很小(数百到数千个实例),这意味着您可以在文本编辑器或 MS Excel 中轻松加载它们并查看它们,您也可以在工作站上快速建模它们。
使用这个支持排序和搜索的方便表浏览 300 多个数据集。
对存储库的批评
对存储库的一些批评包括:
- 清理数据集,这意味着准备它们的研究人员通常已经根据属性和实例的选择进行了一些预处理。
- 数据集很小,如果您对调查更大规模的问题和技术感兴趣,这没有用。
- 有很多可供选择,你可以通过犹豫不决和过度分析来冻结。当您不确定它是否是您正在调查的“_ 良好数据集 _”时,可能很难选择数据集并开始使用。
- 数据集仅限于表格数据,主要用于分类(尽管列出了聚类和回归数据集)。这对于那些对自然语言,计算机视觉,推荐器和其他数据感兴趣的人来说是有限的。
看一下存储库主页,因为它显示了特色数据集,最新的数据集以及当前最受欢迎的数据集。
自学课程
那么,如何充分利用 UCI 机器学习库?
我建议你考虑一下你想要了解的问题数据集中的特征。
这些可能是您想要建模的特征(如回归),或者是您希望在使用时更熟练的这些特征的模型算法(如随机森林用于多分类)。
示例程序可能如下所示:
这只是一个特征列表,可以挑选和选择自己的特征进行调查。
我列出了每个特征的一个数据集,但是您可以选择 2-3 个不同的数据集并完成一些小项目以提高您的理解并进行更多练习。
对于每个问题,我建议您从端到端系统地进行操作,例如,在应用的机器学习过程中执行以下步骤:
- 定义问题
- 准备数据
- 评估算法
- 改善结果
- 写作结果
选择一个系统且可重复的流程,您可以使用该流程始终如一地提供结果。
有关系统学习机器学习问题的更多信息,请参阅我的帖子“处理机器学习问题的过程”。
写作是关键部分。
它允许您构建一系列项目,您可以将这些项目作为未来项目的参考并获得快速启动,以及用作公共简历或您在应用机器学习中不断增长的技能和能力。
有关构建项目组合的更多信息,请参阅我的文章“构建机器学习组合:完成小型项目并展示您的技能”。
但是,如果…
我不知道机器学习工具。
选择一个工具或平台(如 Weka,R 或 scikit-learn)并使用此过程学习工具。完成机器学习和同时擅长工具的工作。
我不知道如何编程(或代码非常好)。
使用 Weka 。它具有图形用户界面,无需编程。我会向初学者推荐这个,无论他们是否可以编程,因为工作机器学习问题的过程很好地映射到平台上。
我没有时间。
凭借强大的系统流程和涵盖整个流程的优秀工具,我认为您可以在一两个小时内解决问题。这意味着您可以在一个晚上或两个晚上完成一个项目。
您可以选择要调查的详细程度,最好在刚开始时保持简洁明了。
我在我正在建模的领域没有背景知识。
数据集页面提供了有关数据集的一些背景知识。通常,您可以通过查看主数据集附带的出版物或信息文件来深入了解。
我几乎没有经验来解决机器学习问题。
现在是时候开始了。选择一个系统过程,选择一个简单的数据集和像 Weka 这样的工具,解决你的第一个问题。把第一块石头放在你的机器学习基础上。
我没有数据分析经验。
无需数据分析经验。数据集简单易懂,易于理解。您只需要使用数据集主页并通过查看数据文件本身来阅读它们。
行动步骤
选择一个数据集并开始使用。
如果您认真对待自学,请考虑设计一个适度的特征列表和相应的数据集进行调查。
您将学到很多东西,并为潜入更复杂和有趣的问题奠定宝贵的基础。
你觉得这篇文章有用吗?发表评论并告诉我。
使用任何机器学习工具和秘籍快速启动
原文:
machinelearningmastery.com/proceduralize-machine-learning-tools/
您如何最好地使用机器学习工具进行准确的预测?
您只选择并使用机器学习工具,以便在机器学习项目中使您的生活更轻松。这些工具可以帮助您构建可以进行准确预测的模型。
重要的是,您知道如何在此过程中最好地使用它们。
在这篇文章中,您将发现一个简单的 5 步过程,您可以使用将任何机器学习工具映射到应用机器学习的过程。
通过对工具的使用进行程序化,您可以创建可在当前和未来项目中遵循或复制的逐步秘籍,以快速从工具中获得最佳结果。
机器学习秘籍
摄影: Mathew Packer ,保留一些权利。
使用您的工具进行准确的预测
机器学习工具具有如此多的特性和功能,其中大多数都难以理解或隐藏在文档的后面。
您应该使用机器学习工具的哪些功能?
了解如何最好地使用所选择的机器学习工具以构建准确的预测模型至关重要。您需要知道该工具的哪些功能实际上与您在任何项目中执行的应用机器学习的过程相关,以进行准确的预测。
如何最好地利用项目的每个功能?
每个功能都可以在文档中进行配置和不一致描述,或者根本不进行描述。您需要知道如何在项目中最好地使用该工具的每个功能。你不能每次都重新学习这个,或者从最后一个项目的细节中复制粘贴它。
将工具功能映射到项目任务
解决方案是预先执行工作,并了解如何最好地使用项目服务中的每个功能。
您需要识别可能为应用的机器学习过程的特定子任务提供结果的那些功能。此映射提供了一些简短的功能列表,值得进一步了解和弄清楚。
一旦您弄清楚如何很好地为您的流程和项目使用每个功能,您就可以为它创建一个简短的可重用过程。这可能是一个逐步编号的事件列表或一个小代码示例,您可以复制和粘贴并用作起点。
这些秘籍一起提供了使用该工具的最佳实践指南,以及您可以在当前或未来项目中使用的快速入门,以充分利用该工具。
程序化任何机器学习工具
您需要使用系统过程来对机器学习工具进行程序化。
快速 5 步流程
- 选择工具。选择要进行程序化的工具。这可能是您之前列出或描述的工具。它甚至可能是您经常使用的工具,并且您希望标准化您使用它的方式。
- 布局流程。布置与工具相关的应用机器学习的过程中的步骤。在文本文档中这样做可能会有所帮助。具体而言,该过程中的步骤以及该工具可能支持的每个步骤下的任何任务。
- 将功能映射到任务。查看工具的功能并将其映射到您在上一步中概述的机器学习项目的任务。在文本文档中列出每个任务下的相关工具功能可能会有所帮助。
- 研究特色。研究该工具的每个映射功能并发现如何使用它。这可能包括阅读 API 文档和查看教程。了解您需要了解的内容,以便在应用的机器学习项目中最小化地使用该功能进行离散任务。
- 创建程序。创建使用每个映射功能的过程。这可能是带有编号列表的秘籍。或者,这可能是使用该功能的完整的自包含和最小代码示例。
收集所有秘籍将为您提供一个快速入门指南,以便最好地使用该工具在任何应用的机器学习项目中进行准确的预测。
程序化工具的提示
以下是 9 个提示,您可以使用这些提示创建机器学习工具的优秀程序。
- 专注于任务。不要对机器学习工具的每个功能进行程序化。这将浪费你的时间。只关注工具涵盖的应用机器学习过程的那些任务。
- 关注结果。秘籍必须提供结果。对于算法,这将是预测,对于分析,这可以是图。
- 保持简单。不要对该工具提供的特征或技术的所有变体进行程序化。专注于一个并保持程序尽可能小以显示结果。
- 效率可读性。不要陷入最佳实践代码标准或极端细节。使秘籍可读和简单。它们不是用于操作用途,仅作为使用该工具的起点。
- 复制粘贴秘籍。每个秘籍必须完整,以便可以立即复制和粘贴并运行。
- 使用简单的标准数据集。在需要时使用易于理解的小数据集来演示工具的功能。考虑使用来自 UCI 机器学习库的数据集。
- 保持最新。在对该工具进行程序化之后,请考虑使用该工具的新版本使其保持最新。即使经常刷新程序也可能有助于使它们更小巧,更简洁。
- 使用修订控制。考虑在修订控制中存储过程。如果它们打算供整个团队使用,这是一个很好的策略。它还允许它们异步更新和同行评审。
- 样本输出。考虑为秘籍提供样本输出,以了解期望的内容。这对于更多可视化秘籍(例如用于数据分析和绘图的秘籍)非常有用。
实例探究
以下是 3 个可能对您有用的程序化工具的案例研究。
- 图形用户界面。您可以通过记下获得可重复结果所需的鼠标点击秘籍,为具有图形用户界面的工具创建秘籍。
- 算法库。如果您正在编写机器学习算法库的程序,请提供一个简短的代码秘籍来运行库中的每个算法。
- 平台。如果您正在对平台进行程序化,那么请考虑为应用机器学习过程中的每个步骤创建秘籍,以及完成端对端案例研究,以展示子任务如何组合在一起。
您可以对机器学习工具进行程序化
你不需要成为程序员。您可以对不需要任何编程的工具进行程序化,例如 WEKA 机器学习工作台,它提供图形用户界面和命令行界面。
您无需成为该工具的专家。您可以研究在应用机器学习过程的任务中使用工具的特定功能需要了解的内容。您只需要在需要时学习所需内容。
你不需要成为机器学习专家。您可能会遇到您不完全理解的模型和技术。这很好,它扩大了你的曝光率。您仍然可以程序化如何使用这些功能。通过这样做,您将对这些技术可以提供的结果类型有实际的了解。您也可以在以后更详细地研究它们。
你不需要成为作家。使用点数并创建可以遵循的逐步秘籍。对于编程库,创建一个可以复制和粘贴的完整代码示例。
摘要
在这篇文章中,您通过为应用机器学习过程的任务创建过程,了解了如何充分利用机器学习工具。
该工具的过程可用于您的项目,以最好地使用该工具满足您的需求。它们还可以用作未来启动新项目的指南。
程序化机器学习工具的过程分为 5 个快速步骤:
- 选择要进行程序化的工具。
- 在与工具相关的应用机器学习过程中布置任务。
- 将工具的功能映射到应用机器学习项目过程中的任务。
- 研究工具的每个映射功能并学习如何使用它。
- 为工具的每个映射功能创建一个过程,您可以使用该过程快速获得结果。
你的下一步
您的下一步是对机器学习工具进行程序化。
- 选择要进行程序化的工具。
- 使用上述过程创建过程,即使它是针对一个任务。
- 分享你的结果,我很想知道你的想法。
你对这个过程有任何疑问吗?给我发电子邮件或发表评论。
程序员可以入门机器学习
原文:
machinelearningmastery.com/programmers-can-get-into-machine-learning/
在这篇文章中,我想向您展示程序员可以进入机器学习。
我将向您展示学习机器学习就像学习任何其他高科技一样。
我们首先将学习机器学习与学习编程进行比较,这可能是一个更大的挑战。
图像许可 iwannt 保留一些权利
设计师想要编码
一位年轻的网页设计师说,假装你是一名设计师。你可以在 Photoshop 或其他东西中进行网页设计,也可以剪掉设计并将它们变成 CSS。你徘徊在程序员身边,也许你有一点编码嫉妒。您认为您可能想学习如何编码。无论是对还是错,你认为 CSS 和 HTML 都是“实际编码”,它都是创造性的表达,编程只是你创造力的另一种媒介或出路。
你跳过 Quora 或 StackOverflow 并问一个类似“_ 我是设计师的问题,我怎样才能学习如何编码?_ “
你会得到遍布地图的答案。你看似经验丰富,专家程序员给你免费的建议,如“学习 ANSI C 和指针”,“学习二进制”,“买一本关于 ASM 的书”,“从 LISP 开始”。也许一位有说服力的沟通者会写下一篇长篇且令人信服的答复,你真的应该购买并阅读 Knuth 的计算机编程艺术,Vols。 1-3(第 1-3 卷)(友情链接)。你接受他的建议,在亚马逊上购买书籍,然后在介绍购买之前获得介绍,讨厌自己不够聪明,放弃学习编码的兴趣,只在 3 个月内重复相同的循环。
发生了什么?建议似乎是一个很好的建议。
问题是建议是回顾性的。建议来自程序员思考他们的技巧以及已经是程序员的人如何能够成为更好的程序员。建议不考虑绝对的初学者,一个感兴趣的业余爱好者想要趾高气扬地看看他们是否想去游泳。
现在我同意,现在世界有点不同了。这个问题已经确定,并且有很好的服务可以解决这个问题,即教人们如何编码。
当然,也许我们学习指针,二进制,ASM 和 LISP,甚至读取 Knuth 的部分(没有人真正读到封面以覆盖正确吗?),但后来才出现。但是你是怎么开始的?我开始一起黑客攻击,尝试,尝试,创造和学习。我后来深入研究技术细节,因为我想创建更大,更好,更强大的程序。我没有从技术细节入手。我认为这种体验对于很多程序员来说可能是相似的,对你来说这样吗?发表评论。
程序员想要做机器学习
现在,如果您正在阅读本文,那么您可能是程序员或某种开发人员。想想您对机器学习的兴趣。您是否看过经验丰富的专业机器学习器的一些回复,为您提供有关如何入门的免费建议?
我一直在寻找和阅读这个建议,有些是好的,其中很多都没有。我在下面收集了一些样本:
- _ 你绝对需要熟悉基本线性代数(操纵向量和矩阵)以及使用对数和指数函数。_
- _ 如果你想让事情变得“容易”,你需要通过特征向量来了解线性代数。_
- _ 你确实想要熟悉概率,线性代数,线性规划和多变量微积分。_
- _ 首先,你需要一个体面的 CS /数学背景。 ML 是一个高级主题,因此大多数教科书都假设您具有该背景。_
- _ 统计,概率,分布式计算和统计。_
那里有一些非常好的建议,但这个建议是否适合绝对的初学者?程序员是否适合将他们的脚趾浸入水中测试温度?
也许人们会问错误的问题。此外,我已经挑选了一些答案,这些答案表明在开始机器学习之前需要数学。我想说的是,初学者将专注于他们没有的东西以及他们不能做的事情。他们甚至可能在尝试之前就放弃了。
我完全同意,对线性代数和概率的强烈掌握将为进入机器学习提供良好的基础。我完全同意统计学习要素(友情链接)是一本关于多层次的大书。我只是不认为对机器学习感兴趣的程序员应该做的第一步是参加数学课程或阅读该领域的密集理论处理。我实际上强烈建议反对它。
两个机器学习领域
机器学习有两个方面:
- **实用机器学习:**这是关于查询数据库,清理数据,编写脚本以转换数据以及将算法和库粘合在一起以及编写自定义代码以从数据中压缩可靠答案以满足困难和错误定义的问题。这是现实的混乱。
- 理论机器学习:这是关于数学和抽象和理想化的场景,限制和美观,并告知可能的。这是一个整洁,整洁,从现实的混乱中删除。
没有理论方面,实际方面不能有框架和严谨。没有实践方面,理论方面没有意义或动机。这种二分法是错误的,它确实是一个工具和方程式的海洋,但留在我身边。
作为一名程序员,你可能对实际方面有所偏爱,但你将作为“技术人员”达到极限,并且需要理解理论方面才能有效地即兴创作。你必须阅读算法的数学处理,你必须通过密集的教科书。这就是在该领域做得好的原因。问题是,这是从业者向初学者自由提出的建议,这是理想化的,适合中间人,对初学者不合适。
程序员喜欢 Power Tools
我认为对于有经验的程序员来说,将机器学习视为高级编程主题(如线程)(现在留在我身边)是很有用的。
如果你想进入线程,你只需编写一些多线程程序,并了解它可以释放的功能。你犯了各种各样的错误,但是你制作原型的一些东西可以让你看到可能的东西。如果您认为这适合您,您可以阅读书籍并深入了解。
您可以使用现有多线程构造的库,您可以自己编写,您可以深入了解各种线程构造背后的一些更多数学主题。您让您的兴趣驱动您学习,最终您可以可靠地构建和部署生产多线程代码。这是一个过程,而不是一个步骤变化。
显而易见,机器学习是一个更大,更多样化的领域,但是我提倡的一般步骤策略将在未来的帖子中详细说明。
你不是从初学者到运营团队,而是将机器学习系统投入生产。危险区域是真实的。你可以而且将会学到足够的危险。但是,通过掌握编程机器(也是代码审查,同行和导师以及常识)的过程中学到的自律能够限制那些非常真实的危险。
就像学习编程一样,学习机器学习是一个学习不会结束的旅程,掌握真正意味着持续教育。如果你感兴趣的话,学会阅读方程式,将它们变成代码,并编写自己的方法以构建你的问题可能是一路上的休息。
资源
如果您想深入思考这个问题,我已经列出了一些资源。它有点深,我相信我们可以产生一些很好的讨论。
- 向上滚动并阅读上面列出的 StackOverflow 问题的一些答案。有些答案会阻止程序员,除非他们知道数学,但还有其他非常令人鼓舞的答案会真正让你振作起来。
- 为什么成为一名数据科学家可能比你想象的更容易一篇 Gigaom 帖子指的是分析性倾向(如程序员)在数据科学中从零开始并迅速成为具有国际竞争力的一般机会的案例研究。
- 编程需要数学吗? 有趣的是,我认为支持和反对的论据是非常相关的,也是一个有用的观点。
这是一篇非常有用的帖子,我对你的想法非常感兴趣。与朋友讨论这个问题,我确实听到了很多关于“技术员”机器学习学徒的危险区域和进展选项。我将在以后的帖子中跟进这两个主题。
你怎么看?在学习编程和程序员学习机器学习之间,我提出的相似性是否有实质内容?
程序员应该入门机器学习
原文:
machinelearningmastery.com/programmers-should-get-into-machine-learning/
程序员应该参与机器学习领域,因为他们具有独特的技能,可以做出巨大的贡献。
在这篇文章中,您将了解到作为一名程序员,您很容易忽视您的技能并高估您不了解的内容。您将了解程序员几乎立即开始在机器学习领域产生影响的四个机会。
专业发展实践
专业软件开发(或软件工程,如果你喜欢这个术语)的学科是关于如何设计,实现和维护解决问题的可靠软件系统。您作为开发人员的技能很有价值,您可以将它们应用到机器学习领域。
这里有些例子:
- 结构:开发软件时,可以构建项目。例如,有一个源代码目录,一个用于资产,一个用于文档,如果您使用的是编译语言,则您有一个二进制文件目录。为软件开发项目使用定义良好的结构是一种最佳实践,它引入了支持协作的分离和一致性。项目中的任何人都知道在哪里为项目做出贡献,并且当跨项目采用相同的约定时,组织中的任何人都可以快速浏览项目。
- 自动化:在软件项目中,您使用构建系统来自动执行项目的常见任务。无论您使用的是 Make,Ant,Rake 还是任何类似的构建系统,都可以自然地将常见的开发任务放在一起,将它们作为可以重复突发的目标,并组织成具有越来越大的杠杆作用的层次结构。
- 可重复性:应用于项目的基于约定的结构以及使用构建系统实现的自动化允许给定项目中的任务 100%可重复。任何人都可以检查项目并构建它。任何人都可以关注发布过程并构建二进制文件或部署网站更新。在开发软件系统时,可重复性是默认设置。
- 可测试性:一个类有一个责任,一个函数做一件事。简化系统可以创建可以测试的小型模块化代码。您编写自动化测试作为质量控制的衡量标准,以明确地证明代码执行其设计目的并检测您在进行更改时引入的任何回归。
- 可维护性:上述行为导致了专业软件开发中可维护性最重要的因素之一。一个成功完成的软件项目将花费大部分时间用于维护。开发只是软件整体寿命的一小部分,维护是常态。我们通过使软件结构化,自动化,可重复和可测试来使软件可维护。
照片归 xJason.Rogersx ,保留一些权利
这些专业软件开发实践可以带到机器学习领域。它们可以在机器学习项目的早期阶段发挥最大作用。三个例子包括:
- 当数据从原始源导出为适合给定学习方法的形式时。该过程可以是自动化和可重复的,并且导出的数据存储在与原始源分开的目录结构中。
- 当测试不同的机器学习方法时,看哪个是最适合该问题的。方法的测试可以是自动化的,因此结果是可重复的,并且如果在测试协议中发现(何时)错误,则可以重复。
- 选择并实现方法以解决复杂问题时。它可以根据问题进行定制,并实现为可测试和记录良好,以确保其满足项目的更广泛要求,包括非功能性要求,如表现验收标准和算法准确率。
生产水平实现
一种新颖的机器学习方法通常由机器学习研究人员或研究人员团队提出。新颖方法通常用算法的原型或演示实现来呈现。
问题是代码是由研究人员编写的,他们可能会或可能不会接受软件开发学科的训练。然而,实现的目标是提供该方法的工作原型。
如果企业或其他组织希望利用其中一种电动工具,他们的选择是有限的。他们可能决定在他们的生产系统中调整和运行原型代码。研究代码通常在没有明显许可的情况下发布,或者有时是许可的开源许可。为了演示目的,代码将被编写以解决玩具问题,并且系统的编程质量可能是变化的,尽管在某些情况下可能仅足以证明概念证明。
唯一真正的选择是使用良好的软件工程实践重新实现该方法。开发人员有机会实现需求强大的机器学习方法的生产级实现。除了获得这方面的工作之外,您还可以开发生产质量的软件工具,库和 API,组织可以使用它们来解决他们的问题。
得到消息
机器学习方法以研究语言呈现,例如干研究论文,学术报告,专着,讲座和教科书。有些电动工具可以远离主流软件开发,甚至主流应用机器学习。这是事实。从研究到运营的有用方法的迁移可能需要数十年的时间。
对于了解某些机器学习的程序员来说,有机会了解哪些方法有效,并有助于宣传。您必须学习足够的知识才能识别这些宝石,并有想象力来考虑这些方法在商业或在线应用的位置,并且能够沟通甚至实现这些想法。你甚至不需要成为开发人员来接受这个。
将机器学习应用于应用程序
作为程序员,您已经知道如何为用户创建应用程序。它们可能是网络,移动或桌面上的应用程序,甚至是更具异国情调的东西。也许像你这样的程序员最大的机会是将机器学习方法放在你正在开发的应用程序中。
这并不像你最初认为的那么大和可怕。请记住,机器学习方法可以解决特定的决策问题。结合机器学习意味着识别应用程序中的复杂问题,可以通过机器学习适当地解决,或者更有可能围绕合适的问题构建应用程序。这也意味着您需要学习足够的机器学习才能实现这一目标,但您已经开始了这一过程。
在这篇文章中,您了解到程序员应该进入机器学习,因为程序员具有独特的技能,可以做出巨大的贡献。程序员可以对机器学习领域做出的贡献包括:
- 将专业软件开发实践引入机器学习项目。
- 构建机器学习方法的生产级实现。
- 了解新颖的机器学习方法
- 将机器学习方法应用于应用程序
在实验和测试机器学习算法时,您认为哪些软件开发实践可以产生重大影响?发表评论。
项目聚焦:Shashank Singh 的人脸识别
原文:
machinelearningmastery.com/project-spotlight-face-recognition-with-shashank-singh/
Shashank Singh 是程序员和机器学习爱好者,这是一个项目聚焦。
你能介绍一下自己吗?
我做过计算机科学技术学士学位。我在 23 岁的时候共同创立了一家创业公司,在 26 岁生日时大获成功。在那之后,我感觉特别低,很长一段时间都没有灵感。
Shashank Singh
我搬到印度孟买加入田园软件,我接触了那些对生活有如此不同观点的神奇人物,并创建了一个名为“喝咖啡休息”的问题解决者的小型非正式聚会。
当我看到两个孩子在我经常去的酒吧外面乞讨食物时,对我来说生活改变的时刻就在眼前。我知道我想以任何方式帮助这些孩子。这启动了一个思考过程,导致了我的项目 Helping Faceless 。
你的项目叫什么,它做了什么?
Helping Faceless 项目(和 Android 应用程序)正试图通过使用最先进的人脸识别和数据分析来打击贩卖儿童的行为。
儿童乞丐
你是怎么开始的?
我们从一个简单的 Ruby on Rails API 服务器开始,接受来自应用程序和其他来源的信息。我们一直在缓慢但稳定地增加这个简单服务器的复杂性,以创建更多功能。
为了保持日益复杂的检查,我们使用面向服务的架构,整个系统被分解为更小的模块化应用程序,在线上相互连接。所以最后我们使用最适合手头任务的语言或框架。
帮助匿名应用程序
我们目前的技术栈如下:
- 服务器端:Ruby on Rails
- 客户端:适用于 Android 的 Java,适用于 IOS 的 Objective C,适用于 NGO 的 Web 前端
- 分析:Python(Scipy / Pandas / Numpy / scipy.stats FTW !!)。我们正在整合 Apache Storm 和 Apache Mahout 进行分析和后续报告生成。
我们使用 Heroku , Linode 作为 VPS。 Airbrake 的家伙们很棒,他们帮助我们提供了一个更强大的免费帐户来捕捉错误和错误。此外,我们还使用 Heap Analytics 来根据流量来确定服务使用情况。
对于面部识别需求,我们使用密歇根大学的名为 OpenBR (Open Biometrics)的库。它的模块化设计使其更容易放入我们的管道中(参见 2013 年论文开源生物识别)。这种模块化设计使其具有优于 OpenCV 的独特优势,同时使实验变得非常简单。
如果你想帮助我们我们的代码是可以在 Github 上找到,只需分叉并开始编码
你做了哪些有趣的发现?
人脸识别在电视节目中几乎听起来很神奇,但实际上除非你像 Facebook 这样的科技巨头,否则它几乎很糟糕。
我们通过建立类似于油井制造工艺的流程来规避这种高错误率。到达我们系统的每一段智能都经过验证,然后转化为可理解的块或组。
照片进入一个单独的管道,彼此匹配,以创建一个巨大的相似性矩阵。然后我们采用前 20%的相似性得分图像并通过我们的众包部分运行它们以供人们验证我们的假设,这消除了误报并为我们提供了更原始的数据点,然后通过更好的第三方人脸识别算法进一步筛选。
此外,我们正在使用 Apache Mahout 建立关于此数据的高级报告和情报系统。
你想在项目上做什么?
错误
- 面部识别阶段的错误检测率较低,我们正在关注你的 Facebook(参见 Facebook 出版物 DeepFace:在面部验证中关闭人类绩效)
- 更好的性别和年龄检测。
特色
理想的愿望清单如此之大,我们不得不修剪它以适应现实的时间表,但这些是我很想拥有的东西。
- 承诺的游戏化和基于贡献的频率。
- App 侧面识别。
- 儿童失踪时的实时警报。
愿景
- 把它带到全国乃至菲律宾等东南亚国家。
- 人口贩运:目前我们用于人脸识别的模型仅在 10-20 岁的时候进行了训练,我们希望通过增加训练数据来扩展它。
- 为非政府组织和政府组织建立一个安全共享数据的平台。
我们的幻灯片让我们更好地了解了我们的愿景和目标:帮助无脸滑板
学到更多
- App:
bit.ly/HelpingFacelessMInterview
- Facebook:
www.facebook.com/helpingfaceless
- Twitter:
www.twitter.com/helpingfaceless
- 网站:
www.helpingfaceless.com
你有机器学习方面的项目吗?
如果你有一个有趣的机器学习方面的项目,并有兴趣像 Shashank 一样被描述,请与我联系。
项目聚焦:将 Mahout 和 Konstantin Slisenko 用于 StackExchange 聚类
这是一个项目聚焦,Konstantin Slisenko 是程序员和机器学习爱好者。
你能介绍一下自己吗?
我的名字是 Konstantin Slisenko,我来自白俄罗斯。我毕业于白俄罗斯国立信息学和无线电电子学。我目前正在修读硕士课程。
Konstantin Slisenko
我是一名 Java 开发人员,在 JazzTeam 公司工作。我喜欢学习新技术。我目前对大数据和机器学习很感兴趣。我喜欢参加会议,结识新的有趣的人。我也喜欢旅行和骑自行车。
你的项目叫什么,它做了什么?
我的项目是 stackoverflow.com 网站的数据集群。
目标是对 stackoverflow 问题和答案进行分组。分组后,您可以看到栈溢出数据的常见图片以及问题之间的关系。如果您想进行市场调查或撰写有关特定问题的文章(或活动手册),这可能会有所帮助。
使用 Mahout 标记进行 Stackexchange 聚类
我有改进的想法,例如标记“热门”主题,考虑用户评级等,以便将更多数据添加到公共图片中。我也在考虑训练分类器。当我们获得更新数据并希望将此更新放入系统时,这可能会有所帮助。
你是怎么开始的?
首先,我对 Apache Hadoop 产生了兴趣。在我制作了一些 Hadoop 程序之后,我开始研究它的基础架构并了解 Apache Mahout 。
我开始深入研究并应用一些示例:准备数据,运行算法,查看输出。有一天,我发现了 Frank Scholten 关于 stackoverflow 聚类的资料。你可以观看他的有趣演示。 Mahout in Action 也提到了这个话题。
我现在使用 Frank 的代码作为基础并应用我自己的改进和调整。数据处理包括以下步骤:
- Stackexchange 源数据采用 XML 格式。 Hadoop 作业用于提取文本。
- 然后我使用自定义 Lucene 分析器处理文本数据:删除停用词,应用 Porter Steamer 等。
- 然后我使用 TF-IDF Mahout 实用程序对文本进行向量化。
- 对于聚类,我现在使用 Mahout 的 K-Means 算法,但我想在将来尝试其他算法。
- 在此之后,我将结果存储在面向图形的数据库 Neo4j 中,并使用 HTML 和 JavaScript 对它们进行可视化。
所有可视化都可以在这里找到:使用 Mahout 进行 Stackexchange 聚类。
你做了哪些有趣的发现?
群集质量取决于您执行数据准备的方式。在此步骤中,您必须非常注意应删除的停用词。
使用 Konstantin Slisenko 的 Mahout StackExchange 群集
K-Means 聚类算法要求您设置聚类 K 的初始数量。我想动态地进行 K 计算。出于这个原因,我打算找到另一种算法。
你想在项目上做什么?
- 使用发布日期来确定现在“热门”的主题。
- 尝试其他一些聚类算法,并动态计算簇数。
- 基于集群数据构建分类器。
- 应用更多不同的可视化。
- 应用群集评估来说明哪些群集“好”哪些群集“坏”。
- 对群集数据应用一些索引搜索。
- 我正在考虑 Apache Mahout 贡献 - 提供可视化集群数据的实用程序。
学到更多
- 项目:使用 Mahout 进行 Stackexchange 聚类
- GitHub 上的项目源代码
- 康斯坦丁在 Google+ 上分享了机器学习和大数据资源的有趣链接
- 康斯坦丁的博客
感谢康斯坦丁。
你有机器学习方面的项目吗?
如果你有一个有趣的机器学习方项目并且有兴趣像康斯坦丁一样被描述,请联系我。
机器学习自学指南
原文:
machinelearningmastery.com/self-study-guide-to-machine-learning/
你可以做很多关于机器学习的事情。
您可以使用书籍和课程等资源,可以输入的比赛和可以使用的工具。
在这篇文章中,我想在这些活动中加入一些结构,并建议在从程序员到机器学习大师的旅途中解决什么问题。
四级机器学习
考虑机器学习的四个级别的能力。这是一个模型,可以帮助我们思考可用的资源和活动,以及何时可以解决它们的好时机。
- 初学者
- 初学者
- 中间
- 高级
我想在这里将初学者与新手分开,因为我想表明绝对的初学者(对该领域感兴趣的程序员)如果他们选择的话,他们之前就有一条路径。
我们将浏览这四个级别中的每一个级别,并查看可以帮助某个级别的人学习更多知识和技能水平的资源和活动。
细分只是一个建议,很可能在某个级别之前或之后的某个活动或资源在细分的给定级别上非常有用和适当。
我认为整体结构很有用,我很想听听你的想法,在下面留下你的想法。
记入 pugetsoundphotowalks ,保留一些权利
初学者
初学者是对机器学习感兴趣的程序员。他们可能已经开始阅读一本书,维基百科页面,或者在课程中学习了一些课程,但他们并没有真正“_ 得到它 _”。他们感到沮丧,因为他们得到的建议是中间体和高级水平。
初学者需要一个温和的介绍。远离代码和教科书和课程。他们需要首先指出的原因和最新情况,为新手级材料奠定基础。
绝对初学者的一些活动和资源是:
- 书籍介绍:阅读有关程序员的良好机器学习和数据挖掘书籍的介绍,如黑客机器学习(会员链接),编程集体智慧(会员链接)和数据挖掘:实用机器学习工具和技术(会员链接)。这些是适合初学者的好书,你可以在帖子最佳机器学习资源入门中阅读更多相关内容。
- 概述视频:观看演示文稿,向外行观众概述机器学习。一些例子包括:采访 Tom Mitchell 和 Peter Norvig 关于大数据 Facebook Tech Talk 。
- 与人们交谈:询问他们是如何在这个领域开始的,他们为初学者推荐了什么资源,他们对这个领域感到兴奋。
初学者
新手与机器学习领域有过一些联系。他们读了一本书或上了一门课。他们知道他们感兴趣,他们想知道更多。他们开始得到它,并希望开始完成任务。
新手需要做点什么。他们需要付诸行动,使材料扎根并融入现有的知识结构,如他们所熟悉的编程语言或他们习惯解决的问题。
新手的一些活动和资源是:
- 完成课程:学习并完成斯坦福机器学习课程。记下大量笔记,尽可能完成作业,提出很多问题。
- 阅读一些书籍:不是教科书,而是上面列出的那些针对初学者程序员的友好书籍。
- 学习工具:学习驾驶像 Scikit-Learn , WEKA , R 等类似的工具或库。具体来说,了解如何使用您在书籍或课程中阅读或了解的算法。看到它在行动,并习惯在学习它们时尝试。
- 写一些代码:实现一个更简单的算法,如感知机,k 近邻或线性回归。编写一些程序来揭开方法的神秘面纱,并学习使其发挥作用所需的所有微观决策。
- 完整教程:关注并完成教程。开始构建一个包含数据集,脚本甚至源代码的小项目目录,您可以回顾,阅读和思考。
中间
新手已阅读一些书籍并完成了一些课程。他们知道如何驱动一些工具并编写了一堆代码来实现简单的算法和完成教程。一个中间人正在自己爆发,设计自己的项目来学习新技术,并与更大的社区进行互动和学习。
中级正在学习如何准确,有效和稳健地实现和运用算法。他们还建立了预先花费大量时间处理数据,清理,总结和思考可以回答的问题类型的技能。
中间体的一些活动和资源是:
- 小型项目:设计小型编程项目和实验,可以使用机器学习来解决问题。这就像设计和执行您自己的教程一样,以探索您感兴趣的技术。您可以实现算法或链接到提供算法的库。 了解有关小型项目的更多信息。
- 数据分析:习惯于探索和总结数据集。自动化报告,了解何时使用哪些工具,并查找可以探索,清理的数据,以及可以练习技术和交流有趣内容的数据。
- 阅读教科书:阅读并内化有关机器学习的教科书。这可能需要技能来熟悉技术的数学描述并承认描述问题类和算法的形式。
- Write Plugins :为开源机器学习平台和库编写插件和软件包。这是学习如何编写健壮的生产级算法实现的练习。在项目中使用您自己的插件,请求社区进行代码审查,并尽可能将代码包含在平台中。获得反馈和学习是我们的目标。
- 比赛:参加机器学习比赛,例如与会议相关或在 Kaggle 等平台上提供的比赛。参与讨论,提出问题,了解其他从业者如何处理问题。添加到您可以绘制的项目,方法和代码的存储库中。
高级
一位高级从业者编写了大量代码,既可以集成机器学习算法,也可以自己实现算法。他们可能参加过比赛或书面插件。他们阅读了教科书,完成了课程,对该领域有广泛的了解,并对他们喜欢的一些关键技术有深入的了解。
高级从业者构建,部署和维护使用机器学习的生产系统。他们随时了解各个领域的新发展,并急切地寻找并了解一种方法的细微差别以及从其他前线从业者那里传来的技巧。
高级从业者的一些活动和资源是:
- 自定义算法:修改算法以满足他们的需求,这可能涉及实现类似问题域的会议和期刊论文中概述的自定义。
- 新算法:设计基于底层形式的全新方法,以应对他们遇到的挑战。它更多的是关于获得最佳结果而不是推进该领域的前沿。
- 案例研究:阅读甚至重新创建机器学习竞赛和其他从业者完成的案例研究。这些“我是如何做的”论文和帖子通常充满了数据准备,特征工程和技术使用的微妙专业技巧。
- 方法论:流程的系统化,无论是正式的还是为自己的。他们有办法解决问题并在此时获得结果,他们正在积极寻找方法,通过提示,最佳实践和新的更好的技术进一步完善和改进流程。
- 研究:参加会议,阅读研究论文和专着,与该领域的专家进行对话。他们可能会写下他们的一些作品并将其提交出版,或者只是将其放入博客文章中并重新开始工作。
掌握是连续的,学习不会结束。人们可以在这个旅程中的任何一点暂停和绕行,成为“_ 竞争家伙 ”或“ 专业库家伙 _”。事实上,我希望这种弯路成为常态。
这种细分可以看作技术人员从初级到高级的线性路径,它是故意以程序员为中心的。我很想听到对这种阅读的批评,这样我才能做得更好。如果您发现自己在特定级别渴望更多,那么这个细分只是我对要解决的活动类型的建议。
那你是什么级别,接下来要做什么? 发表评论!
UPDATE :继续关于 Reddit 的讨论。
4 个自学机器学习项目
原文:
machinelearningmastery.com/self-study-machine-learning-projects/
机器学习领域有很多途径,大部分都是从理论开始的。
如果您是程序员,那么您已经拥有技能,可以将问题分解为组成部分,并为小型项目制作原型,以便学习新技术,库和方法。这些是任何专业程序员的重要技能,今天这些技能可用于开始机器学习。
这些是任何专业程序员的重要技能,今天这些技能可用于开始机器学习。
自学
摄影: gfairchild ,保留一些权利
你必须学会理论才能在机器学习中发挥作用,但你可以利用自己的兴趣和对知识的渴求来激励你从工作实例到算法的数学理解。
在这篇文章中,您将学习程序员可以遵循的四种策略来开始机器学习。这是技术人员的路径,这是实用和经验性的,需要您进行研究和完成实验,以建立自己的直觉。
四种策略是:
- 学习机器学习工具
- 研究机器学习数据集
- 研究机器学习算法
- 实现机器学习算法
仔细阅读这些策略并选择一个最适合您的策略,然后放弃执行。
1.学习机器学习工具
选择您喜欢的工具或库,并学习如何使用它。
我建议您从一个提供数据准备工具,机器学习算法和结果表示的环境开始。学习这样的环境可以让您熟悉端到端的机器学习过程,这对您来说比学习特定的数据准备技术或机器学习算法更有价值。
或者,也许您对一系列技术的特定技术感兴趣。您可以将此作为深入了解提供这些方法的库或工具的机会,并通过掌握提供该技术访问权限的库来掌握该技术。
学习机器学习工具
摄影: zzpza ,保留一些权利
您可以遵循此策略的一些策略是:
- 比较和对比您可以选择的候选工具。
- 总结所选工具的功能。
- 阅读并总结该工具的文档。
- 该工具的完整文本或视频教程,并总结了您完成的每个教程的关键学习要点。
- 为该工具的功能或功能创建教程。选择您不太了解的内容并创建编写获取结果的过程或录制有关如何使用该功能的 5 分钟截屏视频。
您应该考虑的一些环境包括: R , Weka , scikit-learn ,华夫饼和橙。
2.研究机器学习数据集
选择一个数据集并密切了解它,并发现哪个算法类或类型最适合它。
我建议你选择适合内存的适度大小的数据集,以前可能已经进行了很好的研究。有很多优秀的数据源库供您浏览和选择。您的目标是了解数据源所代表的基本问题,数据集中的结构以及最适合该问题的解决方案类型。
使用机器学习或统计环境来研究数据集。这将使您能够专注于您想要回答的有关数据集的问题,而不是分心学习给定技术并学习如何在代码中实现它。
研究机器学习数据集
照 abhidg ,保留一些权利
一些可以帮助您研究实验机器学习数据集的策略是:
- 清楚地描述数据集所代表的问题。
- 使用描述性统计量汇总数据。
- 描述您在数据中观察到的结构,并假设数据中的关系。
- 现场测试数据集上的一些流行的机器学习算法,并发现哪个通用类比其他类更好
- 调整运行良好的算法并发现在问题上表现良好的算法和算法配置
您可能要考虑的一些高质量数据集存储库是: UCI ML 存储库, Kaggle 和 data.gov 。
3.研究机器学习算法
选择一种算法并密切理解它,并发现在不同数据集中稳定的参数配置。
我建议你从一个适度复杂的算法开始。选择一个很好理解的算法,有许多开源实现供您选择,并且您可以使用很少的参数进行探索。您的目标是建立算法如何在一系列问题和参数配置中执行的直觉。
使用机器学习环境或库。这将使您能够专注于算法的行为作为“系统”,而不是关注自己的规范数学描述和参考文献。
学习机器学习算法
照片由不受人才阻碍,保留一些权利
在研究您选择的机器学习算法时,您可以使用的一些策略是:
- 总结系统的参数及其对算法的预期影响。
- 选择适合算法的一系列可能引发不同行为的数据集。
- 选择您认为会从系统中获取不同行为的算法参数配置,并列出您可能期望从系统中获得的行为。
- 考虑算法的行为,当算法在算法更新过程的迭代或其他时间间隔上运行时,可以监视该算法的行为。
- 使用数据集,算法配置和行为度量的一个或多个组合设计小型实验,以回答特定问题并报告结果。
您的学习可以像您一样简单或复杂。在高端,您可以探索所谓的启发式或经验法则,以应用算法并凭经验证明它们是否具有优点,如果是,在什么情况下它们与成功结果相关联。
您可能考虑开始的一些算法包括:最小二乘线性回归,逻辑回归,k-最近邻分类,感知机
4.实现机器学习算法
选择算法并将现有实现实现或移植到您选择的语言。
选择要实现的适度复杂度的算法。我建议对要实现的算法进行一些详细的研究,或者选择您喜欢的实现并将其移植到您选择的目标编程语言。
从零开始实现算法是了解在将算法描述转换为功能系统时必须做出的无数微决策的好方法。通过使用多种算法重复此过程,您将很快获得如何阅读研究论文和书籍中算法的数学描述的直觉。
实现机器学习算法
照 Nic 的事件,保留一些权利
从零开始实现机器学习算法可能有助于您的五种策略是:
- 从移植开始。将开源算法实现从一种语言移植到另一种语言将教会您如何实现算法并使其成为您自己的算法。这是最快的入门方式,强烈推荐。
- 选择一个算法描述来处理并收集其他算法描述以支持您消除主要参考资料的歧义
- 不要害怕与算法作者,论文作者甚至算法实现作者联系,提出问题以帮助您消除对算法描述的理解。
- 阅读目标算法的大量实现。了解不同的程序员如何解释算法描述并将其转换为代码。
- 不要陷入先进的方法。许多机器学习算法在其核心中使用高级优化方法。除非这是项目的重点,否则不要尝试重新实现这些方法。使用提供优化算法的库或使用易于实现的简单优化算法(如梯度下降)或在库中可用。
小项目方法论
四种策略是我称之为“小项目”的方法。这是一种可以用来快速建立技术学习领域的实用技能的方法,如机器学习。一般的想法是,您可以针对要回答的特定问题的小项目进行设计和执行。
小项目在一些方面很小,以确保它们完成,并提取学习优势并进入下一个项目。以下是您应考虑对项目施加的限制:
- 时间不多:项目从开始到结果呈现时间不应超过 5-15 小时。这将允许您在一周的夜晚和周末时间完成一个小项目,远离您的 9-5 工作。
- 范围小:一个项目应该解决你感兴趣的问题的最窄版本,并且仍然有意义。例如,在一般情况下,不是解决问题“写一个会告诉我推文是否会被转发的程序”,而是针对给定时间段内的特定 Twitter 帐户解决问题。
- 资源不足:项目应该可以在桌面或笔记本电脑上通过互联网连接完成。您不应该需要异国情调的软件,Web 基础结构或第三方数据或服务。收集您需要提交的数据,将其加载到内存中并使用开源工具攻击您的狭隘问题。
其他项目提示
这些策略的原则是采取行动并利用您的程序员技能。以下三个提示可帮助您调整思路以采取行动:
- 写下你学到的东西。我建议您为每一步采取切实的工作成果。这可能是期刊,推文,博客文章或开源项目中的注释。每个工作产品都充当锚点和里程碑。
- 除非这是项目的目的,否则不要编写代码。这个提示并不明显,但在加速您对机器学习的理解方面可能是最大的。
- 目标是让你学习一些不创造独特资源的东西。没有人会阅读您的算法或教程或算法注释,暂时忽略它。它们是您的观点和您的工作产品,以证明您现在知道某些事情。
摘要
这里是尺寸策略,每个都有一个明确的单行,以帮助您选择适合您的。
- 研究机器学习工具:选择您喜欢的工具或库,并学习如何使用它。
- 研究机器学习数据集:选择一个数据集并密切了解它,并发现哪个算法类或类型最适合它。
- 研究机器学习算法:选择一种算法并对其进行密切理解,并发现在不同数据集中稳定的参数配置。
- 实现机器学习算法:选择算法并将现有实现实现或移植到您选择的语言。
选一个!
您会选择哪种策略以及您的第一步是什么?选择一个并在下面的评论中声明您的意图。
AlvaroLemos 如何在数据科学团队中获得机器学习实习
原文:
machinelearningmastery.com/student-got-machine-learning-internship-job-data-science-team/
学生和开发人员如何开始应用机器学习的故事是一个灵感。
在这篇文章中,您将听到ÁlvaroLemos 的故事以及他从学生到机器学习实习的过渡。包含:
- 对遗传算法的兴趣如何导致神经网络的发现和更广泛的机器学习领域。
- 基于教程的博客文章和书籍如何帮助通过数据科学团队的机器学习实习测试
让我们开始吧。
- 2017 年 2 月更新:关于Álvaro 实习的更正。
学生如何使用教程在数据科学团队中获得机器学习实习
问:你能分享一下自己吗?
我来自巴西巴伊亚州萨尔瓦多,但目前我住在贝纳奥里藏特,米纳斯吉拉斯(也在巴西)。
我正在米纳斯吉拉斯联邦大学学习电气工程,从我的本科课程开始,我就以某种方式参与了软件开发。
在我作为新生的第一周,我加入了一个名为 LabCOM 的研究小组来帮助一位同事进行硕士学位项目。他希望建立一个自我管理的交通工程系统,在该系统中,网络运营和维护可以高效地进行,无需人工干预。它建立在网络模拟器之上,我被分配到一个模块来测量一些网络参数。
之后,我一直在做与软件开发相关的事情,比如在我大学维护 Linux 服务器,在 Code School,Codecademy 和 Coursera 这样的网站上做了一堆网络开发课程,一年前我得到了我的第一份实习工作。一家大型软件公司。
这是一次了不起的经历,因为我可以使用最先进的技术,非常有经验的开发人员,我与他们学习了很多良好的实践和程序。
当我在那里完成一年的工作时,我收到了一份关于正在组建数据科学团队的另一家公司的建议,所以我决定接受这一点。
问:你是如何开始对机器学习感兴趣的?
好问题…
在我提到的研究小组的一次会议上,我第一次听说过它。
总而言之,我们使用遗传算法来获得一些结果,尽管它们相当不错,但它们的处理时间比我们处理的时间要长。
为了解决这个问题,一位同事建议用这些结果训练一个神经网络,因为一旦我们有一个训练有素的模型,它就会很快输出结果。
我是实现此解决方案的指定人员之一,但我对此一无所知,所以我用谷歌搜索了它。
当我意识到一个算法可以提供预期的输出而没有明确地编程这样做并且它通过模仿人类大脑来实现这一点时,我就像是“哇哇”,这就是魔术! “
问:你尝试过哪些书籍和课程?
当我决定学习机器学习时,我的第一个目标是在 Coursera 上启动约翰霍普金斯数据科学专业。
完成两门(十分之一!)课程后,我放手了。我当时并不是真的需要应用那些知识,我只是想学习机器学习,我觉得参加十门课程只是为了获得这些知识是非常压倒性的。我被其他事情分心了,忘记了。
一年之后,我决定再次尝试“学习机器学习”任务。我在 Coursera 上注册了着名的 Andrew Ng 的机器学习课程。这只是一个课程(而不是十个!),所以我认为这没关系。我非常喜欢他的课程,他知道如何以简单的方式解释复杂的东西。
我在那里取得了很快的进步,但在完成 60%后,我的第一次实习开始了,我开始利用业余时间学习我在那里使用的技术。然后我在大学的课程开始了,是的,我再也没有回到 Coursera 完成那门课程。
在下学期,我参加了我大学的“人工神经网络”课程。这是一次很好的经历,让我想起了 Andrew Ng 的方法,但是我离开那个班级的感觉一样,我仍然不知道机器学习不够,或者我不能说我知道它。
没有人告诉我,但我开始认为,为了说你可以申请机器学习,你必须做一些硕士学位课程,因为我看到很多学生这样做。
哦,我尝试的另一件事是从文章(研究论文)中学习。请不要这样做。 这是迄今为止我尝试过的最糟糕的方法。
也许我朴素,但是,有些老师鼓励你这样学习。我认为他们很高兴能找到符合你想要的技术和/或算法,但在制作一份简短的清单之后,请留下他们并开始谷歌搜索 YouTube 视频,博客文章和书籍。
问:ML Mastery 如何帮助您完成旅程?
这对我帮助很大。
当我听说机器学习实习机会时,我的工作做得很好。有一家公司,我已经听说过好事,所以我决定试一试。
他们在一周内给了我三次机器学习挑战,但是自从我上班和学习以来,我只有一个周末这样做。
- 第一个问题要求我们训练逻辑回归模型,以从具有四个特征的数据集中预测目标变量。我应该做一个探索性的数据分析,订购最相关的功能,估计错误并对测试数据集做一些预测。对于这个我能够使用我已经拥有的知识,只需要学习 Scikit Learn API。
- 第二个非常相似,但数据集严重不平衡,我不知道如何处理,所以我开始谷歌搜索,我找到你的博客。这对我很有帮助,因为我发现我可以使用其他指标而不是默认准确度,进行交叉验证,分层交叉验证,欠采样和过采样数据集,比较算法等。通过所有这些新信息,我创建了一个 Python 模块,会自动为我做这个并根据他们的 F1 分数对模型进行排名。
- 第三个是最具挑战性的。我应该在具有 128 个功能的分类数据集中找到最相关的功能。你的博客帖子也帮助了我。
我不能简单地向他们发送结果,我还必须写一份详细的报告,所以你的博客文章是基本的,因为它们帮助我很快填补了我的知识空白。
现在,在我的新工作中,你的书对我很有帮助,我们的经理为我们买了 Super Bundle
问:祝贺新工作!告诉我们一下吗?
谢谢!
该公司名为 Radix ,我刚加入数据科学团队。
当我到达那里时,我的第一个项目已经完成,但非常有趣。这是一个名为 Oil X!pert 的系统,它接收卡车,装载机和其他设备的油样作为输入,并输出零件的临界水平和诊断文本,如下图所示:
油 X!pert
现在我们在其他项目中使用数据驱动的方法来获得更好的解决方案。
具体来说,我目前正在研究的项目旨在找出热交换器上污垢沉积的根本原因。
问:读者如何与您联系?
- GitHub:
github.com/alvarolemos
- LinkedIn:
www.linkedin.com/in/alvarolemos
如何思考机器学习
机器学习是一个庞大的跨学科研究领域。
通过机器学习,您可以获得令人印象深刻的结果,并找到解决非常具有挑但这只是更广泛的机器学习领域的一个小角落,通常称为预测性建模或预测分析。
在这篇文章中,您将了解如何改变您对机器学习的看法,以便最好地为您作为机器学习从业者。
阅读这篇文章后,你会知道:
- 机器学习是什么以及它与人工智能和统计量的关系。
- 你应该关注的机器学习的角落。
- 如何考虑您的问题和机器学习解决方案的问题。
让我们开始吧。
如何看待机器学习
摄影: Rajarshi MITRA ,保留一些权利。
概观
这篇文章分为 3 部分;他们是:
- 你很困惑
- 什么是机器学习?
- 你的机器学习
你很困惑
你有一个机器学习问题要解决,但你对机器学习究竟是什么感到困惑。
有充分的理由感到困惑。这对初学者来说很困惑。
机器学习是一个很大的研究领域,如果你专注于解决问题,并不是所有这些都与你有关。
在这篇文章中,我希望能为你解决问题。
我们将从最广泛的术语描述机器学习开始,以及它与统计和人工智能等其他研究领域的关系。
之后,我们将放大您真正需要了解的实际工程和解决问题的机器学习方面。
什么是机器学习?
机器学习是计算机科学领域,涉及学习的程序。
机器学习领域涉及如何构建自动改进经验的计算机程序的问题。
- 机器学习,1997。
这是超级广泛的。
有许多类型的学习,许多类型的反馈可供学习,以及许多可以学习的东西。
这可以涵盖不同类型的学习,例如:
- 开发代码以研究生物种群在进化时间如何“学习”以适应其环境。
- 开发代码以研究大脑中的一个神经元如何“学习”以响应来自其他神经元的刺激。
- 开发代码来研究蚂蚁如何“学习”从家到食物源的最佳路径。
我故意提供这些深奥的例子,以帮助你真正确定机器学习是一个广泛而深远的研究计划。
您可能更熟悉的另一个案例是:
- 开发代码以研究如何“学习”历史数据中的模式。
这不那么迷人,但它是机器学习的一个小角落的基础,我们作为从业者非常感兴趣。
这个角落与其他例子没有区别;在学习方法,基本任务,评估学习方法等方面可能存在很多重叠。
人工智能怎么样?
机器学习是人工智能的一个子领域。
它与机器学习重叠。
人工智能也是计算机科学的一个领域,但它关注的是开发智能或可以做智能事物的程序。
智力涉及学习,例如机器学习,但可能涉及其他问题,如推理,计划,记忆等等。
这可以涵盖各种类型的学习,例如:
- 开发代码以研究如何优化物流计划。
- 开发代码以研究如何推理一段文本。
- 开发代码以研究如何感知照片的内容。
人工智能通常在环境中的代理环境中构建,旨在解决某些问题,但事实并非如此。
机器学习可以很容易地被命名为人工学习,以与人工智能保持一致并帮助初学者。
线条模糊。机器学习问题也是人工智能问题。
统计怎么样?
统计量或计算机应用统计量是数学的一个子领域,涉及描述和理解数据中的关系。
This could encompass diverse types of learning such as:
- 开发模型以总结变量的分布。
- 开发模型以最好地表征两个变量之间的关系。
- 开发模型以测试两组观察结果之间的相似性。
它还与对学习数据模式感兴趣的机器学习的角落重叠。
用于理解统计中的数据的许多方法可以用于机器学习以学习数据中的模式。这些任务可称为机器学习或应用统计。
你的机器学习
机器学习是一个很大的研究领域,它可以帮助您解决具体问题。
但是你不需要知道所有这些。
- 你不是一个学术研究机器学习中深奥的学习类型。
- 你不是要像人工智能一样创造智能代理。
- 您不想了解更多关于变量在数据中如何与统计量相关的原因。
实际上,在学习数据关系方面:
- 您没有调查算法的功能。
- 你没有开发出全新的理论或算法。
- 您没有将现有的机器学习算法扩展到新案例。
这些可能是我们可能感兴趣的机器学习的角落里的活动,但是学术界的活动,而不是像你这样的从业者。
那么你需要关注机器学习的哪些部分?
我认为有两种方法可以考虑机器学习:
- 就你要解决的问题而言。
- 就您需要的解决方案而言。
你的机器学习问题
您的问题最好描述如下:
找到一个模型或程序,充分利用由输入和输出组成的历史数据,以便在将来给出新的和看不见的输入时巧妙地预测输出。
这是超级具体的。
首先,它抛弃机器学习的整个子领域,例如无监督学习,专注于一种称为监督学习的学习以及适合该斗的所有算法。
这并不意味着您无法利用无监督的方法;它只是意味着你不要把注意力集中在那里,至少不要开始。
其次,它为您提供了一个明确的目标,支配所有其他目标:这是模型技能而牺牲了其他问题,如模型复杂性,模型可解释性等。
同样,这并不意味着这些并不重要,只是在模型技能之后或与模型技能相结合时考虑它们。
第三,以这种方式构建问题非常适合另一个称为预测性建模的研究领域。这是一个研究领域,它借鉴了机器学习的方法,目的是开发出能够进行技巧预测的模型。
在某些业务领域,该领域也可称为预测分析,并且不仅包括建模组件,还包括收集和准备数据以及部署和维护模型的相关活动。
最近,这项活动也可称为数据科学,尽管该短语除了将其用于解决方案外,还具有发明或发现问题的内涵。
我认为你称之为活动并不重要。但我认为重要的是要深刻理解您对机器学习的兴趣和使用是非常具体的,并且与学术界的其他用途不同。
它允许您过滤您阅读的材料和您选择的工具,以便专注于您尝试解决的问题。
您的机器学习解决方案
您需要的解决方案最好描述如下:
一种模型或程序,可自动创建历史数据中输入和相关输出之间未知基础关系的最可能近似值。
同样,这是超级具体的。
您需要一个自动方法来生成可用于做出预测的程序或模型。
你不能坐下来编写代码来解决你的问题。它完全是针对特定数据的,并且您拥有大量数据。
实际上,这种类型的问题抵制了自上而下的手工编码解决方案。如果你可以坐下来写一些 if 语句来解决你的问题,你就不需要机器学习解决方案了。这将是一个编程问题。
您需要的机器学习方法类型将学习历史数据中输入和输出之间的关系。
这种框架允许您考虑真实的基础但未知的映射函数可能是什么样的,以及历史数据的噪声,损坏和采样如何影响不同建模方法对此映射的近似。
没有这个框架,你会想到这样的事情:
- 为什么不只有一个超级算法或一组参数。
- 为什么专家不能只告诉你使用什么算法。
- 为什么您无法通过模型中的预测实现零错误率。
它可以帮助您查看您尝试解决的预测性建模问题的不明确性质,并设定合理的期望。
下一步
既然您已经知道如何考虑机器学习,那么下一步就是改变您对机器学习解决方案解决问题的过程的思考方式。
有关提示,请参阅帖子:
进一步阅读
如果您希望深入了解,本节将提供有关该主题的更多资源。
帖子
用品
摘要
在这篇文章中,您发现了如何改变您对机器学习的看法,以便最好地为您提供机器学习从业者。
具体来说,你学到了:
- 机器学习是什么以及它与人工智能和统计量的关系。
- 你应该关注的机器学习的角落。
- 如何考虑您的问题和机器学习解决方案的问题。
你有任何问题吗?
在下面的评论中提出您的问题,我会尽力回答。
现实世界的机器学习问题之旅
原文:
machinelearningmastery.com/tour-of-real-world-machine-learning-problems/
现实世界的例子使机器学习的抽象描述变得具体。
在这篇文章中,您将继续了解真实世界的机器学习问题。您将看到机器学习如何在教育,科学,技术和医学等领域实际应用。
列出的每个机器学习问题还包括指向公开数据集的链接。这意味着如果您对特定的具体机器学习问题感兴趣,您可以下载数据集并立即开始练习。
真实世界机器学习
照片由 SMI 眼动追踪保留一些权利。
最受欢迎的 Kaggle 数据集
前 10 个机器学习问题的例子来自机器学习竞赛网站 Kaggle.com 。受欢迎程度取决于参赛队伍的数量。
- 奥托集团产品分类挑战赛。鉴于产品数据的特征,将产品分类为 9 个产品类别之一。
- Rossmann 商店销售。根据商店的产品历史销售数据,预测未来的销售情况。
- 自行车共享需求。鉴于每日自行车租赁和天气记录预测未来每日自行车租赁需求。
- Analytics Edge 。鉴于新时代的细节,文章预测哪些新闻纸文章会受欢迎。
- 餐厅收入预测。鉴于餐厅网站的详细信息预测了特定年份餐厅的收入。
- Liberty Mutual Group:物业检查预测。鉴于检查属性的详细信息预测了属性的危险评分。
- Springleaf 营销响应。鉴于客户的特征预测他们是否是营销目标。
- 希格斯玻色子机器学习挑战。鉴于模拟粒子碰撞的描述预测事件是否衰变为希格斯玻色子。
- 森林覆盖类型预测。鉴于制图变量预测森林覆盖类型。
- Amazon.com 员工访问挑战。鉴于员工的历史资源访问权限变化可预测员工所需的资源。
最受欢迎的研究数据集
接下来的 10 个机器学习问题是加州大学 Irvine 机器学习库网站上最受欢迎的,该网站传统上托管机器学习研究社区使用的机器学习数据集。
- 虹膜数据集。鉴于以厘米为单位的花测量预测虹膜的种类。
- 成人数据集。鉴于人口普查数据预测个人每年将获得超过 50,000 美元的收入。
- 葡萄酒数据集。鉴于葡萄酒的化学分析预测了风的起源。
- 汽车评估数据集。鉴于汽车的详细信息预测了汽车的估计安全性。
- 乳腺癌威斯康星数据集。鉴于对乳房组织进行诊断测试的结果,预测肿块是否是肿瘤。
- 鲍鱼数据集。鉴于鲍鱼的测量值预测了鲍鱼的年龄。
- 葡萄酒质量数据集。鉴于葡萄酒的各种测量值可以预测葡萄酒的质量。
- 心脏病数据集。鉴于对患者的各种诊断测试的结果预测患者的心脏病量。
- Poker Hand 数据集。给定扑克手的数据库预测手的质量。
- 使用智能手机数据集识别人类活动。从智能手机移动数据预测持有智能手机的人所执行的活动的类型。
- 森林火灾数据集。鉴于气象和其他因素预测了森林火灾的烧毁面积。
- 互联网广告数据集。鉴于网页上图像的细节预测图像是否是广告。
最后的世界
我们对 20 个真实世界的机器学习问题进行了旋风式的考察。
这些是世界各地的科学和商业组织提出或调查的实际问题。
更令人兴奋的是,这些不同的问题具有公开可用的数据集,并且也被广泛研究和理解。
这意味着您可以立即下载数据并通过实现自己的模型来探索问题,或者从纸质或博客文章中重现其他人的问题。