关于tableau与r的连接配置参考我的这篇博客
https://blog.csdn.net/weixin_41744624/article/details/105634247
需要了解boosting模型可以看一下这篇文章https://www.jianshu.com/p/11083abc5738
tableau
函数
关于tableua中集成R语言,涉及到以下四个:
- SCRIPT_BOOL----返回布尔结果
- SCRIPT_INT----返回整数结果
- SCRIPT_REAL----返回数字结果
- SCRIPT_STR----返回字符串结果
下面来针对一个案例进行tableau中的boosting模型建立:
离职率分析
关于离职率分析:
相应变量(y)对应的字段是:人员状态
预测变量(x)对应的字段是(为了简单仅选择三个):专业职级、入职日期、工作地点
我们期望的返回结果是【在职】、【离职】;所以选用的tableau中的函数是返回字符串的SCRIPT_STR()
字段语句:
创建计算字段
SCRIPT_STR(
"
library(adabag);
predict(boosting(.arg1~.,data.frame(.arg1,.arg2,.arg3,.arg4)),
data.frame(.arg1,.arg2,.arg3,.arg4))$class;
",
ATTR([人员状态]),
ATTR ([工作地点]),
ATTR([专业职级]),
ATTR ([入职日期])
)
函数解释
- library(adabag) :调用R语言总的adabag包(要保证R中安装了adabag包,并且在安装后重新运行Rserver服务器)
- data.frame(.arg1,.arg2,.arg3,.arg4):boosting模型中需要对data.frame结构下的结果做预测分析,而tableau是以表中数据列的形式向R传递参数的,所以需要先形成data.frame结构。(其中:.arg1/.arg2/.arg3/.arg4)对应(ATTR([人员状态])/ATTR ([工作地点])/ ATTR([专业职级])/ATTR ([入职日期]))
- boosting(.arg1~.,data.frame(.arg1,.arg2,.arg3,.arg4)):表示boosting模型中是以data.frame中除了.arg1以外的内容来预测.arg1的
- predict(生成的boosting模型,预测数据)$class:返回使用boosting模型预测的数据中的class项(也就是预测结果)
tableau结果
部分涉及个人信息,不给大家看了…
返回指标重要性结果
根据上述的几个指标,我们预测了boosting回归模型的结果,在模型中有一个重要的指标,importance可以帮助我们了解各个指标在建立模型中的影响重要程度。
R中显示:
因为importance是一个列表,其中结果是计算的,而tableau只能返回相应的单个值,所以下方的代码我们返回第一个值,也就是地点的影响程度,相应可修改importance[3]
SCRIPT_REAL(
"
library(adabag);
a<- boosting(.arg1~.,data.frame(.arg1,.arg2,.arg3,.arg4))$importance[1];
a;",
ATTR([人员状态]),
ATTR ([工作地点]),
ATTR([专业职级]),
ATTR ([入职日期])
)
注意事项
- boosting模型在R中不处理情况下,预测变量十几个,可预测的内容大概在几W级别,在tableau中会更低,数据量是一个限制
- tableau中计算字段会逐步输出数据,所以建议将所有的内容写在一行内输出,毕竟计算字段的原理就是输出同一维度下内容(可参照下方讲解的R中代码和tableau中的不同)
- tableau中因为使用了ATTR()处理了聚合文字字段,所以当使用了多少个维度,这些维度都应该展示在看板上,如果不展示就会出现多条内容对应一个而报错(表关系是这样的),度量也同理
R
下面看一下boosting模型在R的运行
上述例子代码
library(adabag)
d<-read.csv("工作簿1.csv")
# 人员状态设置为因子
d[,"人员状态"]<-factor(d[,"人员状态"])
# 设置种子使得实验可重复
set.seed(4410)
# 垃圾回收清空占用空间
gc()
# boosting模型
m<-boosting(人员状态~.,d)
# 预测
p<-predict(m,d)
# 将训练集中的人员状态(实际)与测试集中的class(预测结果)放置对比
table(d$人员状态,p$class)
print(table(d$人员状态,p$class))
# m$importance是各个变量所占模型预测的重要比例(本例:专业职级、入职日期、工作地点)
m$importance
barplot(m$importance)
# 可做排序绘制
sort(m$importance)
barplot(sort(m$importance))
结论
tableau中可以集成R做数据,但是对于boosting模型来说,一方面因为传递变量时文本类型;一方面是tableau的输入输出内容局限性,所以进行方式不如在R中直接进行boosting模型有效
但是对于一些局部的指标,如果业务部门需要定期tableau查看,可以在tableau书写固定计算字段方便业务进行