前言:本课程是在慕课网上学习 Python3入门机器学习 经典算法与应用 课程时所做的笔记,供本人复习之用.学习这个的主要目的是为了应付这学期的机器学习选修课.所以只会大概讲解算法的意思,不会深入的进行实践或讲解原理.另外因为主要是供本人复习以及不打算仔细学,所以不保证写的一定对,只提供一个基本的理解.
目录
1.5.3 参数学习(parametric Learning)
1.5.4 非参数学习(Nonparametric Learning)
第一章 机器学习基础
1.1关于数据
我们使用著名的鸢尾花数据来说明,在这里有三个不同种类的鸢尾花.
总共有150个鸢尾花的数据信息,每个数据信息包括四个方面的信息.分别是萼片的长度与宽度,花瓣的长度与宽度.
整个数据就可以表示成这个样子.种类中我们标识了几个数,因为在计算机中我们希望将它们数字化.
我们根据三行的数据集来阐述一下在机器学习领域和数据相关的基本概念.
- 我们完成一个机器学习的任务,手里肯定是有数据的,通常我们管这些数据的整体叫做数据集.
- 对于一个数据集,通常我们可以写成一个表格的形式,在表格中每一行数据称为一个样本.具体到鸢尾花的数据中,每一行数据其实就是一朵花的信息.包含这一朵花的萼片的长度宽度.那么这一朵花就是一个样本.
- 除了最后一列,每一列都表达了样本的一个特征.可以简单的把一个特征理解成一个属性.比如说萼片的长度是一个特征,萼片的宽度是另外一个特征.
- 对这个数据来说,除了最后一列,其余的部分都是在描述数据整体的特征,通常在机器学习任务中,我们管这一部分用X来表示,之所是X是因为通常这部分是一个矩阵,这个矩阵有多少行就说明有多少样本,有多少列就说明有多少个特征,通过我们把第i个样本写作,第i个样本第j个特征值
- 最后一列是特殊的一列,它是我们机器学习真正想去学的内容,称为标记.在表示上,我们通常用y来表示.第i个样本的标记写作
- 对于数据的每一行本身也组成了一个向量,通常我们管这个向量叫做特征向量,在数学中我们通常会把向量表示为列向量如图1,正因如此我们的矩阵可以写成图2所示
图1 图2
我们抽出数据的前两个特征,即萼片的长度与宽度,用萼片的长度作为横轴,萼片的宽度作为纵轴,可以想象,对于每一个样本来说,都会在横纵轴组成的坐标系中表示成一个点.当然这是为了我们可视化方便,所以我们选了两个轴在一个平面上来表示它.如果我们有3个维度就可以在三维空间中表示它,如果有四个维度就可以在四维空间中表示它,甚至有1000维度的话我们就可以在1000维空间中表示它,每一个样本的本质就是在这个空间中的一个点,这个空间我们称之为特征空间(feature space).
我们在下图中可以看出两类鸢尾花的特征分布是有极大的不同的,分类任务的本质就是在特征空间切分,不论低维还是高维空间.
这里花瓣的长度宽度都是有明确的语义的,即我们知道每一个数字代表什么意思,但是在机器学习领域中,特征可以是非常抽象的一个东西.举个例子对于图像识别来说,每一个像素点都是一个特征,对于28*28的图像有784个特征,换句话说,我们为了描述这个图像,我们可以使用784个数,每个数都代表着从左上角到右下角每一个像素点把它排开这个点对应的灰度值的深浅.然后利用这些特征来进行数字的识别.
如果是彩色图像特征更多.特征工程研究之一就是怎么喂给机器比较好的特征.
1.2 机器学习的主要任务
1.2.1 分类任务
比如判断一张图片是猫是狗,判断一个数字是0到9中的哪一个,分类任务就是将给定的任务进行分类.分类任务包括以下几种
二分类任务:
是猫是狗?是否是垃圾邮件?发给客户信用卡有没有风险?良性肿瘤恶性肿瘤?股票涨跌?
多分类任务:
数字识别,图像识别(猫狗鸟鳄鱼),信用卡风险评级(高中低)
很多复杂的问题也可以转化成多分类问题,比如玩2048时,是往上下左右哪个方向移动?下围棋的时候因为棋盘的大小是有限的,所以机器就是根据现在的棋盘信息选一个方向进行落子,甚至现在大红大紫的无人车,我们可以将它转换成方向盘向左向右打多少度,油门分成几个程度,具体踩多深等等.
当然这些问题是可以转换成多分类问题,但不一定使用多分类来解决这些问题是最好的.
后续的学习过程中,我们会了解到:
多标签分类:
之前的图片是放在一个类别中进行分类,比较高级的机器学习系统能放在多个类别中进行比较.这是比较前沿的话题.
1.2.2 回归任务
我们之前的标签列都是一个类别,但是在这个数据中,我们最终是一个价格.价格不是一个类别是一个连续的数字,这一类任务就是机器学习可以处理的另外一类任务了,叫做回归任务.
比如房屋价格,市场分析,学生成绩,股票价格.
一些情况下,回归任务可以简化成分类任务,比如刚才提到的无人驾驶.方向盘打的角度是一个连续的数值,只不过我们将每一度看作一个类别.我们就将回归任务简化成了分类任务.
1.3 什么是机器学习
大量的学习资料就是数据集,我们将数据集喂给我们的机器学习算法,我们的机器学习算法将根据我们的数据集训练一个模型,当有了新的样本资料以后,是通过这个模型来得到输出结果的.这个输出结果有两类,一个是样本的类别,另外一类是具体的数值.
我们的模型其实就是一个函数,这里我们的函数需要的每一个小的x就是一个样本资料.我们机器学习算法本质是获得一个新的f(x).这样当我们有新的样本资料x时,只要把它送给我们训练好的f(x),这个f(x)就会根据它的函数规则得到一个结果.如果结果时0,1,2,3,4这样的类别的话,我们解决的就是一个分类问题,如果f(x)得到的是一个具体的数值的话,我们解决的就是一个回归问题.
上面我们说了分类和回归问题,其实是监督学习主要解决的是分类和回归问题,机器学习还可以解决很多其它的问题.
1.4 监督学习,非监督学习,半监督学习和增强学习
我们之前是根据能机器学习能解决的问题进行了分类,现在我们将根据机器学习的算法进行分类.
1.4.1 监督学习
给机器的训练数据拥有标记或者答案.
监督学习算法:
k临近,线性回归和多项式回归,逻辑回归,SVM,决策树和随机森林.
1.4.2 非监督学习
很多时候非监督学习是辅助监督学习的运行.
给机器的的训练数据是没有任何"标记"或者答案.
非监督学习可以完成分类任务.
比如电商网站上的人群分类,某些人是理智型消费者,有些人是冲动型,有些人更在乎性价比等等...
非监督学习可以对数据进行降维处理和异常检测.
降维处理包含两部分内容,特征提取和特征压缩.
特征提取:当我面对一个数据时,这个数据有很多特征,有时候根据经验或深入分析,认为某一些特征对我们预测或者计算的结果是没有贡献的,比如银行需要用收集的个人信息对个人信用进行评级,而个人的胖瘦与信用评级是没有关系的,这叫做特征提取.
特征压缩:PCA,我们并不扔掉任何特征,下图是一个二维的特征平面,这个二维的特征平面上分布很多的数据点,但这些点是呈直线的形式,如果我们画一根直线的话,把所有的点都映射在倾斜的直线上,那么这些点的直线信息并没有丢失多少,但是经过这样的处理后,二维的点就变成了一维的点.
之前我们说28*28的图片要784个特征,经过特征压缩后,只需要十几个特征就行了.
降维处理的意义:方便可视化.对于人类来说是无法理解四维以上的信息的,有的时候我们可以把很高维的数据降到三维甚至二维,降到这么低的维度可能已经丢失了很多信息,我们降到这么低的维度主要是为了对信息进行可视化.
异常检测:有时候在我们的数据中存在一些点,这些点是存在异常的,这种点对于让我们的算法发现一般性规律是没有帮助的,对于二维的我们可以肉眼看到,对于高维的我们就需要用非监督学习算法剔除这些点.
1.4.3 半监督学习
一部分数据有"标记"或者"答案",另一部分数据没有.因为在实际生活种会因各种原因产生数据的缺失.
通常是使用无监督学习手段对数据做处理,之后使用监督学习手段做模型的训练和预测.
1.4.4 增强学习
我们机器学习的算法通常叫做agent,我们机器学习的算法要根据周围的环境来采取行动,在采取去了行动之后,我们的算法就会收到一些反馈,这个返回有时候是使用reward,有时候是使用state机制来进行反馈,agent算法得到了反馈之后就会改进自己的行为模式,之后在面对环境的其它的情况下,根据改进的算法再做出相应的action.然后环境再反馈给我们的agent.依此类推,可以看出我们的agent在一轮一轮的行动反馈中逐渐增强自己的智能.所以称之