李斌斌
(廣西師范大學數(shù)學與統(tǒng)計學院,桂林 541006)
近年來,由于國內互聯(lián)網(wǎng)行業(yè)的火熱,各種編程人才的需求都較高。Java 從誕生開始就備受青睞,因為它的編程語言具有簡潔、高效、安全能力突出等特點,現(xiàn)在越來越多的開發(fā)者使用Java 編程。各大招聘網(wǎng)站顯示,Java 的崗位需求仍處于一個火熱的狀態(tài),幾乎是其他行業(yè)的倍數(shù)。但與Java 開發(fā)人員的薪資相關的影響因素是什么,尚不十分清楚。本文使用貝葉斯神經(jīng)網(wǎng)絡方法,從許多變量中選擇出重要的影響因素。貝葉斯神經(jīng)網(wǎng)絡在解決神經(jīng)網(wǎng)絡的過擬合方面有著突出的效果,它根據(jù)已有的信息推斷未知,因此被譽為未來神經(jīng)網(wǎng)絡的方向。
線性回歸模型中的變量選擇目前已經(jīng)非常成熟,比如采取1 懲罰的lasso,采取2懲罰的嶺回歸等,這些方法都是基于正則化實現(xiàn)的,通過對似然函數(shù)添加懲罰來達到模型的稀疏化。貝葉斯方法通過選取一個比較合適的先驗,然后稀疏化模型,但是這些方法僅對線性模型是有用的。日常生活中更多的是非線性模型,因此,有必要去研究如何在非線性系統(tǒng)中選擇變量以及確定模型。
最近幾年也有神經(jīng)網(wǎng)絡的稀疏方法,比如使用總體隨機近似蒙特卡羅算法來稀疏神經(jīng)網(wǎng)絡,但是由于該算法屬于傳統(tǒng)的MCMC 算法,需要在每一次迭代時評估完整數(shù)據(jù)的可能性,因此在大數(shù)據(jù)問題的情況下,該算法受到一定的限制。
本文基于Liang 等提出的貝葉斯神經(jīng)網(wǎng)絡的變量選擇方法。貝葉斯神經(jīng)網(wǎng)絡的基礎是前反饋神經(jīng)網(wǎng)絡(feed-forward neural networks,F(xiàn)NNs)。
貝葉斯神經(jīng)網(wǎng)絡(Bayesian neural networks,BNN)和深度神經(jīng)網(wǎng)絡(deep neural networks,DNN)的不同之處在于:貝葉斯神經(jīng)網(wǎng)絡的權重由固定的數(shù)字變?yōu)閹в袇?shù)的分布,參數(shù)由給定的先驗表示。
用數(shù)據(jù)集D=(x,y)表示觀測到的個樣本數(shù)據(jù),其中∈R,∈,由此可以得出,在給定時的分布為:
()表示的非線性函數(shù),(),(),()依次表示所對應的函數(shù)。
在如圖1 所示的神經(jīng)網(wǎng)絡中,我們設置,…,x為個輸入變量,并且令= 1。隱藏層共有個隱藏節(jié)點。隱藏層中每一個隱藏結點的值為:
圖1 神經(jīng)網(wǎng)絡
ω表示第個輸入單元到第個隱藏單元的權重,I表示第個輸入單元到第個隱藏單元的連接的指示向量,f是激活函數(shù)。同理可以得到輸出層的值,即:
我們定義={I,I,I},表示貝葉斯神經(jīng)網(wǎng)絡的連接結構。 為了方便表示={ω,ω,ω; I= 1,I= 1,I= 1} 。在此神經(jīng)網(wǎng)絡中共有個連接,=(+ 1)(+ 1) +,則我們可以用=(,,…,β)表示連接權重。
本文中我們使用spike-and-slab 先驗,在此之前,已經(jīng)有很多的研究者使用spike-andslab先驗來做變量選擇。
本文數(shù)據(jù)是通過使用爬蟲在智聯(lián)招聘爬取得到,包括Java 開發(fā)者的薪資、城市、崗位要求、工作經(jīng)驗,以及公司人數(shù)等變量。按照城市規(guī)模,分別爬取了一線城市如北京、上海、廣州、深圳,以及部分非一線城市如西安、鄭州、蘭州等城市的數(shù)據(jù)。為了便于分析計算,本文將一線城市和非一線城市分別賦值1 和0。由于爬取到的工資以及工作經(jīng)驗是一個范圍,因此,取工資平均數(shù)作為因變量,工作經(jīng)驗也取平均值。學歷要求按照高中到博士分別賦值0~7。該數(shù)據(jù)集中含有16 個自變量,以每個職位給出的薪資作為因變量。本文使用該數(shù)據(jù)集的前80%作為訓練樣本數(shù)據(jù)集,剩余20%作為測試數(shù)據(jù)集。由于真正影響每個職位的薪資的變量我們并不知道,所以可以認為該模型是稀疏的。
數(shù)據(jù)集中含有16 個自變量,本文設置隱藏層有三個隱藏單元,那么在此模型中神經(jīng)網(wǎng)絡的 最 大 連 接 數(shù)= 71, 我 們 設 置 λ={0.001,0.002,0.005,0.01,0.02},由 于λ越 大,意味著神經(jīng)網(wǎng)絡中擁有更多的連接,因此計算所需要的時間更長。通過先驗最優(yōu)化計算,我們確定0.02 是最適合的λ。
圖2 顯示了神經(jīng)網(wǎng)絡中每一個連接的邊緣包含概率,其中共有8個連接的邊緣包含概率超過了0.5。圖3 顯示共有四個變量的邊緣包含概率大于0.5,那么,就可認為在此神經(jīng)網(wǎng)絡中,共有四個變量,分別對應工作位置、學歷信息、工作經(jīng)驗,以及Spring技術。
圖2 連接邊緣包含概率(橫軸數(shù)字代表第幾根線)
圖3 變量選擇概率
2.3.1 因變量分析
圖4給出了Java開發(fā)者薪資的頻數(shù)分布直方圖,可以看出大多數(shù)崗位薪資集中在1 萬~1.5萬之間。該圖呈現(xiàn)了一個明顯的偏左分布特征,因此,大多數(shù)人的薪資水平比較低,只有很少的一部分人擁有很高的工資。在所搜集的數(shù)據(jù)中,平均薪資在1.38 萬元,中位數(shù)以及中數(shù)都是1.3萬元。
圖4 各個薪資階段的人數(shù)
2.3.2 自變量分析
在本文數(shù)據(jù)中共有四個變量與Java 開發(fā)者的薪資相關,其中工作城市、工作經(jīng)驗和學歷是最重要的幾個變量。
計算發(fā)現(xiàn),一線城市的平均薪資在1.738 萬元,而非一線的平均薪資在1.29萬元。圖5和圖6顯示一線城市和非一線城市中Java開發(fā)者的薪資高于總體平均值的比率。從中可以看出,一線城市的薪資水平明顯高于其他城市。導致這一現(xiàn)象的主要原因是互聯(lián)網(wǎng)行業(yè)主要集中于大城市,比如北京的百度、美團、小米等;上海有拼多多、小紅書;深圳的騰訊、華為以及其他的大型互聯(lián)網(wǎng)公司。行業(yè)的需求以及國家的扶持政策等因素,都在影響著一個公司的發(fā)展。
圖5 一線城市薪資相對于平均薪資的分布比
圖6 非一線城市薪資相對于平均薪資的分布比
由于我國教育事業(yè)的高質量發(fā)展,使得我們擁有大量的人才。在人們的普遍印象中,學歷永遠是影響工資的一個重要因素。在Java 行業(yè)的招聘要求中,學歷要求在大專及以上的公司占到了99.9%,學歷要求在大學本科及以上的公司占61%。
除了上述兩個因素以外,工作經(jīng)歷也是影響薪資高低的重要變量。工作時間長,意味著有更多的經(jīng)驗和知識技能,因此隨著工作經(jīng)歷增長,招聘公司給出的工資也會相應上升。
圖7 各個學歷的要求占比
圖8 薪資與工作經(jīng)驗柱狀圖
表1 薪資與工作經(jīng)驗的關系表
本文在貝葉斯神經(jīng)網(wǎng)絡的基礎上,選擇影響Java 開發(fā)者薪資的重要因素加以分析,提出以下建議:①一線城市開發(fā)者的工資較高,但消費水平也較高,應聘者擇業(yè)時應綜合自身的因素,不能盲目認為一線城市工資高,就鎖定一線城市找工作,其它城市的薪資雖稍低,但是由于消費水平低,也不失為一個很好的選擇。并且,現(xiàn)在互聯(lián)網(wǎng)的發(fā)展正在擴散,非一線城市也擁有更大的潛力與機遇。②在學歷方面,越來越多的公司招聘要求本科以上學位,因為互聯(lián)網(wǎng)行業(yè)是一個需要知識儲備與邏輯能力的行業(yè),高學歷往往是尋找工作的必要條件。③解決問題的能力,求職者需要積累大量的工作經(jīng)驗,這樣才能在找工作時具備與面試官談判的能力??偟膩碚f,首要任務是增強自己的能力,再結合自身條件,來選擇是否在大城市工作。