tableau集成R----boosting模型

关于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[2]importance[2],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书写固定计算字段方便业务进行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章