专栏首页机器学习算法与Python学习关于机器学习你要了解的 5 件事

关于机器学习你要了解的 5 件事

来自:贪心科技 在任何快速发展的话题上,总是有一些新的东西可以学习,机器学习也不例外。这篇文章将指出5件关于机器学习的事,5件你可能不知道的,可能没有意识到,或是可能曾经知道,现在被遗忘了。

请注意,这篇文章的标题不是关于机器学习的"最重要的5件事情"或"前5件事";这只是"5件事"。它不具有权威性的,也并不是事无巨细的,仅仅是5件可能有用的东西的集合。

1.数据准备是机器学习的80%,所以……

在机器学习任务中,数据准备花费了很大一部分的时间;或者,至少花费了一个看似很大一部分的时间。许多人都是这样认为的。

我们经常讨论执行数据准备时的细节以及其重要性的原因;但除了这些之外,我们还应该关注到更多的东西。那就是为什么我们应该关心数据准备。我的意思不是仅仅为了得到一致性的数据,但更像一个哲学性的谩骂,以便让你明白为什么应该接受数据准备。做好数据准备工作,做一个有数据准备的人。

CRISP-DM模型中的数据准备。

我可以想到的一些关于机器学习最好的建议就是,既然你注定要为一个大项目花非常多的时间准备数据,那么决心做一名最好的数据准备的专业人士,是一个相当好的目标。因为它不仅仅只是费时费力的工作,数据准备其实对对后续的步骤(无效数据的输入、无效数据的输出等)有很大的重要性,并且因为作为一个糟糕的数据准备人员而产生坏名声也不会是世界上最糟糕的事情。

所以,是的,虽然数据准备可能需要一段时间来执行和掌握,但这真的不是一件坏事。在数据准备存在的必要性中有着很多机会,无论是对一名脱颖而出的专业人士,还是展现你工作能力很强的内在价值。

2.性能基线的值

当你用一个特定的算法模拟了一些数据,并且花了很多时间来调整你的超参数,执行一些工程特点和/或着挑选;你很高兴,因为你已经钻研出了如何训练准确性,比方说,准确性是75%。你对自己完成的工作十分满意。

但是,你将你得到的结果与什么进行了比较?如果你没有基线——一个比拇指规则都简单的完整检查来比较你的数据——然后你实际上并没有把那些辛勤劳动的结果与任何东西进行比较。所以就有理由理所当然的认为任何准确性在没有与其他数据比较时都是有价值的了么?显然不是。

