机器学习--读书笔记(一)

第一章 机器学习基础
1.什么是机器学习
作者的朋友问到所从事的职业,回答“机器学习”,又问“什么是机器学习”,通过回答朋友职业问题的提问引出何为机器学习,利用计算机来彰显数据背后的真实含义,才是机器学习的真实含义。机器学习已经应用于多个领域,假象了一个场景,在这个一连串的场景中都用到了机器学习,很多企业使用机器学习软件改善商业决策、提高生产率、检测疾病、预测天气等。
关于数据,移动计算机和传感器产生的海量数据意味着未来我们将面临越来越多的数据,如何从海量的数据中抽取到有价值的信息是我们要学习的。
发达国家的很多体力劳动的工作逐渐消失,逐渐转为脑力劳动,比如“最大化利润”,“最小化风险”,“最优的路径”……诸如此类的任务要求都已经成为常态。我们可以从互联网上获取到海量的数据,但并没有简化工作难度。如若从海量的数据分析出有价值的信息并为需要的人所用那该多好,而机器学习就是有助于我们穿越浩瀚的数据,从中抽取出有用的信息。

通过构建鸟类的系统引出机器学习中的专业术语
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190827013922440.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MTAy在这里插入图片描述
上表是基于四种特征的鸟类物种分类表,有4个不同的属性值,每一行是一个具体实列,我们如何发现众多鸟中的某一种类型的鸟,依靠人眼识别不太现实,我们要做的任务就是分类,那么这个时候机器学习的某个算法可以实现分类,也就是算法训练。通常我们为算法输入大量已经分类数据作为算法的训练集,训练集用于训练机器学习算法的数据样本集合。表中的种属就是目标变量,这是机器学习算法的预测结果,通常将分类问题中的目标变量称为类别这里的属性特征就是前4列,也是训练样本集的列,它们是独立测量得到的结果,这样的多个特征联系在一起共同组成一个训练样本。为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。当机器学习程序开始运行,训练样本集作为输入,训练完成之后输入测试样本。输入测试样本时并不提供测试样本的目标变量,由程序决定样本属于哪个类别。比较测试样本预测的目标变量值与实际样本类别之间的差别,可以得出算法的实际精确度。
2.机器学习的任务
前面介绍了机器学习如何解决分类问题,主要任务就是将实例数据划分到合适的分类中。机器学习的另一项任务是回归,主要用于预测数值型数据。分类和回归属于监督学习,因为这类算法知道预测什么即目标变量的分类信息。无监督学习的数据没有类别信息,也不会给目标值。机器学习的的主要任务如下表
在这里插入图片描述
3.如何选择合适的算法
需要考虑两个问题:一、使用机器学习算法的目的;二、需要分析或收集的数据。如果要预测目标变量值,选监督学习算法,否则选择无监督学习算法。选择监督学习算法后需要进一步确定目标变量类型,如果目标变量是离散型可以选择分类器算法;如果目标变量是连续型数值,需要选择回归算法。
如果选择无监督学习算法。需要进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用据类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。
当然还要考虑数据问题。对实际数据了解得越充分,越容易创建符合实际需求得应用程序,主要了解数据的特征,是离散还是连续,特征值是否缺失,什么原因造成,数据是否存在异常,某种特征发生的频率如何等。充分了解这些数据特征可以缩短选择机器学习算法的时间。
机器学习算法虽然不同,但是算法创建应用程序的步骤基本类似。
4.开发机器学习应用程序的步骤
(1) 收集数据。我们可以使用很多方法收集样本数据,如:制作网络爬虫从网站上抽取数据、从RSS反馈或者API中得到信息、设备发送过来的实测数据(风速、血糖等)。提取数据的方法非常多,为了节省时间可以使用公开可用的数据源。
(2) 准备输入数据。得到数据之后,还必须确保数据格式符合要求,采用的格式是Python语言的List。使用这种标准数据格式可以融合算法和数据源,方便匹配操作。
此外还需要为机器学习算法准备特定的数据格式,如某些算法要求特征值使用特定的格式,一些算法要求目标变量和特征值是字符串类型,而另一些算法则可能要求是整数类型。
(3) 分析输入数据。此步骤主要是人工分析以前得到的数据。为了确保前两步有效,最简单的方法是用文本编辑器打开数据文件,查看得到的数据是否为空值。此外,还可以进一步浏览数据,分析是否可以识别出模式;数据中是否存在明显的异常值,如某些数据点与数据集中的其他值存在明显的差异。通过一维、二维或三维图形展示数据也是不错的方法,然而大多数时候我们得到数据的特征值都不会低于三个,无法一次图形化展示所有特征。
这一步的主要作用是确保数据集中没有垃圾数据。如果是在产品化系统中使用机器学习算法并且算法可以处理系统产生的数据格式,或者我们信任数据来源,可以直接跳过第3步。此步骤需要人工干预,如果在自动化系统中还需要人工干预,显然就降低了系统的价值。
(4) 训练算法。机器学习算法从这一步才真正开始学习。根据算法的不同,第4步和第5步是机器学习算法的核心。我们将前两步得到的格式化数据输入到算法,从中抽取知识或信息。这里得到的知识需要存储为计算机可以处理的格式,方便后续步骤使用。
如果使用无监督学习算法,由于不存在目标变量值,故而也不需要训练算法,所有与算法相关的内容都集中在第5步。
(5) 测试算法。这一步将实际使用第4步机器学习得到的知识信息。为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用其他的评测手段来检验算法的成功率。无论哪种情形,如果不满意算法的输出结果,则可以回到第4步,改正并加以测试。问题常常会跟数据的收集和准备有关,这时你就必须跳回第1步重新开始。
(6) 使用算法。将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。此时如果碰到新的数据问题,同样需要重复执行上述的步骤。
5.学习python的优势
之所以选择python作为机器学习算法的语言,是因为具备如下优势:
(1) Python的语法清晰;
(2) 易于操作纯文本文件;
(3) 使用广泛,存在大量的开发文档。
6.Numpy函数数据库基础
机器学习算法涉及很多线性代数知识,会用到NumPy函数库。开始学习机器学习算法之前,必须确保可以正确运行Python开发环境,同时正确安装了NumPy函数库。NumPy函数库是Python开发环境的一个独立模块,而且大多数Python发行版没有默认安装NumPy函数库,因此在安装Python之后必须单独安装NumPy函数库。在Windows命令行提示符下输入c:\Python27\python.exe,进入Python shell开发环境。今后,一旦看到下述提示符就意味着我们已经进入Python shell开发环境:
在这里插入图片描述
在Python shell开发环境中输入下列命令
在这里插入图片描述
上述命令将NumPy函数库中的所有模块引入当前的命名空间,然后在Python shell开发环境中输入下列命令
在这里插入图片描述
上述命令构造了一个4×4的随机数组,因为产生的是随机数组,不同计算机的输出结果可能与上述结果完全不同。
NumPy矩阵与数组的区别
NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素。虽然它们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中NumPy函数库中的matrix与MATLAB中matrices等价。
调用mat()函数可以将数组转化为矩阵,输入下述命令:
在这里插入图片描述
由于使用随机函数产生矩阵,不同计算机上输出的值可能略有不同:

