(1)问题描述
问题研究的是从一个保险公司角度思考,是否要向泰坦尼克号乘客出售人身保险的问题
假设保险公司已知船会撞到冰山,幸存者和遇难者的匿名特征
问题研究的目的 最小化遇难者的索赔,最大化保险公司的保单金额
可作为 保险行业向高风险客户(职业,习惯,疾病)出售保险的参考模型
(2)问题定义
如何根据已有的数据(船会撞向冰山,幸存者和遇难者的匿名特征数据),分出投保人是遇难者和幸存者
理想的结果是,保险公司向所有的幸存者出售了保险(全保单),未向所有遇难者出售保险(0索赔)
如果无法精确区分幸存者和遇难者,保险公司的原则是 宁可减少保单,不增加索赔
这个问题源于分类问题(根据已知数据,分类幸存者和遇难者),又高于分类问题(幸存者对应的保单与遇难者对应的索赔,从保险公司来说不对等且相差很大)
重点关注幸存者,如果100%分出幸存者,那就可以只向这部分人出售保险。
(3)准备数据
导入数据
导入原始数据文件
选择特征矩阵和目标因子
1)原始数据中,一共包含12条数据项,从信息的有效性和数据处理的角度出发,剔除”PassangerId”,“Name”, “Ticket”, “Cabin”这4条数据项,”Survived”作为目标因子。
2)按照数字特征和离散特征,分离特征矩阵
数值特征缩放
1)归一化对数值特征进行缩放处理(缩放处理对于算法收敛必不可少),如果数据中存在缺失值,用平均值填充。
2)一般地,
在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,StandardScaler表现更好。
在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用MinMaxScaler。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0255]的范围。
特征处理(离散特征)
对离散特征进行数字化处理
离散特征的编码分为两种情况:
a.离散特征的取值之间没有大小的意义,比如color: [red, blue],那么就使用one-hot编码;
b.离散特征的取值有大小的意义,比如size:[X, XL, XXL],那么就使用数值的映射 {X: 1, XL: 2, XXL: 3}。
选取训练集和测试集数据
model_selection ()
(4)训练模型,调整模型精度
模型选用,SGD
调整模型精确度
根据SGD的特征,验证迭代次数,确认模型收敛(确认迭代2000次,算法可以收敛);
衡量模型算法的性能,混淆矩阵,准确率,精确度,PR曲线;
根据训练数据的PR曲线得到的阈值,验证测试数据,调整阈值。
(5)总结
根据我们的模型和阈值设置(用作模型精度调整),可以将幸存者的分类精度由0.73提高到1.0。棒!
PS:详细代码及代码解析见github:https://github.com/Miriam6/data-analysis-Kaggle
百度网盘:https://pan.baidu.com/s/1jAn3e1nK2x5RjGvLiSwTaA,uryr
网友评论