孫燁珩
(上海理工大學 管理學院,上海 200093)
護士的高離職率是全球醫療機構面臨的一個嚴重問題。經驗豐富的專業護士作為醫院發展的重要資源,其流失不僅影響醫院人才隊伍的穩定性,同時還會造成醫院的護理質量和醫療能力的下降[1]。因此,預測護士的離職行為,對穩定與發展醫院的專業護士資源,以及人力資源管理和政策制定具有重要的現實意義。
目前對于護士離職的研究,大都以離職意愿作為切入點,通過對個體內在情感因素以及外部環境影響的研究,探尋護士的離職傾向,以期做出預測和提前規劃。Mlavoie等從社會、心理和工作環境等各維度出發,對護士自我評估問卷進行定性分析,發現內在情感因素如付出-回報比、成就感、工作壓力,以及外部因素如工作環境滿意度、社會支持等是影響護士離職意愿的重要因素[2];Shih等則使用統計方法對護士離職意愿的相關數據進行分析,發現良好的工作環境、專業知識、良好的醫患關系以及家屬支持的護士離職意愿較低[3]。隨后,越來越多的學者開始引入數學模型來分析護士離職,如Cheryl等利用突變理論預測護士離職[4];Rudman等使用潛在生長曲線模型分析工作倦怠與離職意愿的關系[5];Lee等引入情緒勞作為中間變量,探討服務導向對工作績效以及離職醫院的影響[6];Dechawatanapaisal等使用結構方程模型一級驗證性因子分析探究領導-成員交換質量、組織認同和工作嵌入性三個因素對離職意愿的影響程度[7]。以上研究利用描述性分析、統計分析、構建數學模型等方法,論證了與護士離職意愿相關的眾多因素,并已被大量文獻證實。同時,從特征導向的離職行為識別到兼顧特征與過程的離職結果預測等也被引入到對護士離職研究中。這一變化,引起了跨學科研究人員如計算機界學者的廣泛關注,并成功將一些經典的監督學習分類算法運用到對人員離職預測的研究中。
監督學習即輸入有標簽的數據,算法能夠輸出預期結果并能對未標注的數據進行預測。對于二分類問題,輸出的是代表分類屬性的離散值。傳統的監督學習二分類方法包括支持向量機(Support Vector Machine,SVM)、決策樹(Decision Tree,DT)、隨機森林(Random Forest, RF)等。Zhao等采用遺傳算法對SVM進行參數選擇,建立離職預測模型[8];Kao等引入了決策樹算法來預測護士的離職情況[9];張斌等結合客戶流失特征,利用決策樹建立流失預測模型[10];李強等通過集成學習組合隨機森林和Adaboost進行離職預測,發現影響離職的主要原因有加班、收入等[11]。
SVM計算的復雜性取決于支持向量的數目,在某種意義上避免了“維數災難”,計算復雜度低,在小樣本二分類問題上性能較好[12];決策樹是一種考慮變量相互關系的直觀決策規則,通過在特征之間插入長方體以適應任何形式的單調變換,因此可以處理非線性特征[12-13];隨機森林在決策樹的基礎上,結合Bagging技術,通過特征選擇降低特征維度,對多維度數據分類效果顯著,且對噪聲和異常值有較好的容忍性,不容易出現過擬合[12]。
具體到護士離職預測問題上,當前常用的監督學習預測算法雖然實現了對離職特征的提取和離職結果的預測,但分類精度仍然不太理想,這主要由特征處理、算法選擇兩方面原因引起的。
首先,特征處理方面。現實中護士離職相關的數據中會包括較多的類別型特征集合,即非數值型特征,如科室(急診、門診、手術室等),SVM一般在數據預處理時利用One-hot encoding(獨熱編碼)將類別型特征轉為數值型特征,同時進行數據歸一化使指標處于同一數量級,消除指標之間的影響,而這種處理方式效率較為低下;由于護士離職相關的特征多維度高,對特征進行取舍時很容易遺漏其他信息,無法利用全部特征;然而若選擇全部類別特征,可能會因為高維度引發噪聲,影響分類效果。
其次,算法選擇。由于護士離職數據信息的高維度與不平衡性,隨機森林雖然能夠通過特征選擇進行降維,但舍棄的特征將無法參與運算,無法反映真實的數據信息,從而產生誤差;且對于不平衡數據處理效果不佳、魯棒性差。
護士離職預測實質是將包含離職信息的數據樣本劃分為離職及在職的一個二分類問題。本文選擇CatBoost[14-15]梯度提升算法(Gradient Boosting)構建預測模型。訓練集和測試集中的每一個樣本數據代表一個護士相關信息。由包含個人基本信息、外部環境、內在因素等m維特征向量和類別標簽,組成n個獨立樣本。基于CatBoost算法通過對離職訓練樣本的學習,構造分類模型,尋求每個離職樣本中的與的相互關系,從而對未標注的新樣本類別給出預測。整體預測流程如圖1所示。

