每日最新頭條.有趣資訊

如何利用大數據分析技術預測員工離職

本文為美國肯尼索州立大學劉麗媛(Lilian)在HR成長部落2019年6月23日的線下活動分享文字實錄,希望對大家在數據分析在HR領域的應用有所啟發!

大家好,我叫Lilian,目前在美國Kennesaw State大學攻讀博士學位。我的專業方向是數據分析和機器學習。

/ 1 /

離職預測的意義

首先來看一組數據:2017我國平均的員工離職率在22%左右,對於一些一線的城市北上廣可以達到23%。對於高科技行業,員工離職率更高,達到25%以上。所以,員工離職每個公司面臨的問題。

再看國外數據:這是一家致力於員工評估的美國公司。他們的數據顯示,1/4的員工是屬於高風險人群,而這當中20%的都是高績效員工。所以,如果我們準確預測員工的離職,就可以更好地幫助公司留住高績效員工。

第二組數據顯示:44%的員工表示他們如果能夠在競爭公司中得到20%或者是更低的加薪,他們就會考慮跳槽。

第三組數據顯示:超過70%的離職員工表示,如果他們為了尋求更好的職業發展,也會選擇自願離職。

我們來看看員工的離職到底對公司產生怎樣的損失:首先是公司現金的損失。根據美國勞工部數據顯示,如果一個員工離職,再重新招聘和培訓一個員工取代他的位置,大概要消耗到相當於這名員工1/3年薪的現金。此外,還有其他的損失,比如說替換/選拔成本、時間、人力的損失等。

其次是效率成本。比如說一個中高級員工選擇了離職,他手裡的項目很有可能一段時間內效率放緩和停止。讓新的員工去取代他的位置,也會造成一段時間項目效率的下降。

還有文化流失成本。如果我們公司當中有越來越多的員工離職,就會讓現有員工心理上產生焦慮,對公司的企業文化來說也是一種流失。此外,還包括知識產權的損失,以及離職員工本身所帶客戶資源的損失。

所以,這就是為什麽我們要對員工離職進行預測,因為它會幫助公司減少員工離職成本的消耗。

/ 2 /

數據收集

HR可以做什麽呢?我們可以根據現有的HR數據,對公司員工在職情況進行描述性分析。然後找出為什麽員工會離職?哪些員工是離職的高風險群體。

網上曾經有文章介紹四大常見的離職原因:第一,員工覺得工作負擔過重,生活和工作不能很好地平衡;第二,職業規劃。他們希望尋求更通暢的競爭渠道,會跳槽尋找更好的機會;第三,為了得到更高的薪水而離職;第四,也許會有同事工作上關係的處理不當,導致員工選擇離職。

所以,HR數據分析要做的就是希望可以量化離職原因,找出哪個原因最重要,哪個原因沒那麽重要。

當我們收集HR數據時,首先最重要的第一點就是收集的數據一定是要以每一位員工為部門。建立數據庫的時候也要注意到一點,對於每一位員工都要有唯一的量化指標。比如說員工號碼可以非常快地尋找到員工。然後再根據員工號碼去收集員工的基本信息,比如說性別、離在職情況、工作狀況、教育程度等。

其他待收集的員工信息包括薪資、社保、福利、績效、升遷、培訓發展、滿意度等等。我們收集的信息越多、越準確,那麽之後無論是進行描述型分析,還是預測型分析,都會為我們數據清洗的過程可以節省很多時間。

所以,我建議在數據收集階段盡可能多地收集以下六個方面的數據。

/ 3 /

數據清洗

一個數據分析項目的流程是這樣的:首先是明確目標,其次是數據采集和清洗的工作。在大部分數據工作時間中,數據采集和清洗佔到70%的工作量。因為現實采集中,數據是非常大和混亂的。當我們把數據整合在一起需要花費很長的時間,這也是為什麽之前提到,如果我們能夠收集數據的時候就著眼於後面的分析目的,那後面采集和清洗的時間將大量減少。

第三是描述性分析,主要是根據現有數據然後進行描述性分析。例如描述離職員工和在職員工的平均薪資是怎樣的,這些可以通過對比實現。建模這一環節我們稱之為“預測型分析”

最後,我們還需要將所有結果以可視化的圖表呈現。無論是呈現給上級,還是分享給同事,數據的可視化都是非常重要的工具和技能。

對於員工的離職預測,我們的目標是什麽呢?

第一是我們想描述一下各類HR數據與員工離職之間的關係,就是我之前提到的以六個板塊為基礎來分析每個板塊和離職之間的關係。同時,6個板塊互相之間也是有關係的,例如員工前一年的工資提升和員工後一年的績效評估也可以拿出來一起進行比較,然後看看前一年工資增長是否可以導致後一年績效提升。

