R语言-聚类、分类、逻辑回归、决策树、推断树,支持向量机

聚类分析

  1. 聚类的定义

聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。是一种归约技术,旨在揭露一个数据集中观测的子集。它可以把大量的观测值归约为若干个类。组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内相似性越大,组间差距越大,说明聚类效果越好。

图1-1 聚类分析示意图

最常用的两种聚类方法是层次聚类和划分聚类。

1.1层次聚类

1.1.1层次聚类定义与特点

基于层次的聚类方法是指对给定的数据进行层次分解,直到满足某种条件为止。该算法根据层次分解的顺序分为自底向上法和自顶向下法,即凝聚式层次聚类算法和分裂式层次聚类算法。

(1)自底向上法

首先,每个数据对象都是一个簇,计算数据对象之间的距离,每次将距离最近的点合并到同一个簇。然后,计算簇与簇之间的距离,将距离最近的簇合并为一个大簇。不停地合并,直到合成了一个簇,或者达到某个终止条件为止。簇与簇的距离的计算方法有最短距离法、中间距离法、类平均法等,其中,最短距离法是将簇与簇的距离定义为簇与簇之间数据对象的最短距离。自底向上法的代表算法是AGNES(AGglomerativeNESing)算法。

(2)自顶向下法

该方法在一开始所有个体都属于一个簇,然后逐渐细分为更小的簇,直到最终每个数据对象都在不同的簇中,或者达到某个终止条件为止。自顶向下法的代表算法是 DIANA(DivisiveANAlysis)算法。

基于层次的聚类算法的主要优点包括,距离和规则的相似度容易定义,限制少,不需要预先制定簇的个数,可以发现簇的层次关系。基于层次的聚类算法的主要缺点包括,计算复杂度太高,奇异值也能产生很大影响,算法很可能聚类成链状。

1.1.2层次聚类算法

对与层次聚类来说,最常用的算法是单联动、全联动、平均联动、质心和ward方法。

层次聚类方法

单联动

一个类中的点和另一个类中点的最小距离

全联动

一个类中的点和另一个类中点的最大距离

平均联动

一个类中的点和另一个类中点的平均距离

质心

两类中质心之间的距离。对单个变量来说,质心就是变量的值

Ward法

两个类之间的所有变量的方差分析的平方和

1.1.3层次聚类分析

首先载入数据,在这里使用平均联动聚类方法处理营养数据,目的是基于27种食物的营养信息辨别其相似性、相异性并分组。

data(nutrient, package="flexclust")

row.names(nutrient) <- tolower(row.names(nutrient))

nutrient.scaled <- scale(nutrient)                                  

d <- dist(nutrient.scaled)                                          

fit.average <- hclust(d, method="average")                          

plot(fit.average, hang=-1, cex=.8, main="Average Linkage Clustering")

 

图1-2 营养数据的平均联动

如果最终目标是这些食品分配到的类较少,因此需要额外的分析来选择聚类的适当个数。Nbclust()函数的输入包括需要做聚类的矩阵或是数据框,使用的距离测度和聚类方法,并考虑最小和最大聚类的个数来进行聚类。他返回每一个聚类指数,同时输出建议聚类的最佳数目。下面为该方法处理营养数据的平均联动聚类。

代码如下:

library(NbClust)

nc <- NbClust(nutrient.scaled, distance="euclidean",

              min.nc=2, max.nc=15, method="average")

par(opar)

table(nc$Best.n[1,])

barplot(table(nc$Best.n[1,]),

        xlab="Numer of Clusters", ylab="Number of Criteria",

        main="Number of Clusters Chosen by 26 Criteria")

 

图1-3 推荐聚类个数

通过分析上图,可以通过“投票”最多的聚类个数,并选择其中一个使的解释最有意义,下面的代码清单展示了五类聚类的方案。

clusters <- cutree(fit.average, k=5)

table(clusters)

aggregate(nutrient, by=list(cluster=clusters), median)

aggregate(as.data.frame(nutrient.scaled), by=list(cluster=clusters),

          median)

plot(fit.average, hang=-1, cex=.8,  

     main="Average Linkage Clustering\n5 Cluster Solution")

rect.hclust(fit.average, k=5)

cutree()函数用来把树状图分成五类,结果有原始度量和标准度量两种形式,树状图被重新绘制,rect.hclust()函数用来叠加五类的解决方案。

图1-4 通过五类解决方案

1.2划分层次聚类

在划分方法中,观测值被分为K组并根据给定的规则改组成最有粘性的类。

1.2.1 K均值聚类

最常见的划分方法是K均值聚类分析。从概念上讲,K均值算法如下:

(1) 选择K个中心点(随机选择K行);

(2) 把每个数据点分配到离它最近的中心点;

(3) 重新计算每类中的点到该类中心点距离的平均值(也就说,得到长度为p的均值向量,这里的p是变量的个数);

(4) 分配每个数据到它最近的中心点;

(5) 重复步骤(3)和步骤(4)直到所有的观测值不再被分配或是达到最大的迭代次数(R把10次作为默认迭代次数)。

K均值聚类能处理比层次聚类更大的数据集。在R中K均值的函数格式是kmeans(x,centers),这里x表示数值数据集(矩阵或数据框),centers是要提取的聚类数目。函数返回类的成员、类中心、平方和(类内平方和、类间平方和、总平方和)和类大小。

由于K均值聚类在开始要随机选择k个中心点,在每次调用函数时可能获得不同的方案。使用set.seed()函数可以保证结果是可复制的。此外,聚类方法对初始中心值的选择也很敏感。

kmeans()函数有一个nstart选项尝试多种初始配置并输出最好的一个。例如,加上nstart=25会生成25个初始配置。通常推荐使用这种方法。

