Bird
Raised Fist0
ML Pythonml~8 mins

Polynomial features in ML Python - Model Metrics & Evaluation

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Metrics & Evaluation - Polynomial features
Which metric matters for Polynomial Features and WHY

When using polynomial features, the main goal is to improve the model's ability to capture complex patterns. The key metrics to watch are training loss and validation loss. These tell us how well the model fits the training data and how well it generalizes to new data.

Polynomial features can cause the model to fit training data very well (low training loss), but if validation loss is high, it means the model is overfitting. So, tracking both losses helps us find the right polynomial degree.

Confusion Matrix or Equivalent Visualization

Polynomial features are often used in regression or classification. For classification, we can use a confusion matrix to see prediction results.

    Confusion Matrix Example:

          Predicted
          0    1
    True  --------
     0   | 50 | 10 |
     1   | 5  | 35 |

    TP = 35, FP = 10, TN = 50, FN = 5
    

From this, we calculate precision and recall to understand model quality.

Precision vs Recall Tradeoff with Polynomial Features

Using polynomial features can increase model complexity. This can improve recall (finding more true positives) but might lower precision (more false positives).

For example, in a medical test, a high-degree polynomial might catch more sick patients (high recall) but also wrongly label healthy people as sick (low precision). We must balance these based on what matters more.

Good vs Bad Metric Values for Polynomial Features

Good: Training and validation losses are close and low. Precision and recall are balanced and high (e.g., > 0.8). This means the model generalizes well without overfitting.

Bad: Training loss is very low but validation loss is high. Precision or recall is very low (e.g., < 0.5). This shows overfitting or underfitting due to wrong polynomial degree.

Common Pitfalls with Polynomial Features and Metrics
  • Overfitting: High-degree polynomials fit training data too well but fail on new data.
  • Accuracy Paradox: Accuracy can be misleading if classes are imbalanced.
  • Data Leakage: Using test data to choose polynomial degree causes overly optimistic metrics.
  • Ignoring Validation: Only looking at training loss hides overfitting problems.
Self-Check Question

Your model with polynomial features has 98% accuracy but only 12% recall on the positive class (e.g., fraud). Is this good for production?

Answer: No. The model misses most positive cases (low recall). Even with high accuracy, it fails to catch important cases. You should improve recall before using it in production.

Key Result
Polynomial features improve model fit but require balancing training and validation loss to avoid overfitting.

Practice

(1/5)
1. What is the main purpose of using PolynomialFeatures in machine learning?
easy
A. To create new features by adding powers and combinations of existing features
B. To reduce the number of features in the dataset
C. To normalize the data between 0 and 1
D. To split the dataset into training and testing sets

Solution

  1. Step 1: Understand the role of PolynomialFeatures

    PolynomialFeatures generates new features by raising existing features to powers and combining them, helping models learn curves.
  2. Step 2: Compare with other options

    Feature reduction, normalization between 0 and 1, and splitting into training/testing sets describe different preprocessing steps, not feature creation with powers.
  3. Final Answer:

    To create new features by adding powers and combinations of existing features -> Option A
  4. Quick Check:

    PolynomialFeatures = create new polynomial features [OK]
Hint: PolynomialFeatures adds powers and combos of features [OK]
Common Mistakes:
  • Confusing feature creation with normalization
  • Thinking it reduces features instead of expanding
  • Mixing it up with data splitting
2. Which of the following is the correct way to import and create polynomial features of degree 2 using scikit-learn?
easy
A. from sklearn.preprocessing import PolynomialFeatures poly = PolynomialFeatures(degree=2)
B. from sklearn.linear_model import PolynomialFeatures poly = PolynomialFeatures(2)
C. import PolynomialFeatures from sklearn.preprocessing poly = PolynomialFeatures(degree=2)
D. from sklearn.preprocessing import PolynomialFeatures poly = PolynomialFeatures(3)

Solution

  1. Step 1: Check the correct import statement

    PolynomialFeatures is in sklearn.preprocessing, so 'from sklearn.preprocessing import PolynomialFeatures' is correct.
  2. Step 2: Verify the degree parameter

    To create degree 2 features, use degree=2 in the constructor.
  3. Final Answer:

    from sklearn.preprocessing import PolynomialFeatures poly = PolynomialFeatures(degree=2) -> Option A
  4. Quick Check:

    Import from preprocessing and set degree=2 [OK]
Hint: Import from preprocessing and set degree=2 [OK]
Common Mistakes:
  • Importing from wrong module
  • Forgetting 'degree=' keyword
  • Setting wrong degree value
3. Given the code below, what is the output of X_poly?
from sklearn.preprocessing import PolynomialFeatures
import numpy as np
X = np.array([[2, 3]])
poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X)
print(X_poly)
medium
A. [[2 3 5 6 9]]
B. [[1 2 3 4 6 9]]
C. [[2 3 4 6 9]]
D. [[2 3 4 5 6 9]]

Solution

  1. Step 1: Understand PolynomialFeatures output with degree=2 and include_bias=False

    Features include original features, their squares, and pairwise products: [x1, x2, x1^2, x1*x2, x2^2].
  2. Step 2: Calculate values for X = [2, 3]

    x1=2, x2=3; x1^2=4, x1*x2=6, x2^2=9; so output is [[2, 3, 4, 6, 9]].
  3. Final Answer:

    [[2 3 4 6 9]] -> Option C
  4. Quick Check:

    Polynomial features = original + squares + products [OK]
Hint: Output includes original, squares, and cross-products [OK]
Common Mistakes:
  • Including bias term when include_bias=False
  • Miscomputing squares or products
  • Adding extra features not in degree 2
4. Identify the error in the following code snippet that uses PolynomialFeatures:
from sklearn.preprocessing import PolynomialFeatures
X = [[1, 2], [3, 4]]
poly = PolynomialFeatures(degree=3)
X_poly = poly.fit_transform(X)
print(X_poly)
medium
A. X should be a NumPy array, not a list of lists
B. No error; code runs correctly
C. Missing import for NumPy
D. Degree 3 is not supported by PolynomialFeatures

Solution

  1. Step 1: Check input type compatibility

    PolynomialFeatures accepts lists or arrays, so X as list of lists is valid.
  2. Step 2: Verify degree parameter and imports

    Degree 3 is supported; no NumPy import needed if not used explicitly.
  3. Final Answer:

    No error; code runs correctly -> Option B
  4. Quick Check:

    PolynomialFeatures accepts lists and degree 3 [OK]
Hint: PolynomialFeatures accepts lists; degree 3 is valid [OK]
Common Mistakes:
  • Assuming input must be NumPy array
  • Thinking degree 3 is invalid
  • Expecting import errors without NumPy usage
5. You have a dataset with 3 features and want to add polynomial features up to degree 3. How many features will the transformed dataset have if include_bias=False?
hard
A. 10
B. 20
C. 16
D. 19

Solution

  1. Step 1: Use formula for number of polynomial features

    Number of features = C(n + d, d) - 1 if include_bias=False, where n=3, d=3.
  2. Step 2: Calculate combinations

    C(3+3, 3) = C(6, 3) = 20; subtract 1 for no bias gives 19 features.
  3. Final Answer:

    19 -> Option D
  4. Quick Check:

    Features = combinations(6,3)-1 = 19 [OK]
Hint: Use combinations(n+d, d) minus bias if excluded [OK]
Common Mistakes:
  • Forgetting to subtract bias feature
  • Using wrong combination formula
  • Confusing degree with number of features