李彥
摘要:隨著大數(shù)據(jù)時(shí)代的到來(lái),商業(yè)、政府機(jī)構(gòu)等許多部門和行業(yè)都面臨著數(shù)量越來(lái)越多的數(shù)據(jù)資料,因此數(shù)據(jù)挖掘受到外界越來(lái)越廣泛的關(guān)注。該文就陽(yáng)光集團(tuán)所提供的西南某省的具體數(shù)據(jù),基于python語(yǔ)言對(duì)其進(jìn)行數(shù)據(jù)清洗、數(shù)據(jù)挖掘以及回歸分析。
關(guān)鍵詞:python;數(shù)據(jù)挖掘;數(shù)據(jù)清洗;回歸分析
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)23-0015-06
1 涉及技術(shù)簡(jiǎn)介與具體項(xiàng)目背景
Python是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,由荷蘭人Guido van Rossum于1989年發(fā)明,第一個(gè)公開(kāi)發(fā)行版發(fā)行于1991年。Python語(yǔ)法簡(jiǎn)潔清晰、封裝性很好并且擁有豐富且強(qiáng)大的庫(kù)。
數(shù)據(jù)挖掘指的是從數(shù)量極其廣大的數(shù)據(jù)中通過(guò)各種特定算法來(lái)搜索其中隱藏著的信息的過(guò)程,所以又名為資料勘探。數(shù)據(jù)挖掘?qū)儆谟?jì)算機(jī)科學(xué)的一種,但其中綜合了多個(gè)學(xué)科例如統(tǒng)計(jì)學(xué)、信息檢索等方面的內(nèi)容。
數(shù)據(jù)清洗,顧名思義就是指將“臟”數(shù)據(jù)清洗干凈以符合操作規(guī)范。數(shù)據(jù)清洗的工作內(nèi)容一般包括一致性檢查以及無(wú)效值和缺失值的處理。
回歸分析是回歸方程的一項(xiàng)重要應(yīng)用。所謂預(yù)測(cè)就是對(duì)給定的X值,估計(jì)Y值將落在什么范圍。回歸預(yù)測(cè)方法有多種類型。依據(jù)相關(guān)關(guān)系中自變量的個(gè)數(shù)不同分類,可分為一元回歸分析預(yù)測(cè)法和多元回歸分析預(yù)測(cè)法。
本次項(xiàng)目的背景是使用陽(yáng)光集團(tuán)所提供的西南某省的具體量體數(shù)據(jù)來(lái)進(jìn)行預(yù)測(cè)。此數(shù)據(jù)集中包括了性別、身高、體重、衣長(zhǎng)等對(duì)回歸預(yù)測(cè)具有重大參考意義的數(shù)據(jù)。所以,根據(jù)這些數(shù)據(jù),進(jìn)行對(duì)應(yīng)的預(yù)測(cè)就成為本次項(xiàng)目的目的。例如:當(dāng)測(cè)試一個(gè)從未測(cè)試過(guò)的員工的量體數(shù)據(jù)時(shí),可以依據(jù)他/她的身高、體重?cái)?shù)據(jù),來(lái)大致預(yù)測(cè)出該員工其他項(xiàng)數(shù)據(jù)比如衣長(zhǎng)、肩寬等的可能取值。本次數(shù)據(jù)目的是根據(jù)身高、體重的值來(lái)預(yù)測(cè)緊胸圍和緊臀圍。
2 項(xiàng)目所面臨的問(wèn)題以及解決方法
2.1 清洗數(shù)據(jù)(異常值處理、處理方法優(yōu)化)
1)格式處理
本次項(xiàng)目采用python中的pandas包來(lái)進(jìn)行數(shù)據(jù)的讀取,然而經(jīng)過(guò)試驗(yàn),pandas的data frame格式并不能讀取中文,所以將對(duì)應(yīng)的屬性值改成英文(sex, height, weight, jxw, jtw)才可以方便pandas的讀取。與此同時(shí),性別屬性的兩個(gè)屬性值“男”“女”也不能在pandas中進(jìn)行操作,因此更換采用0-1型數(shù)據(jù)格式(“男”為1,“女”為0)。
2)缺失值處理
隨后,通過(guò)np.where查詢語(yǔ)句,我們發(fā)現(xiàn)本數(shù)據(jù)集內(nèi)有大量值為空(NaN)的屬性格,這些數(shù)據(jù)必定會(huì)對(duì)數(shù)據(jù)的處理和預(yù)測(cè)產(chǎn)生負(fù)面的影響。
考慮到本次項(xiàng)目的準(zhǔn)確性以及其他數(shù)據(jù)依舊具有相當(dāng)?shù)拇硇?,我們決定將這些數(shù)據(jù)全部刪除。原csv文件中有5998條數(shù)據(jù),相關(guān)數(shù)據(jù)經(jīng)過(guò)刪除NaN值后,還剩下3292條數(shù)據(jù)。
3)異常值處理
首先導(dǎo)入matplotlib相關(guān)包,然后先對(duì)這些輸出畫出一個(gè)箱型圖。
從圖3中可以看出數(shù)據(jù)最開(kāi)始的離散程度還是很大的,尤其是身高和緊臀圍屬性,經(jīng)計(jì)算的標(biāo)準(zhǔn)差高達(dá)36.049和16.831。通過(guò)常理可知,身高和緊臀圍1000多的數(shù)據(jù)必然出現(xiàn)問(wèn)題,而且有極大可能是厘米和米單位換算出現(xiàn)問(wèn)題可以暫時(shí)當(dāng)作訓(xùn)練集保留,通過(guò)后期的預(yù)測(cè)來(lái)校驗(yàn);同時(shí)明顯小于常理值的數(shù)據(jù)也肯定出現(xiàn)了問(wèn)題,這些數(shù)據(jù)大概率是錄入數(shù)據(jù)的時(shí)候出現(xiàn)了問(wèn)題,因此刪除。
同時(shí)3σ原則也可以很有效的過(guò)濾數(shù)據(jù)。正常的一組數(shù)據(jù),mean+3σ到mean-3σ之間就會(huì)涵蓋總數(shù)據(jù)的99.7%,所以當(dāng)將數(shù)據(jù)集中的數(shù)據(jù)范圍框定在mean+3σ到mean-3σ之間即可進(jìn)行相對(duì)有效的數(shù)據(jù)過(guò)濾。未經(jīng)過(guò)箱型圖法過(guò)濾的數(shù)據(jù)過(guò)濾后,淘汰的數(shù)據(jù)恰恰也是1000多的數(shù)據(jù)和遠(yuǎn)遠(yuǎn)小于常理值的數(shù)據(jù)。但這并不代表箱型圖法和3σ原則效果一樣。
當(dāng)數(shù)據(jù)的離散程度較大時(shí),3σ原則處理數(shù)據(jù)的效果會(huì)由于箱型圖法。若一組數(shù)據(jù)較為集中,則其標(biāo)準(zhǔn)差σ就會(huì)非常小,因此淘汰的數(shù)據(jù)就會(huì)相應(yīng)減少;而箱型圖主要是按照percentile四分位值來(lái)構(gòu)圖的,當(dāng)數(shù)據(jù)的離散程度較小時(shí),四分位差就會(huì)顯得很小,從而會(huì)錯(cuò)過(guò)濾很多正常值。然而這次數(shù)據(jù)是比較集中的人體數(shù)據(jù),因此采用3σ原則會(huì)優(yōu)于箱型圖法。
2.2 填寫數(shù)據(jù)錯(cuò)誤(反預(yù)測(cè))
正如上文所提到的那樣,在填寫數(shù)據(jù)時(shí),難免會(huì)發(fā)生錯(cuò)誤。暫且把這些錯(cuò)誤分為兩種,一種是不可猜測(cè)的錯(cuò)誤數(shù)據(jù),比如將160填寫成60或者16等;另一種時(shí)刻猜測(cè)的錯(cuò)誤數(shù)據(jù),比如將160填寫成1600。實(shí)際上,第一種錯(cuò)誤因?yàn)闊o(wú)法猜測(cè),對(duì)于數(shù)據(jù)的回歸和預(yù)測(cè)是沒(méi)有正面影響的,然而第二種數(shù)據(jù),可以猜測(cè)到錯(cuò)誤原因的,則需要基于其他數(shù)據(jù)的預(yù)測(cè)來(lái)檢測(cè)其正確性。以兩組錯(cuò)數(shù)據(jù)[0,1550,53,84,90]、[0,1550,50,93]為例。除去這兩組數(shù)據(jù)后,再通過(guò)對(duì)這組數(shù)據(jù)的梯度下降回歸(gradientDescent),經(jīng)過(guò)10000次迭代,可以得到大致的預(yù)測(cè)結(jié)果。當(dāng)輸入[sex, weight]時(shí),可以得到預(yù)測(cè)結(jié)果[height]。帶入數(shù)據(jù)[0, 53]和[0, 50],分別得到了結(jié)果160和159。
兩組數(shù)據(jù)都在誤差范圍內(nèi),因此可將數(shù)據(jù)1550改為155填入表內(nèi)。再測(cè)定錯(cuò)誤數(shù)據(jù)[0,158,52,88,994]這組數(shù)據(jù)中,緊臀圍數(shù)據(jù)994明顯高于常理值,因此再帶入預(yù)測(cè)。設(shè)定程序?yàn)檩斎隱sex, weight]得到[jtw]的預(yù)測(cè)值,輸入數(shù)據(jù)[0,52]可以得到結(jié)果[92]。因此可以相信此條錯(cuò)誤數(shù)據(jù)也是因?yàn)閱挝怀霈F(xiàn)了問(wèn)題。將99或者94帶入即可。
涉及體重時(shí),考慮到常用單位為斤和公斤,也可能會(huì)存在類似誤差。第一次3σ篩選后得出的錯(cuò)誤數(shù)據(jù)如圖8:
經(jīng)過(guò)預(yù)測(cè)后,我們發(fā)現(xiàn),體重中有些數(shù)值接近于預(yù)測(cè)值的兩倍。于是我們考慮到在體重錄入時(shí),員工可能會(huì)將自己的體重單位默認(rèn)為“斤”和“公斤”,這兩個(gè)單位見(jiàn)正好是兩倍關(guān)系。所以可以將記錄體重約為預(yù)測(cè)體重兩倍的記錄認(rèn)定為單位錯(cuò)誤,處理這些數(shù)據(jù)時(shí)候,可以將數(shù)據(jù)/2,再帶入計(jì)算。再具體程序中,將1.5倍視為單位錯(cuò)誤。通過(guò)參數(shù)count_d來(lái)記錄替換次數(shù)。
最終得出在所有數(shù)據(jù)記錄中,替換次數(shù)為489次。
2.3 回歸算法比較與優(yōu)化(均以身高+體重預(yù)測(cè)緊臀圍為例)
這次項(xiàng)目,我們使用了python中的scipy包,它涵蓋了很多便捷的數(shù)據(jù)處理方法,比如回歸、聚類、分類等算法。當(dāng)我們需要對(duì)數(shù)據(jù)進(jìn)行回歸預(yù)測(cè)時(shí),這個(gè)包里的內(nèi)容給予了我們極大的幫助。但是在諸多回歸方法中,應(yīng)該如何甄別各回歸方法的效率呢?我們可以使用scipy包中自帶有score的評(píng)分包來(lái)對(duì)回歸方法進(jìn)行評(píng)分。
最開(kāi)始時(shí),我們采取的性別0-1化對(duì)項(xiàng)目結(jié)果有著超乎預(yù)期外的影響,當(dāng)程序讀取整則數(shù)據(jù)時(shí),(以普通最小二乘法為例)整個(gè)算法的預(yù)測(cè)評(píng)分才只有0.65。預(yù)測(cè)結(jié)果如圖9和圖10。
然而當(dāng)我們將男女分開(kāi)進(jìn)行測(cè)試時(shí),女生的評(píng)分為0.89,男生的評(píng)分為0.87。相比較之前合并處理的結(jié)果有了很大的提升,對(duì)應(yīng)的預(yù)測(cè)結(jié)果圖也顯示出了較好的預(yù)測(cè)結(jié)果。
普通最小二乘(OLS)是一種類型的線性最小二乘用于估計(jì)未知方法參數(shù)在一個(gè)線性回歸模型。OLS 通過(guò)最小二乘法原則選擇一組解釋變量的線性函數(shù)的參數(shù):最小化給定數(shù)據(jù)集中觀察到的因變量(被預(yù)測(cè)變量的值)與預(yù)測(cè)變量之間差異的平方和通過(guò)線性函數(shù)。
幾何上,這被視為與因變量軸平行的平方距離之和,集合中的每個(gè)數(shù)據(jù)點(diǎn)與回歸表面上的對(duì)應(yīng)點(diǎn)之間的差異 - 差異越小,模型越適合數(shù)據(jù)。得到的估計(jì)量可以用簡(jiǎn)單的公式表示,特別是在右側(cè)的簡(jiǎn)單線性回歸(單個(gè)回歸量)的情況下。
如上文所述,女生的評(píng)分為0.89,男生的評(píng)分為0.87。
Ridge Regression嶺回歸(吉洪諾夫正規(guī)化)(0.89,0.87)
嶺回歸(英文名:ridge regression, Tikhonov regularization)是一種專用于共線性數(shù)據(jù)分析的有偏估計(jì)回歸方法,實(shí)質(zhì)上是一種改良的最小二乘估計(jì)法,通過(guò)放棄最小二乘法的無(wú)偏性,以損失部分信息、降低精度為代價(jià)獲得回歸系數(shù)更為符合實(shí)際、更可靠的回歸方法,對(duì)病態(tài)數(shù)據(jù)的擬合要強(qiáng)于最小二乘法。
在統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)中,套索(最小絕對(duì)收縮和選擇算子)(也稱為L(zhǎng)asso或LASSO)是一種回歸分析方法,它執(zhí)行變量選擇和正則化,以提高其產(chǎn)生的統(tǒng)計(jì)模型的預(yù)測(cè)準(zhǔn)確性和可解釋性。Lasso最初是制定的最小二乘模型,這個(gè)案例揭示了估計(jì)量行為的大量數(shù)據(jù),包括它與嶺回歸和最佳子集選擇的關(guān)系以及套索系數(shù)估計(jì)與所謂的軟閾值之間的聯(lián)系。它還揭示了(如標(biāo)準(zhǔn)線性回歸)如果協(xié)變量是共線的,系數(shù)估計(jì)不必是唯一的。
盡管最初定義為最小二乘法,但是套索正則化很容易擴(kuò)展到各種統(tǒng)計(jì)模型,包括廣義線性模型,廣義估計(jì)方程,比例風(fēng)險(xiǎn)模型和M-估計(jì),以直接的方式。Lasso執(zhí)行子集選擇的能力依賴于約束的形式,并且具有各種解釋,包括幾何,貝葉斯統(tǒng)計(jì)和凸分析。
在統(tǒng)計(jì)學(xué)中,最小角度回歸(LARS)是一種將線性回歸模型擬合到高維數(shù)據(jù)的算法,由Bradley Efron,Trevor Hastie,Iain Johnstone和Robert Tibshirani開(kāi)發(fā)。
LARS解決方案不是給出矢量結(jié)果,而是由表示參數(shù)矢量的L1范數(shù)的每個(gè)值的解的曲線組成。該算法類似于前向逐步回歸,但不是在每個(gè)步驟中包括變量,而是在與殘差的每個(gè)相關(guān)性等角度的方向上增加估計(jì)參數(shù)。
在統(tǒng)計(jì)學(xué)中,貝葉斯線性回歸是一種線性回歸方法,其中統(tǒng)計(jì)分析是在貝葉斯推斷的背景下進(jìn)行的。當(dāng)回歸模型具有正態(tài)分布的誤差時(shí),并且如果假設(shè)特定形式的先驗(yàn)分布,則可以獲得模型參數(shù)的后驗(yàn)概率分布的顯式結(jié)果。
在統(tǒng)計(jì),多項(xiàng)式回歸是一種形式的回歸分析,其中所述的關(guān)系獨(dú)立變量 X和因變量 ?建模為?個(gè)程度多項(xiàng)式在X。多項(xiàng)式回歸擬合的值之間的非線性關(guān)系X和相應(yīng)的條件均值的?表示為E,(? | X),并已被用于描述非線性現(xiàn)象,例如組織的生長(zhǎng)速率,湖泊沉積物中碳同位素的分布,[2]和疾病流行的進(jìn)展。雖然多項(xiàng)式回歸擬合數(shù)據(jù)的非線性模型,但作為統(tǒng)計(jì)估計(jì)問(wèn)題,它是線性的,在某種意義上,回歸函數(shù)E(y|x)在從數(shù)據(jù)估計(jì)的未知參數(shù)中是線性的。因此,多項(xiàng)式回歸被認(rèn)為是多元線性回歸的特例。
本次實(shí)驗(yàn)結(jié)果所呈現(xiàn)的回歸方法評(píng)分都比較相近,當(dāng)已知[身高,體重],預(yù)測(cè)[緊臀圍]時(shí),女生和男生數(shù)據(jù)采用適用的回歸方法所得的評(píng)分都分別為0.89和0.87??赡茉蛴幸韵聨讉€(gè):
a) 在數(shù)據(jù)清洗時(shí),拋棄了太多異常值,導(dǎo)致數(shù)據(jù)離散程度較小,如上圖所顯示的那樣,呈現(xiàn)出比較密集的散點(diǎn),這樣的分布可能會(huì)導(dǎo)致回歸算法不能有效的得出最優(yōu)的曲線。
b) 本次數(shù)據(jù)集雖然總數(shù)居高達(dá)5998條,但是經(jīng)過(guò)數(shù)據(jù)清洗之后,剩下了僅僅3000多條。不充分的數(shù)據(jù),也會(huì)導(dǎo)致算法得到的結(jié)果有相異度,但是相異度太小,無(wú)法體現(xiàn)。當(dāng)數(shù)據(jù)集的數(shù)據(jù)記錄足夠多,展現(xiàn)出足夠豐富的屬性值時(shí),各個(gè)回歸方法的優(yōu)點(diǎn)才會(huì)各自體現(xiàn)。
c) 本次數(shù)據(jù)集的記錄是反映人體的量體數(shù)據(jù),眾所周知,人體的量體數(shù)據(jù)比較集中,會(huì)導(dǎo)致無(wú)法有效擬合等問(wèn)題。
與此同時(shí),我們也可以發(fā)現(xiàn),LARS Lasso和多項(xiàng)式回歸算法并不適合于低維度的數(shù)據(jù)分析,當(dāng)需要處理多維數(shù)據(jù)集時(shí),這兩個(gè)算法可能才會(huì)體現(xiàn)出優(yōu)勢(shì)。
2.4 預(yù)測(cè)相關(guān)數(shù)據(jù)的準(zhǔn)確性
本次項(xiàng)目所使用的所有回歸算法,都帶有predict函數(shù),可以通過(guò)train集得出對(duì)應(yīng)最優(yōu)回歸曲線,然后使用test集對(duì)得出的曲線進(jìn)行驗(yàn)證,從而得到預(yù)測(cè)值和正確率。
在上文數(shù)據(jù)清洗時(shí),已經(jīng)運(yùn)用到predict函數(shù),來(lái)對(duì)數(shù)據(jù)是否具有不可猜測(cè)的錯(cuò)誤性進(jìn)行驗(yàn)證。當(dāng)然,在絕大多數(shù)其他實(shí)際案例中都可以通過(guò)predict函數(shù)來(lái)對(duì)未知數(shù)據(jù)的屬性進(jìn)行預(yù)測(cè)。本項(xiàng)目將通過(guò)員工(已知性別)的身高、體重,預(yù)測(cè)未知的緊胸圍和緊臀圍。(不適用方法將推薦在預(yù)測(cè)時(shí)使用)
當(dāng)將test數(shù)據(jù)帶入算法時(shí),會(huì)得到對(duì)應(yīng)的一個(gè)predict集,在matplotlib包中調(diào)用plot和scatter方法,畫出x=y和散點(diǎn)。散點(diǎn)坐標(biāo)為(預(yù)測(cè)值,測(cè)試值),當(dāng)散點(diǎn)越靠近直線則表示預(yù)測(cè)值越精準(zhǔn)。下面為各算法對(duì)于不同的隨機(jī)數(shù)據(jù)集展現(xiàn)出的預(yù)測(cè)情況。
由于這些回歸算法的評(píng)分幾乎相同,所以所得到的預(yù)測(cè)結(jié)果的正確率并沒(méi)有多大的區(qū)別,從而導(dǎo)致以上這些曲線除了一些細(xì)小的變化,幾乎并沒(méi)有相異度。
與此同時(shí),LARS Lasso的曲線也可以由算法也可以得到結(jié)果如圖39,40:
由上圖可以更加肯定的得出這樣的結(jié)果:回歸算法的預(yù)測(cè)準(zhǔn)確率和算法評(píng)分是呈正相關(guān)的關(guān)系。
3 數(shù)據(jù)挖掘的應(yīng)用前景和展望
目前數(shù)據(jù)挖掘得到了充分而迅速的發(fā)展,現(xiàn)在的數(shù)據(jù)挖掘熱點(diǎn)在于各種大數(shù)據(jù)的精確挖掘,例如網(wǎng)站上的數(shù)據(jù)挖掘,如上文提到的電子商務(wù)內(nèi)容;對(duì)生物的基因信息進(jìn)行數(shù)據(jù)發(fā)掘;從大批量文本中進(jìn)行數(shù)據(jù)挖掘等。未來(lái)的發(fā)展趨勢(shì)很大程度上也會(huì)沿著這三個(gè)方向進(jìn)行進(jìn)一步的發(fā)展和完善。我國(guó)的數(shù)據(jù)挖掘尚不成熟,處于發(fā)展階段,但各行各業(yè)對(duì)于數(shù)據(jù)挖掘的重視程度正逐步提高,對(duì)數(shù)據(jù)挖掘的研究和應(yīng)用也越來(lái)越廣泛。
4 總結(jié)
數(shù)據(jù)挖掘是一個(gè)常見(jiàn)而好用的數(shù)據(jù)處理工具,在如今的電子商務(wù)時(shí)代和大數(shù)據(jù)時(shí)代并行的時(shí)代背景下顯得尤為重要,目前國(guó)內(nèi)外對(duì)數(shù)據(jù)挖掘的熱度正逐漸上升,多個(gè)數(shù)據(jù)量大且對(duì)數(shù)據(jù)處理需求較大行業(yè)已經(jīng)開(kāi)始應(yīng)用數(shù)據(jù)挖掘來(lái)進(jìn)行輔助決策,數(shù)據(jù)處理在日常的數(shù)據(jù)分析中也開(kāi)始逐步應(yīng)用。但是就目前而言數(shù)據(jù)挖掘還存在著許多缺憾和不足,例如在數(shù)據(jù)量非常大時(shí),數(shù)據(jù)發(fā)掘的速度和效率亟待提高、動(dòng)態(tài)數(shù)據(jù)的挖掘方式不足、對(duì)多數(shù)據(jù)類型的挖掘方法不夠等。作為數(shù)據(jù)的分析者,必須理解和掌握數(shù)據(jù)挖掘的原理和使用方法,熟練和合理的應(yīng)用數(shù)據(jù)挖掘,從而能解釋和應(yīng)用最終的數(shù)據(jù)挖掘結(jié)果,使得數(shù)據(jù)挖掘能真正有利于自己的工作,服務(wù)于行業(yè)。
【通聯(lián)編輯:梁書】