機械学習の概要:第一章に実用的なガイドを学ぶScikit-学習&TensorFlowマシン

機械学習の概要:最初の章に機械学習の実用的なガイド

著者:リョン
ここから参照することにより:「とハンズオン機械学習 Scikit-学習&TensorFlow 実践ガイドを機械学習」、中国のAIコミュニティのおかげでApacheCNの翻訳。

1.機械学習とは何ですか?

問題のために、我々は解決策の多くを持っていますが、問題の同じタイプのために、我々は、手動でそれを自分自身を解決しなければならないのですか?あなたは完全なソリューションを持っていない場合は、問題は、このような迷惑メールの分類として、非常に複雑になります。

我々は、メールの分類ルールを記述するように、人々は、スパムが何であるかを識別することができ、そのような出現など期間限定のプロモーション、オンラインカジノや他の言葉、私たちはスパムとしてそれを分類することができ、このメソッドが呼び出され、伝統的な方法を

しかし、この結果はこれです:规则越来越复杂,错误率也很高自分のメールのコンピュータ解析を取得する方法があることは?

機械学習は、問題を解決することができます

専門家は、機械学習をどう定義するかで見てみましょう:

機械学習は、データから学習するコンピュータサイエンス(芸術)を作るようにプログラムされています。

機械学習は、明示的なプログラミングなしで、学習能力を備えたコンピュータです。 - アーサー・サミュエル、1959

コンピュータプログラムは成長している経験を持つタスクのパフォーマンスP T Eのために、それは機械学習と呼ばれている場合は、タスクT E、P性能を学習の経験を使用しています。 - トム・ミッチェル、1997

これは私の個人的な理解である:コンピュータの使用アルゴリズムの既存のデータ、研究に新たなデータを分析し、適切な結論を引き出すことができるよう。

中学校の数学の問題があると仮定すると、中学生がどのようにこの質問が目的で解決するには?私たちは、彼の学習を見て:

その後、これらの問題は、メソッドの概要、総括し、未知の対象方法の最終決済を行うことによって学習、出てくるん、同様の問題を解決してきたために最初に移動します。

機械学習にフィギュアのアナロジーは、赤い矢印は一方で、手動で行う行うには、人間の必要性、データ収集、テストアルゴリズムモデルの精度のために見ている黒い矢印は機械学習が部分的に自動的に完了することで、自動的に、データ、自動最適化アルゴリズムモデルを分析します。

機械学習、その後のこの例では、類推を行います。

これら二つの図によると、我々は要約を行うことができます。

介してコンピュータのデータを最適化するためのアルゴリズムモデル、新しい実用的な問題を解決するためのアルゴリズムの最適化モデルを。

だから、機械学習のために、2の最も重要なキーポイントです:数据+ 算法、機械学習、人間のように、必要なだけのデータ(知識)、だけでなく、良いアルゴリズム(学習)が必要です。

冒頭の質問に戻る、そして伝統的な方法で、どのような機械学習のメリットに比べて?

機械学習4つの主な利点:

  • 簡素化された手順

    機械学習は、複雑なルールを記述するために合理的なアルゴリズムを設計するための唯一の必要性を省略し、適切なデータ収集を与え、機械学習は良い効果アルゴリズムモデルを提供することができます。

  • 自主研究

    自動的に学習する機械学習は、連続した入力データを通じて、すべての人間の手動の介入なしに、それらのパラメータを調整します。

  • 一般化

    伝統的な方法は、重いワークロード、独自のルールや計算方法を更新しなければならない新たな問題が発生しました。そして、マシンは自動的に新しいルールを学ぶことを学びます。

  • データマイニング

    機械学習は、結果の影響についてデータを分析するだけでなく、リンクは、このような都市環境保護関連の投資の地方政府と住宅価格として、表示非表示にすることができることができます。非常に難しいが、この暗黙の関係を分析すると、機械学習は、私たちを助けることができます。

機械学習の2種類

異なる規格に従った機械学習は、多くの種類に分けることができ、我々は、以下の3つの方法で分類されます。

  1. 訓練は、人間の監督の下で(、教師なし、半教師と強化学習を監修)かどうか
  2. 缶ダイナミックプログレッシブな学習(バッチ学習対オンライン学習)
  3. 科学者が行っていただけのように、それだけで、または予測モデルを構築するために、単にトレーニングデータのパターン認識に新たなデータ点と既知のデータポイントを比較することによって行われる(ケースベースのモデルベースの学習対学習)

