我想使用集成分類器分類300個樣本(15個正樣本和285個負樣本,這意味着二元分類)。我從這些樣本中提取了18個特徵,它們都是數值的,並且這些特徵之間有一些相關性。我是MATLAB新手,嘗試使用「fitensemble」,但我不知道使用哪種方法:'AdaBoostM1','LogitBoost','GentleBoost','RobustBoost','Bag'或'Subspace'。由於功能的數量是18,我不知道天氣促進算法可以幫助我或沒有。另一方面,我對學習者的數量有問題。有多少學習者適合這個問題,我可以得到最佳的分類。我希望你的幫助。matlab集成分類器
1
A
回答
0
關閉我的頭頂我會說,集合分類器是一個矯枉過正,因爲你只有15個正面樣本,只有18個功能。對於這樣一個小的數據集,我會從一個k最近鄰分類器開始。如果這樣做效果不好,請嘗試支持向量機。
0
我在許多問題中使用集合技術。 此數據庫有數據不平衡問題。 如果數據不平衡的樣本數很少......使用機器學習將會非常棘手。 Svm對數據不平衡問題非常敏感。如果您使用單個svm,則需要更改不同類別中缺失樣本的成本。
如果你使用matlab函數,你將不能完全控制。你的問題應該也是多功能的。
從使用套袋技術開始:基礎學習者可以是svm,並且可以對主要類進行下采樣。使用小班的所有樣本和主要班級的15個樣本。每次培訓基礎學員時,可以隨機抽取主要班級的樣本。
要使用的基礎學習者的數量可以是:主要類中的樣本數量/次要類別中的樣本數量。
進行測試:使用所有基礎學習者測試樣本並找出平均值。
如果精度不高。這意味着分類問題很困難。最好使用adaboost。 有關於使用AdaBoost的好文章:
中提琴瓊斯的adaboost
這adaboost的非常好。將照顧數據不平衡和功能選擇
0
我認爲你應該儘可能得到像每個類100個觀測值,如果可能的話。它也將使超參數優化更穩健。這將有助於找出有多少學習者是合適的,哪種方法最好。但是從我有限的經驗來看,它並不會對你使用的這些不同的合奏方法產生巨大的差異。如果你沒有更多的數據,你可以循環考慮多少學習者是合適的(10:5:300),並且在大多數班級的100次重複隨機抽樣下取得分類準確性的平均值。
以下是一些可以構建循環的示例代碼(在R2016b或更高版本中使用fitcensemble)。
switch classifierParameters.method{1}
case 'Bag'
t = templateTree( 'MinLeafSize', classifierParameters.minLeafSize, ...
'MaxNumSplits', classifierParameters.maxNumSplits, ...
'SplitCriterion', classifierParameters.splitCriterion{1}, ...
'NumVariablesToSample', classifierParameters.numVariablesToSample);
classificationEnsemble = fitcensemble(...
predictors, ...
response, ...
'Learners', t, ...
'Method', classifierParameters.method{1}, ...
'NumLearningCycles', classifierParameters.numLearningCycles, ...
'KFold',7);
case {'AdaBoostM1','GentleBoost','LogitBoost'}
t = templateTree( 'MaxNumSplits', classifierParameters.maxNumSplits,...
'MinLeafSize', classifierParameters.minLeafSize);
% Always 'SplitCriterion', 'mse' for Boosting
classificationEnsemble = fitcensemble(...
predictors, ...
response, ...
'Learners', t, ...
'Method', classifierParameters.method{1}, ...
'NumLearningCycles',classifierParameters.numLearningCycles,...
'KFold',7,...
'LearnRate',classifierParameters.learnRate);
case 'OptimizeHyperparameters'
strct = struct('KFold', 10, 'Verbose',1, 'MaxObjectiveEvaluations',1000, 'SaveIntermediateResults', true, ...
'Repartition',false);
classificationEnsemble = fitcensemble(...
predictors, ...
response, ...
'OptimizeHyperparameters', 'all',... {'Method', 'LearnRate', 'MinLeafSize','MaxNumSplits','SplitCriterion', 'NumVariablesToSample'},...
'HyperparameterOptimizationOptions', strct);
otherwise
error('Classification method not recognized')
end
相關問題
- 1. MATLAB - 生成分類
- 2. 集成在Matlab
- 3. Matlab的集成
- 4. 集成在MATLAB
- 5. 集成MATLAB
- 6. 集成分類器與包裝方法
- 7. 集成微分方程在Matlab
- 8. 天真的分類器matlab
- 9. MATLAB的文本分類數據集
- 10. Matlab分類加載數據集
- 11. .net和matlab集成
- 12. 集成C#和Matlab
- 13. Matlab和Java集成
- 14. java和matlab集成
- 15. 集成C#與Matlab
- 16. 集成Matlab的編碼器使用C#
- 17. MATLAB生成器NE(.NET程序集)數據類型的問題
- 18. Rails + Apache solr分類集成
- 19. Drupal規則/分類集成?
- 20. 聚類和貝葉斯分類器Matlab
- 21. 瀏覽MATLAB集成函數
- 22. 在MATLAB中集成C庫
- 23. 誤解了MATLAB的集成
- 24. 將MATLAB與C集成#
- 25. MATLAB中集羣的形成
- 26. 在MATLAB集成罪(2個)
- 27. 在MATLAB中集成函數
- 28. matlab中的k最近鄰分類器
- 29. 兩個詞袋分類器,Matlab
- 30. 在matlab中更新NaiveBayes分類器