监督学习
- 输入空间、输出空间、特征空间
- 分类问题
- 回归问题
- 标注问题
- 重要假设
- 假设空间
- 问题形式
1、输入空间、输出空间、特征空间
输入空间(X):所有可能取值的空间,可以是连续或离散的,有时候也可以是欧式空间 R n R^n Rn
输出空间(Y):所有可能取值的空间,可以是连续或离散的,有时候也可以是欧式空间 R n R^n Rn
一般输出空间远小于输入空间
特征空间:每个实例都由特征向量表示,输入x的特征向量记作
x
=
(
x
(
1
)
,
x
(
2
)
,
…
,
x
(
i
)
,
…
,
x
(
n
)
)
T
x = (x^{(1)},x^{(2)},\ldots,x^{(i)},\ldots,x^{(n)})^T
x=(x(1),x(2),…,x(i),…,x(n))T
其中,
x
(
i
)
x^{(i)}
x(i)表示
x
x
x的第
i
i
i个特征。
特征空间每一维对应一个特征,第
i
i
i个实例表示为
x
i
=
(
x
i
(
1
)
,
x
i
(
2
)
,
…
,
x
i
(
n
)
)
T
x_i=(x_i^{(1)},x_i{(2)},\ldots,x_i^{(n)})^T
xi=(xi(1),xi(2),…,xi(n))T
有时候输入空间和特征空间是相同的,有时候不同,需要将实例映射到特征空间,比如将图像表征为颜色特征。
模型实际上都是定义到特征空间的。
监督学习从训练数据集合中学习模型,对测试数据进行预测。训练数据由输入输出对组成,表示如下:
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
.
…
,
(
x
N
,
y
N
)
}
T = \{(x_1,y_1),(x_2,y_2).\ldots,(x_N,y_N)\}
T={(x1,y1),(x2,y2).…,(xN,yN)}
2、分类问题
分类问题包括学习与分类两个过程。在学习的过程中,根据已知的训练样本数据集利用有效的学习方法学习一个分类器;在分类中,利用学习的分类器对新的输入实例进行分类。
from matplotlib import pyplot as pl
import numpy as np
%matplotlib inline
#输出是离散的有限个变量属于分类问题
x1 = [1,3,4,7,8,9]
y1 = [1,1,1,1,1,1]
x2 = [2,5,6]
y2 = [0,0,0]
pl.figure(figsize = (8, 4))#画布区域
pl.plot(x1, y1,'ro')#y=1绘图,"ro"表示颜色为红的圈
pl.plot(x2, y2,'ro',color="blue")#y=0绘图
常见分类问题的基本模型:
朴素贝叶斯、神经网络、KNN、感知机、决策分类树、logistic回归、SVM、boost提升树
举例:文本内容分类
文本分类是根据文本的特征将其划分到已有的类中。输入是文本的特征向量,输出是文本的类别。通常把文本中的单词定义为特征,每个单词对应一个特征。单词的特征可以是二值的:如果单词在文本中出现则取值1,否则是0;也可以是多值的,表示单词在文本中出现的频率。形象地,如果“股票”“银行”“货币”这些词出现很多,这个文本可能属于经济类,如果“网球”“比赛”“运动员”这些词频繁出现,这个文本可能属于体育类。
3、回归问题
回归用于预测输入变量与输出变量之间的关系,特别是当输入变量的值发生变化时,输出变量的值随之发生的变化。回归问题的学习等价于函数拟合:选择一条函数曲线,使其很好地拟合已知数据且很好地预测未知数据。
回归问题按照输入变量的个数,可以分为一元回归和多元回归;按照输入变量与输出变量之间关系的类型,可以分为线性回归和非线性回归。
#输入输出都是连续的属于回归问题
x = np.linspace(-10, 5)#在指定的间隔内返回均匀间隔的数字
y = x**3
pl.figure(figsize = (8, 4))#画布区域
pl.plot(x, y, color="blue", linewidth = 1.5)#绘图
常见回归问题的基本模型:
神经网络、决策回归树
举例:股票预测
一个回归学习用于股票预测的例子:假设知道一个公司在过去不同时间点的市场上的股票价格(或一段时间的平均价格),以及在各个时间点之间可能影响该公司股份的信息(比如,公司前一周的营业额)。目标是从过去的数据学习一个模型,使它可以基于当前的信息预测该公司下一个时间点的股票价格。具体地,将影响股价的信息视为自变量(输入特征),而将股价视为因变量(输出的值)。将过去的数据作为训练数据,就可以学习一个回归模型,并对未来股份进行预测。实际我们知道想做出一个满意的股价预测模型是很难的,因为影响股份的因素非常多,我们未必能获得那些有用的信息。
4、标注问题
标注问题的输入是一个观测序列,输出的是一个标记序列或状态序列。
也就是说,分类问题的输出是一个值,而标注问题输出是一个向量,向量的每个值属于一种标记类型。
标注问题也可以分为两步:学习和标注两个过程。首先给定一个训练数据集
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
N
,
y
N
)
T = (x_1,y_1),(x_2,y_2),\ldots,(x_N,y_N)
T=(x1,y1),(x2,y2),…,(xN,yN)
其中
x
i
=
(
x
i
(
1
)
,
x
i
(
2
)
,
…
,
x
i
(
n
)
)
T
x_i=(x_i^{(1)},x_i^{(2)},\ldots,x_i^{(n)})^T
xi=(xi(1),xi(2),…,xi(n))T
i
=
1
,
2
,
…
,
N
i=1,2,\ldots,N
i=1,2,…,N是输入观测序列,
y
i
=
(
y
i
(
1
)
,
y
i
(
2
)
,
…
,
y
i
(
n
)
)
T
y_i = {(y_i^{(1)},y_i^{(2)},\ldots,y_i^{(n)})^T}
yi=(yi(1),yi(2),…,yi(n))T是相应的输出标记序列,
n
n
n为序列长度,对于不同样本可以有不同的值。
利用jieba.posseg模块来进行词性标注,会给出分词后每个词的词性。词性标示兼容ICTCLAS 汉语词性标注集
#pip install jieba安装jieba包
from jieba import posseg as pseg
words = pseg.cut("我喜欢吃苹果")#对照字典
for word, flag in words:
print('%s %s' % (word, flag))
我 r #代词
喜欢 v #动词
吃 v #动词
苹果 n #名词
常见标注问题的基本模型:
隐性马尔可夫模型、条件随机场
举例:词性标注
自然语言处理中的词性标注(part of speech tagging)就是一个典型的标注问题:给定一个由单词组成的句子,对这个句子中的每一个单词进行词性标注,即对一个单词序列预测其对应的词性标记序列。
5、重要假设
监督学习假设输入与输出的随机变量X和Y遵循联合概率分布P(X,Y),对学习系统来说联合概率分布是未知的,训练数据与测试数据被看作是依联合概率分布P(X,Y)独立同分布产生的。
在概率统计理论中,如果变量序列或者其他随机变量有相同的概率分布,并且互相独立,那么这些随机变量是独立同分布。
为什么需要独立同分布?
因为机器学习就是利用当前获取到的信息(或数据)进行训练学习,用以对未来的数据进行预测、模拟。所以都是建立在历史数据之上,采用模型去拟合未来的数据。因此需要我们使用的历史数据具有总体的代表性。
为什么要有总体代表性?
需要从训练数据推测的规则来预测未知数据,如果训练数据没有代表性,那我们的规则就不能推广到未知数据。通过独立同分布的假设,就可以大大减小训练样本中个例的情形,使得规则的推广性更强。
并不是所有的机器学习都要求数据同分布
由于现在的机器学习方向的内容已经变得比较广,存在不少机器学习问题并不要求样本同分布,比如一些发表在机器学习方向上的online算法(在线算法,先得到模型,然后每得到一个数据就对模型权重进行更新)就对数据分布没啥要求。
6、假设空间
监督学习的模型可以是概率模型或非概率模型,由条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)或决策函数 (decision function) Y = f ( X ) Y = f(X) Y=f(X)表示,随具体学习方法而定。对具体的输入进行相应的输出预测时,写作 P ( y ∣ x ) P(y|x) P(y∣x)或 Y = f ( x ) Y = f(x) Y=f(x)。
7、问题形式化
在学习过程中,学习系统利用给定的训练数据集,通过学习(或训练)得到一个模型,表示为条件概率分布
P
^
(
Y
∣
X
)
\hat{P}(Y|X)
P^(Y∣X) 或决策函数
Y
=
f
^
(
X
)
Y = \hat f (X)
Y=f^(X)。条件概率分布
P
^
(
Y
∣
X
)
\hat P (Y|X)
P^(Y∣X) 或决策函数
Y
=
f
^
(
X
)
Y = \hat{f}(X)
Y=f^(X) 描述输入与输出随机变量之间的映射关系。
在预测过程中,预测系统对于给定的测试样本集中的输入
x
N
+
1
x_{N+1}
xN+1 ,由模型或
y
N
+
1
=
a
r
g
m
a
x
P
^
(
y
N
+
1
∣
x
N
+
1
)
y_{N+1} = argmax\hat {P}(y_{N+1}|x_{N+1})
yN+1=argmaxP^(yN+1∣xN+1) 或
y
N
+
1
=
f
^
(
x
N
+
1
)
y_{N+1} = \hat{f}(x_{N+1})
yN+1=f^(xN+1)给出相应的输出
y
N
+
1
y_{N+1}
yN+1。如果这个模型有很好的预测能力,训练样本输出
y
i
y_i
yi 和模型输出
f
^
(
x
i
)
\hat f(x_i)
f^(xi) 之间的差就应该足够小
参考
[1]统计学习方法,李航著.
[2]自然语言处理3———词性标注
[3]分类与回归的区别,知乎