第二是預測員工的離職風險。我們可以量化每一位員工離職的概率有多大。第三是明確員工離職的原因,這點也是大部分HR想知道的。

這裡要多介紹一下數據的采集和清洗,這些工作是為了數據的描述和建模做準備的。可以每一位員工為部門進行數據的采集。數據清洗主要分為:數據的審查、描述邏輯、邏輯核查和人工核查。有些企業數據比較亂,我們需要人工刪除不合格和重複的變量。

數據清洗包括清洗錯誤值、異常值、缺失值和重新賦值。比如員工年齡,收集時就有錯誤產生,有些員工年齡12歲,有些99歲,那我們可以在這些錯誤錄入的數據全部找出來,然後以員工平均年齡作為替代。

讓人頭疼的一件事是缺失值。很多員工的數據是缺失的,比如員工的培訓數據。最常見的方法是以平均值和中位值去代替缺失值、錯誤值和異常值。

此外還有數據轉換,也就是將數據生成可供計算機分析的語言,比如說員工的教育程度,可能是高中、大專、本科、研究生這樣的文字形式。這種文字在計算機建模時是不容易識別的。此時我們就要進行數據轉化,比如將高轉運站化為“1”,大專轉化為“2”,本科轉化為“3”。

最後是數據驗證,需要分析我們的數據是否可以建立正確的模型,以上是數據清洗和采集的基本流程。

/ 4 /

描述性分析

描述型分析可以通過數據可視化的方法來描述出數據之間的一些關聯。

首先,我們可以通過描述型分析得到數據的頻數分析。比如說每一年公司到底有多少百分比員工離職、離職員工和在職員工的績效是否一樣、他們工資是否一樣,等等。建議通過可視化數據工具來幫助描述分析。

我們通過一個案例來看看為什麽數據的可視化非常重要。這是四組不同數據,每一組數據都有X和Y,各組數據的平均數和方差都是相等的。大家可能會覺得這四組數據反映的內容是相同的。

但是,如果我們以數據可視化去看這四組數據,就可以看到四組數據的差異,所表達的信息也完全不同的。所以,如果大家做描述型分析,或者是想向上級呈現數據,做數據的可視化呈現更能反映出數據的特點。

/ 5 /

數據拆分和平衡類別

預測型分析就是建模的分析,我們希望建立機器學習的模型去預測未來可能發生的事情。

我們采集的數據分為兩部分:第一部分是目標變量。在員工預測離職當中,目標變量就是員工離職或在職狀態。通過數據轉換的方式,將員工的離職轉為“1”,在職轉為“0”。其他自變量就是之前提到的6個方面,或者是大家遵循企業自身的特點擴展自變量,比如績效、年資、工作滿意度、晉升、培訓等數據。

建模的目標就是希望找到一個定量的系數,在每一個自變量和目標變量之間建立聯繫。到底績效越高員工越容易離職,還是績效越低員工越容易離職;到底是年資越長員工更容易離職,還是年資越短員工更易離職。

當我們的模型建立以後,每個自變量前面都有一個系數,這個系數就可以反映它和員工的離職是正相關還是負相關的關係。

在完成了數據收集、清洗和可視化分析之後,就到了數據拆分。

為什麽要拆分數據?因為建模是通過采集的數據進行的。當模型建好之後,我們並不能100%確定模型是準確的。這時候我們就會把之前所收集到的數據進行拆分。比如,我們將數據的70%作為訓練模型的數據,再去把系數代到剩下的30%數據當中,得到的結果和原有離職結果進行比較,這樣可以求出一個偏差。偏差就是模型的準確率,這樣可以初步判斷模型是好還是不好。

下一個步驟是平衡類別,這是對於特殊的數據才會應用到的技術。這裡是指員工離職和在職數量不一致的時候,我們會做一個平衡類別。比如公司有一千名員工數據,其中有900名在職員工,100名離職員工。如果我們瞎猜,猜所有的員工都是在職的,那我就猜對了900個,模型的準確率是90%。然而這是沒有任何意義的,因為它沒有準確地去分析出哪些員工離職。

所以,平衡類別是通過一些機器學習的手段,根據現有離職員工的數據,去虛擬地產生一些離職員工數據。雖然這些數據是虛擬的,但它可以反映出離職員工的特點。可以將我們的數據變成離職員工和在職員工1:1或者3:1的比例。通過這樣的比例再去做預測模型,就會比之前準確度要高出很多。

/ 6 /

建模

