我有一個具有10個屬性的數據集,那麼我想減少數據集中的屬性,我想應用遺傳算法,但我有一點點對這個概念感到困惑,所以你可以給我任何例子。如何應用遺傳算法來減少數據集中的屬性
回答
如果您的目標是隻選擇最相關的屬性,那麼您絕對可以依賴遺傳算法,其中您的遺傳表示(也稱爲「遺傳密碼」或「染色體」)是一個二進制字符串。這意味着某個屬性可以存在(選擇)或不存在(未選中)。
你的遺傳密碼確實將是長度爲10的二進制字符串,你可以通過運行下面的循環選擇屬性的最佳設置:
- 導入原始數據集
- 從數據集選擇重要的特徵(根據在步驟#2(*)
- 列車選擇的特徵,在步驟#1由遺傳密碼給出)
- 收縮數據集(進口)和預測的分類
- 評估適應度函數(例如錯誤率)
- 轉到第2步,直到收斂(即幾代人的最大數目已創建)
所以GA做什麼,在更實際的方面,就是要創造N
第一人口個人。對於每個人來說,由於這是第一批人羣,遺傳密碼在Matlab中默認是純隨機的(或者你可以編寫一個解釋如何選擇初始羣體的函數),並且對於每個人來說,步驟#3,#4和# 5被評估。一旦每個個體與某個適應值相匹配,GA就會通過遺傳算子(主要是交叉,精英主義和選擇)創建下一代(即下一代個體的遺傳密碼)。對於下一代個體,這樣的遺傳密碼從上一代的「最佳」(即,如果你的問題是最小化問題的最低適應值)開始評估。您可能需要檢查遺傳操作者,以及他們如何工作以更好地瞭解這種「生殖」過程。
如果你在Matlab中使用ga()
函數,那麼輸入參數nvars
將等於10; IntCon
參數將具有值[1:10]
,因爲您希望它們全部爲0或1;並且輸入參數option
(功能gaoptimset()
的輸出將具有以下參數):上限是具有10個的向量,而下限是具有10個零的向量。 ga()
函數將您的問題視爲最小化問題,所以我建議使用錯誤率作爲適應函數(或其他旨在最小化的其他方法)。
要指定一個二進制羣體,您可以依賴gaoptimset()
中的PopulationType
輸入,但我從未使用它,所以我建議您閱讀此功能的幫助(使用gaoptimset()
您可以指定羣體中的個人數量以及GA在停止之前創建的代數......以及其他許多參數!)。 (*)注意:收縮數據集並不一定意味着您實際上通過遺傳算法刪除標記爲0
的列(屬性)。這可能會弄亂模式之間的不相似性/距離評估。在評估不相似性度量時,您可以使用遺傳代碼作爲模式的權重:10-特徵模式乘以10-位遺傳密碼和將乘以零的特徵將不具有任何重要性(權重)在不相似的措施。
RapidMiner Studio在默認存儲庫中附帶了一些遺傳算法樣本。
//樣品/流程/ 04_Attributes/10_EvolutionaryFeatureSelection //樣品/流程/ 04_Attributes/12_EvolutionaryWeighting //樣品/流程/ 06_Meta/06_EvolutionaryParameterOptimization
的Optimize Selection (Evolutionary)
運營商可能是使用運營商。如果您查看該操作員的幫助,則可以從那裏加載示例流程。該過程選擇最佳屬性以最大化分類模型的性能。
我相信你可以爲你的問題使用二進制遺傳算法特徵選擇。
也許該文件將幫助你在你的問題。他們甚至在代碼中包含他們的論文以便進一步理解。
- 1. 多個域,如何使用相同的遺傳算法屬性
- 2. 如何減少使用遺傳算法的噪聲圖像的錯誤?
- 3. 使用數據屬性減少標記
- 4. 遺傳屬性下的最大集合
- 5. 如何使用屬性來減少我的屬性中的樣板?
- 6. 遺傳算法的數獨
- 7. 遺傳算法
- 8. 地圖減少TB數據的算法?
- 9. 的遺傳算法
- 10. 算法減少
- 11. 結合收集減少其屬性
- 12. 遺傳算法軟件應用
- 13. 遺傳算法 - 子集求和問題
- 14. 實現子集和與遺傳算法
- 15. DEAP遺傳算法
- 16. Python遺傳算法
- 17. 遺傳算法庫
- 18. 減少算法時間的複雜性
- 19. TSPTW用遺傳算法
- 20. 要使用遺傳算法
- 21. 遺傳算法如何被用來促進機器學習?
- 22. CrossFilter - 如何使用「關鍵」數據來減少方法?
- 23. 如何使用遺傳算法求解線性方程組?
- 24. Python:遺傳算法性能弱
- 25. 遺傳算法和細胞遺傳算法有什麼區別
- 26. 如何在應用css分頁符屬性時減少間隙
- 27. 遺傳算法的製作
- 28. Sessions Scheduling的遺傳算法
- 29. SVM後的遺傳算法
- 30. 高效的遺傳算法