private double informationGain(String attribute, Map<String, String> specifiedAttributes) {
    double sum = entropy(specifiedAttributes);
    double examplesCount = records.count(specifiedAttributes);
    if (examplesCount == 0) return sum;

    Map<String, Set<String>> decisions = records.extractDecisions();

    for (String decision : decisions.get(attribute)) {
      double entropyPart = entropy(attribute, decision, specifiedAttributes);
      // logger.info("entropyPart is --> {}.", entropyPart);
      double decisionCount = records.countDecisions(attribute, decision);

      sum += -(decisionCount / examplesCount) * entropyPart;
    }

    return sum;
  }