搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 机器学习blog > 机器学习杂谈

机器学习杂谈

机器学习blog 2017-10-31


本文随便谈谈机器学习中应该注意的问题。


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. 缺失值

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

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

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







版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《机器学习杂谈》的版权归原作者「机器学习blog」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注机器学习blog微信公众号

机器学习blog微信公众号:mlanddlanddm

机器学习blog

手机扫描上方二维码即可关注机器学习blog微信公众号

机器学习blog最新文章

精品公众号随机推荐