機器學習工作流程從資料清洗到模型調優

2022-11-24 19:52:03 字數 1780 閱讀 3465

資料準備/特徵分析

樣本整定

機器學習

模型檢驗

結果反饋優化

重要特徵評估

取平均值、中值、分位數、眾數、隨機值等,效果一般,相當於人為的新增了噪聲。

使用其它變數**模型計算出缺失值。

把變數對映到高維。

刪除缺失值過多的屬性或例項,慎重刪除。

工具h2o.ai可以顯示資料每個屬性的缺失值情況,如下圖:

工具weka要求資料是arff的,但也支援csv檔案,在weka中arff檔案有優勢,可以設定屬性的型別,其中weka有四種基本型別(numeric數值型、 nominal分型別, string字串型

和 date日期型別)。

有時屬性的區間跨度太大會影響分類的效能,可能導致過重視跨度的屬性。例如,屬性a的區間是[1,10000],屬性b的區間是[1,10],顯然屬性a的影響要大於屬性b。可以採用規範化的方法解決問題,把每個屬性值除以它的最大跨度,就按比例規劃化到了[0,1]區間。

有時資料中存在中文字元,演算法無法進行,可以用python編寫一個指令碼,利用字典這種資料結構,key值存中文字元,value值存一個自增的index,注意每次加入新的鍵值對時,判斷新key值

not in 已有的鍵表,已保證相同的中文字元對應唯一的index值。

對於屬性名相同的屬性,採用重新命名即可。

計算每個屬性對決策屬性的依賴度,若屬性集a的依賴度大於等於屬性集b的依賴度,並且屬性集b包含屬性集a,則屬性集合b - a 的屬性為冗餘屬性,刪除即可。計算屬性依賴度有很多方法,有粗糙集,資訊熵等方法。

金融資料真實樣本有240列屬性,使用工具weka的監督方法attributeselection屬性選擇功能,可以把屬性集約簡到42條,還可以繼續進行屬性約簡,手動刪除,直到結果最優

經典的機器學習模型有樸素貝葉斯、svm支援向量機、決策樹、lr線性迴歸、ibk等。

注意每種模型的應用要求,比如svm不支援處理日期型別的屬性,某些演算法不可以處理數值型的決策類等等。

有時模型組合的方法的效果會好得多,比如gbdt或者rf,都是將簡單的模型組合起來,效果比單個更復雜的模型好。組合的方式很多,隨機化(比如random forest),boosting(比如gbdt)都是其中典型的方法。

模型的**結果都差不多,通過十折交叉驗證就可以得到這個機器學習模型的大致效能,需要進行下一步的模型的調優操作。

為什麼需要auc指標?舉個例子,若有100個樣本,有90個正樣本和10個負樣本組成,若分類器簡單粗暴的將所有的樣本分為正類,準確率是90%,這顯然不是我們需要的結果,所以準確率不能很全面的**分類的效能。

定義:分析結果採用auc來評判模型的效果。auc即以false positive rate為橫軸,true positive rate為縱軸的roc

(receiver operating characteristic)curve下方的面積的大小。

m 為正樣本個數,n 為負樣本個數,m * n 為正負樣本對的個數。si為第i個正負樣本對的得分,定義如下:

又名查準率,precision = tp / ( tp + fp ) 。

又名查全率,recall = fp / ( tp + fn ) 。

迭代找到最優的引數。

最簡單的方法就是分別計算 crossvalidationerror(jcv) 跟trainingerror(jtrain):當jcv跟jtrain差不多且jtrain較大時,當前模型更可能存在欠擬合;當jcv遠遠大於 jtrain且jtrain較小時,當前模型更可能存在過擬合。

解決方案:

新增其它特徵

新增多項式特徵

減小正則化引數