前言
之前在百度上搜索过许多机器学习的资料,发现关于机器学习的视频资料比较少,而较为有名的是斯坦福大学Andrew Ng教授的公开课。出于个人兴趣原因,虽然是java工程师,但是对机器学习和人工智能方向非常感兴趣,于是利用还没有正式上班的业余时间来慢慢积累学习一下,语言采用的是Python。
经资料查询,发现有一本比较适合Python实战机器学习的书—-《机器学习实战》(Machine Learning in Action),2013年出版于图灵,作者:Peter Harrington,从今天开始慢慢积累关于机器学习的知识,同时记录机器学习知识的推进笔记。
关于本书的结构
| 书的部分由四大部分15章和4个附录组成。
|——第一部分:分类
|——第二部分:利用回归预测数值型数据
|——第三部分:无监督学习
|——第四部分:其他工具
第一部分和第二部分主要探讨了监督学习。
话不多说,下面开始记录正文笔记。
Part1 分类 day01
0x001 机器学习基础
1.何谓机器学习?
除却一些无关的紧要情况,人们很难直接从原始数据本身获取所需信息。简单的说,机器学习就是把无序的数据转成为有用的信息。
2.机器学习在日常生活中的应用?
人脸识别、手写数字识别、垃圾邮件过滤、等等。。。。。
3.关键术语
监督学习:在监督学习的过程中,我们只需要给定输入样本集,机器就可以从中推演出目标变量的可能结果。而监督学习中一般使用两种类型的目标变量:标称型和数值型。标称型目标变量的结果只有在有限目标集中取值,例如真与假,动物分类集合{爬行类,鱼类,两栖类}。。。数值型目标变量的结果可以从无限的数值集合中取值,如0.1、42、1、-1等等。
下面有一个表,基于四种特征的鸟物种分类表
表1-基于四种特征的鸟物种分类表
体重 | 翼展 | 脚蹼 | 后背颜色 | 种属 |
---|---|---|---|---|
1000 | 125 | 无 | 棕色 | 红尾鹊 |
3000 | 200 | 无 | 灰 | 鹭鹰 |
…… | …… | …… | …… | …… |
通过上表的数据,我们采集到的前四个值称为特征,也叫属性,特征下面的每一行数据称之为特征的实例。而这组数据的目的是让机器学习来进行判断鸟的种类,我们通过前四种特征(体重、翼展、脚蹼 、后背颜色),来判断鸟的种类,此处的种类称之为目标变量,也就是通过我们机器学习算法的预测结果,我们将这个过程叫做分类。
有了这样的例子后,最终决定使用某个机器学习算法进行分类,首先要做的是算法训练,即学习如何分类。我们采集了已分类的大部分数据,就像上表中一样,已经是得知了目标变量的结果,将这部分已分类的数据称之为训练集。而上表的2个训练样本组成了一个训练集,每个训练样本中包括了4个特征和一个目标变量。
注:特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。
为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。当机器学习程序开始运行时,使用训练样本集作为算法的输入,训练完后输入测试样本。输入测试样本时并不提供测试样本的目标变量,让程序决定样本属于哪种类别。比较测试样本预测的目标变量和实际样本类别之间的差别,就可以得出算法的实际精确度。
0x002 机器学习的主要任务
上面的例子介绍了机器学习如何解决分类问题,它的主要任务是将实例数据划分到合适的分类中。机器学习的另一项任务是回归,它主要用于预测数值型的数据。回归例子——–数据拟合曲线:给定数据点的最优拟合曲线。分类和回归属于监督学习,之所以称之为监督学习,是因为这类算法必须知道预测什么,即目标变量的分类信息。下面列举醋了机器学习的主要任务,以及解决相应问题的算法。
表2-用于执行分类、回归、聚类、和密度估计的机器学习算法
————————————————————–监督学习的用途:———————————————————————- | |
---|---|
k-邻近算法 | 线性回归 |
朴素贝叶斯算法 | 局部加权线性回归 |
支持向量机 | Ridge回归 |
决策树 | Lasso最小回归系数估计 |
————————————————————-无监督学习的用途:——————————————————————– | |
K-均值 | 最大期望算法 |
DBSCAN | Parzen窗设计 |
0x003 开发机器学习应用程序的步骤
1.收集数据:例如制作爬虫采集网站上的数据、从RSS反馈或者API中得到信息,或者使用公开可用的数据源。
2.准备输入数据:得到数据后,还需确保数据格式符合要求,本书采用的格式是Python语言的List。
3.分析输入数据:此步骤主要是人工分析以前得到的数据。
4.训练算法:机器学习算法从这一部才算开始真正的学习。将前两步得到的格式化数据输入到算法,从中抽取知识和信息。若使用无监督学习算法,由于不存在目标变量值,也不需要训练算法,所有与算法相关的内容都集中在第5步。
5.测试算法:为了评估算法,必须测试算法工作的效果。对于监督学习,需已知用于评估算法的目标变量值;对于无监督学习,需用其他评估算法来检测算法的成功率。
6.使用算法:将机器学习算法转化为应用程序,执行实际任务,以检验上述步骤时候可以在实际环境中正常工作。
0x004 基础总结
上面的笔记记录了分类中的基础术语的概念:
监督学习:
-----训练样本,训练集
|
-----特征,特征的实例
-----测试数据,训练数据
书中采用的版本是Python2.7,因为在2013年,但是我在后面做笔记的编码中会采用Python3.6,因为现在已经2017年了,大部分的库已经稳定的移动过来了,所以我选择Python3.6,若中间遇到一些坑,可以自行解决增加以下阅历。