机器学习初学者指南:机器学习黑客马拉松竞赛经验分享

本文是机器学习初学者参加黑客马拉松的入门指南,通过保险交叉销售的二元分类案例,介绍从理解问题到实施特征工程、模型训练、优化的10个步骤。分享了在GPU上加速3种机器学习模型的方法,并总结了有效和无效的技术,旨在帮助参赛者提高成绩。
摘要由CSDN通过智能技术生成

总览

  • 本文是进入机器学习黑客马拉松竞赛的前10%的终极入门者指南。

  • 如果你遵循本文列出的这些简单步骤,那么赢得黑客马拉松的分类问题是比较简单的

  • 始终保持不断的学习,以高度的一致性进行实验,并遵循你的直觉和你随着时间积累的领域知识

  • 从几个月前在Hackathons作为初学者开始,我最近成为了Kaggle专家,并且是 Vidhya 的JanataHack Hackathon系列分析的前5名贡献者之一。

  • 我在这里分享我的知识,并指导初学者使用Binary分类中的分类用例进行顶级黑客竞赛

让我们深入研究二元分类–学习来自Analytics Vidhya的JanataHack Hackathon系列的保险交叉销售实例,并进行实践实验

保险交叉销售黑客马拉松的链接:https://datahack.analyticsvidhya.com/contest/janatahack-cross-sell-prediction/#ProblemStatement

我们的客户是一家为客户提供健康保险的保险公司,现在他们需要我们帮助构建模型,来预测过去一年的保单持有人(客户)是否也会对公司提供的车辆保险感兴趣。

保险单是公司承诺为特定的损失,损害,疾病或死亡提供赔偿保证,以换取指定的保险费的一种协议,保费是客户需要定期向保险公司支付此保证金的金额。

例如,我们每年可以为200000卢比的健康保险支付5000卢比的保险费,这样,如果我们在那一年生病并需要住院治疗,保险公司将承担最高200000卢比的住院费用。现在,如果我们想知道,当公司只收取5000卢比的保险费时,该如何承担如此高的住院费用,那么,概率的概念就出现了。

例如,保险公司每年可能有100名客户支付5000卢比的保险费,但只有少数人(比如2-3人)会在当年住院,这样,每个人都会分担其他人的风险。

就像医疗保险一样,有些车辆保险每年需要客户向保险提供商公司支付一定金额的保险费,这样,如果车辆不幸发生意外,保险提供商公司将提供赔偿(称为“投保”)。

建立模型来预测客户是否会对车辆保险感兴趣对公司非常有帮助,因为它随后可以相应地计划其沟通策略,以覆盖这些客户并优化其业务模型和收入。

分享我的数据科学黑客马拉松方法——如何在20,000多个数据爱好者中达到前10%

在第1部分中,我们学习可以重复,优化和改进的10个步骤,这是帮助你快速入门的良好基础。

学习分类任务黑客马拉松的10个简单步骤

1. 理解问题陈述并导入包和数据集

2. 执行EDA(探索性数据分析)——了解数据集。探索训练和测试数据,并了解每个列/特征表示什么,检查数据集中目标列是否不平衡

3. 从训练数据检查重复的行

4. 填充/插补缺失值-连续-平均值/中值/任何特定值|分类-其他/正向填充/回填

5. 特征工程–特征选择–选择最重要的现有特征| 特征创建或封装–从现有特征创建新特征

6. 将训练数据拆分为特征(独立变量)| 目标(因变量)

7. 数据编码–目标编码,独热编码|数据缩放–MinMaxScaler,StandardScaler,RobustScaler

8. 为二进制分类问题创建基线机器学习模型

9. 结合平均值使用K折交叉验证改进评估指标“ ROC_AUC”并预测目标“Response”

10. 提交结果,检查排行榜并改进“ ROC_AUC”

在GitHub链接上查看PYTHON中完整的工作代码以及可用于学习和练习的用例。

  • https://github.com/Vetrivel-PS/AV-JanataHack-Insurance-Cross-Sell/blob/main/Latest-AV-Cross-Sell-Post-Hackathon-Analysis-3-ML-Models-in-GPU.ipynb