随机猜测不是基线的最佳方案;相反,的确存在广为接受的用于确定比较基准精度的方法。例如,Scikit-learn在其DummyClassifier的分类中提供了一系列基线分类器:

  • stratified 通过尊重训练集类分布来生成随机预测。
  • most_frequent总是预测训练集中最频繁的标签。
  • prior总是预测最大化优先级的类(像most_frequent')和"predict_proba返回类的优先级。
  • uniform随机生成预测。
  • constant总是预测用户提供的常量标签。

基线也不仅是分类器;例如,基线回归任务中也存在统计方法。在探索性数据分析、数据准备和预处理之后,建立基线是机器学习工作流程中的一个合乎逻辑的下一步。

3.验证:不止于训练和测试

当我们建立机器学习模型时,我们训练他们使用训练数据。当我们测试结果模型时,我们使用测试数据。那么验证是在哪里出现的呢?

fast.ai的Rachel Thomas最近写了一篇关于如何以及为什么创建良好的验证集的文章,并介绍了以下3类数据:

  • 用于训练给定模型的训练集
  • 用于在模型之间进行选择的验证集

(例如,随机森林和神经网络哪个更好地解决了您的问题?你想要一个有40棵或者50棵树的随机森林吗?)

  • 告诉您您的工作方式的测试集。如果你尝试了很多不同的模型,你可能会得到一个很好的验证集,但这只是偶然的,因为总有一个测试集不属于这样的情况。

因此,将数据随机拆分为测试、训练和验证集一定是个好主意吗?事实证明,答案是否定的。雷切尔在时间序列数据的文中解答了此问题:Kaggle目前正努力解决预测厄瓜多尔杂货店销售量的预测问题。Kaggle的"训练数据"从2013年1月1日运行到2017年8月15日,测试数据跨越了2017年8月16日到2017年8月31日。使用2017年8月1日到8月15日作为您的验证集不失为一种好的方法,并且所有早期的数据也可以作为您的训练集。

这篇文章的其余部分将涉及到分裂到Kaggle竞争数据的数据集,这是十分实用的;并且我将会把交叉验证纳入讨论,读者可以按照我的方法自行探究。

其他许多时候,数据的随机分割会是有用的;它取决于进一步的因素,如当你得到数据时数据的状态,(它是否已被分为训练/测试数据?),以及它是什么类型的数据(见上面的时间序列分类)。

对于什么条件下随机拆分是可行的,Scikit可能没有train_validate_test_split的方法,但您可以利用标准的Python库来创建您自己的方法。

4.集成方法可比树还要多

选择算法对于机器学习新手来说可能是一个挑战。在构建分类器时,特别是对于初学者来说,通常采用一种方法来解决单个算法的单实例问题。然而,在给定的情况下,把分类器串联或是组合起来会更加有效;这种方式使用了投票、加权、和组合的技术,以追求最准确的分类器。集成学习就是用多种方式来提供此功能的分类器。

随机森林是集合学习者的一个非常重要的例子,它在一个预测模型中使用许多个决策树。随机森林已成功地应用于各种问题,并据此取得了很好的效果。但它们不是唯一存在的集成方法,许多其他的也值得一试。

关于套袋操作的简单概念:建立多个模型,观察这些模型的结果,并解决大多数的结果。我最近有一个关于我的车后桥总成的问题:我没有采取诊断问题的经销商的建议,并且我把它带到其他两个修车的地方,这两个都认为这个问题是和经销商所提出的不同问题。这就说明,套袋在实际生活中的运用。随机森林就是基于套袋技术所改进的。

加速类似于套袋,但有一个概念上的略微不同。它不是将相等的权重分配给模型,而是增加了对分类器的权重分配,并导出了基于加权投票的最终结果。再以我的汽车问题为例,也许我过去曾多次去过一个修车行,并且比其他人更信任他们的诊断。同时假设我之前并没有和经销商有过互动或打过交道,并且相比较而言我更不相信他们的能力。我分配的重量将是反射性的。

堆叠与前两个技术有所不同,因为它训练多个单一分类器,而不是各种相同的学习者的集合。虽然套袋和加速使用了许多建立的模型,使用了相同的分类算法的不同实例(如决策树),但堆叠建立模型也使用了不同的分类算法(比如决策树,逻辑回归,一个ANNs或其他的组合)。

然后,通过对其他算法的预测,对合并算法进行训练,以得到最终的预测。这种组合可以是任何集成技术,但逻辑回归往往被认为是一个来执行这一组合最充分和最简单的算法。随着分类的进行,堆叠也可以在非监督学习任务(如密度估计)中使用。

5.谷歌Colab?

最后,让我们来看看一些更实用的东西。Jupyter Notebook事实上已成为数据科学开发最实用的工具,大多数人都在个人电脑,或者通过一些其他配置——比较复杂的方法(如在Docker容器或虚拟机中) 运行该软件。首先第一个受到关注的就是谷歌的Colaboratory,它允许Jupyter风格和兼容的Notebook直接运行在您的Google驱动器中,不需要任何配置。

Colaboratory是预先配置了一些近期较为流行的Python库,并通过支持的打包管理,使其可以把自己安装在Notebooks中。例如,TensorFlow就属于这一类,但Keras不是;但通过pip安装Keras仅需要几秒钟的时间。

在这一问题上的好消息就是,如果你使用的是神经网络,你可以在你的训练中启用GPU硬件加速,开启一次就可以享受长达12小时的免费服务。这个好消息其实并没有它一开始看起来那么完美,但这也算是一个额外的好处,也是一个全民化GPU加速的良好开端。

本文分享自微信公众号 - 机器学习算法与Python学习(guodongwei1991)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干货|多重预训练视觉模型的迁移学习

    关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 源 | 全球人工智能 本文介绍的是基...

    昱良
  • 实践秘籍:Boosting 与 AdaBoost

    源 / 机器之心 本文将尽可能详细地介绍有关 Boosting 和 AdaBoost 的相关概念。

    昱良
  • 推荐 | 掌握这12条经验,对理解机器学习至关重要

    华盛顿大学 Pedro Domingos 教授的“A Few Useful Things to Know about Machine Learning”这篇论文...

    昱良
  • 机器学习不神秘!手把手教你用R语言打造文本分类器

    简单安装几个R软件包,你就直接在自己电脑上打造出一个文本分类器,用进行机器来评估人类写作。 本文是一篇极简的上手教程,它想用清晰明了的步骤告诉读者,机器学习不...

    AI科技大本营
  • CS231n李飞飞CV课程辅导笔记(2):KNN

    全球最大的专注于大数据分析、数据仓库和整合营销管理解决方案的供应商之一的Teradata, VP Atif Kureishy 预言人工智能的未来,是机器人和计算...

    用户1737318
  • 六行代码!完成你的第一个机器学习算法

    Google出了一个面向新手的机器学习教程,每集六七分钟,言简意赅,只掌握最基础的Python语法知识,便可以实现一些基本的机器学习算法。接下来我准备分几次...

    IT派
  • Adaboost入门教程——最通俗易懂的原理介绍

    Adaboost算法基本原理就是将多个弱分类器(弱分类器一般选用单层决策树)进行合理的结合,使其成为一个强分类器。

    机器学习AI算法工程
  • 「用 AI 识别 xxx」,真的靠谱么?

    最近不少人工智能和计算机视觉的学者,带着自己的机器学习技术投身于心理学研究。出发点很好:用更新的技术探究问题。但是他们的成果让人担心。前有用人工智能分析潜在罪犯...

    AI研习社
  • 【翻译】数据科学的多语言协作编程方式:Python + R + SQL

    在这篇文章中,我将试图使用一种新的方法来介绍数据科学编程。 R vs. Python question中集中谈论了数据科学编程的问题,每个人都...

    小莹莹
  • 【机器学习实战】第7章 集成方法 ensemble method

    第7章 集成方法 ensemble method ? 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:...

    片刻

扫码关注云+社区

领取腾讯云代金券