DW-集成学习-机器学习的三大主要任务
DW-集成学习-机器学习的三大主要任务
导论
什么是机器学习?机器学习的一个重要的目标就是利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。数据通常由一组向量组成,这组向量中的每个向量都是一个样本,我们用$x_i$来表示一个样本,其中$i=1,2,3,…,N$,共N个样本,
每个样本
共p+1个维度,前p个维度的每个维度我们称为一个特征,最后一个维度$y_i$我们称为因变量(响应变量)。特征用来描述影响因变量的因素,如:我们要探寻身高是否会影响体重的关系的时候,身高就是一个特征,体重就是一个因变量。通常在一个数据表dataframe里面,一行表示一个样本$x_i$,一列表示一个特征。
根据数据是否有因变量,机器学习的任务可分为:有监督学习和无监督学习。
- 有监督学习:给定某些特征去估计因变量,即因变量存在的时候,我们称这个机器学习任务为有监督学习。如:我们使用房间面积,房屋所在地区,环境等级等因素去预测某个地区的房价。
- 无监督学习:给定某些特征但不给定因变量,建模的目的是学习数据本身的结构和关系。如:我们给定某电商用户的基本信息和消费记录,通过观察数据中的哪些类型的用户彼此间的行为和属性类似,形成一个客群。注意,我们本身并不知道哪个用户属于哪个客群,即没有给定因变量。
根据因变量的是否连续,有监督学习又分为回归和分类:
- 回归:因变量是连续型变量,如:房价,体重等。
- 分类:因变量是离散型变量,如:是否患癌症,西瓜是好瓜还是坏瓜等。
为了更好地叙述后面的内容,我们对数据的形式作出如下约定:
第i个样本:
因变量
第k个特征:
特征矩阵
在学习机器学习中,我们经常使用scikit-learn简称sklearn工具库来探索机器学习项目,下面我们开始使用sklearn来演示这几个具体的概念:
1 | # 引入相关科学计算包 |
1.1 回归
首先,我们先来看看有监督学习中回归的例子,我们使用sklearn内置数据集Boston房价数据集。sklearn中所有内置数据集都封装在datasets对象内:
返回的对象有:
- data:特征X的矩阵(ndarray)
- target:因变量的向量(ndarray)
- feature_names:特征名称(ndarray)
1 | from sklearn import datasets |
CRIM | ZN | INDUS | CHAS | NOX | RM | AGE | DIS | RAD | TAX | PTRATIO | B | LSTAT | Price | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.00632 | 18.0 | 2.31 | 0.0 | 0.538 | 6.575 | 65.2 | 4.0900 | 1.0 | 296.0 | 15.3 | 396.90 | 4.98 | 24.0 |
1 | 0.02731 | 0.0 | 7.07 | 0.0 | 0.469 | 6.421 | 78.9 | 4.9671 | 2.0 | 242.0 | 17.8 | 396.90 | 9.14 | 21.6 |
2 | 0.02729 | 0.0 | 7.07 | 0.0 | 0.469 | 7.185 | 61.1 | 4.9671 | 2.0 | 242.0 | 17.8 | 392.83 | 4.03 | 34.7 |
3 | 0.03237 | 0.0 | 2.18 | 0.0 | 0.458 | 6.998 | 45.8 | 6.0622 | 3.0 | 222.0 | 18.7 | 394.63 | 2.94 | 33.4 |
4 | 0.06905 | 0.0 | 2.18 | 0.0 | 0.458 | 7.147 | 54.2 | 6.0622 | 3.0 | 222.0 | 18.7 | 396.90 | 5.33 | 36.2 |
1 | sns.scatterplot(boston_data['NOX'],boston_data['Price'],color="r",alpha=0.6) |
我们可以看到,数据给定任务所需要的因变量,因变量为波士顿房价Price是一个连续型变量,所以这是一个回归的例子。
各个特征的相关解释:
- CRIM:各城镇的人均犯罪率
- ZN:规划地段超过25,000平方英尺的住宅用地比例
- INDUS:城镇非零售商业用地比例
- CHAS:是否在查尔斯河边(=1是)
- NOX:一氧化氮浓度(/千万分之一)
- RM:每个住宅的平均房间数
- AGE:1940年以前建造的自住房屋的比例
- DIS:到波士顿五个就业中心的加权距离
- RAD:放射状公路的可达性指数
- TAX:全部价值的房产税率(每1万美元)
- PTRATIO:按城镇分配的学生与教师比例
- B:1000(Bk - 0.63)^2其中Bk是每个城镇的黑人比例
- LSTAT:较低地位人口
- Price:房价
1.2 分类
我们来看看一个分类的例子,我们来看看大名鼎鼎的iris数据集:
1 | from sklearn import datasets |
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | target | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | 0 |
1 | 4.9 | 3.0 | 1.4 | 0.2 | 0 |
2 | 4.7 | 3.2 | 1.3 | 0.2 | 0 |
3 | 4.6 | 3.1 | 1.5 | 0.2 | 0 |
4 | 5.0 | 3.6 | 1.4 | 0.2 | 0 |
1 | # 可视化特征 |
我们可以看到:每种不同的颜色和点的样式为一种类型的鸢尾花,数据集有三种不同类型的鸢尾花。因此因变量是一个类别变量,因此通过特征预测鸢尾花类别的问题是一个分类问题。
各个特征的相关解释:
- sepal length (cm):花萼长度(厘米)
- sepal width (cm):花萼宽度(厘米)
- petal length (cm):花瓣长度(厘米)
- petal width (cm):花瓣宽度(厘米)
1.3 无监督学习
我们可以使用sklearn生成符合自身需求的数据集,下面我们用其中几个函数例子来生成无因变量的数据集:
1 | # 生成月牙型非凸集 |
1 | # 生成环形凸集 |
在点集拓扑学与欧几里得空间中,凸集(Convex set)是一个点集合,其中每两点之间的直线点都落在该点集合中。
1 | # 生成符合正态分布的聚类数据 |
总结
根据前面的内容,我们可以知道,根据数据是否有因变量(可以简单理解有无标签),我们可以将其分为监督学习和无监督学习。
对于监督学习,通俗点理解,就是你想让你的结果朝着某个方向去靠拢,你要去监督它,看看结果是否是朝着预期方向的,如果不是,你就需要调整你监督学习的算法和参数,使其朝着目标方向靠拢,这就是所谓的监督学习。
对于无监督学习,顾名思义,就是不去做监督,不给它设限,让它自由生长,到最后看它的结果是怎样的,去挖掘产生这种结果的原因,透过现象看本质,这就是所谓的无监督学习。
再根据监督学习和无监督学习,我们又可以将机器学习细分为三大类,回归、分类和聚类。这三类就是目前机器学习的三大主要任务,分类可以看作是一种特殊的回归,回归算法要求的数据类型是连续型的变量,而分类算法要求的数据类型是离散的。对于聚类,它和分类类似,都是要对数据进行区分,不同的是分类是事先已经知道数据最终区分的结果,而聚类是事先不知道的,这也是监督学习和无监督学习的一个区别。