「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

开场白

“逃学博士”一直都在自我学习,并且努力把对知识的总结和理解,以发文字的形式输出给大家。这也是一个自我学习的过程。最近,对机器学习比较感兴趣,之后会有一些不间断的更新。

这篇文章我们主要讲两个知识点:1. 什么是机器学习?2. 决策树算法(Decision Tree Algorithm)对泰塔尼克号死亡的预测

什么是机器学习?

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

最近,人工智能(AI)、机器学习(Machine Learning)等知识甚是热门。那么,到底什么是机器学习呢?最基本、最简单的理解:

通过大量数据的输入,通过内部算法对数据的解析归纳,以达到对真实世界中的事件作出预测和决策

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

图片来源:Mathworks

通常机器学习有两种方式基本的、比价常见:Supervised Learning(监督式学习)和Unsupervised Learning(非监督式学习)

  • Supervised Learning(监督式学习):
「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

监督式学习比较简单,需要大量数据的输入(Data),这些数据被称为训练数据(Training Data)。训练数据包括数据(Input)目标(Targets)的输入。

上图中的7,8是数据,15是目标。当然,数据中并不是一组,包含了海量的训练数据。通过内部算法,我们会得到数据和目标之间的逻辑关系。通过这个逻辑关系就可以对后续新的数据进行分析了。

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

当输入1,9的时候,通过已经总结出来的逻辑关系,机器会输入10(一般来说,会输入非常接近于10的数字)。这个过程叫做Supervised Learning(监督式学习)

Regression(回归分析)和Classification(分类分析)就比较好理解了。

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

数据来源:Slideshare.net

Regression(回归分析):用来分析连续性的输入-反馈的问题。比方说:

数字的加减法逻辑(预测数是从负无穷到正无穷的所有数);

上海的房价分布;

股票价格等等;

Classification(分类分析):用来分析数据反馈为类型值得问题。比如说:

邮件是垃圾邮件还是重要邮件? - Binary Classification(二元分类)

今天下雨、多云还是晴天?- Multi-Class Classification(多元分类)

图像是猫、狗还是人等等。

  • Unsupervised Learning(非监督式学习):

相比于监督式学习,非监督式学习的训练数据并不包括目标的输入。意思就是,我给你一堆数据,你自己找规律,我不告诉你。

同时,数据并不是整理并预处理过的,可能包含很多干扰数据、未知数据等等。

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

决策树算法

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

决策树算法是比较接近人类思维的,我们可以很容易去理解决策树的算法演示过程。举个例子:

银行的贷款的发放是怎么对贷款人进行评估的?通过一系列条件的分类评估,给出相应的结论总结。

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

图片来源:IBM Developer

具体怎么去实现Decision Tree算法,会在后期文章中详细介绍。

对泰坦尼克号的死亡预测

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

本文的Python代码借鉴万维钢老师《精英日课》专栏的151课和陈为林_Joe(简书)的知识分享。

泰坦尼克号的故事大家应该都知道点,我就不赘述了。

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

上图中是对泰坦尼克号所有人员的数据录入。其中:

PassengerId (乘客编号)

Survival(幸存与否): 0 = 死亡;1 = 幸存

Pclass(仓位): 1 = 头等舱, 2 = 二等舱, 3 = 三等舱

Name(姓名)

Sex(性别)

Age(年龄)

SibSp(船上兄弟姐妹以及配偶的个数)

Parch(船上父母以及者子女的个数)

Ticket(船票信息)

Fare(票价)

Cabin(房间编号)

Embarked(登船码头)

通过pandas中的value_counts()函数,可以统计出各个条件下的死亡和幸存人数。

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

据统计,船上一共有819人,幸存342人,幸存率为38.4%。那么,如果这样去统计,很多内在的逻辑关系会被忽略掉。比方说:

男人在危难前将生的希望给了女人(女士优先)和孩子(年龄)。

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

上图显示,男人的幸存率只有18.9%,而女人的幸存率高达74.2%。那么,我们怎么通过决策树算法和机器学习去找到决定幸存率的关键因素呢?

先导入决策树算法,并对船上人员的年龄进行修正(很多人的年龄缺失,我们用所有已知年龄的中位数进行填充)。

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

之后,我们船上人员的所有信息进行筛选,看哪些因素可能影响幸存率。筛选后,我选择了:

Pclass(仓位): 1 = 头等舱, 2 = 二等舱, 3 = 三等舱

Fare(票价)

Sex(性别)

Age(年龄)

SibSp(船上兄弟姐妹以及配偶的个数)

Parch(船上父母以及者子女的个数)

「一」从泰坦尼克号的死亡预测切入机器学习(Machine Learning)

通过决策树的分析,仓位的影响为11.3%,影响最大的是性别 - 31.1%, 其次是票价26.7%(可能价格高的票有优先上船的权利),年龄的影响百分比为23.7%(这可能是数据修正的关系)。

最后一行代码告诉我们,算法训练的逻辑输入符合率高达98.0%。也就是说,预测结果和实际结果的匹配值为98%。

之后,我们可以假象一个乘客820号,给定所有的身份信息。那么,系统会给出这个人能否存活的预测分析。

总结

在实际应用在,模型的训练和检测同样重要。一般是在原始数据中留存一小部分数据用作模型后期的检测。

在决策树算法中,本例中,是否存活是目标。数据是输入。这是一个典型的监督式学习。而影响因子的筛选也同样重要。最后,通过模型数据预测准确值,可以让我们对模型有个总体的评估。

后续还会有更多关于机器学习的文章。喜欢我的文章,请点击关注天天有料的”逃学博士“吧。