您的位置:首页 > 理论基础 > 计算机网络

《机器学习实战》笔记一——机器学习基础

2015-09-01 22:37 453 查看
第一章 机器学习基础
机器学习的简单概述
机器学习的主要任务
学习机器学习的原因
python语言

机器学习用途广泛:当人们点击搜索引擎返回给人们的链接,搜索引擎能够记录这次点击并通过机器学习优化下次搜索结果; 通过机器学习可以在后台自动检测过滤垃圾广告邮件; 基于以往的统计知识,可以知道用户很多习惯,从而为用户提供更好的选择;
通过手写识别软件识别正确的手写地址加快邮件分拣等。人们生活中的方方面面都将用上机器学习。

机器学习软件可以改善商业决策、提高生产率、检测疾病、预测天气等。

1.1 何谓机器学习

机器学习就是把无序的数据转换成有用的信息。随着人们物质生活的发展,技术的进步,世界的信息倍增,而从海量的数据中抽取出有用的信息便显得非常重要。

另外,在现实生活中,人们遇到各种各样的问题,很多时候人们都无法彻底地解决问题,对问题本质了解不够透彻,而等了解透彻才解决问题又显得太晚,于是人们便需要根据以往的经验、以往的统计结果对新的问题做出回应,为此我们就需要统计学的知识和统计学的工具,来为人们建立合理的数学模型,解决日常生活中遇到的问题。

1.2 关键术语

以下面的鸟类分类系统来解释机器学习的一些基本术语。



在表1-1中,区分不同鸟类,用了四种不同的属性值:体重、翼展、脚蹼、后背颜色。称之为特征(能够区分不同实体的东西,如通过喉结可以区分男女,那么有木有喉结就可以一个很好区分男女的特征,当然有木有小JJ也是一种特征(说人妖的,出门左转),头发长短也行但效果不是那么好)。种属为我们需要区分的鸟类,也就是目标变量(机器学习算法的预测结果,也称为类别,这里有5类)。
注意体重和翼展两种特征的值都是十进制数值型,脚蹼是二值型,后背颜色是枚举类型,但都可以化为离散数值型,方便程序处理。



以上6个样本数据便是我们的训练集(用于训练机器学习算法的数据样本集合),每个训练样本有4种特征、一个目标变量。
当来了一个新的鸟,其体重为600克,翼展为60cm,无脚蹼,后背为黑色,因为它同第6个样本最为相似,便把它分类为象牙喙啄木鸟。这便是机器学习的主要任务:分类。为设计我们的机器学习算法,我们需要类似训练样本的样本作为测试集(独立于训练集),训练集作为算法的输入,训练出模型带入测试集中,预测测试集的类别,比较与真实测试集的类别的差异,改进算法,使得差异最小,那么我们便得到更好的模型。
知识表示:训练好了模型,机器已经学会了如何区分不同的鸟类这一过程便可以称之为知识表示。其可以采用规则集的形式,也可以采用概率分布的形式,或者训练样本集中的一个实例。

1.3 机器学习的主要任务

监督学习:需要知道预测什么,即目标变量的分类信息。如分类、回归。

分类:将实例数据划分到合适的类别中。

回归:预测数值型数据。如拟合曲线。

无监督学习:不需要知道类别信息,也不给定目标值。如聚类、密度估计。

聚类:将数据集合分成由类似的对象组成的多个类的过程。

密度估计:将寻找描述数据统计值的过程。



1.4 如何选择合适的算法

问题:

1.使用机器学习算法的目的,想要完成何种任务。

预测目标变量的值,选择监督学习算法。进一步确定目标变量类型,离散型选择分类算法; 连续型,选择回归算法。

不预测目标变量饿值,选择非监督学习算法。是否需要将数据划分为离散的组,是,选择聚类算法。还需估计与每个分组的相似度,使用密度估计算法等等。

2. 需要分析或收集的数据是什么。

我们应该充分了解数据,对实际数据了解得越充分,越容易建立起合适的模型。这一点深有感触,在以往做project的过程中几乎很多时间都花在了解数据特性上。应了解数据的以下特性:特征值是离散型变量还是连续型变量,特征值中是否存在缺失的值,数据中是否存在异常值,某个特征发生的频率如何等等。

1.5 开发机器学习应用程序的步骤

收集数据。如制作网络爬虫从网站上抽取数据、从RSS反馈或者API中得到信息、设备发送过来的实时数据、公开的数据源等。网络爬虫python很多包都可破,可从新浪、搜狐等门户网站爬取新闻文本,定制微博爬虫从新浪微博爬取微博文本,爬取动态网页的数据等等,网络爬虫已然成为专门的一项技术。
准备输入数据。获得的数据可能有多种格式,如json, html, xml, string, DOM树等等,python有各种包可破各种数据。曾经有一个project是处理微博数据,数据太凌乱,需要处理各种@, //, #XXX#, [xx]等等噪音符号,为此需要正则表达式的知识,清理噪音,所幸python也可破。
分析输入数据。这一步比较耗费时间也非常重要,主要是熟悉数据,需要练出对数据的敏感性。数据较少时,文本编辑器观察分析识别数据的模式、是否有异常、是否为空值、是否有哪些数据与其他类别的数据不同等等,或者通过可视化的形式展现出数据特性,而当数据多的时候,几乎不可能只是通过观察得出数据特性,这就要写脚本,统计分析,并记录各种结果,如某个特征下的某个数据的频率,有多少为空,是否格式不对,感觉哪个或者哪类数据具有区分度等等之类。以往做的project几乎没有不经过写脚本统计分析数据特性的,为了找到更好的特征,必然要对数据相当敏感。
训练算法。机器学习算法的核心。
测试算法。训练出模型后,需要测试算法的效果,模型是否有用。对于监督学习,必须用于评估算法的目标变量值; 对于非监督学习,也必须用其他的评测手段来检验算法的成功率。如不满意算法的效果,则回到第4步重新训练。若跟数据有关还需要退会到第1步。
使用算法

1.6 Python语言的优势



1.7 NumPy函数库基础

安装略。

简易使用:



Figure1: python numpy库简易使用

random.rand(4,4)构造元素值在[0,1)之间的4×4维的随机数组。
mat()函数可以将数组转化为矩阵。
在ipython交互式界面中我们可以看到,矩阵randMat有80种操作,如求逆运算:randMat.I。

参考:《机器学习实战》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息