Module: HybridForest::Trees::Impurity

Included in:
Entropy, GiniImpurity
Defined in:
lib/hybridforest/trees/impurity_metrics/impurity.rb

Instance Method Summary collapse

Instance Method Details

#compute(instances) ⇒ Object

Raises:

  • (NotImplementedError)


23
24
25
# File 'lib/hybridforest/trees/impurity_metrics/impurity.rb', line 23

def compute(instances)
  raise NotImplementedError, "Must be implemented by including classes"
end

#information_gain(children, parent_impurity) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/hybridforest/trees/impurity_metrics/impurity.rb', line 8

def information_gain(children, parent_impurity)
  return 0.0 if children.blank?

  parent_count = children.sum(&:count)
  children_impurity = children.sum do |child|
    weighted_impurity(child, parent_count)
  end
  parent_impurity - children_impurity
end

#weighted_impurity(instances_in_child, parent_count) ⇒ Object



18
19
20
21
# File 'lib/hybridforest/trees/impurity_metrics/impurity.rb', line 18

def weighted_impurity(instances_in_child, parent_count)
  weight = instances_in_child.count.to_f / parent_count
  compute(instances_in_child) * weight
end