參考:https://blog.csdn.net/oucpowerman/article/details/50390239
現今,當在“數據科學”領域開始引入各種概念的時候,著名的“鳶尾花(Iris)”花數據集可能是最常用的一個例子。1936年,R.A.Fisher在他的判別分析中創建和使用了Iris數據集。Iris現在可以從UCI機器學習庫中免費得到。
在一個監督分類任務中,它將會是一個很好的例子。Iris中的花被分為了三類:Setosa , Virginica , 和Versicolor .而這150個實例中的每一個樣本(單花)都有四個屬性:
- 萼片的寬度
- 萼片的長度
- 花瓣的寬度
- 花瓣的高度
(所有測量單位都是厘米)
可視化
當我們需要處理一個新的數據集時,采用簡單的可視化技術來解釋數據分析是非常有用的,因為人的眼睛在發現模式方面是非常強大的。然而,有時我們必須處理的數據由三個以上的維度構成,這樣就無法在一副圖像中表達出來了。為了克服這種限制,一種方式可以將屬性集分解成成對的屬性集,然后創建一個散點圖矩陣。在實踐中,“良好的且有用的”可視化技術的選擇高度依賴於數據的類型,特征空間的維數,和現實情況。
下面是Iris數據集的可視化的幾個例子,或多或少有用。
用來創建這些圖形的代碼可以在“可視化技術進行探索性數據分析”一節中的IPython部分Matplotlib例子中找到。
根據上面的那些圖,特別是散點圖和(1D)直方圖,我們已經可以看到,相對於三種不同的花,花瓣包含的辨別信息相對於花萼來說要更多一些,因為圖形中花萼的寬度和長度差別更小一些。那么,該信息就可以用於特征選擇,以去除噪聲和減少我們的數據集的大小。
工作流程圖
在下面的章節中,我們將會看到一些典型的監督學習任務的主要步驟,下圖可以讓我們直觀地了解它們是如何連接的。
原始數據采集和特征提取
當我們下載完Iris數據集后,我們注意到,它已經具有“良好的結構”了,看來是R.A.Fisher已經為我們做了一些初步的“預處理”了。沒有丟失的數據和具有數字化的特征,使得它可以被一種學習算法所使用。
然而,讓我們假設該Iris數據集的原始數據是一系列的圖像。在這種情況下,首先進行的預處理步驟(特征提取)可能涉及到這些圖像的縮放,平移,和旋轉,這樣才能夠獲得以厘米表示的萼片和花瓣的尺寸。
葉子閉塞就成為一個問題了,這種情況可能會導致數據丟失:如果數據集中的數據丟失,而算法沒有忽略丟失數據的選項,那么很多機器學習算法將無法使用這些數據集正常工作。如果稀疏性(也就是,數據集中空缺數據的數量)並不太高,那么通常的建議做法是除去任何包含缺失值的樣本的行,或者丟失數據的屬性列。另一種處理丟失的數據的策略是估算:使用某些統計數據來補充丟失的數據,而不是徹底清除掉丟失數據的樣本。對於分類數據,丟失的值可以從出現頻率最高的類別中得到;對於一些數值型的屬性,丟失的值可以使用樣品的平均值來代替。在一般情況下,通過k近鄰插補得到的值來替換丟失數據被認為是優於使用總體樣本均值進行替換的。
另外的一個關於特征提取的有趣方法可能包括花瓣和萼片的聚合運算,如花瓣或萼片寬度和高度之間的比率。
采樣
假設我們從原始數據中提取到了某些特征(在這里:萼片寬度,萼片長度,花瓣寬度和花瓣長度),我們現在將把我們的數據隨機分成訓練和測試數據集。訓練數據集將被用於訓練模型,而測試數據集的作用是評價每次訓練完成后最終模型的性能。
重要的是,我們對測試數據集只使用一次,這樣在我們計算預測誤差指標的時候可以避免過度擬合。過度擬合導致分類器在訓練的時候表現良好,但是泛化能力一般。這樣會使得在新的模式上面得出的預測誤差值相當高。因此,在模型的創建中使用一些像交叉驗證這樣的技術,就能夠提高分類性能。另外的一種策略是重新使用測試數據集來對模型進行評估,這需要創建第三個數據集,即所謂的驗證數據集。
交叉驗證
交叉驗證是評估特征選擇,降維,以及學習算法的不同組合的最有用的技術之一。交叉驗證有許多種,最常見的一種很可能是k折交叉驗證了。
在k-折交叉驗證中,原始訓練數據集被分成k個不同的子集(即所謂的“折疊”),其中,1個折疊被保留作為測試集,而另外的K-1個折疊被用於訓練模型。例如,如果我們設定k等於4(即,4折疊),原始訓練集的3個不同的子集將被用於訓練模型,而第四個折疊將用於評價。經過4次迭代后,我們可以計算出最終模型的平均錯誤率(和標准差),這個平均錯誤率可以讓我們看到模型的泛化能力如何。
規范化
為了能夠比較不同的屬性(比如,在聚類分析中通過計算距離或相似性),特別是當屬性具有不同的度量時(比如,溫度具有開爾文和攝氏表達方式),就需要用到規范化和其他的一些屬性變換技術。對特征進行恰當的變換,是大多數機器學習算法的一個要求。
“規范化”常用的代名詞是“最小-最大變換”:屬性值被變換到一個特定的范圍內,比如0到1之間。
另一種常見的方法是(Z值)“標准化”或“變換到單位方差”的過程:每個樣品減去屬性的平均值,然后除以標准差,這樣屬性將具有標准正態分布(μ= 0,σ= 1)的性質。
我們必須要記住其中很重要的一點:如果我們在訓練集上使用了任何一種規范化或變換技術,那么我們就必須在測試集和未知數據集上使用相同的方法。
更詳細的描述可以看另一篇的文章:About Feature Scaling and Normalization and the effect of standardization for machine learning algorithms .
特征選擇和降維
乍一看,特征選擇和降維之間的區別似乎違反直覺,因為特征選擇,最終會導致(降維)到一個較小的特征空間。在實踐中,術語“特征選擇”和“降維”之間的主要區別在於:我們在特征選擇中保持了“原始特征坐標軸”,而降維通常涉及變換技術。
這兩種方法的主要目的是為了去除噪聲,通過只保留“有用的”(可區分的)信息提高計算效率,並避免過度擬合(“維數災難”)。
在特征選擇中,我們感興趣的是只保留那些“有意義”的功能,也就是那些可以幫助建立一個“好”的分類器的功能。舉例來說,如果我們有一大堆描述花鳶尾的屬性(顏色,高度等),那么特征選擇可能最終會只保留4種測量數據,也就是描述花瓣和萼片尺寸的數據。或者,如果我們一開始就有了4個屬性(萼片和花瓣長度和寬度),我們可以進一步縮小我們的選擇,只保留花瓣的長度和寬度,從而將我們的特征空間從4維減少到2維。特征選擇往往是基於領域知識的(可以看到,咨詢領域內的專家對特征選擇總是有幫助的),或探索性分析的,如我們在前面看到的直方圖或散點圖。想要找到一個特定大小的特征子集,用來最優化分類模型的性能,往往需要一個窮舉搜索——搜索采樣的所有可能組合。然而,在實際使用中,由於運算的限制,這種方法可能不具有可行性。所以常用序列特征選擇或遺傳算法來選出一個次優的特征子集。
常用的降維技術是線性變換,如主成分分析(PCA)和線性判別分析(LDA)。PCA可以看成是一個“無監督”算法,因為它“忽略”了類別,它的目標是找到數據集中方差最大的方向(所謂的主成分)。相對於PCA,LDA是帶“監督”的,它計算出多個類之間的最大區分的方向(“線性判別式”)。
關於PCA和LDA更多細節可以在這兩篇文章中找到:
- Linear Discriminant Analysis bit by bit
- Implementing a Principal Component Analysis ( PCA ) in Python step by step
下面的圖像顯示了通過線性判別分析(LDA)將Iris數據轉換到二維特征子空間后的情形。黑線表示了線性決策邊界,它將特征空間分成了3個決策區域(R1,R2,R3)。在此決策區域的基礎上,新的觀測結果可被分為三個不同的花種之一:R1 → Virginica , R2 → Versicolor , and R3 → Setosa .
學習算法和超參數調整
學習算法各式各樣,數量龐大,有各種文章和應用對最流行的算法做了詳細的介紹。下面僅是對四種常用的監督學習算法所做的一個非常簡短的總結:
- 支持向量機(SVM)是利用采樣超平面分隔兩個或多個類的分類方法。最終,具有最大間隔的超平面被保留,其中“間隔”指的是從采樣點到超平面的最小距離。組成間隔的采樣點稱為支持向量,從而建立起最終的SVM模型。
- 貝葉斯分類器是基於一個統計的模型(即貝葉斯定理:后驗概率的計算基於先驗概率和所謂的似然)。一個朴素貝葉斯分類器假定所有屬性都是條件獨立的,因此,計算似然可以簡化為計算帶有特定類標簽的獨立屬性的條件概率的乘積就行了。
- 人工神經網絡(ANN)是模仿人或動物“大腦”的圖類分類器,其中相互連接的節點模擬的是神經元。
- 決策樹分類器 是樹形圖,其中,圖中的節點用於測試某個特征子集的特定條件,然后分支把決策分割到葉子節點上。圖中的樹葉表示最低級別,用於確定類的標簽。通過最小化基尼雜質,或者最大化信息增益可以訓練成為最佳樹。
可以使用Iris得到一個非常簡單的決策樹,像這樣:
如果分類器或者評估器的參數不是從機器學習步驟中直接得到的,而是利用單獨的優化得到,那么這些參數稱為超參數。超參數優化的目標是提高分類器的性能,實現學習算法的良好泛化能力。一種常用的超參數優化方法是網格搜索。通常情況下,網格搜索是通過對候選參數進行窮舉搜索(相對於隨機參數優化)而實現的。當模型的所有參數組合都被評估之后,最佳組合將被保留下來。
預測誤差指標和模型選擇
混淆矩陣是一種用於性能評估的方便工具,它是一個方陣,里面的列和行存放的是樣本的實際類vs預測類的數量。
“垃圾郵件與火腿”分類問題的混淆矩陣可以是這樣的:
通常,使用預測“准確率”或“差錯率”來報告分類性能。准確率定義為正確分類的樣本占總樣本的比值;它經常被用作特異性/精密性的同義詞,盡管它的計算方法不同。准確率的計算公式是:
其中,TP =真陽性,TN =真陰性,P =陽性,N =陰性。
分類模型的經驗誤差可以通過計算1-准確率得到。
然而,如何選擇一個適當的預測誤差度量是高度依賴於具體問題的。在“垃圾郵件”分類的情況中,我們更加關注的是低誤報率。當然,垃圾郵件被分成了火腿肯定是煩人的,但不是那么糟糕。要是一封郵件被誤分為垃圾郵件,而導致重要信息丟失,那才是更糟糕的呢。
在如“垃圾郵件”分類的二元分類問題中,有一種方便的方式來調整分類器,稱為接受者操作特性(ROC或ROC曲線)。
分類性能的其他指標還有靈敏度,特異性,查全率和精密性。
- 靈敏度(同查全率)和精密性用來評估二元分類問題中的“真陽性率”:也就是對“陽性/真”預測准確的概率(比如,當試圖預測某種疾病的時候,如果一個病人長了這種病,那么正確的預測出這個人長了這種病,就是“陽性/真”)。
- 特異性描述了二元分類問題中的“真陰性率”:這指的是對“假/陰性”情況作出正確預測的概率(例如,在試圖預測疾病時,對一個健康者,沒有預測到疾病,就是這種情況)。
在一個典型的監督學習的工作流程中,為了能夠選出一個具有滿意性能的模型,我們將會評估特征子空間、學習算法和超參數的各種不同的組合。正如前面提到的,交叉驗證法是一種好的方法,可以避免過擬合我們的訓練數據。
原文: Predictive modeling, supervised machine learning, and pattern classification - the big picture(翻譯/Fashionxu 審校/周建丁)