赞
踩
~~~~~ | 有监督学习 | 无监督学习 |
---|---|---|
样本 | 必须要有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律。 | 没有训练集,只有一组数据,在该组数据集内寻找规律。 |
目标 | 方法是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。 | 方法只有要分析的数据集的本身,预先没有什么标签。 如果发现数据集呈现某种聚集性,则可按自然的聚集性分类,但不予以某种预先分类标签对上号为目的。 |
(1)无监督学习是在寻找数据集中的规律性,这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。
这一点是比有监督学习方法的用途要广。譬如分析一堆数据的主分量,或分析数据集有什么特点都可以归于
非监督学习方法的范畴。
(2)用非监督学习方法分析数据集的主分量与用K-L变换计算数据集的主分量又有区别。后者从方法上讲不是学习方法。
因此用K-L变换找主分量不属于无监督学习方法,即方法上不是。而通过学习逐渐找到规律性这体现了学习方法这一点。
在人工神经元网络中寻找主分量的方法属于无监督学习方法。
~~~~~~~ | 监督学习 | 强化学习 |
---|---|---|
反馈映射 | 都会学习出输入到输出的一个映射,监 督式学习出的是之间的关系,可以告诉 算法什么样的输入对应着什么样的输出。 | 强化学习出的是给机器的反馈 reward function,即用来判断这个行为是好是坏。 |
反馈时间 | 做了比较坏的选择会立刻反馈给算法。 | 结果反馈有延时,有时候可能需 要走了很多步以后才知道以前的 某一步的选择是好还是坏。 |
输入特征 | 输入是独立同分布的。 | 面对的输入总是在变化,每当算 法做出一个行为,它影响下一次 决策的输入。 |
行为模式 | 不考虑行为间的平衡,只是 exploitative。 | 一个 agent 可以在探索和开发(exploration and exploitation)之间做权衡,并且选择一个最大的 回报。 exploration 会尝试很多不同的事情,看它们是否 比以前尝试过的更好。 exploitation 会尝试过去经验中最有效的行为。 |
思想:只要知道你朋友(邻居)是什么人,就能知道你是什么人
K近邻是一种 懒惰的学习方法:(基于实例学习)
Lazy learners(懒惰学习): instance-based learning
新数据来时,才开始学习给出分类
距离(distance)–衡量样本之间的相相识度
通用距离公式 ( 闵可夫斯基距离 )
D
(
X
,
Y
)
=
∑
i
=
1
n
∣
X
i
−
Y
i
∣
p
p
D(X,Y)=\sqrt[p]{\sum _{i=1}^n|X_i-Y_i|^p}
D(X,Y)=pi=1∑n∣Xi−Yi∣p
当
p
=
1
p = 1
p=1 为曼哈顿距离:
D
(
X
,
Y
)
=
∑
i
=
1
n
∣
X
i
−
Y
i
∣
D(X,Y)={\sum _{i=1}^n|X_i-Y_i|}
D(X,Y)=∑i=1n∣Xi−Yi∣
当
p
=
2
p = 2
p=2 为欧式距离:
D
(
X
,
Y
)
=
∑
i
=
1
n
(
X
i
−
Y
i
)
2
D(X,Y)=\sqrt[]{\sum _{i=1}^n(X_i-Y_i)^2}
D(X,Y)=∑i=1n(Xi−Yi)2
对现有训练集的训练误差,关注训练集,如果近似误差过小可能会出现过拟合的现象,
对现有的训练集能有很好的预测,但是对未知的测试样本将会出现较大偏差的预测。
模型本身不是最接近最佳模型
可以理解为对测试集的测试误差,关注测试集,估计误差小说明对未知数据的预测能力好,模型本身最接近最佳模型。
K值过小:特征空间被划分为更多子空间(模型的项越多),整体模型变复杂,容易过拟合,
选择的范围就比较小,训练的时候命中率较高,近似误差小,
用 test_dataset 测试时的时候就容易出错,估计误差大,容易过拟合。
K值=N: 无论输入实例是什么,都将简单的预测他属于训练实例中最多的类
k值较大,就相当于用较大领域中的训练实例进行预测,泛化误差小(方差小),但缺点是近似误差大(偏差大),换句话说,K值较大就意味着整体模型变得简单,容易发生欠拟合;一个极端是k等于样本数m,则完全没有分类,此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的类,模型过于简单。
原理:一种分割k维数据空间的数据结构。应用于多维空间关键数据搜索(如:范围和最近邻搜索)。
kd树是是一种二叉树,表示对k维空间的一个划分,构造kd树相当于不断地用垂直于坐标轴的超平面
将K维空间切分,构成一系列的K维超矩形区域。kd树的每个结点对应于一个k维超矩形区域。利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。
构造根结点,使根结点对应于K维空间中包含所有实例点的超矩形区域;
通过递归的方法,不断地对k维空间进行切分,生成子结点。在超矩形区域上选择一个坐标轴和
在此坐标轴上的一个切分点,确定一个超平面,这个超平面通过选定的切分点并垂直于选定的坐标轴,
将当前超矩形区域切分为左右两个子区域(子结点);这时,实例被分到两个子区域
上述过程直到子区域内没有实例时终止(终止时的结点为叶结点)。在此过程中,将实例保存在相应的结点上。
通常,循环的选择坐标轴对空间切分,选择训练实例点在坐标轴上的中位数为切分点,
这样得到的kd树是平衡的(平衡二叉树:它是一棵空树,或其左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是平衡二叉树)。
注意:平衡的kd树搜索时的效率未必是最低的。特殊情况有时在稀疏点切
在scikit-learn 中,K近邻类库sklearn.neighbors: 【代码演示】
KNN 分类树 的类 KNeighborsClassifier
KNN 回归树 的类 KNeighborsRegressor
KNN的扩展类
限定半径最近邻分类树的类RadiusNeighborsClassifier
限定半径最近邻回归树的类RadiusNeighborsRegressor
最近质心分类算法NearestCentroid。
在这些算法中,KNN分类和回归的类参数完全一样。具体参数如下:
sklearn.neighbors.KNeighborsClassifier(
n_neighbors=5,
weights=’uniform’,
algorithm=’auto’,
leaf_size=30,
p=2,
metric=’minkowski’,
metric_params=None,
n_jobs=None,
**kwargs
)
n_neighbors:KNN中的k值,默认为5(对于k值的选择,前面已经给出解释);
weights:用于标识每个样本的近邻样本的权重,可选择"uniform",“distance” 或自定义权重。默认 “uniform”,所有最近邻样本权重都一样。如果是 “distance”,则权重和距离成反比例;如果样本的分布是比较成簇的,即各类样本都在相对分开的簇中时,我们用默认的"uniform"就可以了,如果样本的分布比较乱,规律不好寻找,选择"distance"是一个比较好的选择;
algorithm:限定半径最近邻法使用的算法,可选‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’。
leaf_size:这个值控制了使用kd树或者球树时, 停止建子树的叶子节点数量的阈值。这个值越小,则生成的kc树或者球树就越大,层数越深,建树时间越长,反之,则生成的kd树或者球树会小,层数较浅,建树时间较短。默认是30。
这个值一般依赖于样本的数量,随着样本数量的增加,这个值必须要增加,否则不光建树预测的时间长,还容易过拟合。可以通过交叉验证来选择一个适中的值。当然,如果使用的算法是蛮力实现,则这个参数可以忽略;
metric,p:距离度量(前面介绍过),默认闵可夫斯基距离 “minkowski”(p=1为曼哈顿距离, p=2为欧式距离);
metric_params:距离度量其他附属参数(具体我也不知道,一般用得少);
n_jobs:并行处理任务数,主要用于多核CPU时的并行处理,加快建立KNN树和预测搜索的速度。n_jobs= -1,即所有的CPU核都参与计算。
限定半径最近邻法分类和回归的类的主要参数也和KNN基本一样。具体参数如下:
sklearn.neighbors.RadiusNeighborsClassifier(
radius=1.0,
weights=’uniform’,
algorithm=’auto’,
leaf_size=30,
p=2,
metric=’minkowski’,
outlier_label=None,
metric_params=None,
n_jobs=None,
**kwargs
)
K过小(理论最小=1)也就是邻居数为1,会受到噪声数据影响,降低分类精度
K过大(理论=训练样本数)会受到不相关数据影响,降低分类精度
使用交叉验证寻找最好的K值
经验值 k = sqr(n)/2, n时训练样本数
用强大的 Gridsearch(网格搜索)寻找最优参数
parameters = {
‘n_neighbors’:[5,10,15,20,30],
‘weights’:[‘uniform’,‘distance’],
‘p’:[1,2]
}
knn = KNeighborsClassifier()
grid_search = GridSearchCV(lnn,parameters,scoring = ‘accuracy’,cv = 5)
grid_search.fit(x,y)
参考:
https://www.cnblogs.com/pinard/p/6061661.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。