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書寫固定計算字段方便業務進行

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