机器学习(一)导论

2019-07-02 16:31:38 浏览数 (1)

今天的文章是机器学习的导论,这会像Python基础教程和爬虫教程一样是一个连载系列,但是在机器学习领域自己还没入门,只是通过一次比赛接触到机器学习使用了几个模型罢了,这个系列单纯把自己学习笔记和学习体会分享给大家,更新可能会比较慢,期待大家一起进步。

/ 01 / 什么是机器学习?

首先,必须澄清一个关于机器学习的最大错误观念:

机器学习≠算法

机器学习是与算法无关的,机器学习是解决问题的综合方法,也可以说机器学习=寻找一种函数。这个函数可以:

  1. 语音识别:输入一段语音信号输出文字

f( )="how are you "

  1. 图像识别:输入图片,输出图片的属性

f( )="cat"

  1. 图像识别:输入图片,输出图片的属性

f( )="5*5"

机器学习是教会计算机如何从数据中学习模式的做法,通常用于做出决策或预测。对于真正的机器学习,计算机必须能够学习未明确编程识别的模式。

例如:好奇的孩子

一个小孩正在家里玩......他看到一支蜡烛!他小心翼翼地蹒跚而行。 1.出于好奇,他把手伸到蜡烛火焰上。 2.“哎哟!”他大声喊道,他把手拉回来。 3.“嗯...... 红色和明亮的 东西真疼!”

两天后,他正在厨房里玩......他看到了一个炉灶!他再一次小心翼翼地蹒跚而行。 1.他又好奇了,他正想着伸出手来。 2.突然,他注意到它是 红色和明亮的! 3.“啊......”他对自己说,“不是今天!” 4.他记得 红色和明亮 意味着痛苦,他忽略了炉顶。 要清楚,它只是机器学习,因为孩子从蜡烛中学习模式,他了解到“红色和明亮的模式意味着痛苦”另一方面,如果他仅仅因为他的父母警告他而忽略了炉顶,那就是“明确的编程”而不是机器学习。

/ 02 / 学习路线

监督学习 监督学习包括“标记”数据的任务(即有一个目标变量)简单的来说就是在有数据标注的情况下进行学习。在实践中,它通常用作预测建模的高级形式,每个观察必须用“正确答案”标记,只有这样你才能建立一个预测模型,因为你必须在训练时告诉算法什么是“正确的”(因此,“监督”它)。

这里还有两个名词需要大家理解,第一个是回归:回归问题,寻找函数f的输出为一个数值。一般用于预测。该问题一般是通过大量的训练数据,找到相对正确的函数。第二个是分类:是对分类(又称“类")目标变量进行建模的任务,分类问题可以分为二分类和多分类。

无监督学习

无监督学习包括“未标记”数据的任务(即没有目标变量)简单来说无监督学习就是在没有具体数据标注的情况下进行学习。在实践中,它通常用作自动数据分析或自动信号提取的一种形式,例如:机器阅读:机器在大量的文档中学会词语的意思。未标记的数据没有预先确定的“正确答案”。允许算法直接从数据中学习模式(没有“监督”)。 聚类 是最常见的无监督学习任务,它用于查找 数据中的组。

/ 03 / 过拟合

无论在机器学习还是深度学习建模当中都可能会遇到两种最常见结果,一种叫过拟合(over-fitting )另外一种叫欠拟合(under-fitting)。

所谓过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。

打个比喻就是当我需要建立好一个模型之后,比如是识别一只狗狗的模型,我需要对这个模型进行训练。恰好,我训练样本中的所有训练图片都是二哈,那么经过多次迭代训练之后,模型训练好了,并且在训练集中表现得很好。基本上二哈身上的所有特点都涵括进去,那么问题来了!假如我的测试样本是一只金毛呢?将一只金毛的测试样本放进这个识别狗狗的模型中,很有可能模型最后输出的结果就是金毛不是一条狗(因为这个模型基本上是按照二哈的特征去打造的)。所以这样就造成了模型过拟合,虽然在训练集上表现得很好,但是在测试集中表现得恰好相反,在性能的角度上讲就是协方差过大(variance is large),同样在测试集上的损失函数(cost function)会表现得很大。 欠拟合呢(under-fitting)?相对过拟合欠拟合还是比较容易理解。还是拿刚才的模型来说,可能二哈被提取的特征比较少,导致训练出来的模型不能很好地匹配,表现得很差,甚至二哈都无法识别

过拟合产生的原因

噪声:永远没有完美的数据,数据里的噪声会影响模型的学习。 假规律: 样本量较少时,学习器却很复杂时,学习器会过度解读学到很多假的但是在这少数几个样本拥有的规律。

写在最后:

今天的文章只是对机器学习做一个简单的介绍,大家有什么不懂的问题欢迎留言交流。

参考文献:

https://elitedatascience.com/birds-eye-view

【推荐阅读】

俄罗斯方块进阶--AI俄罗斯方块

让机器自己去玩俄罗斯方块

除了画佩奇我们还要玩点更高级的

我们不仅会用Python画佩奇还可以画一个动态时钟呢

【LeetCode】贪心算法--划分字母区间(763)

【Python爬虫】Urllib的使用(2)

··· END ···

感谢您的关注,Ahab期待跟大家共同进步。

0 人点赞