简介
机器学习综述
机器学习隶属于人工智能研究与应用的一个分支。
“图灵测试”(Turing Test),用来判断一台计算机是否达到具备人工智能的标准。
大概描述:“如果通过问答这种方式,我们已经无法区分对话那端到底是机器还是人类,那么就可以说这样的机器已经具备了人工智能。”- Tom Mitchell’s Definition
A program can be said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E. 简译:如果一个程序在使用既有的经验(E)执行某类任务(T)的过程中被认定是“具备学习能力的”,那么它一定需要展现出:利用现有的经验(E),不断改善其既定任务(T)的性能(P)的特质。
机器学习系统的特点:
1.许多机器学习系统所解决的都是无法使用固定规则或流程代码完成的问题,通常这类问题对人类而言却很简单;
2.所谓具备“学习”能力的程序都是指它能够不断地从经验(Experience)和数据中吸取经验教训,从而应对未来的预测任务。习惯上把这种对未知的预测能力叫做泛化力(Generalization).
3.机器学习系统具备不断改善自身应对具体任务的能力,我们习惯称这种完成任务的能力为性能(Performance)机器学习的三要素:
1.任务(Task)
两类经典任务:监督学习与非监督任务
2.经验(Experience)
一般把数据视作经验;
事实上只考虑对学习任务有用的特定信息,通常这些反映数据内在规律的信息叫做特征(Feature)。
3.性能(Performance)
评价所完成任务质量的指标。三要素详解:
监督学习(Supervised Learning)
关注对事物未知表现的预测,一般包括分类问题(Classification)和回归问题(Regression);
无监督学习(Unsupervised Learning)
倾向对事物本身特性的分析,常用的技术包括数据降维(Dimensionality Reduction)和聚类问题(Clustering)等。-
- 分类问题是对所在类别进行预测,类别既是离散的,同时也是预先知晓数量的;
回归也是预测问题,但预测的目标往往是连续变量;
数据降维是对事物的特性进行压缩和筛选;
聚类是根据数据样本的相似性将其划分为一个个簇,不同于分类问题,我们在大多数情况下不会预先知道簇的数量和每个簇的具体含义。
- 分类问题是对所在类别进行预测,类别既是离散的,同时也是预先知晓数量的;
对于监督学习问题,经验包括特征(Feature)和标记Label(或称目标Target)两个部分。一般用一个特征向量(Feature Vector)来描述一个数据样本,标记/目标的表现形式则取决于监督学习的种类。
无监督学习问题没有标记/目标,更适合对数据结构的分析,且数据通常易得。
除了标记/目标的表现形式存在离散、连续变量的区别,从原始数据到特征向量转化的过程中也会遇到多种数据类型:类别型(Categorical)特征,数值型(Numerical)特征,甚至是缺失数据(Missing Value)等。而在实际操作过程中,我们要将这些特征转化为具体的数值参与运算。
已知数据生成训练集(Training Set),用来训练学习系统。为评价学习模型完成任务的质量,需要具备相同特征的数据,并将模型的预测结果同相对应的正确答案进行比对,一般会利用部分已知目标/标记的训练集,称这部分数据集为验证集(Validation Set)。
需要注意的是,出现在验证集中的数据样本一定不能被用于模型训练。
现实应用中我们所要预测结果的数据集称为测试集(Testing Set),通常是无法获知其正确答案的,因此要充分利用验证集来调节模型。
Python编程库
- 常见Python用于机器学习的第三方程序库:
NumPy与SciPy:便于向量、矩阵和复杂科学计算;
Matplotlib:仿MATLAB样式的绘图工具包;
Scikit-learn:封装了大量经典以及最新的机器学习模型;
Pandas:对数据进行快捷分析和处理的工具包(“数据预处理”,实现了大量便于数据读写、清洗、填充以及分析的功能);
Anaconda:集成平台。
Python基础
Python内置的常用数据类型有6种:数字(Number)、布尔值(Boolean)、字符串(String),以及复杂一些的元组(Tuple)、列表(List)、字典(Dictionary)。
元组是一系列Python数据类型按照顺序组成的序列,使用()表征。
列表与元组类似,但用[ ]表征,而且Python允许使用者在访问List的同时修改其数据,Tuple则不然:一旦初始化它是不可改变其内部元素的。
字典包括多组键(key):值(value)对,使用{ }表征,字典中的键是唯一的。
函数(Function)/模块(Module):对具备某些功能且经常复用的代码段的封装。关键字:def