私たちは、次の3つのタイプに分けることができる人間の監督で、標準的なトレーニングによるかどうか:

(1)教師付き学習

在监督学习的训练过程中,训练的数据都包含了标签,那什么是标签呢?

很好理解,我们还是拿初中生学习的例子来说。

如果把一本习题集比作我们要学习的数据,那么习题集后面的参考答案就是标签,它为我们做题目指引了方向,做错了就改正,做对了继续下一题,这种学习就是监督学习。

而监督学习一般又分为一下两类任务:

  • 分类

    顾名思义,就是通过学习已经分好的数据,对新的数据进行分类。比如垃圾邮件分类器,就是先输入带有是否为垃圾邮件标签的邮件,让计算机进行学习,再对没有分类的邮件进行判断。上面有示意图。

  • 回归

    回归就是预测目标数值,比如我想通过研究戴尔笔记本不同型号的配置,比如cpu、内存、显卡和它们定价之间的联系,然后来预测最新款的笔记本价格在什么范围内,这就是预测。

    预测new instance对应的value

(2)无监督学习

加了一个“无”字,意思就是没有标签咯?没错,无监督学习就是使用不带标签的数据进行学习。

这就奇怪了,如果做题目没有答案给我参考,我怎么知道自己是不是做对了呢?

无监督学习中,数据是没有标签的或者是有一样的标签的。我们不知道数据的含义和作用,我们需要计算机自己进行分析和处理。

不用担心看不懂,来看看无监督学习的几个主要任务你就明白了。

  • 聚类

    聚类就是将数据自动分离成几个部分,每个部分的内部都有相似之处。下面我们举一个简单的例子。

大家应该都喜欢看电影吧,一个人去看电影的孤独想必大家都不想体会。假定你是一个大学生,那怎么样才能在班上找到和自己兴趣相投的电影爱好者呢?

我们可以收集一份班上同学的电影爱好表,然后按照大家的爱好信息将类型相近的同学分为一组,这样我们就可以将所有的同学分成很多组,比如文艺片爱好者,动作片爱好者,科幻片爱好者。这就是一种聚类学习。

  • 降维

    降维就是剔除对数据影响较低的特征,优化数据的结构,减少数据的复杂度,还是举一个例子。

你还是一个爱看电影的大学生,但是马上要期末考了,不得不放下心爱的电影。由于你看电影上头,所有的科目都还没有复习,是不是要做一些取舍。

每一门课程对你来说重要程度肯定不一样。比如影视鉴赏选修课,这一门听学长说是稳过的,那我们就没必要将精力集中在这门课上,可以从复习计划中删除。而高等数学成绩直接影响了你整个大学生涯,所以我们要重视这门课。大学英语和专业英语是同类型课程,可以合并在一起学习。

这就是一种降维方法,将数据中不同的特征进行一些处理,分析哪些特征对结果的影响最大, 剔除对结果影响不大的特征,或者是将若干个特征进行合并,以便我们的算法更集中的分析重要的数据。

提示:在用训练集训练机器学习算法(比如监督学习算法)时,最好对训练集进行降 维。这样可以运行的更快,占用的硬盘和内存空间更少,有些情况下性能也更好。

  • 异常检测

    我们常常使用无监督学习来分析数据里是否存在异常的数据,也就是不合群的数据。然后将这种数据剔除。

在正常的训练过程中,遇到一个新的数据,我们也可以判断这个数据是正常值还是异常值。

比如周末你闲赋在家,检查了自己保存的所有电影票根,发现只有万达影城的票特别贵,所以决定以后都不去万达影城了。这就是异常检测。

  • 关联规则

    最后,另一个常见的非监督任务是关联规则学习,它的目标是挖掘大量数据以找出数据特征之间的某些联系

例如,寒假期间你在电影院打工,善于观察的你发现买了爆米花的人大概率也会买可乐,因此你推荐老板将爆米花和可乐做成套餐出售,这就是关联规则。

(3)半监督学习

一些算法可以处理部分带标签的训练数据,通常是大量不带标签数据加上小部分带标签数据。这称作半监督学习。

我们假设喜欢看电影的你,同时也爱收藏票根。有一次你在家整理电影票根,发现一部分票根上面的影城信息磨损了。我们按照小票的颜色和格式将不同的票根分类**(这一步是无监督学习的方法),然后再看每一类中没有磨损的票根上面的影城信息,就能推导出每张票来自哪个影城了。(这一步是监督学习的方法)**。

所以我们会发现:

多数半监督学习算法是非监督和监督算法的结合。

(4)强化学习

强化学习非常不同。学习系统在这里被称为智能体(agent),可以对环境进行观察,选择和执行动作,获得奖励或惩罚。然后它必须自己学习哪个是最佳方法(称为策略,policy),以得到长久的最大奖励。策略决定了智能体在给定情况下应该采取的行动

AlphaGo就是强化学习的典型代表,它通过不断的试错,最后得出一套完整的围棋制胜策略,打败了人类的最高水平。

另一个用来分类机器学习的准则是,它是否能从导入的数据流中进行持续的学习。

(1)批量学习

批量学习是一次性将所有的数据进行学习,这样一般会占用很多的时间和计算资源,计算完了之后再开始使用。一般的学习方式都是批量学习,因为方法简单。

举个例子,初中数学书是人教版的,如果我们把人教版的书和习题全部学习一遍,再去考试,这就是批量学习,学习是一次性的。

假如考试范围不仅仅是人教版的,还有苏教版呢,那这个学生又要重新学习一遍苏教版的内容。

这就是批量学习的不足之处,,用全部数据训练需要大量计算资源(CPU、内存空间、磁盘空间、磁盘 I/O、网络 I/O等等)。如果你有大量数据,并让系统每天自动从头开始训练,就会开销很大。如果数据量巨大,甚至无法使用批量学习算法。最后,如果你的系统需要自动学习,但是资源有限(比如,一台智能手机或火星车),携带大量训练数据、每天花费数小时的大量资源进行训练是不实际的

(2)增量学习

增量学习也叫在线学习,持续性学习,顾名思义,就是持续地输入数据,算法根据每次输入的数据进行相应的调整。每一个学习步骤都很快而且开销很小。所以系统可以动态的学习新的数据。

也可以当机器的内存存不下大量数据集时,用来训练系统(这称作核外学习,out-of-core learning)。算法加载部分的数据,用这些数据进行训练,重复这个过程,直到用所有数据都进行了训练。

还有一种分类标准是判断它们是如何进行归纳推广的。分为基于实例的学习和基于模型的学习。

基于实例的学习是直接对数据进行记忆,然后用相似度的方式来推广至新的数据。比如K近邻、朴素贝叶斯。

基于模型的学习则是先选择合适的模型,再用数据对模型进行训练。比如多元线性回归、支持向量机、深度学习。

比如线性回归算法,就是先假定数据符合 f ( x ) = θ 0 + θ 1 × x f(x) = \theta_0+\theta_1×x 这样一个线性的拟合函数。然后通过调整 θ 0 \theta_0 θ 1 \theta_1 的值,拟合训练数据:

3. 机器学习面临的主要问题

简单的来说,机器学习面临的主要问题来自两个方向,也就是机器学习最最重要的两个关键点:数据 + 算法

  • 训练数据少

    如果一个学生只学了几道题目就参加期末考试,那他可能会考得一塌糊涂,计算机也是这样,如果训练数据太少了,多数机器学习算法就无法正常工作

    即便对于一些非常简单的问题,也需要数千的样本。而对于复杂的问题,比如图像、语音识别,则可能需要数百万的样本。

    在2001年的一篇论文中,作者研究了不同算法在数据量级增加时表现出的性能,实验证明一旦有大量数据进行训练,不同算法之间的差异会大大减小。这就是传说中的天赋不够,努力来凑吧。

  • 数据没有代表性

    数据具有代表性是非常重要的。举个例子,如果很多人都跟你吐槽最近上映的一部电影很烂,你接收到的信息都是关于这部电影的缺点,那么你很有可能再还没有看之前就把这部电影判了死刑。

    使用了没有代表性的训练集,我们就会得出与事实不太相符的结论。书上也举了一个很好的例子。

    一个样本偏差的著名案例

    也许关于样本偏差最有名的案例发生在 1936 年兰登和罗斯福的美国大选:《文学文摘》做了一个非常大的民调,给 1000 万人邮寄了调查信。

    得到了 240 万回信,非常有信心地预测兰登会以 57% 赢得大选。然而,罗斯福赢得了 62% 的选票。

    错误发生在《文学文摘》的取样方法:

    首先,为了获取发信地址,《文学文摘》使用了电话黄页、杂志订阅用户、俱乐部会员等相似的列表。所有这些列表都偏向于富裕人群,他们都倾向于投票给共和党(即兰登)。

    第二,只有 25% 的回答了调研。这就又一次引入了样本偏差,它排除了不关心政治的人、不喜欢《文学文摘》的人,和其它关键人群。这种特殊的样本偏差称作无应答偏差。

  • 低质量数据

    有的数据具有明显的异常或是缺失关键信息,那么这种数据就是低质量数据。系统检测出潜在的数据规律难度就会变大,性能就会降低。事实上这个问题很严重,所以实际工作中我们要花很多时间在数据清洗上。

  • 不相关的特征

    有的数据特征跟你的结论毫无关联,就需要剔除掉。

    比如影响你期末成绩的课程有数学、英语、专业课,但是不应该包括你喜欢的游戏类型,如果你把你喜欢的游戏类型加进来一起分析,可能得不到任何正面的作用。

    机器学习项目成功的关键之一是用好的特征进行训练。

