数据分析的主要方法(2)——机器学习类

目录

聚类方法

常见算法优缺点

分类方法


聚类方法

算法可以分为划分法(Partitioning Methods)、层次法(Hierarchical Methods)、基于密度的方法(density-based methods)、基于网格的方法(grid-based methods)、基于模型的方法(Model-Based Methods) 。

多聚类算法基于欧几里得或者曼哈顿距离度量来决定聚类。基于这样的距离度量的算法趋向于发现具有相近尺度和密度的球状簇。但是,一个簇可能是任意形状的。

1.划分法,给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K

  •  每一个分组至少包含一个数据纪录;
  • 每一个数据纪录属于且仅属于一个分组(注意:这个要求在某些模糊聚类算法中可以放宽);

对于给定的K,算法首先给出一个初始的分组方法,以后通过反复迭代的方法改变分组,使得每一次改进之后的分组方案都较前一次好,而所谓好的标准就是:同一分组中的记录越近越好,而不同分组中的纪录越远越好。比如:k-means算法

2.层次法,这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”“自顶向下”两种方案。层次聚类方法可以是基于距离的或基于密度或连通性的。比如:BIRCH算法

  • step1:将每个样本都视为一个聚类

  • step2:计算各个聚类之间的相似度

  • step3:寻找最近的两个聚类,将他们归为一类

  • step4:重复步骤二,步骤三;直到所有样本归为一类

3.密度算法,基于密度的方法,基于密度的方法,与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。这个方法的指导思想就是,只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去。比如:DBSCAN算法

  • 指定合适的r(点的半径)和M(在一个点半径内至少包含的点的个数)
  • 计算所有的样本点,如果点p的r邻域里有超过M个点,则创建一个以p为核心点的新簇
  • 反复寻找这些核心点直接密度可达的点,将其加入到相应的簇,对于核心点发生"密度相连"状况的簇,给予合并
  • 当没有新的点可以被添加到任何簇,算法结束

4.基于模型的聚类,这一类方法主要是指基于概率模型的方法和基于神经网络模型的方法,尤其以基于概率模型的方法居多。这里的概率模型主要指概率生成模型(generative Model),同一”类“的数据属于同一种概率分布,即假设数据是根据潜在的概率分布生成的。比如:高斯混合模型

5.网格算法,基于网格的方法,这种方法首先将数据空间划分成为有限个单元的网格结构,所有的处理都是以单个的单元为对象的。这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与把数据空间分为多少个单元有关。比如:STING算法

  • 划分网格
  • 使用网格单元内数据的统计信息对数据进行压缩表达
  • 基于这些统计信息判断高密度网格单元 
  • 最后将相连的高密度网格单元识别为簇

常见算法优缺点

类型 算法名称 原理 优点 缺点
划分法

k-means

以集群点的平均值作为参考对象进行聚类 算法简单,时间复杂度低 无法处理非球形等不规则的数据、对初始值k的设置很敏感、对离群点敏感
层次法

Brich

利用树结构对数据集进行处理,叶结点存储一个聚类,用中心和半径表示,顺序处理每一个对象,并把它划分到距离最近的结点

 可以在数据量很大时使用、节省内存、速度快、可识别噪声点 对高维数据特征的聚类效果不好、若数据集分布簇不是类似于超球体或凸的则聚类效果不好
密度法

Dbscan

采用空间索引技术来搜索对象的邻域,将簇看做是数据空间中被低密度区域分割开的稠密对象区域 可以处理任何形状的聚类簇、能够检测异常点 需要给定数据点的半径r和最少数量m、对输入参数较敏感
网格法 STING 将输入对象的空间区域划分成矩形单元,每个网格单元的统计信息(均值、最大值、最小值)被作为参数预先计算和存储 效率高、时间复杂度低 聚类质量受网格结构最底层的粒度影响、欠缺对网格单元之间的联系的考量

分类方法

1.逻辑回归:由线性回归演变而来,是一个线性分类器。预测结果呈“S”型,是界于0和1之间的概率,可以适用于连续性和类别性自变量。通过历史数据的表现对未来结果发生的概率进行预测。逻辑回归=线性回归+sigmoid函数(线性回归结果为连续性数值,逻辑回归则为某个类别)。

  • 将自变量特征输入
  • 定义自变量的线性组合y,即针对自变量线性回归
  • 将线性回归结果y映射到sigmoid函数,生成一个0-1范围取值的函数概率值
  • 根据概率值,定义阈值(通常为0.5),判定分类结果的正负

优点:模型训练速度非常快;可解释性非常好;抗噪能力比较强

缺点:对极不平衡的数据集训练效果不好;对数据特征的分布和相关性要求相对较高;本身无法筛选特征

2.支持向量机SVM:Vapnik根据统计学习理论,提出的一种新的学习方法。根据结构风险最小化准则,以最大化分类间隔,构造最优分类超平面,来提高学习机的泛化能力,较好地解决了非线性、高维数、局部极小点等问题。 

优点:利用内积核函数代替向高维空间的非线性映射;复杂性取决于支持向量的数目

缺点:不适合大规模训练样本;不能用于多分类问题;分类结果没有"概率"值

3.决策树:一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规 则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。工作原理是基于最好的属性值划分数据集,第⼀次划分之后,数据集被向下传递到树的分⽀的下⼀个结点,然后再次划分数据。当程序遍历完所有划分数据集的属性,或者每个分⽀下的所有实例都具有相同的分类,或者当前结点包含的样本集合为空时递归结束。

常用的算法主要包含下面三种:

数据分析的主要方法(2)——机器学习类_第1张图片

 ID3算法是根据信息增益最大(即上一节点的信息熵减去分裂完的信息熵的总和)来判断哪个是最佳分类点,但是它有个缺点是会倾向于那些分类水平高的特征。

增益率准则对可取值数⽬较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率,最大的候选划分属性,⽽是使用了⼀种启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

优点:适合高维数据;简单易于理解;可同时处理数据型和常规型数据

缺点:容易过拟合;忽略属性之间的相关性

4.随机森林:利用多棵树对样本进行训练并预测的一种分类器。每一棵决策树之间是没有关联的。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。然后进行列采样,从M个feature中,选择m个(m << M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。随机森林的一大优势在于它既可用于分类,也可用于回归问题。

优点:不用做特征选择,因为特征子集是随机选择的;对泛化误差使用的是无偏估计,模型泛化能力强;训练时树与树之间是相互独立的,训练速度快,容易做成并行化方法;对缺失值不敏感

缺点:随机森林在某些噪音较大的分类或回归问题上会过拟合;取值划分较多的属性会对随机森林产生更大的影响

 5.KNN:当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。关键因素主要有两个,K值的选取点距离的计算。通过交叉验证(将样本数据按照一定比例,拆分出训练用的数据和验证用的数据,比如6:4拆分出部分训练数据和验证数据),从选取一个较小的K值开始,不断增加K的值,然后计算验证集合的方差,最终找到一个比较合适的K值。选择一个较大的临界K点,当它继续增大或减小的时候,错误率都会上升。

算法原理:

  1. 计算待分类物体与其他物体之间的距离;
  2. 统计距离最近的 K 个邻居;
  3. 对于 K 个最近的邻居,它们属于哪个分类最多,待分类物体就属于哪一类。

文档还将不断更新优化,欢迎大家收藏互相学习指正~ 

你可能感兴趣的:(数据分析,聚类,算法,分类)