AI教程

【AI小白】机器学习基本术语

简介

本节我们通过使用IRIS数据预测花的种类,来了解机器学习的专业术语及基本概念。并对如何应用机器学习有一个感性的认知。

正文

小白是一个刚刚毕业的学生,对AI了解甚少。正所谓无知者无畏,虽然了解不多,但他想在一家AI公司工作。

在投放了很多简历后,小白终于收到了一家做数据挖掘的公司的回复。在进行面试前,公司需要他完成一个简单的任务入门任务:

使用机器学习算法,分析IRIS数据。角度自拟,写一份分析报告。

看到这个问题后,小白是一脸黑人问号。啥是IRIS?咋分析数据?怎么使用机器学习算法?

作为一个新人,小白只看过AI科普性文章【何为AI】,知道啥是机器学习,但除此之外对其他内容一窍不通。

于是小白开始上网查找资料……

背景介绍

Iris数据集,也称鸢尾花卉数据集,由生物学家Fisher收集整理。

三个鸢尾花品种的花瓣几何对比:山鸢尾、维吉尼亚鸢尾和变色鸢尾
鸢尾花 (拉丁学名:Iris L.)
单子叶植物纲,百合目,有约300种不同品种

Fisher于1936年统计了3种鸢尾花(山鸢尾、维吉尼亚鸢尾、变色鸢尾)的花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性。每种鸢尾花各统计了50株,共150条数据。具体数据如下(前5条数据):

花萼长度 花萼宽度花瓣长度花瓣宽度品种
6.42.85.62.22
5.02.33.31.01
4.92.54.51.72
4.93.11.50.10
5.73.81.70.30

术语

每一条数据都是一个样本(sample/instance)。如第一条数据(花萼长度=6.4,花萼宽度=2.8,花瓣长度=5.6,花瓣宽度=2.2;品种=2)就是一个样本。

这些的样本组成了我们研究所用数据集(dataset)。

现在,我们想找到一个方法,在只知道花萼和花瓣的长度与宽度的情况下就可以预测出花的品种。我们称这种方法为模型(model)或者为假设(hypothesis)。而通过样本找到这种方法的过程为学习(learning)或者为训练(training)

在这个模型中,花萼和花瓣的长度和宽度就是我们初高中学函数时的自变量x,我们称为属性(attribute)或者为特征(feature),而我们要预测的品种就是因变量y,我们称为标签(label)

这里。我们预测的标签是花的种类,只有3种可能,因此这是一个分类(classification)问题,不是品种0就是品种1或品种2。而当我们想通过品种、花萼长度宽度以及花瓣长度来预测花瓣宽度的时候,由于花瓣的宽度是一个连续值,有无限多种可能,这是一个回归(regression)问题。

无论是分类还是回归,我们学习模型的时候,样本既有属性又有标签,我们称其这种学习为监督学习(supervised learning)。而如果我们的样本没有标签,只有特征(比如数据集是鲁迅文章全集,特征是文字,而标签则没有定义),我们希望学习样本的一些潜在规律(如鲁迅的写作风格),我们称这种学习为非监督学习(unsupervised learning)

机器学习的步骤

假设我们有一个要用机器学习算法来实现的任务。比如这里的

通过鸢尾花的花萼以及花瓣的长度和宽度来预测花的品种。

那么我们需要做哪些步骤呢?

  1. 收集数据并整理
  2. 数据预处理(特征工程)
  3. 训练算法
  4. 测试算法
  5. 应用算法

第一步肯定就是去收集数据,从网上用爬取数据、在线下做调研统计数据等等。

接下来就是要分析数据:查看样本中是否有数值异常的数据,是否有空缺值;分析每个属性的取值分布特点;查看属性之间取值的差异等等。然后再处理数据:补全或舍弃部分样本数据;对某些属性进行拆分、合并或舍弃等等。这个步骤我们统称为特征工程

比如,为了对数据有感性的认知,我们选取花萼长宽度以及花瓣宽度这三个属性并绘图。每个点代表一个样本数据,红蓝黄色各代表一种花。我们能看出这三种类型的花在这几个属性上是有明显区别的。

鸢尾花数据分布图

有了选择好的数据,我们就可以开始训练算法了。编写合适的机器学习算法(具体内容会在以后内容中慢慢介绍)并训练算法。记得我们在上一节 【何为AI】讲过机器学习是通过数据学习算法的算法。这里的训练算法就是上一句斜体字的部分。

