开始学习机器学习之前你必须要了解的知识有哪些?机器学习系列入门篇_机器学习开始-程序员宅基地

技术标签: python  数据分析  机器学习  人工智能  

大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师。欢迎大家跟我一起走进数据分析的世界,一起学习!

感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦。


往期回顾:统计学习方法第二版 李航

距离上次介绍机器学习相关的内容,已经过了一年的时间了,而这篇博客目前的阅读量还已经破万了,这样数据看起来似乎也还算不错,可惜因为我当时没有足够的时间和精力去完整把这篇博客写完,只介绍了机器学习的基础知识,感知机和KNN等知识。

个人认为这篇博客在每个知识点上总结得非常的详细,但这次我想换一种方式,以一种更简洁的方式来介绍机器学习的理论基础以及几种常用模型。

那么本篇文章呢,是带大家入门机器学习的第一期,也就是会介绍机器学习的理论基础。

机器学习理论基础

那在这里,我也要先引用一下一个非常经典的小故事,帮助大家更清楚地理解机器学习。

在这里插入图片描述
在一个酒吧里,吧台上摆着十杯几乎一样的红酒,老板跟你打趣说想不想来玩个游戏,赢了免费喝酒,输了付3倍酒钱,那么赢的概率是多少?

你是个爱冒险的人,果断说玩!

老板接着道:你眼前的这十杯红酒,每杯略不相同,前五杯属于「赤霞珠」后五杯属于「黑皮诺」。现在,我重新倒一杯酒,你只需要正确地告诉我它属于哪一类。

听完你有点心虚:根本不懂酒啊,光靠看和尝根本区分辨不出来,不过想起自己是搞机器学习的,不由多了几分底气爽快地答应了老板!

你没有急着品酒而是问了老板每杯酒的一些具体信息:酒精浓度、颜色深度,以及一份纸笔, 老板一边倒一杯新酒,你边疯狂打草稿。

在这里插入图片描述

很快,你告诉老板这杯新酒应该是「赤霞珠」。

老板瞪大了眼下巴也差点惊掉,从来没有人一口酒都不尝就能答对,无数人都是反复尝来尝去,最后以犹豫不定猜错而结束。

你神秘地笑了笑,老板信守承诺让你开怀畅饮。微醺之时,老板终于忍不住凑向你打探是怎么做到的。

你炫耀道:无他,但机器学习熟尔。

老板:…

在这里插入图片描述

怎么辨别出来的呢?

如下图,故事中的你画了类似这样子的图,就区分出来了,到底是怎么回事?

在这里插入图片描述

1 有监督学习

指对数据的若干特征与若干标签(类型)之间的关联性进行建模的过程; 只要模型被确定,就可以应用到新的未知数据上。

这类学习过程可以进一步分为「分类」(classification)任务和「回归」(regression)任务。

在分类任务中,标签都是离散值

而在回归任务中,标签都是连续值

2 无监督学习

指对不带任何标签的数据特征进行建模,通常被看成是一种“让数据自己介绍自己” 的过程。

这类模型包括「聚类」(clustering)任务和「降维」(dimensionality reduction)任务。

聚类算法可以将数据分成不同的组别,而降维算法追求用更简洁的方式表现数据。

3 半监督学习

另外,还有一种半监督学习(semi-supervised learning)方法,介于有监督学习和无监督学习之间。通常可以在数据不完整时使用。

4 强化学习

强化学习不同于监督学习,它将学习看作是试探评价过程,以"试错" 的方式进行学习,并与环境进行交互已获得奖惩指导行为,以其作为评价。

此时系统靠自身的状态和动作进行学习,从而改进行动方案以适应环境。

(提示:半监督学习和强化学习比较偏向于深度学习,因此在后续文章中也不会再提到。)

5 输入/输出空间、特征空间

在上面的场景中,每一杯酒称作一个「样本」,十杯酒组成一个样本集。

酒精浓度、颜色深度等信息称作「特征」。这十杯酒分布在一个「多维特征空间」中。

进入当前程序的“学习系统”的所有样本称作「输入」,并组成「输入空间」。

在学习过程中,所产生的随机变量的取值,称作「输出」,并组成「输出空间」。

在有监督学习过程中,当输出变量均为连续变量时,预测问题称为回归问题;当输出变量为有限个离散变量时,预测问题称为分类问题。

6 过拟合与欠拟合

先来一句易懂的话:

  • 过拟合简单来说就是模型把训练集的东西学得太精了,对未知的数据效果却很差(打个比方就是考前你练得很不错,给啥做过的题都说得出答案,但是考试的时候碰到新题了就做得很差)
  • 欠拟合就是模型学得很差,打个比方就是考前有题给你练,你也练了,但就是练不会,学不懂。

下面是具体介绍。

当假设空间中含有不同复杂度的模型时,就要面临模型选择(model selection)的问题。