1. 了解问题陈述并导入包和数据集

数据集说明

现在,为了预测客户是否会对车辆保险感兴趣,我们获得了有关人口统计信息(性别,年龄,区域代码类型),车辆(车辆年龄,损坏),保单(保险费,采购渠道)等信息。

用于检查所有Hackathon中机器学习模型性能差异的评估指标

在这里,我们将ROC_AUC作为评估指标。

受试者工作特征曲线(ROC)是用于二元分类问题的评价度量,这是一条概率曲线,绘制了各种阈值下的TPR(真阳性率)和FPR(假阳性率),并从本质上将“信号”与“噪声”分开。所述的曲线下面积(AUC)是一个分类类别之间进行区分的能力量度,并且被用作ROC曲线的汇总指标。

AUC越高,模型在区分正类和负类方面的性能越好。

  • 当AUC=1时,分类器能够正确区分所有的正类点和负类点;然而,如果AUC为0,那么分类器将预测所有的阴性为阳性,所有的阳性为阴性。

  • 当0.5 < AUC < 1时,分类器很有可能将正类别值与负类别值区分开,之所以如此,是因为与假阴性和假阳性相比,分类器能够检测更多数量的真阳性和真阴性。

  • 当AUC = 0.5时,分类器无法区分正类别点和负类别点,这意味着分类器将为所有数据点预测随机类别或常量类别。

  • 交叉销售:训练数据包含3,81,109个示例,测试数据包含1,27,037个示例。数据再次出现严重失衡——根据训练数据,仅推荐12.2%(总计3,81,109名员工中的46,709名)晋升。

让我们从导入所需的Python包开始

# Import Required Python Packages
# Scientific and Data Manipulation Libraries
import numpy as np
import pandas as pd

# Data Viz & Regular Expression Libraries
import matplotlib.pyplot as plt
import seaborn as sns

# Scikit-Learn Pre-Processing Libraries
from sklearn.preprocessing import *

# Garbage Collection Libraries
import gc

# Boosting Algorithm Libraries
from xgboost import XGBClassifier
from catboost import CatBoostClassifier
from lightgbm import LGBMClassifier

# Model Evaluation Metric & Cross Validation Libraries
from sklearn.metrics import roc_auc_score, auc, roc_curve
from sklearn.model_selection import StratifiedKFold, KFold

# Setting SEED to Reproduce Same Results even with "GPU"
seed_value = 1994
import os
os.environ['PYTHONHASHSEED'} = str(seed_value)
import random
random.seed(seed_value)
import numpy as np
np.random.seed(seed_value)
SEED=seed_value

  1. 科学和数据处理 ——用于使用Numpy处理数字数据,使用Pandas处理表格数据。

  2. 数据可视化库——Matplotlib和Seaborn用于可视化单个或多个变量。

  3. 数据预处理,机器学习和度量标准库——用于通过使用评估度量标准(例如ROC_AUC分数)通过编码,缩放和测量日期来预处理数据。

  4. 提升算法– XGBoost,CatBoost和LightGBM基于树的分类器模型用于二进制以及多类分类

  5. 设置SEED –用于将SEED设置为每次重现相同的结果

2. 执行EDA(探索性数据分析)–了解数据集
# Loading data from train, test and submission csv files
train = pd.read_csv('../input/avcrosssellhackathon/train.csv')
test = pd.read_csv('../input/avcrosssellhackathon/test.csv')
sub = pd.read_csv('../input/avcrosssellhackathon/sample_submission.csv')

# Python Method 1 : Displays Data Information
def display_data_information(data, data_types, df)
data.info()
print("\n")
for VARIABLE in data_types :
data_type = data.select_dtypes(include=[ VARIABLE }).dtypes
if len(data_type) > 0 :
print(str(len(data_type))+" "+VARIABLE+" Features\n"+str(data_type)+"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值