package quickml.supervised.crossValidation.attributeImportance;
import com.google.common.collect.Sets;
import org.junit.Before;
import org.junit.Test;
import quickml.InstanceLoader;
import quickml.data.instances.ClassifierInstance;
import quickml.data.OnespotDateTimeExtractor;
import quickml.supervised.PredictiveModelsFromPreviousVersionsToBenchMarkAgainst.OldTreeBuilder;
import quickml.supervised.PredictiveModelsFromPreviousVersionsToBenchMarkAgainst.oldScorers.GiniImpurityOldScorer;
import quickml.supervised.PredictiveModelsFromPreviousVersionsToBenchMarkAgainst.oldTree.oldAttributeIgnoringStrategies.IgnoreAttributesWithConstantProbability;
import quickml.supervised.crossValidation.data.OutOfTimeData;
import quickml.supervised.crossValidation.lossfunctions.classifierLossFunctions.WeightedAUCCrossValLossFunction;
import java.util.List;
import java.util.Set;
public class AttributeImportanceFinderIntegrationTestOld {
private List<ClassifierInstance> instances;
@Before
public void setUp() throws Exception {
instances = InstanceLoader.getAdvertisingInstances();
}
@Test
public void testAttributeImportanceFinder() throws Exception {
System.out.println("\n \n \n new attrImportanceTest\n\n\n");
OldTreeBuilder modelBuilder = new OldTreeBuilder().scorer(new GiniImpurityOldScorer()).maxDepth(16).minCategoricalAttributeValueOccurances(11).attributeIgnoringStrategy(new IgnoreAttributesWithConstantProbability(0.7));
AttributeImportanceFinder<ClassifierInstance> attributeImportanceFinder = new AttributeImportanceFinderBuilder<ClassifierInstance>()
.modelBuilder(modelBuilder)
.dataCycler(new OutOfTimeData<ClassifierInstance>(instances, .25, 12, new OnespotDateTimeExtractor()))
.percentAttributesToRemovePerIteration(0.3)
.numOfIterations(3)
.attributesToKeep(attributesToKeep())
.primaryLossFunction(new WeightedAUCCrossValLossFunction(1.0))//NonWeightedAUCCrossValLossFunction())//AUCCrossValLossFunction(1.0))//new ClassifierLogCVLossFunction(.000001))
.build();
System.out.println(attributeImportanceFinder.determineAttributeImportance());
}
private Set<String> attributesToKeep() {
Set<String> attributesToKeepRegardessOfQuality = Sets.newHashSet();
attributesToKeepRegardessOfQuality.add("timeOfArrival-year");
attributesToKeepRegardessOfQuality.add("timeOfArrival-monthOfYear");
attributesToKeepRegardessOfQuality.add("timeOfArrival-dayOfMonth");
attributesToKeepRegardessOfQuality.add("timeOfArrival-hourOfDay");
attributesToKeepRegardessOfQuality.add("timeOfArrival-minuteOfHour");
attributesToKeepRegardessOfQuality.add("internalCreativeId");
attributesToKeepRegardessOfQuality.add("domain");
return attributesToKeepRegardessOfQuality;
}
}