当前位置:文档之家› 机器学习课程论文

机器学习课程论文


-2-
2.2 算法实现 利用给定的皮马印第安人的糖尿病数据集, 编写 matlab 程序来实现 KNN 算 法。对新的输入实例,判定其类标的部分代码如下: prediction.m
function predicted_label = prediction(testing_input,data,labels,k) 类标 A = bsxfun(@minus,data,testing_input); % testing_input 为输入测试数据的一行,data 为训练样本数据集,labels 为训练样本的
2.1 算法要点 1.算法思想: 基本思想是“近朱者赤、近墨者黑”:给定一个训练数据集,对新的输入实 例, 在训练数据集中找到与该实例最邻近的 k 个实例,这 k 个实例的多数属于某 个类,就把该输入实例分为这个类。 2.算法步骤: 1)算距离:计算已知类别数据集合汇总的点与当前点的距离,按照距离递 增次序排序; 2)找邻居:选取与当前点距离最近的 k 个点; 3)做分类:确定距离最近的前 k 个点所在类别的出现频率,返回距离最近 的前 k 个点中频率最高的类别作为当前点的预测分类。 3.算法规则: 1)k 值设定: k 太小,分类结果易受噪声点影响;k 太大,近邻中又可能包含太多的其它 类别的点。k 值通常是采用交叉检验来确定(以 k=1 为基准)。经验规则:k 一 般低于训练样本数的平方根。 2)距离度量: 什么是合适的距离衡量?距离越近应该意味着这两个点属于一个分类的可 能性越大。 常用的距离衡量包括欧氏距离、 夹角余弦等。 变量值域对距离的影响: 值域越大的变量常常会在距离计算中占据主导作用,因此应先对变量进行标准 化。 3)分类决策规则: 投票决定:少数服从多数,近邻中哪个类别的点最多就分为该类。 加权投票法:根据距离的远近,对近邻的投票进行加权,距离越近则权重越 大(权重为距离平方的倒数)。 投票法没有考虑近邻的距离的远近, 距离更近的近邻也许更应该决定最终的 分类,所以加权投票法更恰当一些。
%训练数据集逐行与输入的测试数据行向量相减 distanceMat = sum(A.^2,2);
%求测试数据与训练集每一个样本点(即训练集的一行)的欧氏距离 [B,IX] = sort(distanceMat,'ascend'); 满足 B=distanceMat(IX) len = min(k,length(B)^0.5);
Similarity and difference between supervised learning and unsupervised learning
【摘要】 本文对机器学习中常见的两类方法——监督学习和无监督学习进行了简单 的探讨,以此来加深对机器学习算法的认识和理解。 首先, 简要阐述了监督学习和无监督学习的定义;然后利用给定的皮马印第 安人糖尿病的数据集, 分别利用监督学习中的 KNN 算法和无监督学习中的 FCM 算法对数据集进行了相应的处理,前者的分类精度最佳(k=7 时)为 0.7625,后 者的聚类准确率达到了 0.7435,并探讨了如何评价聚类结果的优劣性;最后,依 据上述实验结果,讨论了监督学习和无监督学习的异同点。 关键词:机器学习、糖尿病、分类、聚类、多变量
5.参考文献
[1]李航,《统计学习方法》,清华大学出版社,2012 [2]周志华,《机器学习》,清华大学出版社,2016 [3]Jiawei Han, Micheline Kamber, Jian Pei 著,范明、孟小峰 译,《数据挖掘概念 与技术(第三版)》,机械工业出版社,2012 [4]薛山,《MATLAB 基础教程》,清华大学出版社,2011 [5]陈杰 等,《MATLAB 宝典(第 3 版)》,电子工业出版社,2011 [6]https:///question/23194489 [7]https:///question/19635522 [8]/article/machinelearning/35272
-3-
图1
k=7 时的分类预测精度
3.无监督学习应用举例——FCM 算法
模糊 C 均值(Fuzzy C-means)算法简称 FCM 算法,是一种基于目标函数的 模糊聚类算法,主要用于数据的聚类分析。 K-means 与 FCM 都是经典的聚类算法,K-means 是排他性聚类算法,即一 个数据点只能属于一个类别,而 FCM 只计算数据点与各个类别的相似度。可理 解为: 对任一个数据点, 使用 K-means 算法, 其属于某个类别的相似度要么 100% 要么 0%(非是即否);而对于 FCM 算法,其属于某个类别的相似度只是一个 百分比。 本文将以 FCM 算法为例,利用给定的皮马印第安人的糖尿病数据集,来说 明无监督学习方法的应用。
-1-
2.监督学习应用举例——KNN 算法
KNN 算法是典型的监督学习方法,是从训练集中找到和新数据最接近的 k 条记录, 然后根据他们的主要分类来决定新数据的类别。该算法涉及 3 个主要因 素:训练集、距离或相似的衡量、k 的大小。 本文将以 KNN 算法为例,利用给定的皮马印第安人的糖尿病数据集,来说 明监督学习方法的应用。
图2
聚类结果与精度
-5-
3.3 聚类精度 聚类没有统一的评价指标,总体思想为一个 cluster 聚类内的数据点聚集在 一起的密度越高,圈子越小,离 center 中心点越近,类内越近,类间越远,那么 这个聚类的总体质量相对来说就会越好。
4.监督学习ቤተ መጻሕፍቲ ባይዱ无监督学习的异同
监督学习最常见的就是分类, 通常我们为算法输入大量已分类数据作为算法 的训练集, 训练集的每一个样本都包含了若干个特征和一个类标,通过已有的训 练样本去训练得到一个最优模型, 然后利用这个最优模型将所有陌生输入映射为 相应的输出,对于输出进行判断实现分类,这就对未知数据进行了分类。 与监督学习相对应的是无监督学习,此时数据没有类别信息,也不会给定目 标值。 在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程被称 为聚类,将寻找描述数据统计值的过程称之为密度估计。 无监督学习与监督学习的不同之处,主要是它没有训练样本,而是直接对数 据进行建模。典型案例就是聚类了,其目的是把相似的东西聚在一起,而不关心 这一类是什么。 聚类算法通常只需要知道如何计算相似度就可以了,它可能不具 有实际意义。
1.监督学习和无监督学习
机器学习的常用方法,主要分为监督学习(supervised learning)和无监督学习 (unsupervised learning)。 首先看,什么是学习(learning)?一个成语就可概括:举一反三。以高考 为例, 高考的题目在上考场前我们未必做过,但在高中三年我们做过很多很多题 目,懂解题方法,因此考场上面对陌生问题也可以算出答案。机器学习的思路也 类似: 我们能不能利用一些训练数据 (已经做过的题) , 使机器能够利用它们 (解 题方法)分析未知数据(高考的题目)? 最简单也最普遍的一类机器学习算法就是分类(classification)。对于分类, 输入的训练数据有特征(feature),有标签(label)。所谓的学习,其本质就是 找到特征和标签之间的关系(mapping)。这样当有特征而无标签的未知数据输 入时,我们就可以通过已有的关系得到未知数据的标签。 在上述的分类过程中,如果所有训练数据都有标签,则称为监督学习 (supervised learning)。如果数据没有标签,显然就是无监督学习(unsupervised learning)了,也即聚类(clustering)。 常见的监督学习方法有 k 近邻法(k-nearest neighbor,KNN)、决策树、朴 素贝叶斯法、支持向量机(SVM)、感知机和神经网络等等;无监督学习方法 有划分法、层次法、密度算法、图论聚类法、网格算法和模型算法几大类,常见 的具体算法有 K-means 算法、K-medoids 算法和模糊聚类法(FCM)。
3.1 算法要点 FCM 算法是基于对目标函数的优化基础上的一种数据聚类方法。聚类结果 是每一个数据点对聚类中心的隶属程度,该隶属程度用一个数值来表示。FCM 算法是一种无监督的模糊聚类方法,在算法实现过程中不需要人为的干预。 1.算法思想: 首先介绍一下模糊这个概念,所谓模糊就是不确定,确定性的东西是什么那 就是什么,而不确定性的东西就说很像什么。比如说把 20 岁作为年轻不年轻的 标准,那么一个人 21 岁按照确定性的划分就属于不年轻,而我们印象中的观念 是 21 岁也很年轻,这个时候可以模糊一下,认为 21 岁有 0.9 分像年轻,有 0.1 分像不年轻,这里 0.9 与 0.1 不是概率,而是一种相似的程度,把这种一个样本 属于结果的这种相似的程度称为样本的隶属度,一般用 u 表示,表示一个样本相 似于不同结果的一个程度指标。 基于此,假定数据集为 X,如果把这些数据划分成 c 类的话,那么对应的就 有 c 个类中心为 C,每个样本 j 属于某一类 i 的隶属度为 u ij 。
%对各个欧氏距离进行排序,B 为排序后的列向量,IX 为相对位置的索引向量,
%k 一般低于训练样本数的平方根 predicted_label = mode(labels(IX(1:len))); end
%出现的频率最高的类标,作为测试数据的类标
在主程序中载入训练数据集和测试数据集,调用 prediction.m,依据经验规 则, k 160 4 10 。故 k 值设定从 1 开始,依次递增,直到 12 为止,分类精 度与 k 值设定的结果如下表所示: 表 1 k 值设定与分类精度
-6-
-4-
2.算法步骤: 1)确定分类数,指数 m 的值,确定迭代次数(约束条件); 2)初始化一个隶属度 U(注意条件——和为 1); 3)根据 U 计算聚类中心 C; 4)这个时候可以计算目标函数 J 了; 5)根据 C 返回去计算 U,回到步骤 3,一直循环直到结束。
3.2 算法实现 依据给定的皮马印第安人的糖尿病数据集,利用 Matlab 自带的 fcm 函数进 行处理,fcm 函数输入需要 2 个或者 3 个参数,返回 3 个参数,如下: [center, U, obj_fcn] = fcm(data, cluster_n, options) data 数据集 cluster_n 对于输入: (注意每一行代表一个样本, 列是样本个数), 为聚类数,options 是可选参数。 对于输出:center 为聚类中心,U 是隶属度,obj_fcn 为目标函数值,这个迭 代过程的每一代的 J 都在这里面存着。 分别选取第 2、5 列,第 3、6 列,第 4、7 列,程序执行结果如下:
相关主题