圖1 基于CatBoost的護士離職預測流程
本文提出的分類任務,對于低基數類別特征(Low-cardinality features)如Gender,CatBoost一般在模型訓練時利用One-hot encoding將特征轉為數值型,更加高效;而對于高基數類別特征(Low-cardinality features)如ID,一種有效的處理方法就是目標變量統計(Target Statistics, TS),TS計算方法為:

(1)
然而采用TS方法將分類特征轉化為數值時,將造成訓練樣本分布與測試樣本分布的偏移,最終將導致預測偏移,模型過擬合。CatBoost采用排序提升(Ordered boosting),排序提升的偽代碼表示如下:

Algorithm1:OrderedboostingInput:{(Xk,Yk)}n(k=1)orderedaccordingtoσ,thenumberoftreesI;σ←randompermutationof[1,n]Mi←0fori=1,…,nfort←1toIdo fori←1tondo ri←yi-Mσ(i)-1(Xi) fori←1tondo ΔM←LearnModel[(Xi,rj):σ(j)≤i] Mi←Mi+ΔMReturnMn
對每一個樣本單獨訓練一個模型Mi,模型Mi的建立并不使用包含xi的訓練集,并且所有樹共享這樣的結構。CatBoost會采用計算類別型特征的方法,生成m個隨機排列,對每個排列,再訓練n個不同的模型Mi,避免過擬合;使用Mi獲得關于樣本的梯度估計,利用多重排列增強算法的魯棒性。
CatBoost使用對稱樹(Oblivious trees)作為基預測器,并在樹的整層上使用相同的分割標準[17]。在對稱樹中,每個葉子節點索引被編碼成一個長度等于樹深度的二進制向量,然后使用二進制特征來計算模型預測值,這樣的樹是平衡的,在小樣本不平衡數據集上,有利于避免過擬合,增加可靠性,并能大大加速預測。
對于上文提到的問題,本文構建分類模型時保留全部特征,在模型訓練時對低基數類別特征進行One-hot encoding,處理方式更加高效;對高低基數類別特征使用Ordered TS依據貪婪策略進行特征組合,充分利用特征信息避免信息損耗,也避免了維度災難。通過對訓練數據隨機排列進行采樣,并在此基礎上獲取梯度,利用多重排列增強模型的魯棒性。使用對稱樹作為基預測器,從而避免產生過擬合,增強算法的可靠性。
本文采用上海部分公立醫院1 100名護士相關信息的數據集,該數據集通過整群抽樣發放調查問卷的方式采集而來,是包含離職與在職人員相關信息的非平衡數據集,其中離職與在職人員分別占調查總人數的16.18%、 83.82%,每條記錄包含29個特征字段(表1)。

表1 特征說明表
本實驗在macOS 10.13.4系統、2.2 GHz Intel Core i7處理器、Python3.6.4環境下進行,實驗步驟如圖2所示。

圖2 模型構建與數據處理流程圖
首先,讀取數據查看數據的格式與統計性信息,利用CatBoost內置的get_feature_importance()來得到特征的重要度評分排名進行特征排序,部分特征總重要性排序如圖3所示;接著采用五折交叉驗證方法將原數據集劃分訓練集集與測試集,隨機分層抽取各個類別樣本,保證各類別樣本分布與原數據集分布一致,避免誤差,通過驗證集評估模型分類結果;隨后,對每組訓練集采用5折交叉驗證的方式劃分訓練子集和驗證子集,輸入訓練子集迭代訓練CatBoost模型,運用貝葉斯優化(Bayesian Optimization, BO)和Hyperband[16-18]相結合的BOHB(Bayesian Optimization and Hyperband, BOHB)方式進行所需參數調優并選擇最優值,并利用驗證子集對模型進行評估,選取最優參數組;最后,使用測試集對具有最優參數模型進行預測分類結果的評估,輸出混淆矩陣等評價指標。BOHB參數調優過程的偽代碼如下:

圖3 特征重要度

