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