不像层次聚类方法,K均值聚类要求你事先确定要提取的聚类个数。同样,NbClust包可以用来作为参考。另外,在K均值聚类中,类中总的平方值对聚类数量的曲线可能是有帮助的。可根据图中的弯曲选择适当的类的数量。

data(wine, package="rattle")

head(wine)

df <- scale(wine[-1])  

wssplot(df)      

library(NbClust)

set.seed(1234)

nc <- NbClust(df, min.nc=2, max.nc=15, method="kmeans")

par(opar)

table(nc$Best.n[1,])

barplot(table(nc$Best.n[1,]),

        xlab="Numer of Clusters", ylab="Number of Criteria",

        main="Number of Clusters Chosen by 26 Criteria")

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 信用卡违约率建模是一个重要的机器学习问题,可以使用多种机器学习方法进行实现,下面介绍九种常用的机器学习方法。 1. 决策树决策树方法通过划分特征空间将数据逐层分割成不同的决策区域,可根据特定的划分规则进行预测信用卡违约率。 2. 神经网络:神经网络利用多层的神经元和连接权重来学习特定的模式和关系,并用于预测信用卡违约率。 3. 逻辑回归逻辑回归是一种用于建立分类模型的方法,可根据输入特征的权重和偏差,预测信用卡违约率。 4. 支持向量机(SVM):SVM通过在高维特征空间中找到最优超平面来实现分类,适用于信用卡违约率的建模。 5. 随机森林:随机森林是一种基于决策树的集成学习方法,通过多个决策树的投票来预测信用卡违约率。 6. K均值聚类:K均值聚类方法可将数据分为K个簇,可用于对信用卡违约率进行无监督学习和聚类分析。 7. 高斯混合模型(GMM):GMM是利用多个高斯分布模型拟合数据的方法,适用于对信用卡违约率进行概率建模和分类。 8. 隐马尔可夫模型(HMM):HMM是一种统计模型,通过限制状态转移概率和观测概率,可对信用卡违约率进行序列建模。 9. XGBoost:XGBoost是一种梯度提升决策树的集成学习方法,通过连续迭代和加权学习来提高识别信用卡违约率的准确性。 这些机器学习方法可以在信用卡违约率建模中灵活选择和组合使用,以提高预测准确性和可解释性。通过对不同模型的比较和优化,可以找到最适合解决信用卡违约率的方法。 ### 回答2: 信用卡违约率建模是指利用机器学习方法对信用卡用户违约的可能性进行预测和建模。以下是对信用卡违约率建模常用的九种机器学习方法以及实现方法: 1. 决策树决策树是一种基于结构的分类模型,它通过对特征属性进行划分,最终得到一个分类决策树模型。 2. 神经网络:神经网络是一种基于人工神经元构建的网络结构,通过训练模型来学习到信用卡违约率的规律。 3. 逻辑回归逻辑回归是一种常见的分类模型,通过构建逻辑回归模型对信用卡违约与否进行分类。 4. 随机森林:随机森林是基于决策树的集成学习方法,通过构建多个决策树来预测信用卡违约率。 5. 支持向量机支持向量机是一种基于最大间隔分类的方法,能够有效地对信用卡违约进行分类。 6. 朴素贝叶斯:朴素贝叶斯是一种基于贝叶斯定理的分类方法,通过建立特征和类别之间的条件概率模型来预测信用卡违约。 7. K近邻算法:K近邻算法基于样本之间的相似性进行分类,它通过计算待预测样本与训练样本的距离来判断信用卡违约率。 8. 梯度提升方法:梯度提升方法通过迭代地训练多个弱分类器,最终得到一个强分类器来预测信用卡违约。 9. 高斯过程回归:高斯过程回归是一种基于贝叶斯推断的回归方法,通过学习信用卡违约的概率分布来对信用卡违约率进行建模。 以上是用决策树、神经网络等九种机器学习方法对信用卡违约率建模的方法介绍。根据实际问题和数据情况,选择合适的方法进行建模分析可以提高模型的准确性和预测能力。 ### 回答3: 信用卡违约率建模可以使用许多机器学习方法,包括决策树、神经网络等九种机器学习方法。这些方法主要用于从历史数据中学习模式和规律,以预测哪些信用卡账户可能违约。下面将介绍其中九种方法的实现方式: 1. 决策树:通过结构的分支和节点来进行分类,根据特征属性划分样本,从而得到预测结果。 2. 神经网络:模拟人脑的神经元网络,通过多层神经元对输入信号进行处理和学习,从而实现对信用卡违约率的建模。 3. 朴素贝叶斯:基于贝叶斯定理和特征之间的独立性假设,使用概率统计方法来进行分类。 4. 支持向量机:通过构造超平面将不同类别的样本分隔开,实现对信用卡违约率进行分类。 5. 逻辑回归:根据已知数据的特征值和标签值,通过数学模型来预测未知数据的标签值,从而实现对信用卡违约率的建模。 6. 随机森林:通过集成多个决策树,每个的预测结果对最终分类结果进行投票,从而得到对信用卡违约率的建模。 7. K近邻:通过计算样本之间的距离,将未知数据的标签值与其最近邻的K个样本相同的标签进行投票,从而预测未知数据的标签值。 8. 集成学习方法:如Adaboost、Bagging等,通过组合多个弱分类器来形成一个强分类器,从而实现对信用卡违约率的建模。 9. 深度学习:一种基于神经网络的机器学习方法,通过多层次的神经元网络来学习特征表示,从而对信用卡违约率进行建模。 这九种机器学习方法各有优劣,选择适合的方法需要根据具体情况和数据特征进行评估和比较。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值