现在数据造成的问题我们已经分析完了,再看看算法会导致的问题。

  • 欠拟合训练数据

    假如你的算法模型过于简单,那么就不能得到很好的拟合效果。

    比如我们想研究每个月电影上映的数量。如果用一个线性的模型来拟合显然是不合适的,每个月上映的电影数量跟月份并不是简单的线性关系,这样就会出现欠拟合的现象。

    解决这个问题的选项包括:

    选择一个更强大的模型,带有更多参数

    用更好的特征训练学习算法(特征工程)

    减小对模型的限制

  • 过拟合训练数据

    相反,过拟合就是指由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。

    具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。

    用数学老师的一句话描述过拟合:

    同样的题目教了无数遍,我换两个数字你们就不会做了??

    可能的解决方案有:

    简化模型,可以通过选择一个参数更少的模型(比如使用线性模型,而不是高阶多项式模型)、减少训练数据的属性数、或限制一下模型

    收集更多的训练数据

    减小训练数据的噪声(比如,修改数据错误和去除异常值)

4. 测试和确认

讲了这么多,那如何判断一个算法模型得出的结论是好还是坏呢?一种比较常见的方法是将数据分为训练集和测试集两个部分。

用训练集训练算法模型,再用测试集测试准确率

还是以初中生学习作为例子,一本习题册分为10个部分,前8个部分作为学习部分,我们边做边对答案,然后总结解题的思路。后面2个部分作为测试,测试完之后的得分情况就代表自己对这种题目的掌握程度。

因此,评估一个模型很简单:只要使用测试集。现在假设你在两个模型之间犹豫不决(比如一个线性模型和一个多项式模型):如何做决定呢?一种方法是两个都训练,然后比较在测试集上的效果。

我们通过修改一些超参数(不能通过学习来自动调整的参数)来降低误差,但是这种方法在实际中的应用效果却并没有想象的那么好。

这是因为超参数都是基于测试集来调整的,就相当于把测试集当成了训练超参数的数据。这样对于新的数据效果不一定会更好。

解决办法是:

保留一个数据集作为验证集,在这些步骤做完之后再进行最终的验证

类比到学习问题上就是对一本习题集进行反复学习,然后做很多的模拟测试来适应考试状态,最后进行一次考试,这样才能检测出你真实的学习水平。

但是这种方法会减少训练集,有一种比较常用的方法是交叉验证法,这里不过多赘述,在后面的章节会学习到。

交叉验证法:训练集分成互补的子集,每个模型用不同的子集训练,再用剩下的子集验证。一旦确定模型类型和超参数,最终的模型使用这些超参数和全部的训练集进行训练,用测试集得到推广误差率。

最后解决一个许多新手都有的疑惑,机器学习发展了这么多年,有没有一种万能的算法能解决所有的学习问题?

这就好比问数学老师,有没有一种方法能解题思路能解开所有的数学题目?

答案是不能。在1996年的一篇著名论文中,David Wolpert证明没有一种机器学习算法能解决所有的问题,这称作没有免费午餐(NFL)公理

对于一些数据集,最佳模型是线性模型,而对其它数据集则是神经网络。没有一个模型可以保证效果更好(如这个公理的名字所示)。所以机器学习首先面临的问题是:

到底选择哪一种机器学习算法得到的效果更佳?


欢迎来我的博客留言讨论,我的博客主页:LeonG的博客

本文参考自:《Hands-On Machine Learning with Scikit-Learn & TensorFlow机器学习实用指南》,感谢中文AI社区ApacheCN提供翻译。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

发布了6 篇原创文章 · 获赞 5 · 访问量 4955

おすすめ

転載: blog.csdn.net/disILLL/article/details/104018989