机器学习-特征工程中的数据预处理
?
? ? ? ?對于一個機器學習問題,數據和特征決定了機器學習的上限,而模型和算法只是逼近這個上限。由此可見,數據和特征在模型的整個開發過程中是比較重要。特征工程,顧名思義,是對原始數據進行一系列工程處理,將其提煉為特征,作為輸入供算法和模型使用。從本質上來講,特征工程是一個表示和展現數據的過程。在實際工作中,特征工程旨在去除原始數據中的雜質和冗余,以設計更高效的特征以刻畫求解的問題與預測模型之間的關系。
? ? ? ?在實際的模型應用中并不是特征越多越好,特征越多固然會給我們帶來很多額外的信息,但是與此同時,一方面,這些額外的信息也增加實驗的時間復雜度和最終模型的復雜度,造成的后果就是特征的“維度災難”,使得計算耗時大幅度增加;另一方面,可能會導致模型的復雜程度上升而使得模型變得不通用。所以我們就要在眾多的特征中選擇盡可能相關的特征和有效的特征,使得計算的時間復雜度大幅度減少來簡化模型,并且保證最終模型的有效性不被減弱或者減弱很少,這也就是我們特征選擇的目的。
特征工程主要包括以下方面:
我們重點從3個方面來詳細說明特征工程的具體操作:
機器學習-特征工程中的數據預處理
機器學習-特征工程中的特征選擇
機器學習-特征工程中的特征降維
?
1. 數據標準化和歸一化
? ? ? ?在多指標評價體系中,由于各評價指標的性質不同,通常具有不同的量綱和數量級。當各指標間的水平相差很大時,如果直接用原始指標值進行分析,就會突出數值較高的指標在綜合分析中的作用,相對削弱數值水平較低指標的作用。因此,為了保證結果的可靠性,需要對原始指標數據進行標準化處理,去除數據的單位限制,將其轉化為無量綱的純數值,便于不同單位或量級的指標能夠進行比較和加權。去除特征值的量綱,那么去除量綱也有兩種不同的方法,一個叫歸一化,一個叫標準化。標準化的目的是將樣本的各個特征值轉換到同一量綱下,使得不同度量的特征具有可比性;歸一化的目的是將各樣本轉化為單位向量使得模型迭代更快更好。
常見的無量綱化操作中,其中最常用的是min-max標準化、 z-score 標準化和Normalization歸一化,具體為:
(1)min-max標準化
min-max標準化是對原始數據進行線性變換,將其映射到[0,1]之間,該方法也被稱為離差標準化,但是請注意,網上更多人喜歡把z-score稱為標準化方法,把min-max稱為歸一化方法,然后在此基礎上,強行給標準化(z-score)與歸一化(min-max)劃條界線,以顯示二者之間的相異性二者之間確實有很大的不同,但是這兩個方法說到底還都是用來去除量綱的,都是無量綱化技術中的一員而已,所以,請不要糾結標準化與歸一化這兩個概念了。
? ? ? ? ? ??? ??
上式中,min是樣本的最小值,max是樣本的最大值。由于最大值與最小值可能是動態變化的,同時也非常容易受噪聲(異常點、離群點)影響,因此一般適合小數據的場景,min-max標準化示例為:
? ??
(2)z-score標準化
z-score標準化(zero-mena normalization,0-均值標準化)方法的公式如下所示:
? ? ? ? ? ? ? ?
上式中,x是原始數據,u是樣本均值,σ是樣本標準差。回顧下正態分布的基本性質,若x~N(u,σ^2),則有
? ? ? ??? ?
其中,N(0,1)表示標準正態分布,z-score標準化示例為:
? ? ? ??
? ? ? ?可以看出,z-score標準化方法試圖將原始數據集標準化成均值為0,方差為1且接近于標準正態分布的數據集。然而,一旦原始數據的分布不接近于一般正態分布,則標準化的效果會不好。該方法比較適合數據量大的場景(即樣本足夠多,現在都流行大數據,因此可以比較放心地用)。此外,相對于min-max歸一化方法,該方法不僅能夠去除量綱,還能夠把所有維度的變量一視同仁(因為每個維度都服從均值為0、方差1的正態分布),在最后計算距離時各個維度數據發揮了相同的作用,避免了不同量綱的選取對距離計算產生的巨大影響。所以,涉及到計算點與點之間的距離,如利用距離度量來計算相似度、PCA、LDA,聚類分析等,并且數據量大(近似正態分布),可考慮該方法。相反地,如果想保留原始數據中由標準差所反映的潛在權重關系應該選擇min-max歸一化。
(3)Normalization
Normalization的數據預處理方法,在一些地方,有人把這種方法翻譯為正則化,但是機器學習中的正則化更多是與模型相關(比如邏輯回歸在損失函數后增加L2正則項);也有人稱之為歸一化,但是吧,有時這種方法并沒體現“歸一”特性,如處理后的數據該是負號的還是負號。其實這個方法是根據范數來進行Normalization的,何為范數?聽著感覺高大上,其實非常常見。Lp-范數的計算公式如下所示:
? ? ? ? ? ? ?
可見,L2范數即為歐式距離,則規則為L2的Normalization公式如下所示,易知,其將每行(條)數據轉為相應的“單位向量”。
? ? ? ? ? ? ? ? ? ? ? ?
Normalization的過程是將每個樣本縮放到單位范數(結合單位向量進行理解,p=2時為單位向量,其他為單位范數),如果后面要使用如二次型(點積)或者其它核方法計算兩個樣本之間的相似性這個方法會很有用。L2的Normalization示例為:
? ? ? ??
從經驗上說,歸一化是讓不同維度之間的特征在數值上有一定比較性,可以大大提高分類器的準確性,具體的優點有:
(1) 提升模型的收斂速度
? ? ? ?如下圖,x1的取值為0-2000,而x2的取值為1-5,假如只有這兩個特征,對其進行優化時,會得到一個窄長的橢圓形,導致在梯度下降時,梯度的方向為垂直等高線的方向而走之字形路線,這樣會使迭代很慢,相比之下,右圖的迭代就會很快(理解:也就是步長走多走少方向總是對的,不會走偏)
? ? ? ? ? ??
(2)提升模型的精度
? ? ? ?另一好處是提高精度,這在涉及到一些距離計算的算法時效果顯著,比如算法要計算歐氏距離,上圖中x2的取值范圍比較小,涉及到距離計算時其對結果的影響遠比x1帶來的小,所以這就會造成精度的損失。所以歸一化很有必要,他可以讓各個特征對結果做出的貢獻相同。??
標準化與歸一化的區別
對象不一樣:
- 標準化的對象是一個特征列;
- 歸一化的對象是一個樣本行;
目的不一樣:
- 標準化的目的是將樣本的各個特征值轉換到同一量綱下使得不同度量的特征具有可比性;
- 歸一化的目的是將各樣本轉化為單位向量使得模型迭代更快更好;
在sklearn中有提供數據的相關標準化和歸一化方法,可以直接調用:
from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import MinMaxScaler from sklearn.preprocessing import Normalizer#標準化,返回值為標準化后的數據 StandardScaler().fit_transform(iris.data)#區間縮放,返回值為縮放到[0, 1]區間的數據 MinMaxScaler().fit_transform(iris.data)#歸一化,返回值為歸一化后的數據 Normalizer().fit_transform(iris.data)
2. 特征二值化
? ? ? ?對于某些定量特征,其包含的有效信息為區間劃分,例如學習成績,假若只關心“及格”或不“及格”,那么需要將定量的考分,轉換成“1”和“0”表示及格和未及格。定量特征二值化的核心在于設定一個閾值,大于閾值的賦值為1,小于等于閾值的賦值為0。二值化是對文本計數數據的常見操作,分析人員可以決定僅考慮某種現象的存在與否。它還可以用作考慮布爾隨機變量的估計器的預處理步驟(例如,使用貝葉斯設置中的伯努利分布建模)。公式表達如下:
? ? ? ? ?
from sklearn.preprocessing import Binarizer#二值化,閾值設置為3,返回值為二值化后的數據 Binarizer(threshold=3).fit_transform(iris.data)但是在特征二值化中存在一個問題,比如一個特征為性別,有兩種屬性“男”,“女”,那么特征二值化后,將男 --> 0 , 女?--> 1 ,但是對于這個變量來說,0和1存在大小關系,男和女不存在對比關系,在后期的模型訓練中可能會導致模型的一個錯誤理解,在后面的啞編碼中可以避免這種問題。
?
3.?啞編碼/獨熱編碼
? ? ? ?首先啞編碼面向的是離散型的特征,啞編碼是將一個離散型特征進行一對多映射產出多個特征的編碼方式,每個特征編碼只代表一個若干級別間的差異,下圖即為年齡特征,離散化成為年齡段特征,再最后啞編碼為四個不同的特征,寄現將連續型特征轉化為離散型特征,然后再轉換為啞編碼。
? ? ??
啞編碼的優點:
- 簡化了模型訓練的復雜性,降低模型過擬合的風險(是離散化帶來的優勢);
- 離散化后的特征對異常數據有很強的魯棒性(是離散化帶來的優勢);
- 稀疏向量內積乘法運算速度快,因為稀疏矩陣有實數的值很少,做內積運算時就會有很多優化手段;
- 線性模型表達能力受限,單變量離散化為N個后,每個變量有單獨的權重,相當于為模型引入了非線性,能夠提升模型表達能力,加大擬合能力;
- 離散化后可以進行特征交叉,由M+N個變量變為M*N個變量,進一步引入非線性,提升表達能力;
常見的對離散型數據進行啞編碼處理,常見的處理方法有兩種:
sklearn:使用sklearn庫中的OneHotEncoder()方法進行獨熱編碼。
pandas:使用pandas庫中的函數pd.dummies()或pd.factorize()進行獨熱編碼;
?
(1)One-Hot編碼
One-Hot編碼,又稱為一位有效編碼,主要是采用N位狀態寄存器來對N個狀態進行編碼,每個狀態都由他獨立的寄存器位,并且在任意時候只有一位有效。
? ? ? ?
One-Hot的優點:
1、能夠處理非連續型數值特征;
2、在一定程度上擴充了特征(例如:性別本身是一個特征,經過one hot編碼以后,就變成了男或女兩個特征。);
3、將離散特征的取值擴展到了歐式空間(離散特征的某個取值就對應歐式空間的某個點,在回歸,分類,聚類等機器學習算法中,特征之間距離的計算或相似度的計算是非常重要的,而我們常用的距離或相似度的計算都是在歐式空間的相似度計算,計算余弦相似性,基于的就是歐式空間。);
4、將離散型特征使用one-hot編碼,可以讓特征之間的距離計算更加合理,相當于做了歸一化處理;
One-Hot用在GBDT、XGBoost這些模型里面都挺好的,但是用在邏輯回歸里不行。因為邏輯回歸要求變量間相互獨立,如果你只有一個屬性需要做one-hot編碼還好,如果你有多個屬性需要做one-ont編碼,那么當某個樣本的多個one-hot屬性同時為1時,這兩個屬性就完全相關了,必然會導致singular error,也就是非奇異矩陣不能求解唯一解,得不出唯一的模型,但是你又不可能把同一個屬性的某一個one-hot延伸變量刪除。如果在邏輯回歸中入模標稱屬性,可以直接替換成數值,然后做woe變換,用每個類別的woe值來代替原來的數值,這樣既能夠避免生成相關性強的變量,又能避開類別間大小無法比較的問題。
?
(2)Dummy啞變量編碼
啞變量就是將原始特征變量轉換成以原始特征值分類的多維度的變量,并用是否(0,1)這種方式的新特征值替代和量化。和One-Hot編碼基本一樣,但是比One-Hot編碼少了一個狀態。啞變量編碼直觀的解釋就是任意的將一個狀態去除。
? ? ? ?
同理,在列舉一個示例,比如以“學歷”這個變量為例,有五種狀態,分別為小學、中學、大學、碩士、博士,
? ? ? ?
對于定類類型的數據,建議使用one-hot encoding。定類類型就是純分類,不排序,沒有邏輯關系。比如性別分男和女,男女不存在任何邏輯關系,我們不能說男就比女好,或者相反。再者,中國各省市分類也可以用獨熱編碼,同樣各省不存在邏輯關系,這時候使用one-hot encoding會合適些。但注意,一般會舍去一個變量,比如男的對立面肯定是女,那么女就是重復信息,所以保留其中一個變量即可。
對于定序類型的數據,建議使用label encoding。定序類型也是分類,但有排序邏輯關系,等級上高于定類。比如,學歷分小學,初中,高中,本科,研究生,各個類別之間存在一定的邏輯,顯然研究生學歷是最高的,小學最低。這時候使用Label encoding會顯得更合適,因為自定義的數字順序可以不破壞原有邏輯,并與這個邏輯相對應。
對數值大小敏感的模型必須使用one-hot encoding或者Dummy。典型的例子就是LR和SVM。二者的損失函數對數值大小是敏感的,并且變量間的數值大小是有比較意義的。而Label encoding的數字編碼沒有數值大小的含義,只是一種排序,因此對于這些模型都使用one-hot encoding。
對數值大小不敏感的模型(如樹模型)不建議使用one-hot encoding。一般這類模型為樹模型。如果分類類別特別多,那么one-hot encoding會分裂出很多特征變量。這時候,如果我們限制了樹模型的深度而不能向下分裂的話,一些特征變量可能就因為模型無法繼續分裂而被舍棄損失掉了。因此,此種情況下可以考慮使用Label encoding
4.?缺失值計算
? ? ? ?由于各種原因,許多現實世界的數據集包含缺少的值,通常編碼為空白,NaN或其他占位符。然而,這樣的數據集與Scikit-learn的分類器不兼容,它們假設數組中的所有值都是數字,并且都具有和保持含義。使用不完整數據集的基本策略是丟棄包含缺失值的行或列。然而,這樣的代價是可能丟失有價值的數據,如果每行或每列缺失數據占比比較大,建議直接放棄這些數據,否則更好的策略是估算缺失值,并將其填充。
- 當某個變量或者某個樣本中缺失值占比過大時(空值率達到90%以上),那么我們可以認為這一變量或者樣本沒有意義,可以直接刪除;
- 用平均值、中值、分位數、眾數、隨機值等替代(效果一般,因為等于人為增加了噪聲);
- 用其他變量做預測模型來算出缺失變量。效果比方法2略好。有一個根本缺陷,如果其他變量和缺失變量無關,則預測的結果無意義。如果預測結果相當準確,則又說明這個變量是沒必要加入建模的。一般情況下,介于兩者之間;
- 把變量映射到高維空間。比如性別,有男、女、缺失三種情況,則映射成3個變量:是否男、是否女、是否缺失。連續型變量也可以這樣處理。比如Google、百度的CTR預估模型,預處理時會把所有變量都這樣處理,達到幾億維。這樣做的好處是完整保留了原始數據的全部信息、不用考慮缺失值、不用考慮線性不可分之類的問題。缺點是計算量大大提升;
5. 異常值處理
? ? ? ?在機器學習中,異常檢測和處理是一個比較小的分支,或者說,是機器學習的一個副產物,因為在一般的預測問題中,模型通常是對整體樣本數據結構的一種表達方式,這種表達方式通常抓住的是整體樣本一般性的性質,而那些在這些性質上表現完全與整體樣本不一致的點,我們就稱其為異常點,通常異常點在預測問題中是不受開發者歡迎的,因為預測問題通產關注的是整體樣本的性質,而異常點的生成機制與整體樣本完全不一致,如果算法對異常點敏感,那么生成的模型并不能對整體樣本有一個較好的表達,從而預測也會不準確。異常值產生的原因有一下幾個方面:
數據輸入錯誤,人為錯誤(如數據收集,記錄或輸入過程中導致的錯誤)會導致數據中的異常值。 例如:客戶的年收入是10萬美元,但意外地,數據輸入操作附加一個零。 現在的收入就是100萬美元,是10倍。 顯然,與其他人相比,這將是異常值。
測量誤差,這是異常值最常見的來源。 當使用的測量儀器出現故障時,會引起這種情況。 例如:有10臺稱重機。 其中9個是正確的,1個是錯誤的。 故障機器上的人員測量重量將高于或低于組內其余人員。 在故障機器上測量的重量可能導致異常值。
實驗誤差,異常值的另一個原因是實驗誤差。 例如:在7名跑步者的100米沖刺中,有一名選手錯過了跑的口令,讓他開始延遲。 因此,這使得跑步者的跑步時間比其他跑步者要多, 總運行時間可能是一個異常值。
故意異常值,通常在自我報告的措施中涉及敏感數據。 例如:通常青少年報告酒量,只有其中一小部分報告實際價值,這里的實際值可能看起來像異常值,因為其余的青少年正在假值。
數據處理錯誤,無論何時執行數據挖掘,我們從多個來源提取數據,某些操作或提取錯誤可能會導致數據集中的異常值。
抽樣錯誤,例如,衡量運動員的身高,錯誤地在樣品中包括幾名籃球運動員。 這種包含可能會導致數據集中的異常值。
自然異常值,當異常值不是人為的(由于錯誤),它是一個自然的異常值。 例如:注意到其中一家著名的保險公司,前50名財務顧問的表現遠遠高于其他人。 令人驚訝的是,這不是由于任何錯誤。 因此,每當與顧問一起執行任何數據挖掘活動時,我們都會分別對待此細分。
對待異常值的處理方法有以下幾種:
(1)簡單統計
如果使用pandas,我們可以直接使用describe()來觀察數據的統計性描述(只是粗略的觀察一些統計量),不過統計數據為連續型的,如下:
df.describe()或者簡單使用散點圖也能很清晰的觀察到異常值的存在。如下所示:
(2)3?原則
這個原則有個條件:數據需要服從正態分布。在3?原則下,觀測值與平均值的差別如果超過3倍標準差,那么可以將其視為異常值。正負3?的概率是99.7%,那么距離平均值3?之外的值出現的概率為P(|x-u| > 3?) <= 0.003,屬于極個別的小概率事件。如果數據不服從正態分布,也可以用遠離平均值的多少倍標準差來描述,多少倍的取值需要根據經驗和實際情況來決定。
(3)箱型圖
? ? ? ?這種方法是利用箱型圖的四分位距(IQR)對異常值進行檢測,也叫Tukey‘s test。箱線圖(Boxplot)也稱箱須圖(Box-whisker Plot),是利用數據中的五個統計量:最小值、第一四分位數、中位數、第三四分位數與最大值來描述數據的一種方法,它也可以粗略地看出數據是否具有有對稱性,分布的分散程度等信息,特別可以用于對幾個樣本的比較。
箱線圖具體含義如下,首先計算出第一四分位數(Q1)、中位數、第三四分位數(Q3)。中位數我們都知道,就是將一組數字按從小到大的順序排序后,處于中間位置(也就是50%位置)的數字。第一四分位數、第三四分位數是按從小到大的順序排序后,處于25%、75%的數字。
令 IQR=Q3?Q1,那么 Q3+1.5(IQR) 和 Q1?1.5(IQR) 之間的值就是可接受范圍內的數值,這兩個值之外的數認為是異常值;
在Q3+1.5IQR(四分位距)和Q1-1.5IQR處畫兩條與中位線一樣的線段,這兩條線段為異常值截斷點,稱其為內限;
在Q3+3IQR和Q1-3IQR處畫兩條線段,稱其為外限;
處于內限以外位置的點表示的數據都是異常值,其中在內限與外限之間的異常值為溫和的異常值(mild outliers),在外限以外的為極端的異常值(li)的異常值extreme outliers。這種異常值的檢測方法叫做Tukey’s method。從矩形盒兩端邊向外各畫一條線段直到不是異常值的最遠點 表示該批數據正常值的分布區間點,示該批數據正常值的分布區間。一般用“〇”標出溫和的異常值,用“*”標出極端的異常值。
?
Percentile = np.percentile(df['length'],[0,25,50,75,100]) IQR = Percentile[3] - Percentile[1] UpLimit = Percentile[3] + IQR*1.5 DownLimit = Percentile[1] - IQR*1.5也可以使用seaborn的可視化方法boxplot來實現:
f,ax=plt.subplots(figsize=(10,8)) sns.boxplot(y='length',data=df,ax=ax) plt.show()上圖中的菱形點就是異常值。
(4)基于模型檢測
? ? ? ?基于模型檢測的這種方法一般會構建一個概率分布模型,并計算對象符合該模型的概率,把具有低概率的對象視為異常點。如果模型是簇的集合,則異常是不顯著屬于任何簇的對象;如果模型是回歸時,異常是相對遠離預測值的對象。
? ? ? ?離群點的概率定義:離群點是一個對象,關于數據的概率分布模型,它具有低概率。這種情況的前提是必須知道數據集服從什么分布,如果估計錯誤就造成了重尾分布。比如特征工程中的RobustScaler方法,在做數據特征值縮放的時候,它會利用數據特征的分位數分布,將數據根據分位數劃分為多段,只取中間段來做縮放,比如只取25%分位數到75%分位數的數據做縮放,這樣減小了異常數據的影響。
優缺點:
(1)有堅實的統計學理論基礎,當存在充分的數據和所用的檢驗類型的知識時,這些檢驗可能非常有效;
(2)對于多元數據,可用的選擇少一些,并且對于高維數據,這些檢測可能性很差。
?
(5)基于近鄰度的離群點檢測
? ? ? ?統計方法是利用數據的分布來觀察異常值,一些方法甚至需要一些分布條件,而在實際中數據的分布很難達到一些假設條件,在使用上有一定的局限性。確定數據集的有意義的鄰近性度量比確定它的統計分布更容易。這種方法比統計學方法更一般、更容易使用,因為一個對象的離群點得分由到它的k-最近鄰(KNN)的距離給定。需要注意的是:離群點得分對k的取值高度敏感,如果k太小,則少量的鄰近離群點可能導致較低的離群點得分;如果K太大,則點數少于k的簇中所有的對象可能都成了離群點。為了使該方案對于k的選取更具有魯棒性,可以使用k個最近鄰的平均距離。
優缺點:
(1)簡單;
(2)缺點:基于鄰近度的方法需要O(m2)時間,大數據集不適用;
(3)該方法對參數的選擇也是敏感的;
(4)不能處理具有不同密度區域的數據集,因為它使用全局閾值,不能考慮這種密度的變化。
?
(6)基于密度的離群點檢測
? ? ? ?從基于密度的觀點來說,離群點是在低密度區域中的對象。基于密度的離群點檢測與基于鄰近度的離群點檢測密切相關,因為密度通常用鄰近度定義。一種常用的定義密度的方法是,定義密度為到k個最近鄰的平均距離的倒數。如果該距離小,則密度高,反之亦然。另一種密度定義是使用DBSCAN聚類算法使用的密度定義,即一個對象周圍的密度等于該對象指定距離d內對象的個數。
優缺點:
(1)給出了對象是離群點的定量度量,并且即使數據具有不同的區域也能夠很好的處理;
(2)與基于距離的方法一樣,這些方法必然具有O(m2)的時間復雜度。對于低維數據使用特定的數據結構可以達到O(mlogm);
(3)參數選擇是困難的。雖然LOF算法通過觀察不同的k值,然后取得最大離群點得分來處理該問題,但是,仍然需要選擇這些值的上下界。
?
(7)基于聚類的方法來做異常點檢測
基于聚類的離群點:一個對象是基于聚類的離群點,如果該對象不強屬于任何簇,那么該對象屬于離群點。
離群點對初始聚類的影響:如果通過聚類檢測離群點,則由于離群點影響聚類,存在一個問題:結構是否有效。這也是k-means算法的缺點,對離群點敏感。為了處理該問題,可以使用如下方法:對象聚類,刪除離群點,對象再次聚類(這個不能保證產生最優結果)。
優缺點:
(1)基于線性和接近線性復雜度(k均值)的聚類技術來發現離群點可能是高度有效的;
(2)簇的定義通常是離群點的補,因此可能同時發現簇和離群點;
(3)產生的離群點集和它們的得分可能非常依賴所用的簇的個數和數據中離群點的存在性;
(4)聚類算法產生的簇的質量對該算法產生的離群點的質量影響非常大。
?
(8)專門的離群點檢測
? ? ? ?其實以上說到聚類方法的本意是是無監督分類,并不是為了尋找離群點的,只是恰好它的功能可以實現離群點的檢測,算是一個衍生的功能。除了以上提及的方法,還有兩個專門用于檢測異常點的方法比較常用:One Class SVM和Isolation Forest,詳細內容不進行深入研究。
?
異常值的處理方法
檢測到了異常值,我們需要對其進行一定的處理。而一般異常值的處理方法可大致分為以下幾種:
-
刪除含有異常值的記錄:直接將含有異常值的記錄刪除;
-
視為缺失值:將異常值視為缺失值,利用缺失值處理的方法進行處理;
-
平均值修正:可用前后兩個觀測值的平均值修正該異常值;
-
不處理:直接在具有異常值的數據集上進行數據挖掘;
是否要刪除異常值可根據實際情況考慮。因為一些模型對異常值不很敏感,即使有異常值也不影響模型效果,但是一些模型比如邏輯回歸LR對異常值很敏感,如果不進行處理,可能會出現過擬合等非常差的效果
?
?
?
參考鏈接:https://blog.csdn.net/qq_41080850/article/details/83829045
參考鏈接:https://blog.csdn.net/qq_41080850/article/details/86695846
參考鏈接:https://blog.csdn.net/jyxmust/article/details/80659324
參考鏈接:https://www.jianshu.com/p/0127b187a7c2
參考鏈接:https://www.jianshu.com/p/500d5a20d4ec
參考鏈接:https://cloud.tencent.com/developer/article/1642280
參考鏈接:https://www.imooc.com/article/285304
參考鏈接:https://www.cnblogs.com/jasonfreak/p/5448385.html
參考鏈接:https://zhuanlan.zhihu.com/p/103070096
?
總結
以上是生活随笔為你收集整理的机器学习-特征工程中的数据预处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习-特征工程中的样本不均衡处理方法
- 下一篇: 风控业务-模型稳定性评价指标PSI