机器学习 数据量不足问题----1 做好特征工程 2 不要用太多的特征 3 做好交叉验证 使用线性svm
其实这里所说的数据量不足,可以换一种方式去理解:在维度高的情况下,数据相对少。
举一个特例,比如只有一维,和1万个数据,那么这种情况下,我们可以认为数据量其实是足够的,因为数据密度相对来说很高。
如果数据的维度有1000维,数据量仍然有1万,这种情况下,数据的密度就相当低了。
引用wiki里的两句话:
- The common theme of these problems is that when the dimensionality increases, the volume of the space increases so fast that the available data become sparse. This sparsity is problematic for any method that requires statistical significance. In order to obtain a statistically sound and reliable result, the amount of data needed to support the result often grows exponentially with the dimensionality.
- With a fixed number of training samples, the predictive power reduces as the dimensionality increases, and this is known as the Hughes effect
or Hughes phenomenon
具体可以查看链接:Curse of dimensionality
简单的翻译过来就是,当维度增加的时候,训练所需要的数据量需要成指数级别的增长才能满足要求。
维度很高,且数据量不足的情况下,训练模型仅仅是去“记忆”数据,而不是去“学习”数据。因为对于高维度来说,空间的自由度非常大,在数据量相对不高的情况下,其实每一个数据都可以看成是一个“特例”,这也是造成过拟合现象的原因。
但是,高维度的情况下也有一个好处:既然空间的自由度很高,那么数据就更可能线性可分,在维度高到一定程度的时候,我们就可以认为其线性可分的概率为1 (其实这个观点是缺少严谨的数学验证的,可以参考:如何证明无穷多维的情况下,数据一定线性可分? - 雷天琪的回答)。
所以得出的结论是,在数据量不足的情况下(相对于高维度下的数据量不足问题),我们可以使用线性分类器来解决问题,因为其“更可能线性可分”,比如,使用SVM来分类数据量少的问题。
最近做的一个项目就遇到了这个问题,从上面的分析的基础上,可以看出线性分类器可以保证在数据量很少的情况下的性能,但是我的实际项目不能验证这一点。 :(
我的实际项目中,效果最好的还是随机森林(可以应对线性不可分的情况),而SVM和其他的一些模型并无明显差别,唯一显著的效果是,False Positive很少,不过这一点在某些情况下很重要。至于原因,现在只能理解为数据中有错误。
几千份样本对于大部分机器学习模型, 已经足够了(除了深度学习之类的)
根据"No free lunch"原则, 没有一个模型比另一个模型好的说法, 必须结合具体问题.
建议:
1 做好特征工程
2 不要用太多的特征
3 做好交叉验证
机器学习 数据量不足问题----1 做好特征工程 2 不要用太多的特征 3 做好交叉验证 使用线性svm的更多相关文章
- 使用sklearn做单机特征工程
目录 1 特征工程是什么?2 数据预处理 2.1 无量纲化 2.1.1 标准化 2.1.2 区间缩放法 2.1.3 标准化与归一化的区别 2.2 对定量特征二值化 2.3 对定性特征哑编码 2.4 缺 ...
- 【转】使用sklearn做单机特征工程
这里是原文 说明:这是我用Markdown编辑的第一篇随笔 目录 1 特征工程是什么? 2 数据预处理 2.1 无量纲化 2.1.1 标准化 2.1.2 区间缩放法 2.1.3 无量纲化与正则化的区别 ...
- 转载:使用sklearn做单机特征工程
目录 1 特征工程是什么?2 数据预处理 2.1 无量纲化 2.1.1 标准化 2.1.2 区间缩放法 2.1.3 标准化与归一化的区别 2.2 对定量特征二值化 2.3 对定性特征哑编码 2.4 缺 ...
- sklearn—特征工程
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- 使用sklearn做特征工程
1 特征工程是什么? 有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已.那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中 ...
- 使用sklearn做单机特征工程(Performing Feature Engineering Using sklearn)
本文转载自使用sklearn做单机特征工程 目录 目录 特征工程是什么 数据预处理 1 无量纲化 11 标准化 12 区间缩放法 13 标准化与归一化的区别 2 对定量特征二值化 3 对定性特征哑编码 ...
- 什么是机器学习的分类算法?【K-近邻算法(KNN)、交叉验证、朴素贝叶斯算法、决策树、随机森林】
1.K-近邻算法(KNN) 1.1 定义 (KNN,K-NearestNeighbor) 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类 ...
- 手把手教你用Python实现自动特征工程
任何参与过机器学习比赛的人,都能深深体会特征工程在构建机器学习模型中的重要性,它决定了你在比赛排行榜中的位置. 特征工程具有强大的潜力,但是手动操作是个缓慢且艰巨的过程.Prateek Joshi,是 ...
- 2022年Python顶级自动化特征工程框架⛵
作者:韩信子@ShowMeAI 机器学习实战系列:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/artic ...
随机推荐
- Triangle 1.6 (A Two-Dimensional Quality Mesh Generator and Delaunay Triangulator)
Triangle 一个二维高质量网格(mesh)生成器和Delaunay三角化工具. PSLG(Planar Straight Line Graph)约束Delaunay三角网(CDT)与Delaun ...
- getElementsByName使用
查了下手册,getElementsByName()不能提取没有name属性的标签.div标签本身没有name属性,所以不能被提取.有name标签的主要是各种input标签,所以默认情况下getElem ...
- Super超级ERP系统---(5)采购管理--采购入库
采购商品完成后,下一步要进行入库操作.为了做到精细化管理,入库操作主要分以下几个步骤,采购到货确认,采购入库,入库完成.接下来我们看看这些步骤是怎样实现的. 1.到货确认 采购商品到达仓库后,仓库收货 ...
- Module, Package in Python
1.To put it simple, Module是写好的一系列函数或变量,文件以.py为后缀,可以在其他Module中整体或部分引用. PS: 在Module中[结尾或开头]加入if __name ...
- MySQL定时任务与存储过程实例
shell 定时任务:/usr/bin/mysql -uroot -pxxxxx databasename -e "update table set ......."mysq ...
- spring cloud(二) zuul
spring cloud 网关 zuul 搭建过程 1. 新建boot工程 pom引入依赖 <dependency> <groupId>org.springframework. ...
- JS 100以内的质数、只能被1和自己整除
for(var i = 2;i <= 100;i++){ var biao = 1; for(var j = 2;j < i;j++){ if(i%j == 0){ biao = 0; } ...
- Windows Server 2012安装.net framework3.5(转)
1.先下载WIN2012R2安装NET3.5的专用数据源 https://pan.baidu.com/s/1bqiUTyR 提取码h09k 并解压,比如解压到桌面,解压后的路径为C:\Users\Ad ...
- linux下载命令wget
Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到 本地服务器.如果我们使用虚拟主机,处理这样 ...
- python与图灵机器人交互(WXPY版本)
开发者账号:wujunfeng , 开发者key:官网申请 #!/usr/bin/env python#-*- coding:utf-8 -*- @Author : wujf @Time:2018/ ...