光训练好了数据还没有结束,我们还有看看这个模型在实际应用的时候效果如何。也许这个模型只是“死记硬背”:对于见过的数据,可以精确地给出答案,对于没见过的数据,则胡乱给解。

因此我们需要在训练模型之前,留出一部分原始样本不让机器学习算法学习,当我们的机器学习算法学完其他数据之后,我们让这个算法来预测一下这些它没有见过的原始样本的答案应该为多少。以此来判断这个机器学习算法到底效果如何。这个过程就是测试算法

最终,如果算法效果不错,我们就可以将其用于实际了,也就是应用算法

代码示例

注:这里只是让大家感性认知一下机器学习的步骤,具体的每一行的意义将会在以后的文章中一一讲到。

线上代码文件已经上传到kaggle中(内容更详细、内含绘图),注册登录后点击“fork”按钮,可以线上执行代码。

以后常用程序包说明:

  • numpy 一个科学计算包,可以快速执行矩阵计算
  • matplotlib 绘图工具包
  • sklearn 机器学习算法包,内含很多机器学习算法
  • pandas 数据分析包
  • tensorflow AI框架包
  • keras 可快速搭建神经网络

在机器学习以及AI领域,有很多框架包,如sklearn、tensorflow。使用这些包可以在不需要了解算法底层原理的情况下实现想要的效果。但若想深入研究AI,光会调用框架包是远远不够的。要了解算法的数学原理,并可以自己编写算法才算合格。

导入所需要的包以及数据:

import numpy as np
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
iris=datasets.load_iris()

X = iris.data
y = iris.target

划分训练集、测试集

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0)

使用sklearn中已经有的算法,直接调用。

# 创建模型
model = LogisticRegression()

# 使用模型
model.fit(X,y)

# 评价模型
model.score(X_test,y_test)

# 预测查看
model.predict(X_test)
在jupyter中的运行结果

这些东西与AI无关?

“啥呀,这些东西一点都不酷,和人工智能一点都没关系!我学AI是想要做可以对话聊天的机器人,再不行也能实现一下图像识别吧。这个机器学习啥的,只是研究数据!” 小白吐槽到。

的确,如今做图像识别、语言识别等都是用深层神经网络,俗称深度学习。而我们入门AI要学习的内容(机器学习经典算法),更加倾向于数据挖掘:如基于大数据预测用户的购买行为。这的确与我们想要实现的“智能”相差甚远。

但如果你去看2012年以前的关于图像识别领域的论文,你会发现绝大多数论文用的都是这些机器学习经典算法:SVM、逻辑回归、朴素贝叶斯等等。这因为深度学习本是机器学习领域一个不起眼的小算法。随着数据与计算量的飞速提升,深度学习及其不凡的效果才渐渐的重新进入人们的视野之中,并在如图像识别、语言识别等领域逐渐取代了其他机器学习算法。

那我们直接去学“深度学习”,不要管“机器学习经典算法”好不好?

这就如同一个人还没有学会走路就想开始跑步一样。如今实现图像识别、语言识别的深度学习起源于机器学习,其很多思想、概念、理论都来自于机器学习。若想跳过机器学习理论直达人工智能的建设之中,则如高楼大厦没有好的地基,必会崩塌。

因此若想在AI领域有所建树,必须先放下心来,一步一个脚印地学好理论基础。

之后的几期,我们都会以实现一个小案例为目标,逐个讲解经典的机器学习算法。

总结与延伸

  • 了解了机器学习基本术语
    • 样本、属性(特征)、标签、数据集
    • 模型(假设)、训练(学习)
    • 监督学习、非监督学习
    • 分类问题、回归问题
  • 了解了应用机器学习的步骤
    1. 收集数据并整理
    2. 数据预处理(特征工程)
    3. 训练算法
    4. 测试算法
    5. 应用算法

读物推荐

  • 机器学习基础概念:《统计学习方法》(李航)第一章 
  • 机器学习基础概念:《机器学习》(周志华)1.2 1.3节

视频推荐

  • 【Google 机器学习系列教程】机器学习七步走

作者:M小白

未完待续…

2 thoughts on “【AI小白】机器学习基本术语
发表评论