Knox+ is a project exploring the integration of convolutional neural networks (CNNs) with recurrent neural networks (RNNs) such as GRU and LSTM, combined with traditional machine learning Tree based models like CatBoost, XGBoost, DecisionTrees (CART), ExtraTrees, and RandomForest.The highest classification accuracy we achieved is Convlutional-RandomForest with a test accuracy of 99.48% This combination aims to leverage the strengths of both deep learning and traditional machine learning techniques for improved classification modeling.
As a preprocessing step, I utilized GSmote from the smote-variants library to balance my dataset. Subsequently, I implemented the following models:
-
CNN with Tree-Based Models: Initially, I applied a Convolutional Neural Network (CNN) followed by hyperoptimization of various tree-based models, including Decision Trees, Random Forest, ExtraTrees, XGBoost, CatBoost, and others.
-
CNN-LSTM with Tree-Based Models: Building upon the CNN architecture, I extended the model by incorporating a Long Short-Term Memory (LSTM) layer. Afterward, I hyperoptimized the tree-based models based on the intermediate output from the CNN-LSTM model.
-
CNN-GRU with Tree-Based Models: Similarly, I augmented the CNN architecture by integrating a Gated Recurrent Unit (GRU) layer. Subsequently, I hyperoptimized the tree-based models.
This comprehensive approach allowed me to explore the synergy between deep learning models (CNN, CNN-LSTM, CNN-GRU) and traditional tree-based models, leveraging the strengths of both paradigms for predictive modeling.
To use Knox+ models, follow these steps:
-
Prepare your dataset: Ensure your dataset is properly formatted and balanced then split into training and testing sets.
-
Choose a model: Select one of the implemented models based on your specific task and requirements.
-
Train the model: Use the provided notebooks to train the selected model on your dataset. Make sure to tune hyperparameters for optimal performance.
-
Evaluate the model: After training, evaluate the model's performance on the testing set using appropriate evaluation metrics.
-
Fine-tuning and optimization: Experiment with different architectures, hyperparameters, and preprocessing techniques to further improve model performance to its maximum.
Thank you for considering contributing to our project! Here are a few guidelines to help you get started:
-
Reporting Bugs: If you encounter a bug in the project, please open an issue and provide detailed information about the bug, including steps to reproduce it.
-
Requesting Features: If you have a feature request or enhancement idea, please open an issue and describe the feature you'd like to see.
-
Submitting Pull Requests: We welcome pull requests for bug fixes, enhancements, and new features. Please make sure your code follows our coding standards and conventions.