{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.14"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":84896,"databundleVersionId":10305135,"sourceType":"competition"}],"dockerImageVersionId":30804,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false},"colab":{"toc_visible":true,"provenance":[]}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# 1. Introduction and Problem Context","metadata":{"id":"ibwf1g1oMhBW"}},{"cell_type":"markdown","source":"\nThis project aims to develop a predictive regression model to estimate insurance premiums based on customer attributes such as income, health score, and other numerical and categorical information. Accurate prediction of premiums is crucial for the insurance industry to optimize pricing strategies and effectively manage risk.\n\nThe chosen model, LGBMRegressor, is well-suited for handling large datasets and capturing nonlinear relationships efficiently. Hyperparameter tuning using Optuna is applied to enhance model performance. The goal is to minimize the Root Mean Squared Logarithmic Error (RMSLE) and ensure the model generalizes well to new data.\n\nAs of writing this notebook, the model achieved a ranking of 196 out of 895 in the Kaggle competition, showcasing its competitive performance.","metadata":{"id":"SmlvL0lmtn99"}},{"cell_type":"markdown","source":"# 2. Loading and Inspecting the Data","metadata":{"id":"xcrM8hzXMhBb"}},{"cell_type":"markdown","source":"In this section, we load the dataset and perform an initial inspection to understand its structure. We check basic statistics for outliers and missing values, identify the types of variables, and examine the first few records to gain a sense of the data quality.","metadata":{"id":"HZEEgL1qTJiU"}},{"cell_type":"markdown","source":"### 2.1 Loading packages","metadata":{"id":"9Feb1y5Zt-G9"}},{"cell_type":"code","source":"# Helpful packages to load for data processing and machine learning\nimport os\nimport numpy as np  # Linear algebra\nimport pandas as pd  # Data processing, CSV file I/O\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nfrom sklearn.model_selection import train_test_split  # Data splitting\nfrom sklearn.model_selection import cross_val_score  # Cross-validation\nfrom sklearn.pipeline import Pipeline  # Pipeline for model building\nfrom sklearn.compose import ColumnTransformer  # Column transformer for preprocessing\nfrom sklearn.impute import SimpleImputer  # Handling missing data\nfrom sklearn.preprocessing import StandardScaler, OneHotEncoder  # Feature scaling and encoding\nfrom sklearn.model_selection import GridSearchCV, KFold  # Hyperparameter tuning and cross-validation\nfrom sklearn.metrics import mean_squared_log_error  # Evaluation metric\n\nimport lightgbm as lgb  # LightGBM model\nfrom sklearn.linear_model import LogisticRegression  # Logistic regression model\n\nimport warnings\nwarnings.filterwarnings(\"ignore\", category=FutureWarning)\n\n# Setting pandas display options for better readability\npd.set_option('display.max_columns', None)  # Show all columns\npd.set_option('display.float_format', '{:,.1f}'.format)  # Set float format to 1 decimal place\n","metadata":{"id":"YusLpO-JMhBc","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:12:53.240701Z","iopub.execute_input":"2024-12-12T06:12:53.241122Z","iopub.status.idle":"2024-12-12T06:12:58.160205Z","shell.execute_reply.started":"2024-12-12T06:12:53.241083Z","shell.execute_reply":"2024-12-12T06:12:58.158605Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 2.2 Loading data","metadata":{"id":"RQpjrrg6MhBg"}},{"cell_type":"code","source":"import os\nimport pandas as pd  # Data processing, CSV file I/O\nif 'KAGGLE_URL_BASE' in os.environ:\n  for dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n      print(os.path.join(dirname, filename))\n  df_train_raw=pd.read_csv('/kaggle/input/playground-series-s4e12/train.csv')\n  df_test_raw=pd.read_csv('/kaggle/input/playground-series-s4e12/test.csv')\n\n\nelse:\n  !pip install optuna\n  df_train_raw=pd.read_csv('/content/train.csv')\n  df_test_raw=pd.read_csv('/content/test.csv')\n\nprint(\"shape train:\", df_train_raw.shape)\nprint(\"shape test:\", df_test_raw.shape)\nimport optuna","metadata":{"id":"GeBTdkxfORwG","outputId":"9bce6924-5393-4f83-979b-98aeffd708f2","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:12:58.162117Z","iopub.execute_input":"2024-12-12T06:12:58.162784Z","iopub.status.idle":"2024-12-12T06:13:08.88531Z","shell.execute_reply.started":"2024-12-12T06:12:58.162742Z","shell.execute_reply":"2024-12-12T06:13:08.88387Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 2.3 Inspecting the Data","metadata":{"id":"g1fVue8EMhBl"}},{"cell_type":"markdown","source":"### 2.3.1 Preview the Data","metadata":{"id":"DMr0zPgjxtdR"}},{"cell_type":"markdown","source":"The training set contains labeled data for supervised learning.","metadata":{"id":"4zE4nZ-Lygwx"}},{"cell_type":"code","source":" df_train_raw.head(5)","metadata":{"id":"2VwPYgnNuckd","outputId":"7a52476e-b549-4877-8171-f0888692f816","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:08.88658Z","iopub.execute_input":"2024-12-12T06:13:08.886922Z","iopub.status.idle":"2024-12-12T06:13:08.921075Z","shell.execute_reply.started":"2024-12-12T06:13:08.886887Z","shell.execute_reply":"2024-12-12T06:13:08.919857Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 2.3.2 Data Types","metadata":{"id":"GWRCl_YDMhBl"}},{"cell_type":"markdown","source":"\"Policy Start Date\" is stored in an incorrect format (likely as a string instead of a datetime). This could affect any time-based calculations or analyses. We'll convert it to the proper datetime format during preprocessing.","metadata":{"id":"EZOMnCDozMfP"}},{"cell_type":"code","source":"# Displaying data types of each column\ndf_train_raw.dtypes","metadata":{"id":"RcMfUZPSMhBl","outputId":"8b8da8de-3bb1-408d-cbce-ccbc6c30fdae","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:08.92412Z","iopub.execute_input":"2024-12-12T06:13:08.924525Z","iopub.status.idle":"2024-12-12T06:13:08.93346Z","shell.execute_reply.started":"2024-12-12T06:13:08.924485Z","shell.execute_reply":"2024-12-12T06:13:08.932082Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 2.3.3 Basic statistics","metadata":{"id":"tXfWbWTcutd0"}},{"cell_type":"markdown","source":"For numerical features, all variables have reasonable ranges with no significant outliers. The ID columns contain unique values for identification purposes and will be removed, as they do not contribute to the model.","metadata":{"id":"OPf00Vd3z0eA"}},{"cell_type":"code","source":"# Describing numerical features\ndf_train_raw.describe()","metadata":{"id":"LIEjCTBxuuOd","outputId":"7a458a27-16bc-43a0-8874-839c3b342c6a","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:08.935031Z","iopub.execute_input":"2024-12-12T06:13:08.935389Z","iopub.status.idle":"2024-12-12T06:13:09.645699Z","shell.execute_reply.started":"2024-12-12T06:13:08.935351Z","shell.execute_reply":"2024-12-12T06:13:09.644389Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Categorical features have a reasonable range of unique values (2 to 4), making them suitable for handling with one-hot or label encoding without the need for additional preprocessing.","metadata":{"id":"ynoN5INk0yiH"}},{"cell_type":"code","source":"# Describing object columns for categorical features\ndf_train_raw.describe(include='object')","metadata":{"id":"Tj_LU4CavOf9","outputId":"c120d4eb-ab0d-48e3-8971-6889ccb65647","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:09.647Z","iopub.execute_input":"2024-12-12T06:13:09.647344Z","iopub.status.idle":"2024-12-12T06:13:11.961263Z","shell.execute_reply.started":"2024-12-12T06:13:09.647299Z","shell.execute_reply":"2024-12-12T06:13:11.960026Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 2.3.4 Missing Values Analysis","metadata":{"id":"FdePmOMMMhBm"}},{"cell_type":"markdown","source":"The feature with the most missing values, \"Previous Claims,\" has 30.3% missing. No column will be dropped for missing values. Numerical features will be imputed with the median (more stable than the mean), while categorical features will be replaced with the category \"unknown.\"","metadata":{"id":"aips5Acj1rhg"}},{"cell_type":"code","source":"# Checking for missing values\ndf_missing=pd.DataFrame({\n    \"null_num\": df_train_raw.isna().sum(),\n    \"null_%\": df_train_raw.isna().sum() / df_train_raw.shape[0] * 100,\n    \"dtype\": df_train_raw.dtypes\n})\ndf_missing[df_missing[\"null_%\"]>0].sort_values(by=\"null_%\", ascending=False)","metadata":{"id":"P-0r6oaaMhBm","outputId":"76930de7-909f-4bc2-e494-1e1731c92da8","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:11.962637Z","iopub.execute_input":"2024-12-12T06:13:11.963032Z","iopub.status.idle":"2024-12-12T06:13:13.268285Z","shell.execute_reply.started":"2024-12-12T06:13:11.962992Z","shell.execute_reply":"2024-12-12T06:13:13.267065Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# 3. Feature Engineering","metadata":{"id":"fqiJR8qzMhBn"}},{"cell_type":"markdown","source":"In this section, we perform several transformations and feature engineering. These include:\n\n1.   Renaming Columns: We standardize column names by converting them to lowercase\nand replacing spaces with underscores for consistency.\n2.   Date Handling: The policy_start_date is converted to a datetime type, and several new features related to the date are created:\n\n  *   Extract year, month, week, weekday, and day from the policy_start_date.\n  *   Create cyclical features for day, week, and month using sine and cosine transformations to preserve the cyclical nature of these variables.\n\n3.   Time Difference: We calculate the number of days from the policy_start_date to a specific date (e.g., \"2024-12-31\") as days_from_premium_date.\n4.   Feature Ratios:\n  *   ratio_incom_age, which represents the ratio of annual_income to age, clipped to avoid extreme values.\n  *   income_per_dependent, dividing annual_income by the number of dependents, to capture income relative to dependents.\n5.   Dropping Unnecessary Columns: The id column is dropped as it does not provide useful information for the model.\n","metadata":{"id":"8f58IVs42RPO"}},{"cell_type":"code","source":"df_train_procesd=df_train_raw.copy()\ndf_test_procesd=df_test_raw.copy()","metadata":{"id":"HhLlNlGcMhBn","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:13.269832Z","iopub.execute_input":"2024-12-12T06:13:13.2702Z","iopub.status.idle":"2024-12-12T06:13:13.536482Z","shell.execute_reply.started":"2024-12-12T06:13:13.270164Z","shell.execute_reply":"2024-12-12T06:13:13.5353Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for df in [df_train_procesd, df_test_procesd]:\n    # Renaming columns to lowercase and removing spaces\n    df.columns = df.columns.str.replace(' ', '_').str.lower()\n\n    # Converting 'policy_start_date' to datetime and extracting components\n    df['policy_start_date'] = pd.to_datetime(df['policy_start_date'], errors='coerce')\n    df['policy_year'] = df['policy_start_date'].dt.year\n    df['policy_month'] = df['policy_start_date'].dt.month\n    df['policy_week'] = df['policy_start_date'].dt.isocalendar().week\n    df['policy_week_day'] = df['policy_start_date'].dt.weekday\n    df['policy_day'] = df['policy_start_date'].dt.day\n\n    # Adding sin/cos transformations for cyclical features\n    df['day_sin'] = np.sin(2 * np.pi * df['policy_day'] / 31)\n    df['day_cos'] = np.cos(2 * np.pi * df['policy_day'] / 31)\n    df['weekday_sin'] = np.sin(2 * np.pi * df['policy_week_day'] / 7)\n    df['weekday_cos'] = np.cos(2 * np.pi * df['policy_week_day'] / 7)\n    df['month_sin'] = np.sin(2 * np.pi * df['policy_month'] / 12)\n    df['month_cos'] = np.cos(2 * np.pi * df['policy_month'] / 12)\n    df['week_sin'] = np.sin(2 * np.pi * df['policy_week'] / 52)\n    df['week_cos'] = np.cos(2 * np.pi * df['policy_week'] / 52)\n\n    # Calculating 'days_from_premium_date'\n    df['days_from_premium_date'] = (pd.Timestamp(\"2024-12-31\") - df['policy_start_date']).dt.days\n\n    # Creating feature ratios\n    df['ratio_incom_age'] = np.clip(df['annual_income'] / df['age'], a_min=1e-6, a_max=1e9)\n    df['income_per_dependent'] = df['annual_income'] / (df['number_of_dependents'] + 1)\n\n    # Dropping the 'id' column\n    df.drop(['id'], axis=1, inplace=True)","metadata":{"id":"OdGRcTaPMhBp","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:13.537851Z","iopub.execute_input":"2024-12-12T06:13:13.538252Z","iopub.status.idle":"2024-12-12T06:13:15.856933Z","shell.execute_reply.started":"2024-12-12T06:13:13.538206Z","shell.execute_reply":"2024-12-12T06:13:15.85566Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Result:","metadata":{"id":"Hb0_0Q_u3nVy"}},{"cell_type":"code","source":"df_train_procesd.head(3)","metadata":{"id":"kjs3qRkTWWSj","outputId":"97e16633-c20c-4c53-e37b-ff9be0b89584","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:15.861031Z","iopub.execute_input":"2024-12-12T06:13:15.861409Z","iopub.status.idle":"2024-12-12T06:13:15.887361Z","shell.execute_reply.started":"2024-12-12T06:13:15.861374Z","shell.execute_reply":"2024-12-12T06:13:15.885926Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# 4. Exploratory Data Analysis (EDA)","metadata":{"id":"QPTFgELhMhBq"}},{"cell_type":"markdown","source":"During EDA, we examined the dataset to understand feature distributions and relationships:\n\n\n1.   **Histograms:** Both Income and premium_amount are right-skewed, indicating the need for log transformations to normalize these variables.\n2.   **Boxplots:** Categorical features show no clear patterns with premium_amount, but they were retained for modeling due to the possibility of complex relationships.\n3.   **Correlation Matrix**: No strong linear correlations with the target were found, suggesting the need for non-linear models. Multicollinearity between some features was also observed.\n4.   **Scatterplots:** No clear linear relationships were identified, further supporting the use of non-linear models such as Random Forest or LGBM.\n\n\nThe details below provide the specific visualizations and analyses that led to these conclusions.","metadata":{"id":"JoZaVP2VQ5e3"}},{"cell_type":"code","source":"df_numerical = df_train_procesd.select_dtypes(include=['number'])\ndf_categorical= df_train_procesd.select_dtypes(include=[\"object\"])","metadata":{"id":"KoLOfYduMhBr","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:15.888748Z","iopub.execute_input":"2024-12-12T06:13:15.889114Z","iopub.status.idle":"2024-12-12T06:13:16.580785Z","shell.execute_reply.started":"2024-12-12T06:13:15.889077Z","shell.execute_reply":"2024-12-12T06:13:16.579639Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 4.1 Histograms (numerical features)","metadata":{"id":"XKIYE6rA4ZPG"}},{"cell_type":"markdown","source":"The 'Income' and 'premium_amount' features are both right-skewed with long tails, suggesting that a logarithmic transformation may be necessary to normalize these distributions and improve model performance.","metadata":{"id":"Nd4Kjc_P95kJ"}},{"cell_type":"code","source":"ax=df_numerical.hist(bins=15,figsize=(15, 13))\nplt.suptitle('Histograms of numerical features', fontsize=16)\nplt.tight_layout()\nplt.show()","metadata":{"id":"8jZcBsmWMhBr","outputId":"0d90f8d4-d87b-4cd4-ecb8-b23ed013c526","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:16.582195Z","iopub.execute_input":"2024-12-12T06:13:16.582645Z","iopub.status.idle":"2024-12-12T06:13:22.133199Z","shell.execute_reply.started":"2024-12-12T06:13:16.582599Z","shell.execute_reply":"2024-12-12T06:13:22.13201Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 4.2 Boxplots (categorical features)","metadata":{"id":"FW0qTUXP4odG"}},{"cell_type":"markdown","source":"Visually (see 4.2.1 All Data), the categorical variables do not appear to significantly affect the target variable, as the distributions of the target across these categories are almost identical. Premium amounts greater than 3000 are treated as outliers.\n\nA separate boxplot for this subset is shown below (see 4.2.2 Subset), which leads to the same conclusion. Despite this, we do not exclude categorical variables from the model, as there may be complex relationships with the target that are not captured by these plots.","metadata":{"id":"4v-tPJ8x_k6p"}},{"cell_type":"code","source":"# Function to plot boxplots for categorical variables against 'premium_amount'\ndef plot_boxplots(df_completo):\n    df = df_completo.select_dtypes(include=[\"object\"])  # Select categorical features\n    n_cols = 2\n    n_rows = -(-len(df.columns) // n_cols)  # Calculate number of rows for subplots\n\n    # Create subplots\n    fig, axes = plt.subplots(n_rows, n_cols, figsize=(13, 15))\n\n    # Draw boxplots for each categorical feature against 'premium_amount'\n    for ax, column in zip(axes.flatten(), df.columns):\n        sns.boxplot(ax=ax, x=column, y='premium_amount', data=df_completo)\n        ax.set_title(column)\n\n    # Adjust layout and show plot\n    plt.tight_layout()\n    plt.show()\n","metadata":{"id":"cVxngX0cMhBs","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:22.134612Z","iopub.execute_input":"2024-12-12T06:13:22.134971Z","iopub.status.idle":"2024-12-12T06:13:22.14221Z","shell.execute_reply.started":"2024-12-12T06:13:22.134937Z","shell.execute_reply":"2024-12-12T06:13:22.140914Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 4.2.1 All data","metadata":{"id":"BiJC7X_C_r8A"}},{"cell_type":"code","source":"# Plot boxplots for all categorical variables\nplot_boxplots(df_train_procesd)","metadata":{"id":"V7LkabOZMhBt","outputId":"b3c76253-0799-434d-a6f8-b01a6fd232fe","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:22.143444Z","iopub.execute_input":"2024-12-12T06:13:22.143775Z","iopub.status.idle":"2024-12-12T06:13:30.862062Z","shell.execute_reply.started":"2024-12-12T06:13:22.143744Z","shell.execute_reply":"2024-12-12T06:13:30.860813Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 4.2.2 Subset \"premium_amount\"]>=3000","metadata":{"id":"FXFRYOgk_4X5"}},{"cell_type":"code","source":"# Plot boxplots for rows with 'premium_amount' >= 3000\nplot_boxplots(df_train_procesd[df_train_procesd[\"premium_amount\"]>=3000])","metadata":{"id":"b5WOfpNEMhBt","outputId":"eaf7d211-f0cf-4999-dbbf-e133232328ff","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:30.863351Z","iopub.execute_input":"2024-12-12T06:13:30.863691Z","iopub.status.idle":"2024-12-12T06:13:32.99176Z","shell.execute_reply.started":"2024-12-12T06:13:30.863659Z","shell.execute_reply":"2024-12-12T06:13:32.990495Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 4.3 Correlation Matrix","metadata":{"id":"SwBqbURPAoK6"}},{"cell_type":"markdown","source":"The correlation matrix does not reveal strong linear relationships between the target and numerical variables. However, non-linear relationships may exist that are not captured by this method. Therefore, low correlation values should not be a reason for eliminating variables.\n\n\nMulticollinearity between some original columns and those created during feature engineering could harm the model. We will evaluate the importance of variables in each pair and remove redundant ones.","metadata":{"id":"TajXgs5TCmAz"}},{"cell_type":"code","source":"corr_matrix = df_numerical.corr()\nplt.figure(figsize=(12, 8))\nsns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt='.2f', linewidths=0.5)\nplt.title('Correlation Matrix', fontsize=16)\nplt.show()","metadata":{"id":"YYhv7FZfAtZg","outputId":"b44a5d1b-fedb-4a4d-a42e-23543de5e020","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:32.993193Z","iopub.execute_input":"2024-12-12T06:13:32.993569Z","iopub.status.idle":"2024-12-12T06:13:37.100359Z","shell.execute_reply.started":"2024-12-12T06:13:32.993519Z","shell.execute_reply":"2024-12-12T06:13:37.099291Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 4.4 Scatterplots","metadata":{"id":"N9YiuUSxHUjJ"}},{"cell_type":"markdown","source":"There are no clear linear relationships between the variables and the target. This suggests that linear models, such as regression, may not be suitable. Non-linear models, like Random Forest or LGBM, could capture these complex relationships more effectively.","metadata":{"id":"5ytP5ebFMjtn"}},{"cell_type":"code","source":"import itertools\n\n\n\ncolumns_to_explore = ['premium_amount','health_score',\n                      'credit_score', 'days_from_premium_date',  'ratio_incom_age',\n                      'income_per_dependent']\n\ndf_limitado = df_numerical[columns_to_explore].sample(n=10000, random_state=42)\n\n\ncolumn_combinations = list(itertools.combinations(columns_to_explore, 2))\n\n\nnum_plots = len(column_combinations)\nnum_rows = (num_plots + 4 - 1) // 4  # Calcular el número de filas necesarias (máximo 4 columnas por fila)\n\n\nfig, axes = plt.subplots(num_rows, 4, figsize=(15, num_rows * 4))\n\naxes = axes.flatten()\n\n\nfor i, (col1, col2) in enumerate(column_combinations):\n    ax = axes[i]\n    sns.scatterplot(x=col1, y=col2, data=df_limitado, ax=ax, alpha=0.1)\n    ax.set_title(f'{col1} vs {col2}')\n    ax.set_xlabel(col1)\n    ax.set_ylabel(col2)\n\n\nfor i in range(num_plots, len(axes)):\n    fig.delaxes(axes[i])\n\n\nplt.tight_layout()\nplt.suptitle('Pairwise Scatter Plots', fontsize=16)\nplt.subplots_adjust(top=0.95)  # Ajustar el título principal para que no se solape con los subgráficos\nplt.show()","metadata":{"id":"-rDdkH6REDOz","outputId":"73c7ff85-674d-461b-f1f3-983d8bca4057","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:37.101766Z","iopub.execute_input":"2024-12-12T06:13:37.102106Z","iopub.status.idle":"2024-12-12T06:13:40.966299Z","shell.execute_reply.started":"2024-12-12T06:13:37.102073Z","shell.execute_reply":"2024-12-12T06:13:40.964685Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# 5. Data Preprocessing","metadata":{"id":"Q8Pt9AZaxEjd"}},{"cell_type":"markdown","source":"In this section, we apply the necessary transformations identified during the Exploratory Data Analysis (EDA) phase to prepare the data for modeling. These transformations include:\n\n\n\n1.  **Log transformations:** Applied to Income and premium_amount to normalize their right-skewed distributions.\n2.   **Handling null values:** Imputation of missing values for both numerical and categorical features.\n3.   **Encoding categorical features:** One-hot encoding is used for categorical variables.\n4.   **Standardization:** A StandardScaler is applied to numerical features to scale them to a similar range and improve model performance.\n5. **Data splitting:** The dataset is divided into training, validation, and test sets.\n\nMost of these steps, such as imputation, encoding, and standardization, are integrated into a scikit-learn **pipeline** to ensure consistent transformations during model training and evaluation.","metadata":{"id":"DOXftXsaO9Vr"}},{"cell_type":"code","source":"df_train_engin=df_train_procesd.copy()\ndf_test_engin=df_test_procesd.copy()","metadata":{"id":"DLEqkqqcMhBv","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:40.968082Z","iopub.execute_input":"2024-12-12T06:13:40.968477Z","iopub.status.idle":"2024-12-12T06:13:42.103906Z","shell.execute_reply.started":"2024-12-12T06:13:40.968439Z","shell.execute_reply":"2024-12-12T06:13:42.102672Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 5.1 Log Transformation","metadata":{"id":"5io6OslaMhBu"}},{"cell_type":"markdown","source":"Based on the right-skewed distributions observed for certain variables, such as Income and premium_amount, we apply log transformations to make the distributions more normal. This transformation helps improve model performance, as confirmed through experiments conducted with this dataset.","metadata":{"id":"huCCogTnPhNe"}},{"cell_type":"code","source":"for df in [df_train_engin,df_test_engin]:\n    df['log_annual_income'] =np.log(df['annual_income']+1)\n    df.drop('annual_income',axis=1,inplace=True)\n    df.drop(['policy_day', 'policy_week_day', 'policy_month', 'policy_week', 'policy_year'], axis=1, inplace=True)\n\ndf_train_engin['log_premium_amount'] =np.log(df_train_engin['premium_amount']+1)\ndf_train_engin.drop('premium_amount',axis=1,inplace=True)","metadata":{"id":"uwtg9KQIMhBw","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:42.105699Z","iopub.execute_input":"2024-12-12T06:13:42.106186Z","iopub.status.idle":"2024-12-12T06:13:43.020123Z","shell.execute_reply.started":"2024-12-12T06:13:42.106134Z","shell.execute_reply":"2024-12-12T06:13:43.018906Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 5.2 Data Splitting (Training, Validation, and Test Sets)","metadata":{"id":"v-M24-DsMhBx"}},{"cell_type":"code","source":"# Splitting data into training and validation sets (80/20)\nX_train_val, y_train_val= df_train_engin.drop('log_premium_amount',axis=1).copy(),\\\n    df_train_engin['log_premium_amount']\nX_train, X_val, y_train, y_val = train_test_split(\n    X_train_val, y_train_val, test_size=0.2, random_state=42)\n\nX_test=df_test_engin.copy()\n\nprint(X_train.shape, y_train.shape)\nprint(X_val.shape, y_val.shape)\nprint(X_test.shape)","metadata":{"id":"6w8Y0uj4MhBy","outputId":"d41d44dc-c4ee-4f54-d6a0-6e06378c5f6b","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:43.021806Z","iopub.execute_input":"2024-12-12T06:13:43.022184Z","iopub.status.idle":"2024-12-12T06:13:44.755027Z","shell.execute_reply.started":"2024-12-12T06:13:43.022149Z","shell.execute_reply":"2024-12-12T06:13:44.753883Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 5.3 Transformation in Pipline","metadata":{"id":"brWVhptFpRPV"}},{"cell_type":"markdown","source":"We apply null imputing and encoding of categorical values, combining these transformations into a Scikit-learn pipeline. This ensures that the same transformations are applied to both the training and validation/test sets during model training.","metadata":{"id":"Mt-gvi0LQEDc"}},{"cell_type":"code","source":"# Preprocesamiento pipeline\nnumerical_cols = X_train.select_dtypes(include=['number']).columns\ncategorical_cols = X_train.select_dtypes(include=[\"object\"]).columns\n\npreprocessor = ColumnTransformer([\n    ('num', Pipeline([('imputer', SimpleImputer(strategy='median', add_indicator=True)),\n                      ('scaler', StandardScaler())]), numerical_cols),\n    ('cat', Pipeline([('imputer', SimpleImputer(strategy='constant', fill_value='unknown')),\n                      ('encoder', OneHotEncoder(handle_unknown='ignore'))]), categorical_cols)\n])","metadata":{"id":"rdUr4G-kpVWO","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:44.756464Z","iopub.execute_input":"2024-12-12T06:13:44.756874Z","iopub.status.idle":"2024-12-12T06:13:44.91952Z","shell.execute_reply.started":"2024-12-12T06:13:44.756831Z","shell.execute_reply":"2024-12-12T06:13:44.917999Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# 6. Model","metadata":{"id":"ps6N4t8QMhBw"}},{"cell_type":"markdown","source":"In this section, we build, tune hyperparameters, and evaluate the model.\n\nThe **LGBMRegressor** model was chosen due to its efficiency in handling large datasets and its ability to capture nonlinear relationships. It offers a good balance between performance and computational cost.\n\nHyperparameter tuning was performed using **Optuna**, and after optimizing the parameters, the model was trained and evaluated. The results show good generalization with minimal overfitting.","metadata":{"id":"ptrEgEA2d55E"}},{"cell_type":"markdown","source":"# 6.1 Hyperparameter Tuning with Optuna","metadata":{"id":"SWHwAKDeMhBy"}},{"cell_type":"markdown","source":"We use **Optuna** for hyperparameter optimization due to the large size of the dataset, and because this method is computationally efficient. The objective is to minimize the **Root Mean Squared Logarithmic Error (RMSLE**). The best parameters found are far from the limits of the selected search range, indicating that there is no need to adjust the range further. The number of trials was limited due to computational resource constraints. However, the optimization history plot shows no significant improvement after the fourth trial, which suggests that the result is acceptable and no further tuning is necessary.","metadata":{"id":"1euSWXzTch9H"}},{"cell_type":"code","source":"%%capture\n# Función objetivo para la optimización de Optuna\ndef objective(trial):\n    # Parámetros definidos para la búsqueda\n    param = {\n        \"objective\": \"regression\",\n        \"boosting_type\": trial.suggest_categorical(\"boosting_type\", [\"gbdt\", \"dart\"]),  # Tipo de boosting\n        \"num_leaves\": trial.suggest_int(\"num_leaves\", 200, 512),  # Número de hojas\n        \"learning_rate\": trial.suggest_loguniform(\"learning_rate\", 1e-3, 1e-1),  # Tasa de aprendizaje\n        \"feature_fraction\": trial.suggest_uniform(\"feature_fraction\", 0.6, 1.0),  # Fracción de características\n        \"bagging_fraction\": trial.suggest_uniform(\"bagging_fraction\", 0.4, 1.0),  # Fracción de muestras para el bagging\n        \"bagging_freq\": trial.suggest_int(\"bagging_freq\", 5, 12),  # Frecuencia de bagging\n        \"min_data_in_leaf\": trial.suggest_int(\"min_data_in_leaf\", 50, 200),  # Mínima cantidad de datos por hoja\n        \"max_depth\": trial.suggest_int(\"max_depth\", -1, 16),  # Profundidad máxima de los árboles\n        #\"device_type\": \"gpu\",  # Usamos GPU para el entrenamiento\n        \"seed\" : 42  # Semilla para la reproducibilidad\n    }\n\n    # Entrenamiento del modelo con los hiperparámetros seleccionados\n    model = lgb.LGBMRegressor(**param)\n    pipeline = Pipeline(steps=[('preprocessor', preprocessor), ('model', model)])\n\n    # Ajustar el modelo\n    pipeline.fit(X_train, y_train)\n\n    # Hacer predicciones en el conjunto de validación\n    y_pred = np.maximum(0, pipeline.predict(X_val))\n\n    # Calcular el Mean Squared Logarithmic Error (MSLE)\n    msle = mean_squared_log_error(y_val, y_pred)\n    rmsle = np.sqrt(msle)\n    return rmsle  # Optuna busca minimizar esta métrica\n\n# Crear un estudio de optimización con Optuna\nstudy = optuna.create_study(direction='minimize')  # Queremos minimizar MSLE\nstudy.optimize(objective, n_trials=10)  # Realizamos 100 pruebas\n\n# Mostrar los mejores parámetros y el mejor valor de la métrica\nprint(f\"Best hyperparameters: {study.best_params}\")\nprint(f\"Best MSLE: {study.best_value}\")\n\nbest_params = study.best_params","metadata":{"id":"mqe20I2oMhB9","outputId":"f2441b88-8557-4cac-d3e1-cc0dcfed219a","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:13:44.921379Z","iopub.execute_input":"2024-12-12T06:13:44.921855Z","iopub.status.idle":"2024-12-12T06:24:02.570294Z","shell.execute_reply.started":"2024-12-12T06:13:44.921806Z","shell.execute_reply":"2024-12-12T06:24:02.569035Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"best_params","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:24:02.571941Z","iopub.execute_input":"2024-12-12T06:24:02.572386Z","iopub.status.idle":"2024-12-12T06:24:02.580721Z","shell.execute_reply.started":"2024-12-12T06:24:02.572338Z","shell.execute_reply":"2024-12-12T06:24:02.579322Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#optuna.visualization.plot_optimization_history(study).show()\n#optuna.visualization.plot_param_importances(study).show()\n","metadata":{"id":"xSkOYbX3fT0D","outputId":"5c2763b7-66e3-4c28-fd3f-ac74f708ac98","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:24:02.582337Z","iopub.execute_input":"2024-12-12T06:24:02.582824Z","iopub.status.idle":"2024-12-12T06:24:02.594121Z","shell.execute_reply.started":"2024-12-12T06:24:02.582776Z","shell.execute_reply":"2024-12-12T06:24:02.593026Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# 6.2 Model Building","metadata":{"id":"dmPwRX3RTbOa"}},{"cell_type":"markdown","source":"After finding the best hyperparameters through Optuna, we train the final model using the selected parameters.","metadata":{"id":"CyB8kCd_amAm"}},{"cell_type":"code","source":"#best_params={'boosting_type': 'gbdt',\n#             'num_leaves': 385,\n#             'learning_rate': 0.01962545424029374,\n#             'feature_fraction': 0.9809422205650686,\n#             'bagging_fraction': 0.8928745516778743,\n#             'bagging_freq': 5,\n#             'min_data_in_leaf': 147,\n#             'max_depth': 14}","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:24:02.595493Z","iopub.execute_input":"2024-12-12T06:24:02.595864Z","iopub.status.idle":"2024-12-12T06:24:02.609712Z","shell.execute_reply.started":"2024-12-12T06:24:02.595831Z","shell.execute_reply":"2024-12-12T06:24:02.60838Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%capture\nfinal_model = lgb.LGBMRegressor(**best_params, verbose=0)\nfinal_pipeline = Pipeline(steps=[('preprocessor', preprocessor), ('model', final_model)])\nfinal_pipeline.fit(X_train, y_train)\n","metadata":{"id":"fYHth9eeMhB-","outputId":"6ba2daf4-e32a-4d40-b372-a89a8f3e261d","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:24:02.611261Z","iopub.execute_input":"2024-12-12T06:24:02.61167Z","iopub.status.idle":"2024-12-12T06:24:35.665099Z","shell.execute_reply.started":"2024-12-12T06:24:02.611634Z","shell.execute_reply":"2024-12-12T06:24:35.663863Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# 6.3 Model Evaluation","metadata":{"id":"Qe00_P8zMhB_"}},{"cell_type":"markdown","source":"We evaluate the model using the Root Mean Squared Logarithmic Error (RMSLE). Predictions are made on both the training and validation sets, and the predicted values are then converted back to the original scale due to the earlier log transformation of the target variable.\n\nThe RMSLE for the validation set is slightly worse than that of the training set, which suggests that there is no drastic overfitting. This indicates that the model generalizes reasonably well on unseen data.","metadata":{"id":"kSAo7VqEawAu"}},{"cell_type":"code","source":"# Predict on training and validation sets\ny_train_pred = final_pipeline.predict(X_train)\ny_val_pred = final_pipeline.predict(X_val)\n\n# Convertir las predicciones al espacio original\ny_train_pred_original = np.exp(y_train_pred) - 1\ny_val_pred_original = np.exp(y_val_pred) - 1\n\n# Convertir target logaritmico al espacio original\ny_train_original=np.exp(y_train) - 1\ny_val_original=np.exp(y_val)-1\n\n\n# Calcular RMSLE usando los valores originales y predicciones en el espacio original\nfrom sklearn.metrics import mean_squared_log_error\nrmsle_train = np.sqrt(mean_squared_log_error(y_train_original, y_train_pred_original))\nrmsle_val = np.sqrt(mean_squared_log_error(y_val_original, y_val_pred_original))\n\n# Imprimir resultados\nprint(f\"RMSLE train: {rmsle_train}, RMSLE validation: {rmsle_val}\")","metadata":{"id":"sZr9Qm1KMhB_","outputId":"726520a1-9e64-49d5-a6e1-d56fb2eeb76a","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:24:35.666385Z","iopub.execute_input":"2024-12-12T06:24:35.666745Z","iopub.status.idle":"2024-12-12T06:24:51.108042Z","shell.execute_reply.started":"2024-12-12T06:24:35.66671Z","shell.execute_reply":"2024-12-12T06:24:51.106437Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# 6.4 Final Predictions & Submission","metadata":{"id":"DOOTUvxmMhCE"}},{"cell_type":"code","source":"# Make predictions on the test set\ny_test_pred = final_pipeline.predict(X_test)\ny_test_pred_original = np.exp(y_test_pred) - 1\n# Create submission DataFrame\nsubmission = pd.DataFrame({'id': df_test_raw['id'], 'Premium Amount': y_test_pred_original})\n\n# Save submission as CSV\nsubmission.to_csv(\"submission.csv\", index=False)\nprint(\"Done\")","metadata":{"id":"3FxplbgdMhCF","outputId":"fd14da38-b138-4587-dffe-5aa50f06e841","trusted":true,"execution":{"iopub.status.busy":"2024-12-12T06:24:51.112333Z","iopub.execute_input":"2024-12-12T06:24:51.11271Z","iopub.status.idle":"2024-12-12T06:25:03.10604Z","shell.execute_reply.started":"2024-12-12T06:24:51.112673Z","shell.execute_reply":"2024-12-12T06:25:03.104448Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**P.S. Thank you** for exploring this notebook! If you found it helpful or interesting, feel free to give it a like. Your feedback is much appreciated!","metadata":{}},{"cell_type":"markdown","source":"# 7. Result","metadata":{"id":"gnmuhYiAMhCA"}},{"cell_type":"markdown","source":"![image.png](attachment:2abd967b-3608-41c0-ba8c-6c1a002d728d.png)","metadata":{},"attachments":{"2abd967b-3608-41c0-ba8c-6c1a002d728d.png":{"image/png":"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"}}},{"cell_type":"markdown","source":"","metadata":{}}]}