㈠ 如何進行變數篩選和特徵選擇(三)交叉驗證
交叉驗證是機器學習中常用的一種驗證和選擇模型的方法,常用的交叉驗證方法是K折交叉驗證。將原始數據分成K組(一般是均分),將每個子集分別作一次驗證集,其餘的K-1組子集數據作為訓練集,這樣會得到K個模型,k個模型的驗證誤差的均值即作為模型的總體驗證誤差,取多次驗證的平均值作為驗證結果,誤差小的模型則為最優模型。k一般大於等於2,一般而言 k=10 (作為一個經驗參數)算是相當足夠了。
採用的R包是bestglm,主要函數是bestglm()。
結合一個二元Logistic回歸的例子,分享如何運用R軟體實現10折交叉驗證。
搭建完模型,運用predict()得到預測概率,保存測試集的預測概率。
函數中IC = "CV"表示採用交叉驗證,CVArgs 表示交叉驗證的參數,k=10表示分成10份,REP=1是每次一份作為測試集,family=binomial 表示因變數為二項分布。該函數是利用最優子集回歸的原理,對於不同數量的特徵,都用k折交叉驗證法求一個驗證誤差,最後比較驗證誤差與特徵數量的關系,選取最優變數。
將返回結果的cv列作圖,可以看到在模型變數個數為3的時候,驗證誤差變得很小,之後隨著變數個數增加,誤差變化不大。利用coef()函數可查看最優變數。
根據篩選的最優變數,搭建模型,運用predict()得到預測概率。
根據ROC曲線面積對比兩個模型在測試集上的預測性能,檢驗P值>0.05,且AUC均接近於1,說明兩模型預測性能一致且很好,但交叉驗證得到的模型變數為3個,模型簡潔,在實際運用中效率更高,因此可選擇交叉驗證的模型作為最優模型。
在構建模型做變數篩選方法比較多,在前面推文中給大家介紹了2個,可以翻看一下
如何進行高維變數篩選和特徵選擇(一)?Lasso回歸
如何進行變數篩選和特徵選擇(二)?最優子集回歸
以上就是本次跟大家分享的內容,覺得有用的話點贊、轉發哦~
㈡ 大數據建模過程中的數據處理
數據是建模的基礎,也是研究事物發展規律的材料。數據本身的可信度和處理的方式將直接決定模型的天花板在何處。一個太過雜亂的數據,無論用多麼精煉的模型都無法解決數據的本質問題,也就造成了模型的效果不理想的效果。這也是我們目前所要攻克的壁壘。但是,目前我們市場對的數據或者科研的數據並不是完全雜亂無章的,基本都是有規律可循的,因此,用模型演算法去進行科學的分析,可以主觀情緒對決策的影響。所以數據是非常重要的一部分。那麼,接下來我們就詳細說一下數據的處理與分析。
當看到數據的時候,首要做的並不是進行清洗或者特徵工程,而是要觀察數據所呈現的基本狀態,以及進行數據與任務的匹配,這就需要我們之前所提到的業務常識與數據敏感度的能力了,只有通過完整的數據分析,才能夠更為精準的做符合需求的特徵工程工作。數據的基本特徵分析主要從以下幾個方面進行:
1. 確定類型 :數據集的類型包括文本,音頻,視頻,圖像,數值等多種形式交織而成,但是傳入模型中的都是以數值形式呈現的,所以確定數據的類型,才可以確定用什麼方法進行量化處理。
2. 驗證可靠度 :由於數據的收集的方式不盡相同,數據來源的途徑多種多樣。所以數據的可信度判斷也顯得尤為重要。而數據可靠性校驗的方法非常多。例如:根據收集途徑判斷,如果調查問卷也可根據問卷設計的可靠度進行判斷,當然轉化為數值後也可輔助一些模型進行精細校驗等。採用何種方式,取決於獲取數據的方式,數據類型以及項目的需求。
3. 樣本定義 :需要確定樣本對應的每一個特徵屬性的內容是什麼。例如:樣本的容量,樣本的具體內容,樣本所包含的基本信息等。
4. 任務匹配: 在任務分析中我們把項目拆分成了小的子問題,這些問題有分類,回歸,關聯關系等。也就是每個問題的所達成的目標是不一樣的,那麼我們要從數據集中篩選出符合子問題的數據,也就是選好解決問題的原料,很多情況下是靠你的數據敏感度和業務常識進行判斷的。
5. 數據集的劃分: 由於模型搭建完成之後有一個訓練與驗證評估的過程,而目前最為簡單的一種驗證手段就是就是交叉驗證,因此我們需要將數據集拆分成訓練集和測試集,這一步僅僅確定訓練集和測試集的比例關系,例如:70%的數據用於訓練,30%的數據用於測試。
數據的清洗是一件非常繁瑣且耗費時間的事情,基本可以佔到一個工程的30%到50%的時間。並且數據的清洗很難有規律可循,基本上依託於你對數據的基本分析與數據敏感度。當然,當你看的數據夠多,數據的清洗的經驗也就越多,會為你今後哦搭建模型提供很多遍歷,我們這里提供一些常見的清洗的點。
清洗異常數據樣本需要考慮到方方面面,通常情況下我們從以下方面:
1.處理格式或者內容錯誤:
首先,觀察時間,日期,數值等是否出現格式不一致,進行修改整理;其次,注意開頭,或者中間部分是否存在異常值;最後,看欄位和內容是否一致。例如,姓名的內容是男,女。
2. 邏輯錯誤清洗:
去重:通常我們收集的數據集中有一些數據是重復的,重復的數據會直接影響我們模型的結果,因此需要進行去重操作;
去除或者替換不合理的值:例如年齡突然某一個值是-1,這就屬於不合理值,可用正常值進行替換或者去除;
修改矛盾內容:例如身份證號是91年的,年齡35歲,顯然不合理,進行修改或者刪除。
3. 去除不要的數據: 根據業務需求和業務常識去掉不需要的欄位
4. 關聯性錯誤驗證: 由於數據來源是多個途徑,所以存在一個id,進行不同的數據收集,可通過,id或者姓名進行匹配合並。
該問題主要出現在分類模型中,由於正例與負例之間樣本數量差別較大,造成分類結果樣本量比較少的類別會大部分分錯。因此需要進行數據不平衡處理。常用的處理方法有:向上采樣、向下采樣、數據權重復制、異常點檢測等。
㈢ R語言 建立決策樹前 如何從候選的幾十個變數中篩選建模需要的變數
自變數量的篩選是根據其卡方顯著性程度不斷自動生成父節點和子節點,卡方顯著性越高,越先成為預測根結點的變數(建模需要的變數),程序自動歸並預測變數的不同類