基于特征選擇的模型檢測方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及一種數(shù)據(jù)挖掘、機器學習、大數(shù)據(jù)、云計算、互聯(lián)網(wǎng)等技術(shù)領(lǐng)域,特別是 設(shè)及一種基于特征選擇的模型檢測方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)的快速發(fā)展,積累了海量的數(shù)據(jù),同時也給數(shù)據(jù)分析和數(shù)據(jù)挖掘帶來 了諸多問題:
[0003] 數(shù)據(jù)量大,維度高:一個數(shù)據(jù)集由實例數(shù)P和特征數(shù)N,兩者結(jié)合在一起給算法帶來 巨大的計算量;
[0004] 數(shù)據(jù)變化頻繁:互聯(lián)網(wǎng)快速的變化也產(chǎn)生了變化的數(shù)據(jù),運就需要重新生成數(shù)據(jù) 模型;
[0005] 噪聲數(shù)據(jù)和缺失數(shù)據(jù):互聯(lián)網(wǎng)數(shù)據(jù)缺乏嚴格的約定,數(shù)據(jù)參差不齊,一些算法對噪 聲數(shù)據(jù)敏感,難W得到穩(wěn)定的數(shù)據(jù)模型。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中互聯(lián)網(wǎng)數(shù)據(jù)計算量大、數(shù)據(jù)變化 頻繁W及難W得到穩(wěn)定的數(shù)據(jù)模型的缺陷,提供一種基于特征選擇的模型檢測方法。
[0007] 本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的:
[000引本發(fā)明提供了一種基于特征選擇的模型檢測方法,其特點在于,包括W下步驟:
[0009] Si、對原始數(shù)據(jù)集進行隨機分割,并將分割后的數(shù)據(jù)放入原始訓練集、驗證集和測 試集中;
[0010] &、采用原始訓練集訓練一個模型;
[oow S3、利用所述模型預(yù)測原始訓練集和驗證集,分別得到原始訓練集的預(yù)測誤差和 驗證集的預(yù)測誤差;
[0012] S4、刪除原始訓練集中的第j個特征W得到一個新的訓練集,利用所述模型預(yù)測所 述新的訓練集,得到新的訓練集的預(yù)測誤差,其中j的初始值為1;
[0013] S5、將j + 1賦值為j,并返回步驟S4,直至j取值為別寸執(zhí)行步驟S6,其中C表示原始數(shù) 據(jù)集的特征數(shù);
[0014] S6、計算C組新的訓練集的預(yù)測誤差與原始訓練集的預(yù)測誤差之間的距離;
[0015] &、對計算出的距離進行排序,并查找G個最小距離所對應(yīng)的特征,其中G表示刪除 粒度,G為自然數(shù),且1含G含C-1;
[0016] S8、將查找出的特征的序號保存至刪除特征序列中,并在原始訓練集和驗證集中 刪除查找出的特征;
[0017] S9、將C-G賦值為C,并返回步驟S2,直至C含G時執(zhí)行步驟Sio;
[0018] Sio、根據(jù)驗證集的預(yù)測誤差得到一個最小誤差值所對應(yīng)的序號K,將刪除特征序列 中的前K-1個特征從原始訓練集和測試集中刪除;
[0019] Sii、采用刪除前κ-1個特征后的訓練集訓練一個新的模型,并利用新的模型預(yù)測刪 除前Κ-1個特征后的測試集,W得到測試集的預(yù)測誤差。
[0020] 較佳地,步驟&中按照從大到小的順序?qū)τ嬎愠龅木嚯x進行排序。
[0021] 較佳地,步驟S2和步驟Sii中采用支持向量機訓練模型。
[0022] 較佳地,步驟S3中原始訓練集的預(yù)測誤差和驗證集的預(yù)測誤差均為均方根誤差。
[0023] 本發(fā)明的積極進步效果在于:本發(fā)明通過特征選擇有效去除噪聲特征和冗余特 征,提高分類的正確性,提高模型的泛化能力,對解決變化較大的數(shù)據(jù)集合的學習問題很有 幫助;本發(fā)明特征選擇的結(jié)果趨于穩(wěn)定,保證了結(jié)果的有效性,嵌入式特征選擇為后續(xù)的數(shù) 據(jù)挖掘泛化能力提供了保證,可W用戶自定義算法運行速度,解決高維度數(shù)據(jù)的嵌入式特 征提取計算量大的問題,在沒有損害原始數(shù)據(jù)集的泛化能力的條件下,同時在對回歸誤差 略有降低的情況下,大大精簡了原始數(shù)據(jù)集的規(guī)模。
【附圖說明】
[0024] 圖1為本發(fā)明的較佳實施例的基于特征選擇的模型檢測方法的流程圖。
【具體實施方式】
[0025] 下面通過實施例的方式進一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實 施例范圍之中。
[0026] 如圖1所示,本發(fā)明的基于特征選擇的模型檢測方法包括W下步驟:
[0027] 步驟101、對原始數(shù)據(jù)集進行隨機分割,并將分割后的數(shù)據(jù)放入原始訓練集、驗證 集和測試集中;
[0028] 步驟102、采用原始訓練集訓練一個模型;
[0029] 步驟103、利用所述模型預(yù)測原始訓練集和驗證集,分別得到原始訓練集的預(yù)測誤 差和驗證集的預(yù)測誤差;
[0030] 步驟104、刪除原始訓練集中的第j個特征W得到一個新的訓練集,利用所述模型 預(yù)測所述新的訓練集,得到新的訓練集的預(yù)測誤差,其中j的初始值為1;
[0031] 步驟105、將j + 1賦值為j,并返回步驟104,直至j取值為別寸執(zhí)行步驟106,其中C表 示原始數(shù)據(jù)集;
[0032] 步驟106、計算C組新的訓練集的預(yù)測誤差與原始訓練集的預(yù)測誤差之間的距離;
[0033] 步驟107、對計算出的距離進行排序,并查找G個最小距離所對應(yīng)的特征,其中G表 示刪除粒度,G為自然數(shù),且1含G含C-1;
[0034] 步驟108、將查找出的特征的序號保存至刪除特征序列里,并在原始訓練集和驗證 集中刪除查找出的特征;
[0(X3日]步驟109、將C-G賦值為C,并返回步驟102,直至C含G時執(zhí)行步驟110;
[0036] 步驟110、根據(jù)驗證集的預(yù)測誤差得到一個最小誤差值所對應(yīng)的序號K,將刪除特 征序列中的前K-1個特征從原始訓練集和測試集中刪除;
[0037] 步驟111、采用刪除前K-1個特征后的訓練集訓練一個新的模型,并利用新的模型 預(yù)測刪除前K-1個特征后的測試集,W得到測試集的預(yù)測誤差。
[0038] 其中,在步驟107中按照從大到小的順序?qū)τ嬎愕木嚯x進行排序,在步驟102和步 驟111中采用支持向量機訓練模型,步驟103中原始訓練集的預(yù)測誤差和驗證集的預(yù)測誤差 均為均方根誤差。
[0039] 支持向量機(SVM,Suppod Vector Machine)是一個有監(jiān)督的學習模型,通常用來 進行模式識別、分類W及回歸分析,是一種較為成熟的學習器。
[0040] 本發(fā)明中W支持向量機作為學習器,用于訓練模型,檢測算法中特征選擇后的預(yù) 測能力,利用彈性云計算資源,檢驗基于特征選擇的集成學習算法的優(yōu)劣,下面對本發(fā)明的 具體算法進行詳細說明:
[OOW 輸入為:原始數(shù)據(jù)集D(f 1,f2,…,fC,Target),刪除粒度G;
[0042]輸出為:被刪除的特征序列remove_list,算法預(yù)測的測試誤差Ete;
[00創(chuàng)說明如下:
[0044] fi表示第i號特征;
[0045] C表示原始數(shù)據(jù)集的特征數(shù);
[0046] D(fi,f2,···,fc,Target)表示原始數(shù)據(jù)集,Target為目標值,即數(shù)據(jù)的真實記錄的 結(jié)果;
[0047] G表示刪除粒度,每次刪除特征的個數(shù),G為自然數(shù),1 < G < C-1,G的取值視原始數(shù) 據(jù)集的特征數(shù)量的多少而定;
[004引 Dtr表示原始訓練集,Dv表示驗證集,Dt康示測試集;
[0049] E表示誤差;
[(K)加]model表示訓練模型;
[0051] train(D)表示W(wǎng)D為訓練集訓練模型函數(shù);
[0052] test(D,model)表示根據(jù)模型model預(yù)測數(shù)據(jù)集D函數(shù);
[0053] absQ表示求絕對值函數(shù);
[0054] delete (fi,D)表示從數(shù)據(jù)集D中刪除i號特征;
[0055] scxrtO表示從大到小排序函數(shù);
[0化6] index=min( vector)表示返回數(shù)組vector中最小值的序號;
[0057] 本發(fā)明的具體方法流程:
[0058] 步驟1、對原始數(shù)據(jù)集D進行隨機分割,并將分割后的數(shù)據(jù)放入原始訓練集Dtr、驗證 集Dv和測試集Dte中,并且 I>=Dtr U Dv U Dte,Dtr Π Dv η Dte=貧;
[0059] 步驟2、用原始訓練集0付訓練一個模型,111〇(161 =付日;[]1(0仕);
[0060] 步驟3、用上一步中得到的模型model預(yù)測原始訓練集得到原始訓練集的預(yù)測誤差 Etr = test(Dtr,model),預(yù)測驗證集得到驗證集的預(yù)測誤差Ev=test(Dv,model),保存Εν至 Ev_list(i),其中i取值從巧化-1,誤差由模型預(yù)測值和目標值之差得到;
[0061] 步驟4、刪除原始訓練集Dtr中的第j個特征W得到一個新的訓練集Dtr',利用所述 模型預(yù)測所述新的訓練集Dtr',得到新的訓練集的預(yù)測誤差Etr'=tesUDtr',model),將Etr' 保存至新的訓練集Dtr'的誤差數(shù)組Etr_list(j)中;
[0062] 步驟5、將j+1賦值為j,并返回步驟4,直至j取值為別寸執(zhí)行步驟6,其中C表示原始 數(shù)據(jù)集的特征數(shù);
[0063] 步驟6、計算新的訓練集Dtr'的誤差數(shù)組和原始訓練集Dtr的誤差數(shù)組之間的距離, 計算公式為:abs化付_list( j)-Etr);
[0064] 步驟7、按照從大到小順序?qū)τ嬎愠龅木嚯x進行排序,相應(yīng)公式為:sort(abs化tr_ 1 iSt (j )-Etr)),并查找G個最小距離所對應(yīng)的特征,將其作為被刪除的特征,其中xl、x2,…, xG表示被刪除的G個特征序號;
[0065] 步驟8、從原始訓練集中刪除查找出的特征,即delete(fXI,fX2,…,f祐,Dtr),從驗證 集中刪除查找出的特征,即delete(fxl,