From ad361a549551ae38cb57d0f59b25129f2dea0da7 Mon Sep 17 00:00:00 2001 From: Gurjotsinghkalsi <53161429+Gurjotsinghkalsi@users.noreply.github.com> Date: Thu, 10 Oct 2024 23:55:52 -0500 Subject: [PATCH 1/3] ML Project 1 Submission --- README.md | 114 ++++++++++++++++++-- elasticnet/__init__.py | 1 + elasticnet/models/ElasticNet.py | 122 ++++++++++++++++++++-- elasticnet/models/__init__.py | 1 + elasticnet/models/metrics.py | 7 ++ elasticnet/models/predictions.png | Bin 0 -> 48870 bytes elasticnet/models/residuals.png | Bin 0 -> 47175 bytes elasticnet/models/small_test.csv | 101 ++++++++++++++++++ elasticnet/models/test_ElasticNetModel.py | 94 +++++++++++++++++ elasticnet/tests/small_test.csv | 51 --------- elasticnet/tests/test_ElasticNetModel.py | 19 ---- 11 files changed, 424 insertions(+), 86 deletions(-) create mode 100644 elasticnet/models/metrics.py create mode 100644 elasticnet/models/predictions.png create mode 100644 elasticnet/models/residuals.png create mode 100644 elasticnet/models/small_test.csv create mode 100644 elasticnet/models/test_ElasticNetModel.py delete mode 100644 elasticnet/tests/small_test.csv delete mode 100644 elasticnet/tests/test_ElasticNetModel.py diff --git a/README.md b/README.md index c1e8359..0c35eea 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,110 @@ -# Project 1 +# Project 1 - ElasticNet Model -Put your README here. Answer the following questions. +Name: Gurjot Singh Kalsi CWID: A20550984 -* What does the model you have implemented do and when should it be used? -* How did you test your model to determine if it is working reasonably correctly? -* What parameters have you exposed to users of your implementation in order to tune performance? (Also perhaps provide some basic usage examples.) -* Are there specific inputs that your implementation has trouble with? Given more time, could you work around these or is it fundamental? +Name: Siva Vamsi Kolli CWID: A20560901 + +Name: Sai Teja Reddy Janga CWID: A20554588 + +This project implements an ElasticNet regression model, a linear regression method that combines both L1 (Lasso) and L2 (Ridge) penalties. The model is particularly useful when dealing with datasets that have multicollinearity (high correlation among features) and when you need to perform feature selection by shrinking some coefficients to zero. + +## 1. What does the model do and when should it be used? + +### What: +The ElasticNet regression model estimates the relationships between a dependent variable (target) and multiple independent variables (features) while applying regularization to prevent overfitting. The model combines the strengths of Lasso and Ridge regression: +- **Lasso** (L1) for feature selection, as it can shrink coefficients of some features to zero. +- **Ridge** (L2) for minimizing the impact of multicollinearity and stabilizing the model. + +### When to Use: +ElasticNet is best used in scenarios where: +- You have a large number of features, many of which might be irrelevant or redundant. +- There is high multicollinearity (i.e., correlation between input features). +- You want a model that can perform both feature selection and regularization. + +It is particularly effective for datasets where neither pure Lasso nor Ridge performs optimally due to the characteristics of the data. + +## 2. How did you test your model to determine if it is working reasonably correctly? + +### How: +The model was tested using the following methods: +1. **Synthetic Data**: Data was generated using a separate script (`generate_regression_data.py`) to create a dataset with known coefficients and noise. The model was then trained on this synthetic data, and the results were compared to the expected coefficients and predictions. +2. **Mean Squared Error (MSE) and Mean Absolute Error (MAE)**: These metrics were computed after training the model, and thresholds were used to validate the performance of the model. For example, the test script checks that the MSE and MAE are below a certain value. +3. **Visual Validation**: The predictions of the model were plotted against actual values to visually inspect how well the model fits the data. Residuals were also plotted to check if they are evenly distributed, indicating a well-fitting model. + +## 3. What parameters have you exposed to users of your implementation in order to tune performance? + +### Exposed Parameters: +The following parameters can be tuned by users to control the model's performance: +- **alpha**: This controls the overall strength of regularization. A higher value applies more regularization (both L1 and L2). +- **rho**: This balances the ratio between L1 (Lasso) and L2 (Ridge) penalties. `rho=0` applies only L2 regularization, `rho=1` applies only L1, and values in between apply both. +- **max_iter**: This defines the maximum number of iterations the model will take to converge during optimization. +- **tol**: The tolerance for optimization. Smaller values can lead to more accurate solutions but may take longer to compute. + +### Usage Example: + +To train the model and generate predictions: +```python +from ElasticNet import ElasticNetModel +from metrics import mean_squared_error + +# Load your dataset +X, y = load_data("path/to/your/data.csv") + +# Initialize the model with parameters +model = ElasticNetModel(alpha=0.1, rho=0.5, max_iter=1000, tol=1e-4) + +# Fit the model +model.fit(X, y) + +# Generate predictions +preds = model.predict(X) + +# Evaluate performance +mse = mean_squared_error(y, preds) +print(f"Mean Squared Error: {mse}") +``` + +## 4. Are there specific inputs that your implementation has trouble with? + +### Problematic Inputs: +The model might struggle with: + +- **Nonlinear relationships**: Since the model is fundamentally linear, datasets with nonlinear patterns cannot be accurately modeled without feature engineering (e.g., polynomial features or transformations). +- **Highly imbalanced data**: The model assumes that the noise in the data is homoscedastic (having the same variance), and imbalanced data can affect its performance by distorting this assumption. + +### Potential Workarounds: +- **Nonlinearity**: To handle nonlinearity, feature engineering could be applied, or a more complex model like decision trees or neural networks might be used. +- **Imbalanced Data**: Techniques like resampling (oversampling/undersampling) or adjusting model weights could help in mitigating the effects of imbalanced data. + +## 5. Steps to run the code. + +The project includes a script for generating synthetic regression data, which can be used to test the ElasticNet model. The script generates data based on a user-specified linear equation with noise. + +### Command to Generate Data: +```bash + +python3 Project1/generate_regression_data.py -N 100 -m 3 -2 -b 5 -scale 0.1 -rnge -10 10 -seed 42 -output_file Project1/elasticnet/models/small_test.csv + +### Explanation of Arguments: +- `-N 100`: Specifies the number of samples to generate. +- `-m 3 -2`: Defines the slope coefficients for the linear relationship (in this case, two features with slopes of 3 and -2). +- `-b 5`: Sets the intercept (offset) of the linear equation. +- `-scale 0.1`: Adds Gaussian noise with a standard deviation of 0.1. +- `-rnge -10 10`: Specifies the range from which feature values (X) are uniformly sampled. +- `-seed 42`: Sets the random seed for reproducibility. +- `-output_file`: Specifies the path to save the generated dataset as a CSV file. + +### Example Output: +The command will generate a CSV file (`small_test.csv`) with columns for each feature (`x_0`, `x_1`) and a target value (`y`). This file can then be used to train and test the ElasticNet model. + +Run the ElasticNet.py file to train the model. + +Then run the test_ElasticNetModel.py to test the model. + +Results shows MSE and MAE values and regression plots. + +### 6. Project Structure +- **ElasticNet.py**: Contains the implementation of the ElasticNet regression model. +- **metrics.py**: Provides functions for evaluating model performance (MSE, MAE). +- **generate_regression_data.py**: A script to generate synthetic linear data with noise for testing the model. +- **test_ElasticNetModel.py**: A test script to evaluate the model. \ No newline at end of file diff --git a/elasticnet/__init__.py b/elasticnet/__init__.py index e69de29..87c314a 100644 --- a/elasticnet/__init__.py +++ b/elasticnet/__init__.py @@ -0,0 +1 @@ +from models import ElasticNetModel \ No newline at end of file diff --git a/elasticnet/models/ElasticNet.py b/elasticnet/models/ElasticNet.py index 017e925..05d5087 100644 --- a/elasticnet/models/ElasticNet.py +++ b/elasticnet/models/ElasticNet.py @@ -1,17 +1,119 @@ +import numpy as np +class ElasticNetModel: + def __init__(self, alpha=1.0, rho=0.5, max_iter=1000, tol=1e-4): + """ + Initialize the ElasticNet model. -class ElasticNetModel(): - def __init__(self): - pass - + Parameters: + - alpha: float, regularization strength. + - rho: float, mixing parameter between L1 and L2 (0 <= rho <= 1). + - max_iter: int, maximum number of iterations. + - tol: float, tolerance for convergence. + """ + self.alpha = alpha + self.rho = rho + self.max_iter = max_iter + self.tol = tol + self.coef_ = None + self.intercept_ = None + self.mean_ = None + self.scale_ = None def fit(self, X, y): - return ElasticNetModelResults() + """ + Fit the ElasticNet model to the data. + + Parameters: + - X: ndarray of shape (n_samples, n_features) + - y: ndarray of shape (n_samples,) + + Returns: + - ElasticNetModelResults: fitted model results containing intercept and coefficients. + """ + # Standardize features + self.mean_ = np.mean(X, axis=0) + self.scale_ = np.std(X, axis=0) + # To avoid division by zero + self.scale_[self.scale_ == 0] = 1 + X_std = (X - self.mean_) / self.scale_ + + n_samples, n_features = X_std.shape + X_aug = np.hstack((np.ones((n_samples, 1)), X_std)) # Add intercept + n_features += 1 # Account for intercept + + self.coef_ = np.zeros(n_features) + X_squared_sum = np.sum(X_aug ** 2, axis=0) + + for iteration in range(self.max_iter): + coef_old = self.coef_.copy() + for j in range(n_features): + # Compute residual excluding feature j + residual = y - X_aug @ self.coef_ + self.coef_[j] * X_aug[:, j] + + if j == 0: + # Update intercept (no regularization) + self.coef_[j] = np.mean(residual) + else: + # Compute rho_alpha and denominator with L2 term + rho_alpha = self.alpha * self.rho + denominator = X_squared_sum[j] + self.alpha * (1 - self.rho) + + # Compute raw update + ro = np.dot(X_aug[:, j], residual) + + # Apply soft-thresholding + if ro < -rho_alpha: + self.coef_[j] = (ro + rho_alpha) / denominator + elif ro > rho_alpha: + self.coef_[j] = (ro - rho_alpha) / denominator + else: + self.coef_[j] = 0.0 + + # Check for convergence + if np.sum(np.abs(self.coef_ - coef_old)) < self.tol: + print(f"Converged in {iteration + 1} iterations.") + break + else: + print(f"Did not converge within {self.max_iter} iterations.") + + # Separate intercept and coefficients + self.intercept_ = self.coef_[0] - np.sum((self.coef_[1:] * self.mean_) / self.scale_) + self.coef_ = self.coef_[1:] / self.scale_ + return ElasticNetModelResults(self.intercept_, self.coef_) + + def predict(self, X): + """ + Predict using the ElasticNet model. + + Parameters: + - X: ndarray of shape (n_samples, n_features) + + Returns: + - y_pred: ndarray of shape (n_samples,) + """ + return X @ self.coef_ + self.intercept_ + +class ElasticNetModelResults: + def __init__(self, intercept, coef): + """ + Store the intercept and coefficients. + + Parameters: + - intercept: float + - coef: ndarray of shape (n_features,) + """ + self.intercept_ = intercept + self.coef_ = coef + def predict(self, X): + """ + Predict using the ElasticNet model. -class ElasticNetModelResults(): - def __init__(self): - pass + Parameters: + - X: ndarray of shape (n_samples, n_features) - def predict(self, x): - return 0.5 + Returns: + - y_pred: ndarray of shape (n_samples,) + """ + return X @ self.coef_ + self.intercept_ \ No newline at end of file diff --git a/elasticnet/models/__init__.py b/elasticnet/models/__init__.py index e69de29..0650f05 100644 --- a/elasticnet/models/__init__.py +++ b/elasticnet/models/__init__.py @@ -0,0 +1 @@ +from ElasticNet import ElasticNetModel \ No newline at end of file diff --git a/elasticnet/models/metrics.py b/elasticnet/models/metrics.py new file mode 100644 index 0000000..a77ce9c --- /dev/null +++ b/elasticnet/models/metrics.py @@ -0,0 +1,7 @@ +import numpy as np + +def mean_squared_error(y_true, y_pred): + return np.mean((y_true - y_pred) ** 2) + +def mean_absolute_error(y_true, y_pred): + return np.mean(np.abs(y_true - y_pred)) \ No newline at end of file diff --git a/elasticnet/models/predictions.png b/elasticnet/models/predictions.png new file mode 100644 index 0000000000000000000000000000000000000000..64c1320202a5ec369904028fca92b60a32481ad1 GIT binary patch literal 48870 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�m=lXj% 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 Date: Thu, 10 Oct 2024 23:58:43 -0500 Subject: [PATCH 2/3] Update README.md --- README.md | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/README.md b/README.md index 0c35eea..bdf3d70 100644 --- a/README.md +++ b/README.md @@ -40,30 +40,6 @@ The following parameters can be tuned by users to control the model's performanc - **max_iter**: This defines the maximum number of iterations the model will take to converge during optimization. - **tol**: The tolerance for optimization. Smaller values can lead to more accurate solutions but may take longer to compute. -### Usage Example: - -To train the model and generate predictions: -```python -from ElasticNet import ElasticNetModel -from metrics import mean_squared_error - -# Load your dataset -X, y = load_data("path/to/your/data.csv") - -# Initialize the model with parameters -model = ElasticNetModel(alpha=0.1, rho=0.5, max_iter=1000, tol=1e-4) - -# Fit the model -model.fit(X, y) - -# Generate predictions -preds = model.predict(X) - -# Evaluate performance -mse = mean_squared_error(y, preds) -print(f"Mean Squared Error: {mse}") -``` - ## 4. Are there specific inputs that your implementation has trouble with? ### Problematic Inputs: From 72142cfc72621b15a3fe38432a5f0e16521ca38f Mon Sep 17 00:00:00 2001 From: Gurjotsinghkalsi <53161429+Gurjotsinghkalsi@users.noreply.github.com> Date: Fri, 11 Oct 2024 00:23:03 -0500 Subject: [PATCH 3/3] Update test_ElasticNetModel.py --- elasticnet/models/test_ElasticNetModel.py | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/elasticnet/models/test_ElasticNetModel.py b/elasticnet/models/test_ElasticNetModel.py index 7184384..2b492dd 100644 --- a/elasticnet/models/test_ElasticNetModel.py +++ b/elasticnet/models/test_ElasticNetModel.py @@ -42,26 +42,6 @@ def plot_residuals(y_true, y_pred, filename='residuals.png'): plt.savefig(filename) plt.close() -# Plot classification decision boundaries -def plot_classification(X, y, model, filename='classification.png'): - x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 - y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 - xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01)) - - # Predict class for each point in mesh grid - Z = model.predict(np.c_[xx.ravel(), yy.ravel()]) - Z = Z.reshape(xx.shape) - - # Plot decision boundary - plt.contourf(xx, yy, Z, alpha=0.8, cmap='coolwarm') - - # Scatter plot - scatter = plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', marker='o', cmap='viridis') - plt.colorbar(scatter, label="Class") - plt.title("Classification with ElasticNet") - plt.savefig(filename) - plt.close() - # Test the ElasticNet model's prediction def test_predict(task='regression'): # Initialize the model with values