R语言与数据分析之三:分类算法2

上期与大家分享的传统分类算法都是建立在判别函数的基础上,通过判别函数值来确定目标样本所属的分类,这类算法有个最基本的假设:线性假设。今天继续和大家分享下比较现代的分类算法:决策树和神经网络。这两个算法都来源于人工智能和机器学习学科。

首先和小伙伴介绍下数据挖掘领域比较经典的Knn(nearest neighbor)算法(最近邻算法)

算法基本思想:

Step1:计算出待测样本与学习集中所有点的距离(欧式距离或马氏距离),按距离大小排序,选择出距离最近的K个学习点;

Step2:统计被筛选出来的K个学习点,看他们在分类中的分布,频数最大的分类及为待测点的分类;

决策树(Decision tree)

该算法主要来源于人工智能,常用语博弈论,基本逻辑如下图(解释女网友见男网友的决策过程)。决策数学习集的属性可以是非连续的,可以是因子,也可以逻辑是非等。决策过程中需要找到信息增益最大的属性作为根节点,然后逐级找出信息增益次小的属性,作为下一层决策点,逐级按照信息增益排列的所有属性,即可做出决策树。目前用的最多的ID3和其后续升级版。


现在我们来看看如何用R帮我们做决策树分析,我们借助鸢尾花数据集来做,同时我们需要导入rpart包来做决策树分析:

install.packages("rpart")
library(rpart)
iris.rp=rpart(Species~.,data=iris,method="class")
plot(iris.rp,uniform=T,branch=0,margin=0.01,main="DecisionTree")
text(iris.rp,use.n=T,fancy=T,col="blue")

结果如下图:

人工神经网络

ANN(Artificial NeuralNetWorks)


通过学习集构造出一个模型(感知器:如下图),图中0.3即为该分支的权值,0.4为偏置因子(t), sum求和为本例的激活函数(也可是其他函数:三角,指数等),人工神经网络也就是通过学习集来修正权值,通过负反馈过程进行,具体算法如下:

Step1:另D={(xi,yi)|i=1,2…n}作为训练集;
Step2:随机生成初始权值向量w;
Step3: for 每一个训练集
			计算输出预测yyi
			For 每个权值wj
				更新权值wj(k+1)=wj(k)+a(yi-yyi(k))*xij
			EndFor
	endFor
until满足终止条件
Ps: a 为学习效率,通常是是一个较小的数字

显示的问题往往比较复杂,需要构造多层神经网络如下图:

接下来给小伙伴们分享下R语言如何实现人工神经网络分析,我们需要安装AMORE包,我们就解决上文提到的3个变量分类y 的案例:

library(AMORE)
x1=c(1,1,1,1,0,0,0,0)
x2=c(0,0,1,1,0,1,1,0)
x3=c(0,1,0,1,1,0,1,0)
y=c(-1,1,1,1,-1,-1,1,-1)
p<-cbind(x1,x2,x3)
target=y
net <- newff(n.neurons=c(3,1,1),learning.rate.global=1e-2,
momentum.global=0.4,error.criterium="LMS",Stao=NA,hidden.layer="tansig",output.layer="purelin",method="ADAPTgdwm")# n.neurons=c(输入节点个数,……中间节点,输出节点个数), error.criterium="LMS"判断收敛的依据,最小平均平方法,hidden.layer="tansig"隐藏层的激活函数,output.layer="purelin"输出层的哦激活函数
result <- train(net,p,target,error.criterium="LMS",report=TRUE,show.step=100,n.shows=5)
z<-sim(result$net,p)

输出结果见下图:

其中Z看符号变可区分,对比Z 和Y,发现神经网络得出的结果和目标值100%吻合。


由此,我们可以看出人工神经网络的强大魅力,我们可以不用去弄明白内部具体算法原理,我们只需要确定输入输出和设置相应的节点便可以轻松完成分类。对于隐藏层个数设置我们需要做一定的分析,并非隐藏层数越多,模型越精确,原因有两个:

