翻譯/編輯/部分原創(chuàng) Vivian Ouyang? 原作者:Sunil Ray
在機器學(xué)習(xí)中内狸,很多時候你會掙扎于怎么提高模型的準確率佳吞。在這種時刻舀患,數(shù)據(jù)探索的一些方法將幫助你解決這個問題忆矛。這個指導(dǎo)將幫助你理解數(shù)據(jù)探索中的主要技術(shù)卵迂。請記住你輸入的變量的數(shù)據(jù)質(zhì)量決定了你模型輸出量的質(zhì)量裕便。所以當你的商業(yè)問題提出來以后,你需要花費很多時間在數(shù)據(jù)準備和探究上面,一般來說见咒,數(shù)據(jù)清理偿衰,探究和準備大概占據(jù)了一個項目70%的時間航唆。下面是準備萧芙,理解,清理你用于建立預(yù)測模型的數(shù)據(jù)的幾個步驟,我會一個一個來介紹
1.變量確定
2.單變量分析
3.雙變量分析
4.處理缺失值
5.處理離群值
6.變量轉(zhuǎn)換
7.變量創(chuàng)建
在下部會介紹5,6,7三個部分采驻。
處理離群值
離群值(Outlier)經(jīng)常會引起很多錯誤的模型估算和預(yù)測宝当。簡單的講视事,離群值就是離整體數(shù)據(jù)分布或者模式很遠的觀測點。舉個簡單的例子庆揩,一個研究顯示一般人的年收入是8萬俐东,但是發(fā)現(xiàn)其中有兩個用戶的年收入有4塊錢或者400百萬,這兩個用戶就可以看成是離群點订晌。下圖就是一個箱線圖的離群點的例子虏辫,被圈出來的就是離群點。
離群值的種類
離群值一般有兩個種類锈拨,一個是一元離群值砌庄,一個是多元的離群值。比如上面箱線圖的離群值點奕枢。這種離群值一般是在我們觀察單變量的分布的時候娄昆。 而多元離群值是指多維的空間,如果想找到他們缝彬,你必須看數(shù)據(jù)點的多維分布稿黄。讓我們用身高和體重之間的關(guān)系來理解一元和多元離群值。如下圖跌造,左下和左中分別是身高和體重分別的箱線圖杆怕,我們并沒有看到離群值族购,而當我們畫出右下圖的身高體重散點圖的時候,我們發(fā)現(xiàn)了三個離群值陵珍。
知道了離群值的分類寝杖,每次當我們遇到離群值的時候,最好的辦法就是找到為什么這些值會離群互纯。離群值產(chǎn)生的原因也可以分為兩大類
假的離群(就是誤差)/非自然的離群:
1.輸入誤差:就是在數(shù)據(jù)收集中產(chǎn)生的人為的錯誤瑟幕,比如數(shù)據(jù)記錄,數(shù)據(jù)輸入錯誤都會引起離群值留潦。打個比方只盹,一個顧客的年收入有十萬元,而數(shù)據(jù)輸入員將它輸入成了100萬元兔院,是原來的十倍殖卑。這個就會造成離群點。
2.測量誤差:這是最常見的離群值的來源坊萝,這個一般是由測量儀器的錯誤造成的孵稽。比如,你有十個測量儀器十偶,其中9個是準確的一個是壞的菩鲜。那么被壞儀器測量的組將會比其他儀器測量的組高或者低一些。這樣會引起離群點惦积。
3.故意的離群值:這個經(jīng)常發(fā)生在一些有敏感數(shù)據(jù)的自我報告中接校。打個比方,比如青少年一般會少報他們一周喝酒的數(shù)量狮崩,只有很少的一部分青少年會如實匯報馅笙。那么因為大部分人都少報,那實際匯報的那些數(shù)據(jù)反而看起來像離群點了厉亏。
4. 數(shù)據(jù)處理誤差:當我們做數(shù)據(jù)分析的時候董习,我們會從不同的平臺抓取數(shù)據(jù),那么這些抓取和轉(zhuǎn)換回來帶一些誤差爱只,從而產(chǎn)生離群值皿淋。
5. 樣本誤差:很簡單的比方,比如我們要測量一般運動員的身高恬试,但是我們不小心把幾個籃球隊員算進去了窝趣,因此這些造成了離群值。
自然離群
當一個離群值不是因為誤差引起的训柴,那么就是自然離群值哑舒,比如,有時候在比賽中幻馁,前面五十名比后面的幾百個人好太多洗鸵,那一般不是因為誤差越锈,因為離群值很多,那這種情況膘滨,就屬于自然離群甘凭,我們需要單獨對待這一部分人。
離群值的影響
離群值會很明顯的改變數(shù)據(jù)分析與建模的結(jié)果火邓,他們有很多的不好的影響
1.它們會增加誤差的方差丹弱,而一般誤差的方差平方根會作為統(tǒng)計量的分母,因為減小統(tǒng)計量的大小铲咨,造成p值變大躲胳,從而降低模型的統(tǒng)計功效。
2.如果離群值是非隨機分布的纤勒,那么它們會影響數(shù)據(jù)正態(tài)性分布坯苹。而很多線性模型的假設(shè)就是輸出變量Y是正態(tài)分布。
3.離群值還會影響估計值踊东,讓其差生偏差
4.離群值也會影響很多統(tǒng)計方法的統(tǒng)計假設(shè)比如線性回歸北滥,方差分析刚操。
為了容易理解闸翅,我們看一個簡單的例子,如下圖
在右上圖菊霜,因為有了離群值300坚冀,而導(dǎo)致標準差,均值什么的都產(chǎn)生了很大變化鉴逞。這會完全改變你的統(tǒng)計估計记某。
離檢驗離群值
絕大多數(shù)探測離群值的方法都是可視化數(shù)據(jù),我們使用不同的可視化方法构捡,比如箱線圖液南,頻率圖,散點圖勾徽。當然也有一些簡單判斷的準則滑凉。比如對于一元離群值,對于任意的數(shù)據(jù)喘帚,一般的范圍是正負1.5倍的四分衛(wèi)距(IQR)這種畅姊。而二元或多元離群值一般是用一種距離計算來判斷,比如馬氏距離或者線性回歸中的Cook距離吹由。
移除離群值
絕大多數(shù)處理離群值的方法與缺失值比較類似若未,可以刪除或者轉(zhuǎn)換,或者替換倾鲫。
刪除觀測值: 如果是因為非自然的離群值粗合,而且數(shù)量很少的話萍嬉,我們可以移除它們。
轉(zhuǎn)換以及給變量分組:轉(zhuǎn)換變量可以減少離群值舌劳,比如給變量取自然對數(shù)帚湘。然后對變量進行分組也是個不錯的轉(zhuǎn)換方法。比如對于分組過的變量甚淡,決策樹就可以很好地處理這些離群值大诸。而且我們還可以給不同的觀測值不同的權(quán)重。比如下圖右邊就是把左邊的觀測值進行了取自然對數(shù)過后得到的新觀測值贯卦。
替換: 類似于缺失值的替換资柔,我們也可以替換離群值,可以使用均值撵割,中位數(shù)贿堰,眾數(shù)等方法。如果是非自然的離群值啡彬,我們可以用統(tǒng)計方法去預(yù)測離群值羹与。
單獨處理: 與缺失值處理不同以及增加的一項,就是單獨處理了庶灿。如果離群值數(shù)量很多纵搁,我們在統(tǒng)計建模中,應(yīng)該把它們單獨作為一組單獨分析往踢。一般來說比較流行的統(tǒng)計方法腾誉,有那種對不同的組分別建模然后給權(quán)重進行聯(lián)合的方法。
變量變換
現(xiàn)在讓我們跳到數(shù)據(jù)探索的最后一個階段:特征工程峻呕。在介紹6.變量變換和7.變量創(chuàng)建時利职,先介紹一下特征工程,因為6和7是特征工程很重要的組成部分瘦癌。特征工程是建模中很重要的一步猪贪,是怎么從已有的數(shù)據(jù)中提取更有用信息的藝術(shù)。你并不添加任何數(shù)據(jù)讯私,而是讓你現(xiàn)有的數(shù)據(jù)怎么變得更加有用热押。一般特征工程的前五步就是我之前介紹的1,2妄帘,3楞黄,4,5.而后面兩步就是變量變換和變量創(chuàng)建抡驼。這兩步對你模型的預(yù)測準確度有很大的影響鬼廓。
在數(shù)據(jù)建模中,變量變換是指一個變量用其相關(guān)的函數(shù)變換之后的值來表示致盟。打個比方碎税,我們用x取對數(shù)之后的值來取代x的值尤慰。也可以說,變量變換改變了變量的分布雷蹂。那什么時候我們需要使用變量變換呢伟端。下面是四種情況:
1.當我們想要改變一個變量的scale活著標準化它想讓這個變量的變得更容易理解。如果你的數(shù)據(jù)有不同的scales匪煌,這種改變并不改變變量的分布的形狀
2.當我們想要把變量之間非線性的關(guān)系變成線性的责蝠。一般來講,線性關(guān)系比非線性的關(guān)系容易讓人理解萎庭。變量變量可以幫助我們完成這個霜医。一般散點圖可以讓我們可視化兩個連續(xù)變量之間的關(guān)系。比如取對數(shù)變換是我們經(jīng)常用的方法驳规。
3. 比起傾斜分布的變量肴敛,我們更喜歡對稱分布的變量。對稱分布的變量比較容易解釋而且也易于用于參數(shù)估計吗购。比如一般線性回歸會要求誤差服從正態(tài)分布医男,這里的正太分布就是對稱分布的一種。對于參數(shù)模型捻勉,我們一般都有變量的分布假設(shè)镀梭,而很多時候,我們都假設(shè)變量是對稱分布贯底,模型的理論推導(dǎo)也是建于對稱分布而來的丰辣。因此每當你有遇到很傾斜的分布的時候撒强,最好對變量做一些變換禽捆。比如,對于向右傾斜的分布飘哨,我們可以去平方根或者立方根胚想,也可以去對數(shù)。而對于向左傾斜的分布芽隆,我們可以平方浊服,或者立方或者指數(shù)化我們的變量。比如右下圖向右傾斜的分布我們就指數(shù)化我們的變量
4. 有時候變量變換是來自于項目的要求胚吁,或者說能更好的完成項目的任務(wù)牙躺。打個比方,在某個人力資源的分析中腕扶,我們發(fā)現(xiàn)孽拷,年齡和員工的表現(xiàn)有很大的關(guān)系。年齡越大半抱,表現(xiàn)越好脓恕。從應(yīng)用的觀點來看膜宋,一般更喜歡把年齡分層成比如<30歲,30-45歲炼幔,>45歲秋茫,然后對每一組年齡層,采用不同的策略乃秀。這種方法就叫做變量分層(binning)
知道什么時候做變量變換了肛著,那有哪些變量變換的基本方法呢
取對數(shù):一般用于向右傾斜分布的變量,但是它不能用于0或者負值
平方根/立方根:平方根或者立方根變量也可以改變變量分布跺讯,不過不如取對數(shù)明顯策泣。但是立方根有自己的優(yōu)勢,它可以用于0值還有負值抬吟。平方根變量可以用于含0的正值萨咕。
分組(binning):這個適用于分組變量,很多時候這種分組是建立于商業(yè)理解上火本。比如我們會把收入分為高收入危队,中等收入和低收入。當然我們有兩個變量還可以一起做多元分組钙畔。
變量建立
變量建立是利用原有的變量創(chuàng)建新變量的過程茫陆。打個比方,我們有日期的輸入變量(日-月-年)擎析,我們可以利用這個變量建立專門的日簿盅,月,年揍魂,星期桨醋,工作日等等比之前的輸入變量日期更好的變量。這個方法有時候用來強調(diào)變量的一些隱藏信息和關(guān)系现斋。下面這個表就是把日期(date)變成三個新的變量(New_Day,New_Month,New_Year)的例子喜最。
當然創(chuàng)建變量有很多方法,下面就介紹其中的兩種:
創(chuàng)建派生的變量:
這個是從原有的變量中通過函數(shù)或者其他的方法得到新的派生變量庄蹋。比如kaggle競賽中很有名的泰坦尼克號數(shù)據(jù)瞬内,很多參賽者會喜歡從人的名字變量中創(chuàng)建Master,Mr限书,Mrs和Miss這四個新變量虫蝶。那一般怎么決定派生變量呢。大部分時候要按你的商業(yè)要求來倦西。
創(chuàng)建虛擬的變量:
還有一個普遍的情況就是創(chuàng)建所謂的虛擬變量能真,一般用虛擬變量把非線性的變量變成數(shù)值變量。虛擬變量又叫指標變量。比如對于性別(gender)有男和女兩種舟陆,那么我們可以建立兩個新的變量一個叫Var_Male误澳,它的值為 1(男)和0(女),然后Var_Female變量秦躯,它的值為 0(男)和1(女)忆谓。如果非連續(xù)變量有n層(大于2),那么可以創(chuàng)建n-1個虛擬變量踱承。下面這個圖就是用性別變量(gender)來創(chuàng)建兩個虛擬變量(dummy variable)倡缠。
數(shù)據(jù)探索就介紹完了【セ睿總之昙沦,任何時候都不要小看data exploration,它是你建立模型的第一步载荔。