我们希望获得的是在新样本上能表现得很好的学习器。为了达到这个目的,我们应该从训练样本中尽可能学到适用于所有潜在样本的"普遍规律",

我们认为假设空间存在这种"真"模型,那么所选择的模型应该逼近真模型。

拟合度可简单理解为模型对于数据集背后客观规律的掌握程度,模型对于给定数据集如果拟合度较差,则对规律的捕捉不完全,用作分类和预测时可能准确率不高。

换句话说,当模型把训练样本学得太好了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本的普遍性质,这时候所选的模型的复杂度往往会比真模型更高,这样就会导致泛化性能下降。这种现象称为过拟合(overfitting)。可以说,模型选择旨在避免过拟合并提高模型的预测能力。

与过拟合相对的是欠拟合(underfitting),是指模型学习能力低下,导致对训练样本的一般性质尚未学
好。

在这里插入图片描述
虚线:针对训练数据集计算出来的分数,即针对训练数据集拟合的准确性。

实线:针对交叉验证数据集计算出来的分数,即针对交叉验证数据集预测的准确性。

  1. 左图:一阶多项式,欠拟合;
    训练数据集的准确性(虚线)和交叉验证数据集的准确性(实线)靠得很近,总体水平比较高。
    随着训练数据集的增加,交叉验证数据集的准确性(实线)逐渐增大,逐渐和训练数据集的准确性(虚线)靠近,但其总体水平比较低,收敛在 0.88 左右。
    训练数据集的准确性也比较低,收敛在 0.90 左右。
    当发生高偏差时,增加训练样本数量不会对算法准确性有较大的改善。
  2. 中图:三阶多项式,较好地拟合了数据集;
    训练数据集的准确性(虚线)和交叉验证数据集的准确性(实线)靠得很近,总体水平比较高。
  3. 右图:十阶多项式,过拟合。
    随着训练数据集的增加,交叉验证数据集的准确性(实线)也在增加,逐渐和训练数据集的准确性 (虚线)靠近,但两者之间的间隙比较大。
    训练数据集的准确性很高,收敛在 0.95 左右。
    交叉验证数据集的准确性值却较低,最终收敛在 0.91 左右。

从图中我们可以看出,对于复杂数据,低阶多项式往往是欠拟合的状态,而高阶多项式则过分捕捉噪声数据的分布规律,而噪声之所以称为噪声,是因为其分布毫无规律可言,或者其分布毫无价值,因此就算高阶多项式在当前训练集上拟合度很高,但其捕捉到的无用规律无法推广到新的数据集上。因此该模型在测试数据集上执行过程将会有很大误差,即模型训练误差很小,但泛化误差很大。

结束语

注意:这篇文章仅仅是我接下来的机器学习系列的第一篇,后续还会有更多的内容。同时机器学习理论基础当然还有其他内容要补充,之所以没有放到这里是因为我打算结合KNN算法一起来补充。

如果大家有多的时间的话,也可以再去仔细看看我之前写的那篇。


推荐关注的专栏

机器学习:分享机器学习理论基础和常用模型讲解
数据分析:分享数据分析实战项目和常用技能整理

往期内容回顾

统计学习方法第二版 李航
我和关注我的前1000个粉丝“合影”啦!收集前1000个粉丝进行了一系列数据分析,收获满满
分享一个超nice的数据分析实战案例 “手把手”教学,收藏等于学会
数据分析必须掌握的RFM模型是什么?一文搞懂如何利用RFM对用户进行分类【附实战讲解】
MySQL必须掌握的技能有哪些?超细长文带你掌握MySQL【建议收藏】
Hive必须了解的技能有哪些?万字博客带你掌握Hive️【建议收藏】
一文带你了解Hive【详细介绍】Hive与传统数据库有什么区别?


关注我,了解更多相关知识!


CSDN@报告,今天也有好好学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44186838/article/details/120163971

智能推荐

ScrollPic.js—简单易用的图片左右滚动插件-程序员宅基地

文章浏览阅读5.8k次。ScrollPic.js对于一些新手来说是一个很好理解运用的图片左右滚动插件,兼容性较好,可以放心大胆的使用。_scrollpic.js

Java开发实例大全提高篇——操作PDF篇-程序员宅基地

