机器学习基础

机器学习?

是类似《生化危机6:终章》里“红女王”那样的存在吗?作为掌控着整个地下研究所运作的,最尖端的人工智能生命体,它让我们见识了计算机程序的厉害角色,同时警醒人类对科技与伦理关系的反思。

在许多人直觉的观念里,机器学习就该是如此这般,不仅能打造具有模仿能力的机器人,还能赋予人工智能以“兼具人类情感”的未来。

不得不说,以上理解是如此美好,但就现阶段而言,这更像是我们的一厢情愿!

事实上的机器学习,还远不能支撑起高级的人工智能。比起炫目的梦幻色彩,它更偏指“借助计算机,洞察数据背后真实内涵”的现实意义。如今,机器学习软件已遍布各类应用场景(人脸识别、语音识别、手写字体识别、垃圾邮件过滤、智能推荐等),并被许多公司用来服务于商业价值的实现(改善商业决策、提高生产率、检测疾病、预测天气等),数据也借此被释放出前所未有的魅力。

一、什么是机器学习

机器学习, 是一门横跨”计算机科学、工程技术、概率论、统计学、逼近论、凸分析“等众多学科的交叉学科,以“计算机模拟或实现人类学习行为”为研究对象,旨在赋予机器以持续的自我更新能力,并实现将无序数据有序化为有用信息的根本目的。

以”鸟类识别系统“的研发为例,我们设置了四个基于属性的评测基准:体重、翼展、有无脚蹼、后背颜色,用以区分不同的鸟类。

特征:属性及对应的属性值(测量值);

实例:由一组相关特征描述的一个具体的鸟的分类;

数值型:十进制数字形式的数值,对应上表的前两种特征;

二值型: 由0或1表示的”是/否“或 ”有/无“等形式的数值,对应上表的第三种特征;

枚举类型:基于有限列举的类型,对应 上表的第四种”后背颜色“特征;

此例中机器学习的主要任务是分类

自动化 识别飞鸟分类,可借助“安装多个带有照相机的喂食器”和“在喂食器中放置称重仪器”的方式得以实现:照相机接入计算机用于视觉识别;称重仪器用于量取鸟的体重。当一只鸟儿飞来觅食,利用计算机视觉技术便可提取鸟的翅长、 鸟脚类型、后背色彩。得到全部特征信息后,接下来的工作就是对鸟儿就行分类了,这是许多机器学习擅长的技能。

用机器学习算法进行分类的方法

1. 算法训练

算法训练,即教会机器如何分类。

做法是,为算法输人大量分类数据做为算法训练集。

(必须确定知道训练样本集的目标变量值,以便机器学习算法发现特征和目标变量之间的关系)

训练集:用于训练机器学习算法的数据样本集合,上表是一个包含六个训练样本的训练集,每个训练样本含4种特征、一个目标变量。

目标变量: 机器学习算法预测的结果,即具体的鸟儿分类。

2. 算法测试

往训练完成后的算法,输入测试测试样本,由程序判别样本的类别归属,并比较测试样本预测的目标变量值与实际样本类别之间的差别,就可以得出算法的实际精确度。

二、机器学习的主要任务

1、监督学习

监督学习,即在机械学习过程中,根据提供的对错指示,通过算法让机器自我减少误差。之所以称之为监督学习,是因为这类算法必须知道预测什么,即目标变量的分类信息。

监督学习从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。

其中,训练集要求同时包括输入与输出,即特征和目标(训练集中的目标是由人标注的)。常见的监督学习算法包括:

A. 回归分析:通过数据拟合曲线等方法,预测数值型数据;

B. 统计分类:将实例数据划分到合适的分类中。

2、无监督学习

无监督学习,又称归纳性学习,即利用K方式建立中心,并通过循环和递减运算减小误差,达到分类的目的。

无监督学习可减少数据特征维度,以便用二维或三维图形直观展示数据信息。

值得一提的是,无监督学习中的数据,没有类别信息(只有聚类过程),也不给定目标值。

聚类:无监督学习中,将数据集合分成由类似对象组成的多个类的过程;

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

三、如何选择合适的算法

1. 根据使用机器学习算法的目的

监督算法or 无监督算法

监督学习算法:预测目标变量值,选用监督学习算法。

无监督学习算法:不预测目标变量值,选用无监督学习算法。

分类器算法or回归算法

分类器算法:选定监督学习算法后,进一步明确目标变量类型,如目标变量是“是/否”、“1/2/3”、“黄/黑”等类型,则可以选择分类器算法;

回归算法:如果目标变量是连续型的数值,如0.0~ 100.00、-999~999或者+00~-00等 ,则选择回归算法。

聚类算法or密度估计算法

聚类算法:需将数据划分为离散的组;

密度估计算法:需将数据划分为离散的组,并估计数据与每个组的相似程度。

2. 根据数据问题

对实际数据(特征值是离散型还是连续型,特征值中是否存在缺失数值,造成缺失的原因、异常值等)了解越充分,越有利于缩短选选择机器学习算法的时间,以创建符合实际需求的应用程序。

但是,能缩小的算法选择范围是有限的,一般并不存在最好的算法或能给出最优结果的算法,一般说来发现最好算法的关键在于反复试错的迭代过程。这也是我们要尝试不同算法执行效果的原因。而对于所选择的每种算法,都可以使用其他的机器学习技术进行性能改进。

四、开发机器学习应用的步骤

1. 收集数据

可以使用很多方法收集样本数据,如制作网络爬虫从爬取网页数据、 从RSS反馈或从API中得到信息、设备发送过来的实测数据等。

提取数据的方法非常多,为了节省时间精力,可使用公开可用的数据源。

2. 准备输入数据

得到数据之后,必须确保数据格式符合要求。Python语言List可以融合算法和数据源,方便匹配操作。

另外,还需要为机器学习算法准备特定的数据格式,如某些算法要求特征值使用特定的格式,一些算法要求目标变量和特征值具有字符串类型,而另外一些算法则可能要求是整数类型。

3. 分析输入数据

人工分析以前得到的数据,确保前两步有效,确保数据集中没有垃圾数据。最简单的方 是用文本编辑器打开数据文件査看得到的数据是否为空值。

此外,还可以进一步浏览数据 ,分析可识别的模式。数据中是否存在明显异常值,如某些数据点或数据集中的其他值存在明显差异。通过一 、二或三维图形展示数据也是不错的方法,然而大多数时候我们得到数据的特征值都不会低于三个,无法一次图形化展示所有特征,这就要用到提炼数据的方法,即将多维数据压缩到二维或三维 ,以方便图形化展示。

如果在产品化系统中使用机器学习算法。并且算法可以处理系统产生的数据格式,而数据来源又比较可靠,也可以直接跳过第3步。不过,如果在自动化系统中还需要人工干预,显然系统的价值就降低了。

4.  训练算法

这一步开始,才进入机器学习算法学习阶段。

将前两步得到的格式化数据输入到算法,从中提取知识或信息。这里得到的知识需要存储为计算机可以处理的格式,方便后续步骤使用。

如果使用无监督学习算法,由于存在目标变量值,所以也不需要训练算法,所有算法相关的内容都集中在第5步。

5. 测试算法

使用第4步机器学习得到的知识信息,测试算法工作效果。如果不满意算法输出结果,则可以回到第 4步,改正并加以测试。或者跳回第1步重新开始。

其中,对于监督学习,必须已知用于评估算法目标变量值;对于无监督学习,也必须用其他的评测手段来检验算法是否成功。

6. 使用算法

将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。若发现新的数据问题,同样需要重复执行上述步骤。

你可能感兴趣的:(机器学习基础)