.I操作符实现了矩阵求逆的运算。没有NumPy库,Python也不能这么容易算出来矩阵的逆运算。即使忘记矩阵求逆也没关系,NumPy库帮我们做完了,执行下面的命令存储逆矩阵,接着执行矩阵乘法,得到矩阵与其逆矩阵相乘的结果:
在这里插入图片描述
从上图的结果可以看到是单位矩阵,除了对角线元素是1,4×4矩阵的其他元素全是0。实际输出结果略有不同,矩阵里还留下了许多非常小的元素,这是计算机处理误差产生的结果。输入下述命令,得到如下图的误差值
在这里插入图片描述
函数eye(4)创建4×4的单位矩阵。
上述例子都可以顺利完成,表明已经正确地安装了NumPy函数库。
7.本章小结
机器学习算法已经广泛应用于我们的日常生活之中。每天我们需要处理的数据在不断地增加,能够深入理解数据背后的真实含义,是数据驱动产业必须具备的基本技能。学习机器学习算法,必须了解数据实例,每个数据实例由多个特征值组成。分类是基本的机器学习任务,它分析未分类数据,以确定如何将其放入已知群组中。为了构建和训练分类器,必须首先输入大量已知分类的数据,我们将这些数据称为训练样本集。尽管我们构造的鸟类识别专家系统无法像人类专家一样精确地识别不同的鸟类,然而构建接近专家水平的机器系统可以显著地改进我们的生活质量。如果我们可以构造的医生专家系统能够达到人类医生的准确率,则病人可以得到快速的治疗;如果我们可以改进天气预报,则可以减少水资源的短缺,提高食物供给。我们可以列举许许多多这样的例子,机器学习的应用前景几乎是无限的。
附上思维导图以备学习在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值