Python神经网络学习--机器学习--西瓜书学习笔记

Posted ChuckieZhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python神经网络学习--机器学习--西瓜书学习笔记相关的知识,希望对你有一定的参考价值。

前言

最近跟老师学习西瓜书,正好和之前的学习路程重合,便结合在一起更新,也建议大家跟着看看机器学习的内容,根据我的理解(不一定对),学习路线应该是:

机器学习->深度学习(包含神经网络)

那么今天从西瓜书的绪论开始吧,我会尽量把我学到的以及书上难懂的讲清楚。一起加油!!

我不会直接系统说大量的定义,而是在文章中慢慢渗透进去,慢慢理解。

机器学习

什么是机器学习?

根据百度百科的定义:

是专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

通俗来讲,机器学习,就是使机器通过某种方法,学习到我们想让他学习到的东西,比如前两讲,我们使“机器”学习到了如何给他一个华氏度,他计算出摄氏度,我们使一个“机器”学会怎么分辨玫瑰和月季,这就是机器学习的实例。

而在这个过程中,我们给机器一些例子,让他们学习。

机器学习的过程

正如前两讲中,我们通过一个初始的公式+一些我们已知的数据,可以慢慢慢慢的计算出最后较为精确的公式,从而帮助我们分析计算。

而这个过程,就是机器学习的过程。而给出已知数据,通过已知数据调整系统参数的过程,可以近似的认为机器在上课。

通过上述的内容,我们可以把过程化简为下面的流程图:

这个过程,就是机器学习的过程了。

数据选择 

我们拿到一堆数据之后,要去把数据分组,需要有训练的数据和验证测试的数据,如下图:

 举个例子,可以拿到80%作为训练集(即使用这80的样本用来训练),拿10%的样本去验证,剩下的样本全部用来测试。

这个地方,验证集是用来测试后,验证模型是否正确,验证的过程中还会调整参数,而测试集,仅仅是用来测试,测试的过程中不会调整参数。还是有略微的区别的。

但是要注意,三个分组的数据分布,要尽量保证一样,比如玫瑰花-月季花分类,我们不能把月季花作为训练集,玫瑰花作为验证集,而应各个品类在各个分组中比例大致相同。

误差 

前两讲中说过,误差=真实值-计算值(或计算值-真实值,只要自己清楚即可)。

对于最终得到的结果公式 g ≈ f(x),我们希望它误差尽可能小,这样才能较为准确的进行工作。

最终函数g ≈ f(x)

其实最终的g还是较为难控制的,误差太小,有可能会出现过拟合的问题(over- fitting),误差过大,就会出现欠拟合的问题(under-fitting)。

其实这个问题很容易理解,我们可以通过坐标系来看,假设现在有这些数据:

 我们想拟合出这些数据的曲线,较为理想并且几率较大的曲线应该是下面的:

这些曲线能符合这些数据的趋势,还能最大程度的体现出数据的特征,其他可以的当然都能作为最终的曲线函数,采用的时候都可以有较大的信服力。

什么是欠拟合呢?如下图:

 整个函数其实是一条直线(此时数据量少,看起来没区别,但数据量大了,就有区别了),只能看到趋势,但就像一条随手画的直线一样。

同样,下面这张图是过拟合的样子:

我们不排除原本的数据就是这个曲线的可能,但是那样几率太小了,所以一般认为这样就是过拟合。 

如何防止欠拟合或过拟合呢?

一般来讲,欠拟合较为容易克服,我们可以通过镜像翻转或者再次训练来增加样例的数量,从而防止欠拟合的现象。

但是过拟合,难以解决,最重要的问题是,我们无法划分拟合与过拟合的界线,他们之间的界线并不是太明显。

就好像洗澡时,很难去找到合适的水温度,稍微拧多了或少了一点点,就很难受。

 先到这里吧!

 今天先理解一下机器学习的概念,建议大家结合前两讲一起看,有些概念是重合的,或者说前两讲的内容是给本期作为例子存在。

下一期会硬刚一些公式和难懂的概念。

 希望大家有所收获,一起学习、进步!

以上是关于Python神经网络学习--机器学习--西瓜书学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Python神经网络学习--机器学习--西瓜书学习笔记

机器学习-西瓜书南瓜书第五章

西瓜书笔记:机器学习相关会议及期刊

西瓜书笔记:机器学习相关会议及期刊

西瓜书笔记:机器学习相关会议及期刊

《西瓜书机器学习详细公式推导版》发布