特徵選擇演算法matlab
㈠ 求用互信息做特徵選擇的matlab代碼(MI),萬分感謝
%說明:
%追趕方法應用於三對角矩陣求解線性方程組的方法,並不適用於其他類型的矩陣。
%三對角矩陣的定義,構成要素。方程Ax
=
D
%B?的對角線元素(為1?n),對角元素為-1(2?N),C
+1對角線元素(1?N-1)。
%A
=
[2
-1
0
0
%-1
2
-1
0
%0
-1
2
-1
%0
0
-1
2]
=
[2
2
2
2]一個=
[0
-1
-1
-1];
=
[-1
-1
-1];
=
[1
0
0;
0];
N
=長度(b)條;
U0
=
0;
Y0
=
0;
%「追」的過程
L(1
)=
b
㈡ 求怎樣使用MATLAB編寫圖像檢索程序
有圖像檢索的演算法,可以實現難度不太大,你可以參考《圖像低層特徵提取與檢索技術》還有《基於內容的圖像檢索技術》,可先用matlab軟體模擬,圖像檢索的基本原理就是:
(1) 從圖像資料庫中通過特徵選擇演算法提取主要的顯著特徵(顏色、邊緣、直方圖)作為圖像的索引;
(2) 根據提取的特徵建立特徵和圖像資料庫之間的映射關系;
(3) 檢索演算法的設計,可以通過待檢索圖像和圖像資料庫中的圖像特徵之間的相似性和距離進行;
(4) 找出相似性和距離最近的圖像作為檢索結果;
還有你如果是取圖像中的部分圖像作為檢索內容,這個難度就有些大了,不如就整張檢索容易實現,因為你要檢索局部內容就需要在圖像庫中的每幅圖像中的局部提取特徵。
希望能幫到你!
看我回答的如此真誠,最好給我多加點分吧
㈢ 有懂CFS這個特徵選擇演算法的嗎能不能給講一下這個演算法的步驟因為不太明白最終的這個特徵子集是怎麼得出來
其實特徵子集是用搜索演算法選出來的,cfs只是一個評價演算法來的,先用搜索演算法選出特徵子集,然後用cfs評分(如果屬性之間關聯度低,屬性與類別關聯度高,那麼評分就高)
㈣ 如何用matlab實現特徵選擇
[V,D]=eig(A) (A)為矩陣
求出V為特徵向量,D為特徵值。
具體要怎麼選擇,我也不知道你的選擇要求是什麼,不知道你要選擇出什麼樣的特徵值。所以,自己寫一些程序對D進行挑選吧。
㈤ 怎麼評價matlab演算法的准確性,代碼怎麼寫
給出一組測試數據,看看能分類正確多少。這組測試數據的選取是有技巧的,你可以選擇和其他相似文獻同樣的測試數據以比較你的演算法和其他研究者的演算法。
㈥ CFS的特徵選擇演算法
基於關聯規則的特徵選擇演算法(correlation-based feature selection),是一種經典的過濾器模式的特徵選擇方法。源自論文「correlation-based feature selection for discrete and numeric class machine learning」,啟發地對單一特徵 對應於每個分類的作用進行評價,從而得到最終的特徵子集。特別地,特徵必須是離散的隨機變數,如果是數值型變數,需要首先執行指導的離散化方法來進行離散化特徵。
㈦ 特徵處理有哪些方法
、常用方法
1、時間戳處理
時間戳通常需要分離成多個維度比如年、月、日、小時、分鍾、秒鍾。但在很多的應用中,大量的信息是不需要的,因此我們在呈現時間的時候,試著保證你所提供的所有數據是你的模型所需要的,並且別忘了時區,加入你的數據源來自不同的地理數據源,別忘了利用時區將數據標准化。
2、離散型變數處理
舉一個簡單的例子,由{紅,黃,藍}組成的離散型變數,最常用的方式是吧每個變數值轉換成二元屬性,即從{0,1}取一個值,也就是常說的獨熱編碼(one-hot code)。
3、分箱/分區
有時候,將連續型變數轉換成類別呈現更有意義,同時能夠使演算法減少雜訊的干擾,通過將一定范圍內的數值劃分成確定的塊。舉個例子,我們要預測具有哪些特徵的人會購買我們網店的商品,用戶的年齡是一個連續的變數,我們可以將年齡分為15以下、15-24、25-34、35-44、45及以上。而且,不是將這些類別分成2個點,你可以使用標量值,因為相近的年齡表現出相似的屬性。
只有了解變數的領域知識的基礎,確定屬性能夠劃分成簡潔的范圍時分區才有意義,即所有的數值落入一個分區時能夠呈現出共同的特徵。在實際的運用中,當你不想讓你的模型總是嘗試區分值之間是否太近時,分區能夠避免出現過擬合。例如,如果你感興趣的是將一個城市作為總體,這時你可以將所有落入該城市的維度整合成一個整體。分箱也能減小小錯誤的影響,通過將一個給定值劃入到最近的塊中。如果劃分范圍的數量和所有可能值相近,或對你來說准確率很重要的話,此時分箱就不合適了。
4、交叉特徵
交叉特徵算是特徵工程中非常重要的方法之一,它將兩個或更多的類別屬性組合成一個。當組合的特徵要比單個特徵更好時,這是一項非常有用的技術。數學上來說,是對類別特徵的所有值進行交叉相乘。
假如擁有一個特徵A,A有兩個可能值{A1,A2}。擁有一個特徵B,存在{B1,B2}等可能值。然後,A&B之間的交叉特徵如下:{(A1,B1),(A1,B2),(A2,B1),(A2,B2)},並且你可以給這些組合特徵取任何名字。但是需要明白每個組合特徵其實代表著A和B各自信息協同作用。
5、特徵選擇
為了得到更好的模型,使用某些演算法自動的選出原始特徵的子集。這個過程,你不會構建或修改你擁有的特徵,但是會通過修建特徵來達到減少雜訊和冗餘。
特徵選擇演算法可能會用到評分方法來排名和選擇特徵,比如相關性或其他確定特徵重要性的方法,更進一步的方法可能需要通過試錯,來搜素出特徵子集。
還有通過構建輔助模型的方法,逐步回歸就是模型構造過程中自動執行特徵選擇演算法的一個實例,還有像Lasso回歸和嶺回歸等正則化方法也被歸入到特徵選擇,通過加入額外的約束或者懲罰項加到已有模型(損失函數)上,以防止過擬合並提高泛化能力。
6、特徵縮放
有時候,你可能會注意到某些特徵比其他特徵擁有高得多的跨度值。舉個例子,將一個人的收入和他的年齡進行比較,更具體的例子,如某些模型(像嶺回歸)要求你必須將特徵值縮放到相同的范圍值內。通過特徵縮放可以避免某些特徵獲得大小非常懸殊的權重值。
7、特徵提取
特徵提取涉及到從原始屬性中自動生成一些新的特徵集的一系列演算法,降維演算法就屬於這一類。特徵提取是一個自動將觀測值降維到一個足夠建模的小數據集的過程。
㈧ 語料庫 matlab 互信息特徵選擇
語料庫不清楚,但是特徵選擇還是比較清楚的,既然是特徵選擇,你要搞清楚你的語料庫的數據怎麼樣才算一維特徵,比如一個數據矩陣,一列代表一個特徵,一行表示一個樣本點。
互信息特徵選擇的方法也很多,要是不想搞清楚具體怎麼做的話,起碼要先搞清楚MATLAB程序的結構,究竟是讓你輸入一個什麼樣的數據(程序一般會告訴你一行數據是表示一維特徵還是一個樣本點),還有就是注意MATLAB程序說明中有沒有對數據的要求,比如規定只接受離散數據
㈨ 有哪些特徵選擇的工程方法,機器學習中
引用谷歌上的一篇論文《The ML Test Score》來回答,在這篇論文里,谷歌總結了非常具體的機器學習系統相關工程實踐准則,其中就包含了特徵與數據測試。
特徵期望值編寫到schema中:很多特徵的分布情況或數值期望是有一些先驗知識可以去校驗的。比如一般人身高都在0-3米的范圍內、英語中最常見的詞是」the」、整體的詞頻一般服從冪律分布等。我們可以把這些先驗領域知識,或是從訓練集中計算出的數學期望值編寫在數據schema文件中,後續對於新的輸入數據,構建完特徵後的模型訓練數據以及最終上線使用模型時都能進行自動化的檢查,避免因為數據不符合預期而導致的錯誤預測情況。
確保所有的特徵都是有用的:在之前的機器學習技術債論文中也有提到研發人員總是傾向於不斷往系統中添加新的特徵,尤其在上線時間比較緊迫的情況下,缺少細致的特徵選擇和有效性驗證工作。這會導致特徵數量越來越多,構建訓練集需要花費的時間也越來越長,後續的維護成本也會更高。所以跟業務代碼一樣,沒有幫助的特徵也要及時清理,輕裝前行。文中給出的方法基本是常見的特徵選擇法,比如計算特徵相關度,使用單獨或小批量特徵來跑模型看是否有預測能力等。
去除性價比低的特徵:計算添加任何一個特徵都需要消耗資源,包括生成和訓練模型開銷,模型預測開銷,甚至還要考慮到對上游數據的依賴,額外的庫函數引入,特徵本身的不穩定性等等。對於任何一個特徵的添加,都要綜合考慮這些開銷與它能帶來的性能提升來決定是否引入。如果只是非常有限的效果提升,我們應該果斷放棄那些過於復雜的特徵。
特徵必須遵循業務規范需求:不同的項目對機器學習系統可以使用的數據可能有不同的規范需求,比如可能有些業務禁止我們使用從用戶數據中推演出來的特徵。所以我們也需要從代碼工程層面把這些規范需求進行實現,以避免訓練與線上特徵出現不一致或違反了業務規范等問題。
數據流水線必須有完善的隱私控制:與上一條類似,機器學習系統從數據源獲取用戶相關隱私數據時已經通過了相應的控制校驗,後續在系統內部流水線做處理時我們也要時刻注意對隱私數據的訪問控制。比如各種中間數據集,數據字典的存放與訪問控制,上游系統的用戶數據刪除能夠級聯更新到機器學習系統的整個鏈路中,諸如此類需要特別注意的問題。
能夠快速開發新特征:一個新特徵從提出到實現,測試,上線的整個流程所需要花費的時間決定了整個機器系統迭代演進,響應外部變化的速度。要實現這一點,良好的工程結構、不同模塊的抽象設計都是非常重要的。文中沒有給具體的例子,不過我們可以借鑒sklearn中pipeline模塊設計的思想,以及類似FeatureHub這樣的開源系統的實現來不斷優化完善特徵工程實踐。
為特徵工程代碼寫相應的測試:在實驗探索階段,我們經常會寫完一個特徵之後,粗略地取樣一些數據,大致驗證通過後就認為這個特徵基本沒有問題了。但這其中可能就隱藏了不少bug,而且不像業務代碼中的錯誤,要發現這些bug極其困難。所以必須養成良好的習慣,在特徵開發階段就寫好相應的測試代碼,確保特徵的正確性,後續應對各種系統變更也都能很快通過測試來進行快速驗證。
以上。希望對題主有幫助。