王祖斌,王 鑫
(蘭州職業(yè)技術(shù)學(xué)院 汽車工程與交通運輸系, 甘肅 蘭州 730070)
我國改革開放以來,歷經(jīng)40余年發(fā)展,在政治、經(jīng)濟(jì)、國防、科技和民生等諸多領(lǐng)域都取得了舉世矚目的成就。國家的發(fā)展離不開科技,科技是推動現(xiàn)代社會發(fā)展的源動力。特別是近年來,國內(nèi)科技公司如雨后春筍般遍地開花,其中不乏有很多國際知名企業(yè),如華為、小米、騰訊、大疆和字節(jié)跳動等,在享譽海內(nèi)外的同時也創(chuàng)造出一座座科技里程碑。這些公司為高級求職人才提供良好的晉升空間和廣闊的發(fā)展前景,進(jìn)入這些企業(yè)工作是求職者實現(xiàn)人生價值的理想途徑之一。然而此類公司對人才的要求也比較嚴(yán)苛,在正式獲得公司offer之前,往往要通過幾輪考核,只有真正有實力的求職者才會被公司吸納。由于事關(guān)自身發(fā)展,廣大求職者通常會多手準(zhǔn)備,在積極準(zhǔn)備當(dāng)前公司入職考核的同時,還會關(guān)注其他單位的招聘情況,以免耽誤自己就業(yè)。目標(biāo)公司的offer申請是否成功是廣大求職者相當(dāng)關(guān)切的問題。如何能夠較為準(zhǔn)確地預(yù)測某公司offer的申請結(jié)果,及時調(diào)整自身求職計劃是具有一定應(yīng)用價值的研究;從國家宏觀角度考慮,也可為調(diào)整高級人才就業(yè)相關(guān)政策提供數(shù)據(jù)參考。
在參考數(shù)據(jù)樣本特征變化的情況下,對事情的結(jié)果進(jìn)行預(yù)測其實是典型的分類問題。解決此問題可以根據(jù)數(shù)據(jù)樣本的分布情況采用不同的方法,例如,當(dāng)數(shù)據(jù)樣本是連續(xù)的,可以使用多重線性回歸[1];如果數(shù)據(jù)樣本滿足二項分布,可以采用邏輯回歸[2];若是Poisson分布則應(yīng)該考慮Poisson回歸[3];數(shù)據(jù)樣本是負(fù)二項分布,負(fù)二項回歸[4]則是較好的選擇等。目前利用邏輯回歸進(jìn)行分類的應(yīng)用研究很多,如在流行病學(xué)領(lǐng)域中就有不少相關(guān)的應(yīng)用研究,可以利用邏輯回歸探索某種疾病的致病成因,根據(jù)不同的致病因素對某種疾病發(fā)生的概率進(jìn)行預(yù)測。如郭志恒[5]等學(xué)者使用邏輯回歸等方法對腦卒中患者進(jìn)行相關(guān)研究并構(gòu)建腦卒中疾病的判斷算法,以便在疾病發(fā)生前提供一定的預(yù)警參考。段振云[6]等學(xué)者針對高精度零件圖像的亞像素邊緣提出了一種依靠邏輯回歸算法的邊緣定位方法,該方法有效地補償了由于光源強弱所導(dǎo)致的邊緣定位誤差等。邏輯回歸的應(yīng)用已經(jīng)較為廣泛,但用于預(yù)測申請公司offer是否成功的案例相對較為稀少。本文構(gòu)建了一個邏輯回歸模型,該模型對目標(biāo)公司offer申請的歷史考核數(shù)據(jù)進(jìn)行學(xué)習(xí)后,便可以大致掌握考核成績與錄取結(jié)果間的相關(guān)規(guī)律,從而能夠較準(zhǔn)確地通過新的考核數(shù)據(jù)來判斷某職位的申請結(jié)果,是一項可以落在實處的研究課題。
在廣義線性模型(Generalized Linear Model)領(lǐng)域中,邏輯回歸與多重線性回歸[1]存在許多相似之處,它們最大的區(qū)別其實就在于因變量的不同,所以可以將這兩種回歸歸屬于同一個范疇。邏輯回歸模型的因變量既可以是二分類的,又能夠是多分類的,但在實際使用時,二分類的情況既比較常用又較易解釋,所以普遍使用邏輯回歸來解決二分類問題。邏輯回歸基本由以下幾個部分構(gòu)成,它們也是實現(xiàn)邏輯回歸的幾個基本步驟,分別為:
1.預(yù)測函數(shù)
盡管邏輯回歸名稱中包含“回歸”二字,但如前所述,它其實是一種分類算法且主要用于解決二分類問題,可以用邏輯函數(shù)[7](也可稱為Sigmoid函數(shù)),可以表示為:
(1)
圖1 Sigmoid函數(shù)曲線
所有使得θT·x=0的點,形成一條決策邊界(Decision Boundary)[8]。例如當(dāng)x含有兩個特征x1和x2時,則有θT·x=θ0+θ1x1+θ2x2=0為一條直線,它將所有數(shù)據(jù)樣本分割成兩個部分,是一條線性決策邊界。如圖2所示。
圖2 二分類數(shù)據(jù)樣本分布示例
其為鳶尾花數(shù)據(jù)集的樣本分布狀況,便可以利用線性決策邊界將其分割成兩個部分。如圖3所示。
圖3 線性決策邊界
既然有線性決策邊界,那么也存在非線性決策邊界(Nonlinear Decision Boundary),其主要用于分割數(shù)據(jù)分布比較復(fù)雜的數(shù)據(jù)樣本是非線性分布的情況,如圖4所示。
圖4 非線性數(shù)據(jù)分布散點圖
它是由隨機(jī)數(shù)生成的非線性分布形式的二分類數(shù)據(jù)。簡單歸納一下上述內(nèi)容,對于線性決策邊界的情況,線性決策邊界可以用公式(2)表達(dá)如下:
(2)
根據(jù)(2),可以構(gòu)造預(yù)測函數(shù)g為:
(3)
其中,fθ(x)的取值為表達(dá)了預(yù)測結(jié)果為1的概率,由此可以推出當(dāng)輸入為x時的分類結(jié)果分別為類別1與類別0的概率為:
(4)
2.損失函數(shù)
接上一小節(jié),將公式(4)整合為:
p(y|x,θ)=(hθ(x))y(1-hθ(x))1-y
(5)
對(5)取似然函數(shù)為:
(6)
其中m表示m個預(yù)測結(jié)果,其對數(shù)似然函數(shù)則為:
(7)
根據(jù)最大似然估計[9]來求解使l(θ)取最大值時的θ,如果使用梯度上升法進(jìn)行求解便會求得滿足需要的最優(yōu)θ。若取
(8)
那么當(dāng)J(θ)取到最小值時的θ則為滿足要求的最優(yōu)參數(shù)。
上一節(jié),在梯度下降[10]法中,J(θ)不斷趨向最小值的過程中,θ的更新過程可以用公式(9)表達(dá):
(9)
簡化表示為:
(10)
本文在邏輯回歸算法的基礎(chǔ)上,針對求職者在申請某公司offer過程中為了最大化自己的邊際機(jī)會,減少因為考核引起的求職成本,從而及時調(diào)整自己的就業(yè)規(guī)劃等問題,利用某公司offer申請的歷史數(shù)據(jù),結(jié)合梯度下降法搭建了一個機(jī)器學(xué)習(xí)模型。該模型通過學(xué)習(xí)歷史數(shù)據(jù)所蘊含的普遍規(guī)律所產(chǎn)生的算法模型可以根據(jù)申請者給定的具體輸入數(shù)據(jù)樣本給出合理的預(yù)測結(jié)果,其工作流程簡述如下:
由于本文解決的實際問題是要根據(jù)輸入的數(shù)據(jù)特征給出申請某個offer成功與否的結(jié)果,該結(jié)果只有兩種,要么申請成功(可以用1表示),要么申請失敗(可以用0表示),而要解決二分類問題,邏輯回歸是比較有效的不二選擇。對于需要分析學(xué)習(xí)的歷史數(shù)據(jù)樣本而言,這些數(shù)據(jù)的特征無論是在使用邏輯回歸算法進(jìn)行數(shù)據(jù)集學(xué)習(xí)的時候,還是面對隨機(jī)陌生數(shù)據(jù)樣本的時候,所要分析和處理的數(shù)據(jù)特征都是從數(shù)據(jù)文件中直接讀取的,而非類似從圖像數(shù)據(jù)樣本中通過專門的過濾器進(jìn)行提取,所以并不需要構(gòu)建復(fù)雜的特征提取裝置,也意味著其對于數(shù)據(jù)的處理并不需要巨大的計算開支,對于普通CPU來說已經(jīng)能夠完成目標(biāo),相應(yīng)地也使得將本文方法所構(gòu)建的機(jī)器學(xué)習(xí)模型部署在智能手機(jī)這樣較為普及的弱算力設(shè)備上成為可能。本文針對具體的任務(wù),根據(jù)公式(3)構(gòu)建預(yù)測函數(shù)為:
(11)
對于本文研究對象,將公式(8)推廣至當(dāng)前任務(wù),則有:
(12)
其中m為2,實際上可以根據(jù)具體數(shù)據(jù)樣本的特征項數(shù)量來確定m的取值,如果所涉及的具體任務(wù)不同、數(shù)據(jù)集數(shù)據(jù)樣本的內(nèi)容不同,可以因地制宜地繼續(xù)進(jìn)行普適化推廣,這里不再贅述。求得當(dāng)J(η)取得最小值時的η,這是一個不斷更新的過程,需要算法持續(xù)對導(dǎo)入的公司offer申請歷史數(shù)據(jù)進(jìn)行學(xué)習(xí),這個進(jìn)程可以根據(jù)公式(10)表示為:
(13)
1.實驗環(huán)境
盡管本文用于實驗的機(jī)器已經(jīng)搭載了較高算力的GPU,但考慮到用于學(xué)習(xí)的數(shù)據(jù)樣本僅含有兩個特征項且不需要進(jìn)行特征提取等復(fù)雜運算,也為了驗證本文方法對于低算力設(shè)備的適應(yīng)性,本文實驗在不使用GPU的情況下,僅依靠CPU實施了具體實驗。具體實驗環(huán)境配置情況為:CPU是Intel i5-8300h@2.3 GHz(8核),內(nèi)存8 G;操作系統(tǒng)采用Windows 10家庭中文版,Python 3.6開發(fā)環(huán)境,Jupyter NoteBook編輯器。
2.數(shù)據(jù)集
本文采用一個含有100個數(shù)據(jù)樣本的文本文件作為數(shù)據(jù)集,其中每一行具體數(shù)據(jù)樣本共同構(gòu)成了整個微小規(guī)模數(shù)據(jù)集,作為本實驗的訓(xùn)練數(shù)據(jù)集,每個數(shù)據(jù)樣本包含兩次考核成績的特征項與是否申請成功的標(biāo)簽項。該數(shù)據(jù)集的具體結(jié)構(gòu)及其包含的數(shù)據(jù)樣本容量圖5所示,其中顯示了讀取的前五個樣本的具體內(nèi)容,從數(shù)據(jù)列維度上來講,前兩列是兩個具體的特征項,最后一列為標(biāo)簽項。整個數(shù)據(jù)集可以看成是一個100行3列的二維矩陣。隨著研究的不斷深入,該數(shù)據(jù)集可以無限擴(kuò)充。為了保證訓(xùn)練效果,本文考慮了正、負(fù)樣本數(shù)量均衡的問題,所參與訓(xùn)練的數(shù)據(jù)樣本大體分布是比較均衡的,可以用散點圖的形式將該數(shù)據(jù)集的分布情況較為直觀地表示出來,如圖6所示。
首先建立要件模塊:(1)Sigmoid函數(shù),它將輸出結(jié)果映射到預(yù)測概率。(2)自定義向量點乘Model模塊,它將返回輸出的預(yù)測結(jié)果。(3)Cost函數(shù)將根據(jù)權(quán)重參數(shù)計算損失。(4)定義Gradient模塊來計算各個權(quán)重的梯度方向。(5)定義Descent模塊對權(quán)重持續(xù)更新。在本文實驗中,根據(jù)比較迭代次數(shù)、損失以及梯度與閾值的差異采用了三種不同的梯度停止策略。在具體進(jìn)行數(shù)據(jù)訓(xùn)練之前,通過使用Shuffle進(jìn)行了一定的數(shù)據(jù)增強,以使得本文方法具有更好的穩(wěn)定性。
圖5 某公司offer申請歷史數(shù)據(jù)集
圖6 某公司offer申請歷史數(shù)據(jù)樣本分布圖
對于所有數(shù)據(jù)樣本進(jìn)行梯度下降訓(xùn)練,那么Batchsize設(shè)為100。將迭代次數(shù)設(shè)為5000次,學(xué)習(xí)率設(shè)為0.000001。經(jīng)過0.83s的訓(xùn)練,權(quán)重更新完成,此時的模型損失為0.63,更新后的權(quán)重向量為array(-0.00027082,0.00715918,0.00367182),效果比較差,如圖7所示。
圖7 迭代5000次的訓(xùn)練結(jié)果
設(shè)定閾值為0.000001時, 經(jīng)過112649次迭代,耗時18.17s后,得到權(quán)重向量為array(-5.25282519,0.04820083,0.0421662),此時的損失已經(jīng)大幅下降到了0.37,說明根據(jù)閾值更新權(quán)重的方式要明顯優(yōu)于根據(jù)迭代次數(shù)更新權(quán)重的方式,該方式訓(xùn)練結(jié)果如圖8所示。
圖8 根據(jù)設(shè)定閾值的訓(xùn)練結(jié)果
當(dāng)學(xué)習(xí)率為0.01且梯度小于0.05的情況下,算法才會停止訓(xùn)練,在經(jīng)過6.89s且40760次迭代后的訓(xùn)練結(jié)果如圖9所示。
圖9 根據(jù)梯度變化的訓(xùn)練結(jié)果
此時得到的權(quán)重向量為array(-2.40994356,0.02743917,0.01943823),損失達(dá)到了0.49,效果不及根據(jù)損失值更新權(quán)重的方式,但該方式的訓(xùn)練效率遠(yuǎn)超根據(jù)損失值更新權(quán)重,耗時僅僅是根據(jù)損失值更新權(quán)重方式的三分之一。
在不使用數(shù)據(jù)增強的情況下,將學(xué)習(xí)率設(shè)定為0.001,采用隨機(jī)梯度下降法對原始數(shù)據(jù)直接進(jìn)行5000輪迭代訓(xùn)練,經(jīng)過0.42s后,損失超過了1.59,效果很差,如圖10所示。
其訓(xùn)練圖像波動非常嚴(yán)重,梯度已有爆炸的跡象,十分不穩(wěn)定,說明數(shù)據(jù)增強是非常必要的。
繼續(xù)嘗試對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,將數(shù)據(jù)按其特征項減去其均值,再除以它的方差。最后對每個數(shù)據(jù)特征項而言,所有數(shù)據(jù)都將匯聚在0的鄰域范圍內(nèi)且方差值為1,再次訓(xùn)練在經(jīng)過0.97s后停止更新權(quán)重,其結(jié)果如圖11所示。
圖10 對原始數(shù)據(jù)的5000輪迭代訓(xùn)練情況
圖11 標(biāo)準(zhǔn)化數(shù)據(jù)的5000輪迭代訓(xùn)練情況
算法損失已經(jīng)大幅降至0.38。那么更多的迭代次數(shù)會產(chǎn)生的結(jié)果如何呢?繼續(xù)使用隨機(jī)梯度,學(xué)習(xí)率依然是0.001,在耗時4.05s并經(jīng)過了67336次迭代訓(xùn)練后,損失已經(jīng)降至0.20,此時取得的權(quán)重向量為array ( 1.07426115,2.80678968,2.59430823),如圖12所示。
圖12 標(biāo)準(zhǔn)化數(shù)據(jù)的67336次迭代訓(xùn)練情況
在對若干個測試數(shù)據(jù)樣本進(jìn)行導(dǎo)入測試,可以得到的平均精度已經(jīng)達(dá)到90%,已經(jīng)滿足實際應(yīng)用的需要,即本文最終確定采用融合了數(shù)據(jù)增強、數(shù)據(jù)標(biāo)準(zhǔn)化、邏輯回歸算法及隨機(jī)梯度下降法并在滿足梯度小于一個指定的微小閾值的情況下,經(jīng)過充分?jǐn)?shù)據(jù)訓(xùn)練后所得到的模型是一個具有實際應(yīng)用價值的文件模型。
本文在邏輯回歸算法的基礎(chǔ)上構(gòu)建了一個機(jī)器學(xué)習(xí)模型,該模型充分利用梯度下降法,通過對某公司職位申請的歷史數(shù)據(jù)進(jìn)行充分學(xué)習(xí),并達(dá)到了平均精度90%的測試效果。由于該類任務(wù)中的數(shù)據(jù)樣本特征顯著,也可以說特征一目了然,所以直接使用這些特征就可以完成數(shù)據(jù)訓(xùn)練,也并不需要高算力設(shè)備支持,因此可以將該方法部署在類似于移動手機(jī)這樣的設(shè)備上,對于當(dāng)下智能手機(jī)普及的時代而言,該方法針對某公司offer申請結(jié)果預(yù)測具有較好的實用價值。