建模是最簡單的一步,也是耗時最少的一步。

對於現在的機器學習而言,很多的預測性模型,例如決策指數、邏輯回歸、深度學習等都可以預測未來所可能發生的事情。今天我們主要介紹邏輯回歸,也就是我們的目標變量只有0和1只有兩個變量。

比如,今天下雨和不下雨、銀行貸款者違約還是不違約,都可以用0和1的表現形式,而邏輯回歸也是用於0和1問題中一個常見的模型。

這就是邏輯回歸的輸出方程,P代表員工離職的概率,X1、X2、X3代表輸入的自變量,我們需要找到X的系數,這樣可以求出員工離職的概率。

混淆矩陣是用來檢驗模型質量的,分為真實值和預測值兩部分。真實值就是訓練數據集的目標值,關於一個員工事實是在職還是離職的;預測值是我們輸入系數以後,結果預測這位員工是離職還是在職。

如果一名員工真離職了,預測也是離職,我們就將它最左上方的小方格叫TP;如果員工離職了但我們卻預測在職,就是FN;如果員工在職,我們預測也是在職,就是TN。用TP和TN之和去除以所有的變量,就可以得出模型的準確率。

/ 7 /

案例分析

一家公司一共有14999名員工,員工的離職以“1”代表,“0”代表員工未離職。自變量包括員工對公司的滿意程度、績效評估結果、所參加過的項目數目、平均每個月的工作時長、工作是否發生過差錯、5年內晉升情況、所屬部門以及薪資水準等。數據已經通過清洗轉化成了可識別的數字語言。

用這張描述性分析的圖來反映員工的評估和離在職的情況:藍色區域代表的是員工在職,紅色區域代表的是員工離職。可以看到紅色區域有兩個峰值,說明員工評估過低或過高時都會導致員工離職。

我們選取了三個最重要的變量,包括員工滿意度、績效評估結果和在公司的在職年數,做一個邏輯回歸的模型。根據模型可以看到員工對工作的滿意度與離職是呈負相關,系數是負3.77。也就是說員工滿意度越高,越不容易離職。

第二個變量是員工的績效評估,系數是0.20,可以看到它和離職是正相關的關係。也就是說員工的評估結果越高,越容易離職。

第三個變量是員工在公司的司齡,也是呈正相關的關係。員工在公司的時間越長越容易離職。

當然以上數據所反映出來的情況不一定對每家公司適用,所以我們要通過每個公司的特定數據去找出特定原因。

假如我們給出了ABC三位員工的案例,他們可以作為未來我們想要分析的新數據。因為已經有這樣的模型了,所以對於新的員工數據,我們可以很快用上面的三個系數去計算出員工的離職概率。以上三個員工通過模型求出的A的離職概率是7%,B是77%,C是33%。

所以,我們可以預測到員工B是高風險離職人群。假如還有更多數據,我們可以測算出企業當中到底哪部分員工是高風險離職人群,公司可以對這部分員工采取一些員工關懷、升職加薪等政策,這樣更好地留住他們。

/ 8 /

總結

大家在做人力資源數據分析時,一定要做到以數據講故事。很多時候如果把數字呈現在別人面前,有可能並不太直觀。用數據的可視化去講數據內部的聯繫時,效果會比直接呈現數字好很多。

其次是要尋找Actionable Insights。比如,假如我們分析得出男員工比女員工更容易離職,這個發現對公司而言,不太容易采取什麽措施來改變。不能說公司在招聘的時候多招聘女員工,少招聘男員工。更重要的是我們要找到一些公司可以對此采取措施的發現。

比如,我們發現前一年的工資增長不能很好體現下一年績效的增長,那麽我們可能就要調整一下,看是否我們前一年的工資增長存在問題。

還有就是要收集有效數據,一定要盡可能地多收集乾淨數據。我曾經遇到過這樣的情況,有公司它可能有一萬多名員工,但是由於數據收集的缺失,當我們整理多方數據時,發現最後表裡只有兩千多名員工。相當於八千多名員工的數據是丟失的。

所以在數據收集的過程中,如果我們可以整齊地收集每一位員工的數據,那麽對於之後數據分析是有幫助的。

最後分享一下做數據分析的軟體,Weka是基於Java語言的軟體,Orange是根據Python語言的軟體,這兩個軟體非常好而且免費。使用它們不需要任何編程,只需通過簡單的拖拽就可以實現分析。

其他的工具包括Excel也是非常廣泛應用於數據分析,還有需要編程基礎的Python,大家有興趣都可以去了解。

謝謝大家!

—— End ——

獲得更多的PTT最新消息
按讚加入粉絲團