Social media platforms like Reddit have become a primary source of information for many. Unfortunately, the rise of false information poses significant challenges in domains like politics, business, and public health. Your task is to build a machine learning model that predicts whether a Reddit post is **fake news (1)** or **genuine (0)** based on the provided data.

This challenge combines text analysis with metadata to mimic real-world scenarios, where extracting meaningful insights and balancing resources is essential.

---

### **Requirements**
1. **Code Documentation**  
   - All code must be clear and well-commented to explain the thought process and approach.

2. **Data Preprocessing**  
   - Apply text preprocessing techniques such as tokenization, stemming/lemmatization, stop word removal, and text vectorization.
   - Explain all preprocessing steps clearly in your notebook.

3. **Model Development**  
   - Build a baseline model as a starting point.
   - Experiment with advanced machine learning models (e.g., XGBoost, Random Forests) and at least one deep learning technique (e.g., RNNs).
   - Use a pipeline for feature engineering and model training.

4. **Hyperparameter Tuning**  
   - Apply at least one hyperparameter optimization method (e.g., Grid Search, Random Search, or Bayesian Optimization).

5. **Model Evaluation**  
   - Evaluate models using appropriate metrics (balanced-accuracy will be used on the leaderboard).  
   - Avoid data leakage and document all validation techniques (e.g., cross-validation).

6. **Trials and Documentation**  
   - Document at least five experimental trials. For each trial:  
     - Record changes made and their rationale.  
     - Analyze results and decide on the next steps.  
     - Improve incrementally while maintaining a clear and reproducible workflow.

8. **Answer Key Questions**  
   Address the following in your notebook:  
   1. What is the difference between Character n-gram and Word n-gram? Which one is more affected by the OOV (Out-of-Vocabulary) issue?  
   2. What is the difference between stop word removal and stemming? Are these techniques language-dependent?  
   3. Is tokenization language-dependent? Why?  
   4. What is the difference between Count Vectorizer and TF-IDF Vectorizer? Is it feasible to use all possible n-grams? How should they be selected?  
