干货是什么意思(为什么会说干货分享)

机器学习 - Machine Learning是时下最火热的技术名词之一。

逃学博士一直在不断丰富自己的知识,将学到的知识消化吸收,并且写成文字发表出来。这是一个学习的过程,利人利己,何乐不为。

另外,做个小宣传。这位加拿大Bob大叔是一个经营着农场的高中老师,顺便教大家生活中的英语。浑厚的美式大叔发音,有兴趣的可以去学习下。

逃学博士所在学校离大叔很近,大叔也苦于自己的视频被搬运。所以,一拍即合。逃学博士帮Bob大叔在国内上传视频啦。希望大家支持。

加拿大Bob大叔

言归正传,这篇文章我们一起来简单了解一下:

什么是机器学习(Machine Learning); 什么是交叉交叉验证;

这些是机器学习的基础,打好基础我们再聊高深的知识。

01 什么是机器学习?

机器学习

信息时代,数据为王。我们首先要弄清楚,为什么现在的科技公司都称自己是“数据公司”。整天收集那么多数据做什么呢?

我们一步一步来!

每天我们自己都会贡献很多数据,比如你上网浏览了什么网页,你在淘宝上查看了什么产品,你去过什么地方(手机GPS),今日头条上看过什么主题的文章或者视频等等。不要以为没有用,科技公司靠着这些数据可是赚的盆满钵满的。

对我们个人来说”时间就是金钱!“

对于数据公司来说”数据就是金矿!”

你有没有发现,当你在头条上看过“教羽毛球”的视频后,头条就会给你不停的推送羽毛球相关的视频呢?

这些推送可不是头条工作人员给你手动推送的,而是通过后台的算法,认为你大概率对羽毛球相关视频感兴趣,所以才推送给你。毕竟你点开视频,头条才能赚钱。

那我们就从这个推送问题,来说说机器学习吧!

图1:原创,转载注明出处

假设你有1000个人的数据,分别是他们对运动的喜好,包括:

羽毛球 乒乓球 篮球 足球

图1的方法是 机器学习的一种方法,叫决策树(Decision Tree)。这个数据分析的目的是找出喜欢羽毛球和喜欢篮球之间的关系。

羽毛球(Y)- 乒乓球(Y)- 篮球(Y) 羽毛球(Y)- 乒乓球(N)- 足球(Y)- 篮球(Y) 羽毛球(Y)- 乒乓球(N)- 足球(N)- 篮球(N) 羽毛球(N)- 乒乓球(Y)- 篮球(Y) 羽毛球(N)- 乒乓球(N)- 足球(Y)- 篮球(Y) 羽毛球(N)- 乒乓球(N)- 足球(N)- 篮球(N)

如果这个机器学习模型表现好的话,我们完全可以从一个人是否喜欢羽毛球,一步一步推断出他是否也喜欢篮球。

这就是一个简单的机器学习过程。那么,机器学习最重要两步是什么呢?

建模找关系; 定关系预测;

我们一起来做一个简单的机器学习模型,研究目标是 糖的摄入量和肥胖之间的关系;

瞎掰的数据

不要在意数据,都是我瞎掰的。

我们看到,糖摄入量和体重是存在一个正相关的关系。这就是最基本的线性规划的问题(Linear Regression)。

数据间的关系

机器学习的核心之一是依靠数据定模型找关系,也就是用数据去训练(Training)模型。

上图所示,体重 = 1.6493 * 糖摄入量 + 45.877

为什么我们要去找这个关系呢?

因为我们要依靠已有的数据,去预测未来可能会发生的事,这就是机器学习的核心之二:定模型关系预测。

比方说,这时候有一个人说我每天吃 20 克的糖,这样我们可以利用上面找到的关系,算出这个人的体重大概在78.863 千克。

至于准不准,我们会在之后的文章里谈论。 02 什么是交叉验证?

Cross Validation(交叉验证),又一个高大上的名字。不要被唬住,其实道理说白了很简单。

比方说我们手上有1000个人的糖摄入量和体重的数据,我们并不能用全部的数据去建立模型。

一般来说,

Machine Learning需要数据去决定模型关系,这叫(Train the Machine Learning Method) 同时,建立模型之后,我们需要知道这个模型效果如何。同样需要数据去验证,这叫(Test the Machine Learning Method) 如果你用了所有的数据去建立模型,那你根本就没有任何数据去验证模型了。

有的同学说,我可以用建立模型的数据去验证啊!

打个比方,你的数据 - 100个男人里,有98个怕老婆,2个不怕(因为没老婆),那你建立的模型结论是 98%的男人怕老婆!

如果你用建模型的数据去检测,你当然会发现这个模型太准了。但事实是这样吗?

因此,一般来说,会将已有数据分成两份:

一份用来Train the machine learning method; 一份用来Test the machine learning method;

交叉验证

如上图,我们一共有20个数据。我们将其中5个数据拉出来用于检验模型,另外15个建立模型。也就是说,数据被分成了4份,每一份5个数据。

**需要弄明白为什么需要交叉验证?

Machine Learning的方法太多了,什么SVM,Random forest,K-nearest Neighbor等等,你怎么去比较哪一种方法更好呢?

建模 + 验证

是这样没错,但是你怎么能保证你挑选出来用于建立和验证模型的数据就是最合理的呢?

仔细观察上图,20个数据点,10个红球,10个绿球。

上图**行:

前5个数据用于验证,后15个数据用于建模(8个红的,7个绿的),这样去建立的模型,红球出现的概率更高。这就和真实情况有出入,因为红球和绿球明明一样多。

这就引出了 交叉验证 了。

把数据分成4份,标注为A,B,C,D。

**次用A作为检测数据,BCD作为建模数据,记录下模型的表现; 第二次用B作为检测数据,ACD作为建模数据,记录下模型的表现; 第三次用C作为检测数据,ABD作为建模数据,记录下模型的表现; 第四次用D作为检测数据,ABC作为建模数据,记录下模型的表现;

这样做我们就可以保证:

每一个数据都被用来检测过一次; 每一个数据都被用来建模过三次;

对挑选的几种 机器学习的方法都这样处理一遍,然后给模型总体表现排序,最好的自然就是我们所要用的方法了。

分成四份,如上例,叫做 4倍交叉验证(Four-Fold Cross Validation)。

K-Fold Cross Validation

一般实际应用的时候,数据被分成10份,就是10倍交叉验证。

03 总结

逃学博士一直觉得,很多看似高深的知识背后,都是基础知识的延伸,只不过被套上了很多高大上的专有名词。

介绍机器学习,先给你整一堆 专有名词,听众觉得完全听不懂,但是感觉好厉害的样子。

专业的划分不是知识的划分,是看怎么把知识点包装成只有专业内的人才能听得懂的形式。

比方说:

我们今天拿到了一批数据,先做一个10倍交叉验证,看看选什么方法,是SVM还是Random Forest,最后给我一个分析报告。

如果你没有看这篇文章,**次见这段话是不是懵逼。

希望大家喜欢我的文章。

“逃学博士”:理工科直男一枚,在冰天雪地的加拿大攻读工程博士。闲暇之余分享点科学知识和学习干货。

原文链接:,转发请注明来源!