1、  对于问题规模不那么复杂时,较多的隐藏层会浪费我们过多没有必要的时间;

2、  隐藏层越多确实可以给我们带来更好的拟合效果,但需要注意的是,对学习集的过度拟合会造成预测时的巨大误差。

神经网络的黑箱性是把双刃剑,一方面黑箱给我们带来很大的方便;但另一方面黑箱的隐藏性让我们无法把控,得出的模型无法和业务结合做解释,因此神经网络需要新的思路来重构算法,Hopfield神经网络的出现就解决了早期神经网络的黑箱性和过度拟合等缺点。

关于Hopfield大家就自己百度试试吧,住大家好运大笑




  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分类与预测 餐饮企业经常会碰到这样的问题: 如何基于菜品历史销售情况,以及节假日、气候和竞争对手等 影响因素,对菜品销量进行趋势预测? 如何预测在未来一段时间哪些顾客会流失,哪些顾客最有可能 会成为VIP客户? 如何预测一种新产品的销售量,以及在哪种类型的客户中会较 受欢迎? 餐厅经理需要通过数据分析来帮助他了解具有某些特征的顾客的 消费习惯;餐饮企业老板希望知道下个月的销售收入,原材料采 购需要投入多少,这些都是分类与预测的例子。 分类和预测是预测问题的两种主要类型。 分类主要是预测分类标号(离散、无序的) 预测主要是建立连续值函数模型,预测给定自变量的条件下因 变量的值 分类和预测是预测问题的两种主要类型。 分类主要是预测分类标号(离散、无序的) 预测主要是建立连续值函数模型,预测给定自变量的条件下因 变量的值 有监督学习/有指导学习/有教师学习 因为在分析测试数据之前,类别(目标列取值)就已经确定了 可以根据实际的类标号(目标列取值)和模型的输出来检验样 本是否处理正确 所以分类(预测)通常被称为有监督的学习 分类包括考察一类新出现的对象的特征,并归类到一定义类中 首先要有一个清晰定义的类,还要有一系列已分类实例 分类过程实际上是先在历史数据上建立某种模型,再将其用于 未分类数据进行分类 分类算法的目的是找出从属性到类标号的映射关系 表示形式:决策树,分类规则,神经网络,SVM,最近邻 分类问题举例 将信用卡申请者分为低、中、高风险 发现欺骗性理赔申请 将网上的每一篇文章按关键词分在不同组
R语言是一种统计分析与数据挖掘的编程语言,拥有丰富的包和函数,广泛应用于数据分析、挖掘和建模领域。在电子课本中使用R语言进行数据分析、挖掘和建模,可以帮助学生更好地理解和应用这门语言。 首先,通过R语言进行数据分析,可以将课本中的数据进行统计分析和可视化。学生可以使用R语言的包来计算数据的均值、方差、标准差等统计指标,并绘制直方图、散点图、饼图等图形,直观地展示数据的分布情况。 其次,R语言数据挖掘方面具有强大的功能。通过使用R语言机器学习算法和数据挖掘技术,可以对电子课本中的数据进行聚类分析、关联规则挖掘、分类和回归等任务。这些算法和技术可以帮助学生发现数据之间的关系和规律,提取数据中的有用信息。 此外,R语言还可以进行建模,将数据与适当的数学模型进行关联。通过使用R语言的建模技术,学生可以根据电子课本中的问题和数据,在R语言的环境中创建模型,进行模型的参数估计和预测。这样可以帮助学生将理论与实际应用相结合,更好地理解和应用课本中的知识。 最后,R语言还提供了丰富的可视化功能,可以将数据和模型的结果呈现给学生。通过R语言的绘图函数,学生可以生成各种图形,包括折线图、柱状图、箱线图、曲线图等,从而更好地理解和展示分析结果。 总的来说,使用R语言进行数据分析、挖掘和建模可以帮助学生更好地理解和应用电子课本中的知识。通过实际操作和可视化展示,学生可以更深入地理解数据和模型,培养数据分析和挖掘的能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值