Algorithm1:BOHB’ssamplingprocedureInput:observationsD,fractionofrandomrunsρ,percentileq,numberofsamplesNs,minnumberofpointsinamodelNminOutput:nextconfigurationtoevaluatewithprobabilityρReturnrandomconfiguration(1)b=maxb'{b':|D'b|≥Nmin+1}(2)Ifb=?thenreturnrandomconfiguration(3)α=qthpercentileofallobservationsinDb(4)fitKDEsforl(x)andg(x)onDb(seetext)(5)drawNssamples~l(x)(6)Returnsamplewithhighestratiol(x)/g(x)(7)
實驗中進行調優的參數有:ctr_border_count、border_count、l2_leaf_reg、learning_rate和iterations,參數具體釋義見表2,參數調整流程如圖4所示。首先,保持其他參數為默認值,使用BOHP先對border_count尋優,結合CatBoost內置交叉驗證函數cv()進行5折交叉驗證,保存交叉驗證結果,用尋找到的border_count最優參數,尋找ctr_border_count最佳參數;接著,同時對learning_rate和iterations進行尋優,因為兩者耦合性較強;最后,確認最佳深度depth,并使用這些最佳參數調用CatBoost Classifier。

圖4 參數調優過程

表2 參數釋義
經驗證,CatBoost參數設置如表3所示時,分類效果最優。

表3 CatBoost參數設置
為保證本次實驗的可靠性,除了常見的監督學習算法隨機森林(RF)、支持向量機(SVM)外,增加與CatBoost同為梯度增強算法的XGBoost作為對照組,這三種算法的運行環境、實驗步驟均與CatBoost相同,實驗中每個算法重復5次,計算各評價指標的平均值。評價指標選取分類模型性能的幾個常用評價指標:準確率(Accuracy,ACC)、召回率(Recall)、精度(Precision)、F1分數(F1 Score)和ROC曲線下的面積(Area Under Curve,AUC)。四種算法得到的混淆矩陣、ROC曲線下的面積和分類結果如圖5-圖6、表4-表7所示。

圖5 CatBoost、RF、SVM、XGBoost混淆矩陣圖

圖6 CatBoost與RF、SVM XGBoost 的ROC曲線下面積圖

表4 CatBoost與RF多分類結果對比

表5 CatBoost與SVM多分類結果對比

表6 CatBoost與XGBoost多分類結果對比

表7 CatBoost與RF、SVM、XGBoost準確率結果對比
由于在實際運用中,與仍然留在當前工作崗位的護士相比,更關注已經離職人員的識別率,因此在對比算法性能時,更加關注準確率這一評價指標;且正例與反例樣本不平衡,負例-離職樣本遠小于正例-在職樣本數據,因此選擇AUC作為分類算法評價的重要指標。
圖5從左上依次顯示的是CatBoost、RF、SVM和 XGBoost的混淆矩陣圖,圖片顯示,四種算法的混淆矩陣對角線所在色塊較深,說明這四種算法均能實現對離職人員的有效識別;在此次二分類任務中(表7),CatBoost算法的準確率相對于RF、SVM、XGBoost分別提升了3%、5%和3%,且在其他分類指標如精度、召回率、F1值表現也很出色(表4-表6),證明了該算法的優勢;圖6從左上依次顯示的是CatBoost、RF、SVM和 XGBoost五折交叉驗證下各自的ROC曲線下面積,可以看出CatBoost的分類性能也優于其他三種算法。這表明本文提出的分類方法對以離職人員預測為目標的醫院人力資源管理工作中更具實際意義。
根據護士離職的相關特征信息數據對護士離職行為做出預測,本質上是一個二分類問題,CatBoost在處理不同類型的類別特征時,對低基數類別特征,采取在訓練時進行獨熱編碼轉換成數值型特征,提高數據處理效率;對高基數類別特征,使用次序原則,在不同的梯度提升步中使用不同隨機序列進行計算,避免過擬合;同時通過貪婪策略組合特征,通過將不同類別型特征組合為新的特征,來獲取隱藏特征信息,減少了信息損耗,并在充分利用全部特征的情況下避免了維度災難。為解決小樣本不平衡數據集上產生的預測偏移、泛化能力差、易過擬合的問題,CatBoost采用排序提升,對訓練數據隨機排列進行采樣,并在此基礎上獲取梯度,利用多重排列增強模型的魯棒性;使用對稱樹作為基預測器,從而避免產生過擬合,增強算法的可靠性,在正反例不平衡的小樣本護士離職數據集上的分類效果優秀,在醫院人力資源管理工作中具有重要的實際意義。
研究展望:首先,對于包含較多類別型特征的大樣本CatBoost處理類別型特征的時間較長;其次,不同參數的設定對模型預測結果有一定影響;最后,在今后研究中,可以考慮模型融合,提高離職預測模型的泛化能力。