统计学习方法:k邻近与k-means的知识(各方收集)

统计学习方法:k邻近与k-means的知识(各方收集)_第1张图片

来源:https://blog.csdn.net/zll0927/article/details/17000675

1. 分类和聚类?(from:https://blog.csdn.net/xzfreewind/article/details/73770327)

对于分类来说,在对数据集分类时,我们是知道这个数据集是有多少种类的,比如对一个学校的在校大学生进行性别分类,我们会下意识很清楚知道分为“男”,“女”

而对于聚类来说,在对数据集操作时,我们是不知道该数据集包含多少类,我们要做的,是将数据集中相似的数据归纳在一起。比如预测某一学校的在校大学生的好朋友团体,我们不知道大学生和谁玩的好玩的不好,我们通过他们的相似度进行聚类,聚成n个团体,这就是聚类。

 

2. 监督学习和非监督学习?

 监督学习:学习一个模型,使得模型可以对任意给定的输入,对其相应的输出做出一个好的预测.

非监督学习:(from:https://blog.csdn.net/u010947534/article/details/82025794)

输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。通俗点将就是实际应用中,不少情况下无法预先知道样本的标签,也就是说没有训练样本对应的类别,因而只能从原先没有样本标签的样本集开始学习分类器设计。

非监督学习目标不是告诉计算机怎么做,而是让它(计算机)自己去学习怎样做事情。非监督学习有两种思路。第一种思路是在指导Agent时不为其指定明确分类,而是在成功时,采用某种形式的激励制度。需要注意的是,这类训练通常会置于决策问题的框架里,因为它的目标不是为了产生一个分类系统,而是做出最大回报的决定,这种思路很好的概括了现实世界,agent可以对正确的行为做出激励,而对错误行为做出惩罚。

无监督学习的方法分为两大类:

(1)    一类为基于概率密度函数估计的直接方法:指设法找到各类别在特征空间的分布参数,再进行分类。

(2)    另一类是称为基于样本间相似性度量的简洁聚类方法:其原理是设法定出不同类别的核心或初始内核,然后依据样本与核心之间的相似性度量将样本聚集成不同的类别。

利用聚类结果,可以提取数据集中隐藏信息,对未来数据进行分类和预测。应用于数据挖掘,模式识别,图像处理等。

 

3. 距离?(from:https://blog.csdn.net/xzfreewind/article/details/73770327)

 

4. k近邻中k的值与误差的关系?近似误差?估计误差?(https://blog.csdn.net/qq_35664774/article/details/79448076)

k值越小,学习的近似误差越小,估计误差越大.

近似误差,可以理解为对现有训练集的训练误差,近似误差小,可能出现过拟合现象,对现有的训练集有很好的预测,但是对未知的测试样本将会产生较大偏差的预测,模型本身不是接近最佳模型.近似误差更关注于"训练".近似误差小要注意是不是过拟合了.

估计误差,可以理解为对测试集的测试误差.可以理解为模型估计值与实际值之间的差距,或者说模型的估计系数与实际系数之间的差距.估计误差,更关注于"测试","泛化".

k邻近法,k是指想搞清楚某个点属于哪一类,找到它周围最近的k个数据点,这些数据点中哪个类型的点比较多,就认为这个点是哪个类型,类似于物以类聚,人以群分.某个人周围都是些什么样的人,大概率能准确推断出这个人是什么样子的人.

当k比较小的时候,想判断某个人是什么样的人,只根据他身边很少的人.在样本点数量一定的情况下,会把特征空间划分成更多的子空间.这时候模型更复杂(只用很少的人判断一个人,肯定模型很复杂,用很多的人判断一个人,模型肯定简单).

当模型很复杂的时候,会产生过拟合的问题.

综上,k越小,模型越复杂,关注于训练集,近似误差小,但是估计误差大.

 

5. 经验风险是什么?

 

 

6. 交叉验证选取最优的k值?什么是交叉验证?

交叉验证是一种模型选择的方法.思想是重复利用数据,把给定的数据切分为训练集和测试集.应用最多的是S折交叉验证:随机将数据切分为S个互不相交的大小相同的子集,然后利用S-1个子集的数据训练模型,用剩下的一个进行测试.将这一过程对可能的S种选择重复进行,最后选出S次测评中平均测试误差最小的模型.

 

7. k-means++ (https://www.cnblogs.com/wang2825/articles/8696830.html)

k-means算法是最开始随机选取数据集中k个点作为聚类中心

k-means++算法是按照如下思想: 

第一个聚类中心通过随机的方法.

假设已经选了n个初始聚类中心,则在选取第n+1个聚类中心时,距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心.

 

8. python编程时输入的参数(https://www.cnblogs.com/wuchuanying/p/6218486.html)

举例:algorithm = (KMeans(n_clusters = 6 ,init='k-means++', n_init = 10 ,max_iter=300, tol=0.0001,  random_state= 111  ,algorithm='elkan') )

(1) n_clusters: 要分成的簇数也是要生成的质心数,默认值是8,可修改,必须是int型

(2)init: 初始化质心,类型可以是function可以是array.默认值k-means++,一种生成初始质心的方法.

(3)n_init: 设置选择质心种子次数,默认为10次,返回质心最好的一次结果.好是指计算时长短.

(4)max_iter: 每次迭代的最大次数

(5)tol: 容忍的最小误差,当误差小于tol就会退出迭代

(6)precompute_distances: 这个参数会在空间和时间之间做权衡,如果是True就会把整个距离矩阵都放到内存中.

(7)verbose: 是否输出详细信息,类型布尔型

(8) random_state: 随机生成器的种子,和初始化中心有关.

 

 

你可能感兴趣的:(统计学习方法)