结合“泰坦尼克生存预测”对数据预处理的进一步思考1

结合“泰坦尼克生存预测”对数据预处理的进一步思考1

上一篇博文按自己的思路做了一下kaggle的泰坦尼克生存预测:
https://blog.csdn.net/qq_43012160/article/details/99305856
最近结合阿里天池上的这篇博文:https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12282042.0.0.1dce2042NBc6J6&postId=6772
复现了一些他的功能,又读了一遍《数据挖掘概念与技术》中数据预处理的章节,对预处理这一块有了一个大概的掌握与思考,在这篇文章里整理一下。

数据离散化、分箱光滑与概念分层

我们做数据挖掘的时候经常会碰到一些连续的数据,我之前一直认为连续数据比较好,因为它可以比较细致的反应一个特征的情况。其实不尽然,比如age属性,16岁、18岁我们都可以称他们为teenager,60岁65岁都是elder;16和18、60和65代表的样本属性信息可能都是一样的(年轻人跑的快,老年人跑得慢),但是彼此之间却有数值差异,所以就应该分箱(binning)离散化掉。
如果不做离散化,首先是离群点代表的极端数据会严重影响模型的准确程度,把原来不存在的关系作为重要模式来学习。而离散化,尤其是等距离散,可以有效地减弱极端值和异常值的影响。
其次真正具有线性关系的变量其实不多,比如这种二元-二元的映射关系:
在这里插入图片描述
可以增加不同类别变量间的区别能力,更好地反映变化的这点、分类的阈值。
另外离散化非常直观的缩小了数据规模,也算方便计算了。

生存预测里就可以对人员的消费进行离散化处理,毕竟消费的两极分化,包括富人间的消费分化是非常巨大的,很容易产生极端数据、离群点。
还可以对人员称谓做一下概念分层,也和离散化一个道理:

title_Dict = {}
title_Dict.update(dict.fromkeys(['Capt', 'Col', 'Major', 'Dr', 'Rev'], 'Officer'))
title_Dict.update(dict.fromkeys(['Don', 'Sir', 'Countess', 'Dona', 'Lady'], 'Royalty'))
title_Dict.update(dict.fromkeys(['Mme', 'Ms', 'Mrs'], 'Mrs'))
title_Dict.update(dict.fromkeys(['Mlle','Male', 'Miss'], 'Miss'))
title_Dict.update(dict.fromkeys(['Mr'], 'Mr'))
title_Dict.update(dict.fromkeys(['Master', 'Jonkheer'], 'Master'))

train_data['Title'] = train_data['Title'].map(title_Dict)
test_data['Title']=test_data['Title'].map(title_Dict)

维度扩充与隐含信息的挖掘。

源数据里信息的属性不是划分死的“,有时候可能一个属性里包含着多种信息,也有可能几个属性体现同一种属性。有时候该扩充属性的时候就要扩充属性。比如生存预测中的Name属性,一方面,Name里包含了人员的称谓Title,另一方面,Name的长度Name_length本身也和人的社会地位有一定的关系,这个时候我们就从Name里派生出称谓Title和姓名长度Name_length两个属性。
另外Name这个属性如果直接使用是价值不大的,但是却隐含着两个比较有用的属性,这就是属性与结果可能存在的隐含关系,即信息的隐藏信息。

而对于兄弟姐妹的数量和父母子女的数量我们都可以把他们归为家庭大小。毕竟一个人或者带着一大家子人都不方便跑路。

降维与数据规约

说完扩维我们来说说降维。
谈到降维,先谈谈PCA、小波变换和嵌入式的lasso。
lasso我还没研究透,后面再补吧。。。

1.PCA,PCA并不是简单的保留原属性的部分特征来降维,而是通过“投影”,通过创建一个替换的、较小的变量集”组合“属性的基本要素。类似于”重构“,因为是重构,所以反而可能揭示出一些原本反映不出来的数据的隐含关系、隐含信息。但也因此是有损的、会丢失部分信息。在截取特征系数矩阵的前几个的时候就把被弃用的特征系数代表的信息给丢弃了(所以要把特征系数从大到小排序,留大的丢小的)。

2.DWT小波变换,我之前学《通信原理》,里面的傅里叶变换是把信号变成许多正弦、余弦函数的叠加,小波变换就是把信号/数据拆成小波函数的叠加,并选取其中最有代表性的、数据表现力最强的小波系数,对信号/数据进行的有损压缩。经过小波变换后的向量还可以截断。小波变换和傅里叶变换相比拥有较强的局部性,有利于保存局部细节。

降维是数据规约的一种方式,数据的离散化本身也可以缩小数据规模,也是数据规约的一种方式。

关于特征选择

特征选择的方差和相关系数只是一种参考,并不是说相关系数低就一定没关系。pearson相关系数是针对线性关系的,建议使用kendall相关系数,但kendall相关系数对三角函数之类的邪门关系也很无力。这同时也又凸显了数据离散化的必要。

之前学习决策树的时候,提到决策树可以利用公式计算特征的重要性(ID3用信息熵,CART用基尼系数)。所以可用决策树来做特征工程。不出现在树中的所有属性假定是不相关的。出现在树中的属性形成规约后的属性子集。

编码方式

为什么要有独热编码?
因为有的属性是有大小关系的,有的属性是没有大小关系的。
比如年龄,分箱之后编0、1、2、3、4就可以了,因为年龄本身是具有大小关系的。
但是登船地点,比如上海、南京、天津,它本身是没有大小关系的,用LableEncoder编成0、1、2反而给了他一个原本不存在的、不合逻辑的大小关系。所以要用独热编码来作编码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值