文章浏览阅读275次。第4篇 操作PDF篇 第13章 操作PDF文档 13.1 文档和文档属性 实例380 创建PDF文档 public static void main(String[] args) { try { Document document = n..._java开发实例大全pdf百度云

java socket缓冲区大小_socket tcp缓冲区大小的默认值、最大值-程序员宅基地

文章浏览阅读1.6k次。Author:阿冬哥Created:2013-4-17Blog:http://blog.csdn.net/c359719435/Copyright 2013阿冬哥http://blog.csdn.net/c359719435/使用以及转载请注明出处1 设置socket tcp缓冲区大小的疑惑疑惑1:通过setsockopt设置SO_SNDBUF、SO_RCVBUF这连个默认缓冲区的值,再用ge..._java api 调用setsockopt(2)系统调用so_rcvbuf选项来控制它的大小

迷信一把:三才数理吉凶_113易经数字代表什么-程序员宅基地

文章浏览阅读1.2w次。所谓三才即天才、人才、地才,它们分别是天格、人格、地格数字的个位 数。4U,byhN0五行之间的关系是:木、火、土、金、水相临相生,相隔相克。这样,根据数理与五行之间的内在联系,推算出来的配置关系即为三才配置。从中观察三才配置的凶吉,可以判断把握您的综合运势,预测您的事业成功 率以及身体状况. 111 成功顺利伸展,希望圆满达成,基础安定,_113易经数字代表什么

群晖 半洗白_黑群晖利用DDSM半洗白教程-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏9次。半洗白原理半洗白原理:DSM6 以上的系统。群晖Docker中会增加一个叫做DSM的功能。简单来说,就是利用Docker在你的群晖系统中,虚拟一个群晖系统。然而,令我们庆幸的是。这个虚拟出来的小群晖。在Docker中是自带生成序列号(SN)的。只不过这个序列号我们只能用来半洗白而不能全洗白。所以,我们只需要将这个小群晖的序列号和MAC 提取出来。替换到你物理机安装的群晖引导当中,就可以实现半洗白咯..._2020年黑群晖还能洗白吗

Bestcoder7(1004)hdu4988(经典问题:树状数组套treap求解动态逆序对)_hdu 4988-程序员宅基地

文章浏览阅读1.7k次。Little Pony and Boast BustersTime Limit: 20000/10000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 83 Accepted Submission(s): 32Problem Description_hdu 4988

随便推点

输入pip命令报错:from pip import main ImportError: cannot import name 'main'_非root用户pip命令使用时出现import错误-程序员宅基地

文章浏览阅读849次。pip更新后会遇到下面的问题: pip -VTraceback (most recent call last): File "/Users/alisa.li/.pyenv/versions/3.6.5/bin/pip", line 7, in <module> from pip import _main_ImportError: cannot import ..._非root用户pip命令使用时出现import错误

CMD命令:不是内部或者外部命令也不是可运行的程序或批处理文件-程序员宅基地

文章浏览阅读10w+次,点赞237次,收藏245次。前言: 相信有很多小伙伴都比较喜欢使用Command命令来快速的打开或运行程序,但是有些时候命令提示符会和我们开个小玩笑。今天我就教大家如何管教这个不听话的cmd! 场景: 看有些大神在命令提示符里输入两句命令就能执行一大串东西,本着学习的态度,先试试再说!没成想出现了:“不是内部或外部命令,也不是可运行的程序或批处理文件。” 通过各种查各种找,终于......_不是内部或者外部命令也不是可运行的程序或批处理文件

【Flutter web】内网网站如何发布?解决外网下canvaskit.js和字体无法加载问题_flutter web canvaskit.js-程序员宅基地

文章浏览阅读5.4k次,点赞2次,收藏6次。背景由于部署的网站只能在内网下使用,部署服务器又不能访问外网,导致Flutter web部署遇到很多问题,比如:白屏。部署的网站为何首次加载缓慢,会白屏?通过浏览器开发工具看图:可以看到css和ttf文件加载失败了(也要注意cancaskit.js和canvaskit.wasm这两个文件,内网环境下肯定也是不能fetch的),那么白屏或者白屏后字体不见了问题就是这个获取失败了,查看这两个文件加载地址:https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu_flutter web canvaskit.js

ant项目构建(打jar包小案例)_ant构建,包小-程序员宅基地

文章浏览阅读8.3k次。ant介绍不说了,在此直接使用ant为项目打一个jar包,在开始之前,先说下ant环境的搭建ant环境准备:首先安装好JDK,配置好JAVA_HOME与PATH;其次下载ant包,直接解压,配置ANT_HOME与PATH环境变量;最后测试ant环境是否搭建成功:cmd下输入ant -version,出现ant版本信息说明ant环境搭建成功利用ant打jar包先编写b_ant构建,包小

java获取tomcat端口_获取当前Tomcat实例的端口-程序员宅基地

文章浏览阅读1.3k次。有时需要在当前代码中获取当前Server实例的端口号, 通过HttpServletRequest请求可以, 但有时也需要在没有请求的情况下获取到端口号.用以下方法是可以获取到的:public int getHttpPort() {try {MBeanServer server;if (MBeanServerFactory.findMBeanServer(null).size() > 0) {..._java获取tomcat端口号

qml红色下划线去除_qt 的qml文件中总是红色错误线-程序员宅基地

文章浏览阅读750次。红色下划线_qt 的qml文件中总是红色错误线

推荐文章

热门文章

相关标签