मध्यम 0 हल किए गए 0% स्वीकृति

Information Gain

Compute how much splitting on a feature reduces entropy, the criterion behind ID3 decision trees.

आप क्या सीखेंगे

  • Compute entropy before and after a split
  • Weight subsets by their size
  • Pick the most informative feature

समस्या

अनुवाद दिखाएँ

Entropy measures the uncertainty of a set of labels: H(S) = -Σ pₖ × log₂(pₖ), where pₖ is the fraction of labels of class k. Information gain is how much entropy drops when you split the set by a feature:

IG = H(labels) - Σ (|Sᵥ| / |S|) × H(Sᵥ)

where Sᵥ contains the labels of the samples whose feature equals v. Decision trees pick the feature with the highest gain.

Implement information_gain(feature, labels).

Input

feature: The feature value of each sample.

labels: The class label of each sample (same length).

Output

Return the information gain in bits, as a decimal number.

सीमाएँ

1 ≤ length ≤ 10,000

Each value and label is 1 to 20 characters

उदाहरण

उदाहरण 1
इनपुट:
labels = ["no", "no", "yes", "yes"]
feature = ["sunny", "sunny", "rain", "rain"]

अपेक्षित आउटपुट:
expected = 1.0
इनपुट:
std::vector<std::string> labels = {"no", "no", "yes", "yes"};
std::vector<std::string> feature = {"sunny", "sunny", "rain", "rain"};

अपेक्षित आउटपुट:
double expected = 1.0;
इनपुट:
string[] labels = new string[] {"no", "no", "yes", "yes"};
string[] feature = new string[] {"sunny", "sunny", "rain", "rain"};

अपेक्षित आउटपुट:
double expected = 1.0;

व्याख्या

The labels are half yes and half no, so H = 1 bit. Splitting by weather gives two pure groups (H = 0 each), so the gain is 1 - 0 = 1: the feature tells you everything.

उदाहरण 2
इनपुट:
labels = ["yes", "yes", "no", "no"]
feature = ["a", "b", "a", "b"]

अपेक्षित आउटपुट:
expected = 0.0
इनपुट:
std::vector<std::string> labels = {"yes", "yes", "no", "no"};
std::vector<std::string> feature = {"a", "b", "a", "b"};

अपेक्षित आउटपुट:
double expected = 0.0;
इनपुट:
string[] labels = new string[] {"yes", "yes", "no", "no"};
string[] feature = new string[] {"a", "b", "a", "b"};

अपेक्षित आउटपुट:
double expected = 0.0;

व्याख्या

Each group a and b still has one yes and one no (H = 1), so the remainder is 0.5 × 1 + 0.5 × 1 = 1 and the gain is 1 - 1 = 0: the feature is useless.

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।