@Override
	public double getImportance(List<Example> exampleCollection) {
		// assume winner 1 as positive, winner 2 as negative

		double startEntropy = getEntropy(exampleCollection);
		double entropyReminder = 0;

		List<AttributeValue> aValueList = getAttributeValues();
		List<Double> entropyList = new ArrayList<Double>();
		List<Double> sizeRatioList = new ArrayList<Double>();
		List<ArrayList<Example>> exampleSplit = new ArrayList<ArrayList<Example>>();

		for (AttributeValue aValue : aValueList) {
			exampleSplit.add(new ArrayList<Example>());

			int index = aValueList.indexOf(aValue);
			for (Example e : exampleCollection) {
				if (getExampleAttributeValue(e).equals(aValue)) {
					exampleSplit.get(index).add(e);
				}
			}
		}

		for (ArrayList<Example> eList : exampleSplit) {
			double subEntropy = getEntropy(eList);
			entropyList.add(subEntropy);
			sizeRatioList.add((double) eList.size()
					/ (double) exampleCollection.size());
		}

		for (int i = 0; i < aValueList.size(); i++) {
			entropyReminder += sizeRatioList.get(i) * entropyList.get(i);
		}

		return startEntropy - entropyReminder;
	}