前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三分钟看懂机器学习中应该注意哪些问题?

三分钟看懂机器学习中应该注意哪些问题?

作者头像
CDA数据分析师
发布2018-02-08 10:40:06
4820
发布2018-02-08 10:40:06
举报

本文简单谈谈机器学习中应该注意的一些问题。仅供大家参考学习和讨论。

1. 特征预处理

机器学习中的输入数据必须是数值类型的,但是现实问题中不免会有一些类别类型的数据,比如性别,颜色,婚姻状况等等,这些类别的数据是无法直接用于机器学习的。那么如何将这类数据转变成数值类型的数据呢?通常可以利用one hot 编码或者标签编码将这类数据变换成数值类型的数据。

比如性别,性别可以分为男,女,这种数据可以利用标签编码来将其变换成数值类型的特征,比如男变换成0,女变换成1。如果性别中还包含未知,或者保密,此时可以将数据通过one hot 编码将其变成四个变量,性别_男,性别_女,性别_未知,性别_保密,这四个变量的取值都是0,1取值的,某个用户的性别属性属于哪种,哪个变量取值就是1,其余变量取值为0。比如某个用户性别为男,那么对应的特征为[性别_男,性别_女,性别_未知,性别_保密]=[1,0,0,0]。

容易看出,如果利用one hot 编码会使得特征个数增加,如果利用标签编码,不会使得特征个数增加,这是因为利用标签编码变换特征时,只是将原来的特征变换为0或者1。

2. 时间序列数据的交叉验证

针对时间序列类型的数据集,交叉验证不能用一般的k折交叉验证或者留一法来验证。这是因为,时间序列类型的数据比较特殊,在某个时间段的特征在另一个时间段不一定具有相同的特征。另外,如果采用采样的方法,有可能导致验证时会在先于训练集中时间点的数据上验证,这种测试是不合理的。

对于时间序列类型的数据,可以利用前向链式策略来验证,比如k折交叉验证:

fold 1 : training [1], test [2]

fold 2 : training [1 2], test [3]

......

fold k : training [1 2 ... k], test [k+1]

其中下标表示时间序列的单位,比如日,月,年等。

3. 缺失值

给定一个数据集,如果其中某个特征中缺失值的比例比较高,处理的方法可以参考以下几种做法。

第一种,将缺失值设为一种特殊类别的数据,将其作为一种特殊情形。

第二种,将相应的特征直接剔除掉。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CDA数据分析师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档