2014-01-15 3 views
1

Я новичок в Weka, у меня есть 2-классные данные для классификации. Я мог бы классифицировать его с помощью взвешивания (вхождения слов, TFIDF или присутствие слов). Я хотел, чтобы улучшить точность классификатора с использованием механизма выбора функции интегрирован в Weka следующим образом:Weka имеет выбор (InfoGainAttributeEval, ChiSquaredAttributeEval)

   BufferedReader trainReader = new BufferedReader(new FileReader(dataSource)); 
       trainInsts = new Instances(trainReader); 
       trainInsts.setClassIndex(trainInsts.numAttributes() - 1); 


// I am using the filter to convert the data from string to numeric 

        StringToWordVector STWfilter = new StringToWordVector(); 
        FilteredClassifier model = new FilteredClassifier(); 
        model.setFilter(STWfilter); 
        STWfilter.setOutputWordCounts(true); 


int n = 400; // number of features to select 
     AttributeSelection attributeSelection = new AttributeSelection(); 
    ranker = new Ranker(); 
    ranker.setNumToSelect(n); 

     infoGainAttributeEval = new InfoGainAttributeEval(); 
     attributeSelection.setEvaluator(infoGainAttributeEval); 
attributeSelection.setSearch(ranker); 

    attributeSelection.setInputFormat(trainInsts); 
    trainInsts = Filter.useFilter(trainInsts, attributeSelection); 

Evaluation eval = new Evaluation(trainInsts); 

     eval.crossValidateModel(model, trainInsts, folds, new Random(1)); 

Это работает, и я мог видеть небольшие улучшения в отношении использования стандартных методов взвешивания, таких как (появления слова). Я не уверен, правильно ли я сделал. Потому что я считаю, что метод выбора объектов аналогичен методам взвешивания. Также должен ли я указывать число «n», которое я должен иметь? это существенно влияет на результат классификатора, как это можно установить, например, когда у меня есть 3000 экземпляров, сколько функций я должен выбрать? также есть ли какой-либо способ в Weka, чтобы получить количество функций (слова), которые у меня есть в моих данных? например, с 2000 экземплярами, лучшая точность была при n = 400.

Любые комментарии?

Заранее спасибо

ответ

2

Aswering вопросы один за другим: «Потому что я чувствую, что метод отбора признаков такой же, как и методы взвешивания»

  1. Ну, они сильно отличаются. Во-первых, взвешивание не контролируется, оно не учитывает информацию о классе; в то время как выбор функции контролируется и направлен на выбор наиболее прогностических признаков (слов) в соответствии с метрикой качества, которая измеряет «связь» между функцией и классом. Во-вторых, большинство показателей выбора объектов (например, «Усиление информации») не учитывают веса, только вхождения - они показывают одинаковые результаты (оценки) для TFxIDF или для двоичных функций.
  2. «Также должен ли я указать номер функции« n », который должен иметь?« В WEKA вы можете установить пороговое значение для минимальной оценки, которую должна получить функция в метрике качества. Общее значение, которое поможет вам независимо от количества экземпляров, - 0.0. Это означает, что все функции, набравшие больше 0.0, будут сохранены, так как они предоставляют как минимум немного информации о прогнозе. Вы можете повысить этот рейтинг до 1.0 в случае получения информации; чем выше порог, тем меньше возможностей вы сохраните. Кроме того, эмпирическое правило, которое использовалось в литературе по классификации текста (см., Например, Yang & Pedersen paper), составляет около 1-10% характеристик. В Информационном Извлечении Salton заявила, что эти термины с частотой документа от 1 до 10% от числа документов были более дискриминирующими (но Информационный поиск - это поиск, который не контролируется).

Итак, подводя итог: вы делаете это правильно - продолжайте с выбором атрибута, но для простоты укажите 0.0 как минимальный порог для получения информации.

+0

Большое спасибо за профессиональный научный ответ. – Jeem

Смежные вопросы