王凌妍,張鑫雨,許勝楠,王禹力,甄志龍(通信作者)
(通化師范學院 吉林 通化 134002)
邏輯回歸因其可解釋性、模型簡單等特點,在商業(yè)、工業(yè)等實際任務中有廣泛的應用。雖然帶有“回歸”字樣,但是邏輯回歸是一種帶有參數(shù)的二分類模型。比如,判斷郵件是不是垃圾郵件[1-2],判斷交易是否具有欺詐行為[3-4],預測腫瘤是否為惡性腫瘤[5-6],預測學生的學習情況[7-8]等。數(shù)據(jù)集合中的每個樣本包含若干個特征,在實際應用過程中,有些特征與分類相關(guān),有些特征與分類無關(guān)。特征選擇技術(shù)是通過評估函數(shù)找到相關(guān)的特征子集,合適的特征選擇方法可以提高學習系統(tǒng)的性能,降低計算復雜度和增強系統(tǒng)的可解釋性。研究者可以查閱特征選擇的文獻綜述[9-12]。特征選擇方法常分為包裹法、過濾法和嵌入法。包裹法需要特定的分類器,根據(jù)指定分類器的準確性作為特征子集評價準則。過濾法則獨立于任何的學習算法,根據(jù)合適的評估函數(shù)評估特征的優(yōu)劣。嵌入法將特征選擇與學習算法結(jié)合起來,將特征選擇嵌入到學習算法的構(gòu)造過程中。雖然包裹法的性能較高,但因為組合問題計算開銷很大,而且很容易產(chǎn)生過擬合。嵌入法計算復雜度介于包裹法和過濾法之間,準確率也比較高,但只有一些模型有,如決策樹模型。常用的特征選擇方法有方差選擇法、相關(guān)系數(shù)法、卡方檢驗法、嶺回歸方法、Lasso回歸方法及決策樹方法等等。本文采用過濾法進行特征選擇,如何構(gòu)造一個合適的評估函數(shù)是過濾法特征選擇的關(guān)鍵技術(shù)。本文基于敏感性的方式構(gòu)造評估函數(shù),敏感性分析是構(gòu)造評估函數(shù)常用的一種方法,是針對不確定性的一種分析技術(shù)。敏感性[13]分析研究每個特征的微小變化對輸出的影響。本文主要對邏輯回歸模型進行了研究,提出了一種反映敏感性的方法,即對回歸函數(shù)的每一個特征變量分別求偏導,通過偏導數(shù)值的大小判斷敏感性,以此篩選出重要的特征值。通過研究特征的變化對輸出的影響程度,進而從多個特征中逐一找出對輸出影響較大的敏感性特征。通過特征敏感性判斷輸入特征的優(yōu)劣,去掉敏感性小的特征,篩選敏感性相對較大的特征作為模型輸入,完成特征選擇的任務,為分類模型提供有用的信息。
邏輯回歸是一種利用概率思想來解決分類問題的機器學習方法。邏輯回歸的輸入是線性函數(shù),可以看作是邏輯回歸的線性邊界,邏輯回歸的輸出是通過sigmoid函數(shù)(圖1)返回屬于某一個類的0-1區(qū)間的概率值。邏輯回歸的表達式為:
其中w為參數(shù)向量,x為特征向量,w0為偏置。
利用交叉熵定義邏輯回歸的損失函數(shù)為:
梯度下降法,得到梯度為:
參數(shù)w的更新公式為:
邏輯回歸的判別函數(shù)為:
于是對x1求偏導得:
將m代入后得:
同理可得:
最終得到每個特征的敏感性的計算公式為:
這里i表示第i個特征,j表示第j個樣本。
步驟1:選用擁有4個特征值的iris鳶尾花數(shù)據(jù)集進行訓練和預測。
步驟2:將iris鳶尾花數(shù)據(jù)集劃分:訓練集占60%,測試集占40%,random_state=0。
步驟3:用Lasso回歸和求偏導數(shù)兩種方法篩選出敏感性最好的兩個特征值,觀察結(jié)論是否一致,若結(jié)論一致列出所有組合情況,并將其分別進行訓練和預測,觀察準確率最高的組合方式是否與上述結(jié)論一致,若一致說明偏導法判斷敏感性是可行的。
步驟4:最后畫出所有組合方式的二維特征的數(shù)據(jù)散點圖,更加直觀地展示結(jié)果。
首先系統(tǒng)導入iris鳶尾花數(shù)據(jù)集,為了消除奇異樣本數(shù)據(jù)導致的不良影響,引入了標準化StandardScaler進行預處理,標準化后的數(shù)據(jù)更加可靠,Lasso回歸函數(shù)通過將絕對值較小的系數(shù)收縮為0,達到了特征值選擇的目的,而上述提出的偏導數(shù)方法是通過特征偏導數(shù)的大小,判斷出對函數(shù)輸出結(jié)果影響較大的特征,從而判斷出敏感性大小,即選出了最敏感的特征。我們發(fā)現(xiàn)Lasso回歸和偏導數(shù)方法結(jié)論一致,都為后兩個特征對分類表現(xiàn)好,為了進一步驗證,我們決定將4個特征值的6種組合一一進行訓練和預測,計算出準確率,以此來驗證最好的特征值組合是否與上述結(jié)論一致。
from sklearn.linear_model import Lasso
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
d=DecisionTreeClassifier()
iris=load_iris()
x=iris.data
y=iris.target
scaler=StandardScaler()
x_standard=scaler.fit_transform(x)
x=iris.data[ : ,[0:1]]
將此處改成[0,2]、[0,3]、[1,2]、[1,3]、[2,3]分別記錄6種特征組合情況。
y=iris.target
from sklearn.model_selection import train_test_split
xtrain,xtest,ytrain,ytest=train_test_split(x,y,test_size=0.4,random_state=0)
將每兩列特征組合出的數(shù)據(jù)集進行測試集和訓練集的劃分后,在模型選擇上,我們首先考慮了線性回歸不適用于本次分類實驗中的精度評估,而邏輯回歸模型則主要用于解決二分類問題,在用ovr改造后也可進行,但出現(xiàn)了訓練集和測試集的精度相等的情況,而樸素貝葉斯的三種模型中高斯模型的精度最高,以后兩個特征值為例,精度分別為0.93和0.98,但是決策樹在經(jīng)過網(wǎng)格搜索確定參數(shù)值后,它的精度高達0.95和0.99,為所有模型中最高精度,故最終確定模型為決策樹模型。
決策樹模型算法DecisionTreeClassifier()通常是一個遞歸地選擇最優(yōu)特征,并根據(jù)該特征對訓練數(shù)據(jù)進行分割,使得對各個子數(shù)據(jù)集有一個最好的分類的過程。這一過程對應著對特征空間的劃分,也對應著決策樹的構(gòu)建。
在確定了用決策樹模型進行精度評估后,通過GridSearchCV網(wǎng)格搜索完成DecisionTreeClassifier函數(shù)的3個參數(shù)的最優(yōu)解的選擇。gini系數(shù)最大為1,最小為0,當基尼系數(shù)越趨于0表明越趨于穩(wěn)定。通過調(diào)用best_params_函數(shù)找出測試結(jié)果得出使用gini基尼系數(shù),最大深度為3,最小葉子結(jié)點樹為1值時為最優(yōu)解。
然后調(diào)用train_test_split函數(shù)進行數(shù)據(jù)集的劃分,使訓練集占60%,測試集占40%,random_state=0操作,并調(diào)用accuracy_score函數(shù)對訓練集與測試集數(shù)據(jù)進行評分操作。
from sklearn.model_selection import GridSearchCV
parameters={"criterion":['gini','entro py'],"max_depth":[1,3,5,7,9],"min_samples_leaf":[1,3,5,7,9]}
GS=GridSearchCV(d,parameters,cv=10)
GS.fit(xtrain,ytrain)
GS.best_params_
# {‘criterion’: ‘gini’, ‘max_depth’: 3, ‘min_samples_leaf’: 1}
d=DecisionTreeClassifier(criterion=’gini’,m ax_depth=3,min_samples_leaf=1)
d.fit(xtrain,ytrain)
from sklearn.metrics import accuracy_score
accuracy_score(ytest,d.predict(xtest))
結(jié)果依次為 #0.68,0.87,0.93,0.87,0.93,0.95
accuracy_score(ytrain,d.predict(xtrain))
結(jié)果依次為 #0.84,0.98,0.99,0.98,0.98,0.99
pd_iris=pd.DataFrame(x,columns=['petallength(cm)','petal width(cm)'])
plt.figure(dpi=100)
plt.scatter(pd_iris['petal length(cm)'],pd_iris['petal width(cm)'],c=y)
將 Sepal.Length、Sepal.Width、Petal.Length、Petal.Width 4個特征分別設為X1、X2、X3、X4,實驗結(jié)果見表1。
畫出6種不同特征組合對應的散點圖(1)~(6),見圖2。
由圖可以看出,最后一張圖(6)即后兩個特征X3、X4的組合效果最好,也更加有力地驗證了我們給出的偏導數(shù)敏感性判斷方法是可行的。
本文提出了一種邏輯回歸的敏感性計算方法,該方法給出了邏輯回歸輸出對輸入的敏感性定義,即輸出對每個輸入特征的偏導數(shù),根據(jù)敏感性定義很容易計算出敏感性的值。我們將敏感性的方法應用到特征選擇中,利用敏感性作為評價特征的函數(shù),得到每個特征評價的分值,并選擇相對敏感性值大的特征組成特征子集,作為下一步分類任務的輸入。采用機器學習中常用的iris作為數(shù)據(jù)集驗證該方法的效果,實驗結(jié)果表明邏輯回歸的輸出對輸入特征敏感性分析方法能夠有效地選取分類特征,該敏感性分析方法簡單且可行。下一步工作我們將敏感性分析方法擴展到參數(shù)擾動中,利用敏感性研究參數(shù)的正則化方法是進一步要研究的內(nèi)容。