常用的分类与预测算法

根据挖掘目标和数据形式可以建立分类与预测、聚类分析、关联规则、时序模式、偏差检测。

算法名称算法描述
回归分析确定预测属性与其他变量间相互依赖的定量关系最常用的统计学方法
决策树自顶向下的递归方式,在内部节点进行属性值的比较,并根据不同的属性值从该节点下分支,最终得到的叶节点是学习划分的类
人工神经网络输入与输出之间关系的模型
贝叶斯网络不确定知识表达和推理领域最有效的理论模型之一
支持向量机把低维的非线性可分转化为高维的线性可分,在高维空间进行线性分析的算法

主要回归模型

回归模型名称算法描述
线性回归对一个或多个自变量和因变量之间的线性关系进行建模,可用最小二乘法求解模型系数
非线性回归对一个或多个自变量和因变量之间的非线性关系进行建模。如果非线性关系可以通过简单的函数变换转化成线性关系,用线性回归的思想求解;不过不能转化,用非线性最小二乘法求解
Logistic回归广义线性回归模型的特例,利用Logistic函数将因变量的取值范围控制在0和1之间,表示取值为1的概率
岭回归一种改进最小二乘估计的方法
主成分回归主成分回归是根据主成分分析的思路提出来的,是对最小二乘法的一种改进,它是参数估计的一种有偏估计。可以消除自变量之间的多重共线性
glm <- glm(y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8,
           family = binomial(link = logit), data = Data)
summary(glm)
# 逐步寻优法
logit.step <- step(glm, direction = "both")
summary(logit.step)
# 前向选择法
logit.step <- step(glm, direction = "forward")
summary(logit.step)
# 后向选择法
logit.step <- step(glm, direction = "backward")
summary(logit.step)

决策树
树状结构,每一个叶节点对应一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分成若干子集。

# 计算一列数据的信息熵
calculateEntropy <- function(data) {
  t <- table(data)    
  sum <- sum(t)       
  t <- t[t != 0]        
  entropy <- -sum(log2(t / sum) * (t / sum))
  return(entropy)
}
# 计算两列数据的信息熵
calculateEntropy2 <- function(data) {
  var <- table(data[1])
  p <- var/sum(var)
  varnames <- names(var)
  array <- c()
  for (name in varnames) {
    array <- append(array, calculateEntropy(subset(data, data[1] == name,
                                                   select = 2)))
  }
  return(sum(array * p))
}

buildTree <- function(data) {
  if (length(unique(data$result)) == 1) {
    cat(data$result[1])
    return()
  }
  if (length(names(data)) == 1) {
    cat("...")
    return()
  }
  entropy <- calculateEntropy(data$result)  
  labels <- names(data)
  label <- ""
  temp <- Inf
  subentropy <- c()
  for (i in 1:(length(data) - 1)) {
    temp2 <- calculateEntropy2(data[c(i, length(labels))])
    if (temp2 < temp) {         
      temp <- temp2          
      label <- labels[i]      
    }
    subentropy <- append(subentropy,temp2)  
  }
  cat(label)
  cat("[")
  nextLabels <- labels[labels != label]
  for (value in unlist(unique(data[label]))) {
    cat(value,":")
    buildTree(subset(data,data[label] == value, select = nextLabels))
    cat(";")
  }
  cat("]")
}
# 构建分类树
buildTree(data)

人工神经网络

算法名称算法描述
BP神经网络BP神经网络是一种按误差你传播算法训练的多层前馈网络,学习算法是δ学习规则,是目前应用最广泛的神经网络模型之一
LM神经网络LM神经网络是基于梯度下降法和牛顿法结合的多层前馈网络,特点:迭代次数少,收敛速度快,精确度高
RBF径向基神经网络RBF径向基神经网络能够以任意精度逼近任意连续函数,从输入层到隐含层的变换是非线性的,而从隐含层到输出层的变换是线性的,特别适合于解决分类问题
FNN模糊神经网络FNN模糊神经网络是具有模糊权系数或者输入信号是模糊量的神经网络,是模糊系统与神经网络相结合的产物,它汇聚了神经网络与模糊系统的优点,集联想、识别、自适应及模糊信息处理于一体
GMDH神经网络GMDH网络也称多项式网络,它是前馈神经网络中常用的一种用于预测的神经网络。特点是网络结构不固定,在训练过程中不断改变。
ANFIS自适应神经网络神经网络镶嵌在一个全部模糊的结构之中,在不知不觉中向训练数据学习,自动产生、修正并高度概括出最佳的输入与输出变量的隶属函数及模糊规则;另外,神经网络的各层结构与参数都具有明确的、易于理解的物理意义。
# 数据命名
library(nnet)
colnames(Data) <- c("x1", "x2", "x3", "y")
# 最终模型
model1 <- nnet(y ~ ., data = Data, size = 6, decay = 5e-4, maxit = 1000)  

pred <- predict(model1, Data[, 1:3], type = "class")	
(P <- sum(as.numeric(pred == Data$y)) / nrow(Data))
table(Data$y, pred)
prop.table(table(Data$y, pred), 1)

分类与预测的评价
(1)绝对误差与相对误差
(2)平均绝对误差
(3)均方误差
(4)均方根误差
(5)平均绝对百分误差
(6)Kappa统计
(7)识别准确度
(8)识别精确率
(9)反馈率
(10)ROC曲线
(11)混淆矩阵
主要分类预测算法函数

函数名函数功能
lda()构建一个线性判别分析模型
NaiveBayes()构建一个朴素贝叶斯分类器
knn()构建一个K最近邻分类模型
rpart()构建一个分类回归树模型
bagging()构建一个集成学习分类器
randomForest()构建一个随机森林模型
svm()构建一个支持向量机模型
nnet()构建一个人工识别神经网络模型
  • 8
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值