机器学习的样本选择

1.样本选择的绪论

   最近采集了很多生理数据,主要是心电信号,心电信号的特点是有效信号分布集中,频率低,幅度低,容易被噪声污染,使用小波变换,低通滤波器来进行预处理,但是在日常生活中采集的数据,总有无法去掉的噪声,而且不同的人情况还不一样,肯定会有垃圾样本的。

    我们做机器学习算法的时候,会对数据进行划分,划分为训练集,验证集和测试集;

    但是实际上,再划分数据集之前应该考虑实际情况中的样本选择,有些样本本身就毫无意义,需要剔除,这一步有很多方法,比如你有了一个精确提取的样本,可以通过这些样本来对其他样本进行评估,设计一个误差函数,然后把超过这些误差的样本丢弃。这只是其中一个办法,我自己都没用使用过。

    我觉得是根据研究的问题来的,比如我采集到了心电信号,可以计算HRV特征,其中有什么心率,高频功率,低频功率等等,根据实际的情况,有一些特征会有特定的表现,那么我们就可以找到这些特征的表现来对数据进行筛选,比如统计检验的方法,或者使用kmeans算法,KNN等等,对数据过滤。

    机器学习不仅仅是建模用的,它不一定是最后一步,可能是一种贯穿始终的东西,不是什么核武器,要必须留到最后使用。

     我说了这么多,主要是指出两个问题:

(1)数据本身是值得怀疑的。

(2)机器学习不是什么保留项目。

   将某些样本划分为训练集,可以有自己的标准,我们的目的是,使用最少的训练样本得到最精确的模型,那么最理想的条件就是训练集包含了所有的可能性。但是,遗憾的是,这种情况几乎不存在。不然人生也太美好了。

2.采样

数据选择需要采样,采样的标准是,采样的样本可以代表总体。这就要求样本子集对总体的估计满足:

p(|e-e_0|\geq \varepsilon )\leqslant \delta

e代表样本总体的估计,e_0代表总体的估计,\varepsilon代表置信度,1-\delta代表置信区间。

一个美好的样本集合应该具有两种性质,一是无偏性,二是样本的方差小。

学过数理统计的同学都知道这是什么意思,无偏性就是样本的期望等于总体的期望,方差就是样本的估计值和真实值的偏差。

采样方法都是初中学过的。

(1)无放回的简单抽样:每条样本被抽到的概率都是1/N

(2)有放回的简单抽样:同一条样本可能被多次抽到

(3)平衡采样:依据一定的比例对数据采样,比如一个总体,A类有10000个,B类有100个,我们可以按照一定比例去采样,生成一个训练集,假设按照1:10采样,那么上采样就是对B类复制10次,下采样就是对A类样本删除到只剩1000个、

(4)整群采样:先把整体划分为K个集合,然后分别对这些集合进行简单随机采样。

(5)分层采样:按照比例对不同的类别采样。

3.原型选择和训练集选择

选择样本的目的是训练机器学习模型,那么就是训练集选择,如果只是按照固定的误差标准就是原型选择。

选择方法有许多种,没固定的方法。这里就不做介绍了。

5.划分样本

构建模型会把数据集划分为好几份,主要是划分为训练集和测试集。

训练集用来训练模型,测试集用来测试模型的效果,测试集越多,得到的结论就越有可信度。验证集可以从训练集里面抽取,用来调整模型。

       而且,划分数据集的前提条件还是独立同分布,说真的,我到今天都没验证过这个,但是实际运作中,数据集划分不恰当,就会很惨。心电信号真的太复杂了。我还要很多经验,但是也不可能一口气说完,以后有机会再说吧。

      划分的方式有如下几种:

(1).留出法

这个没什么好说的,就是随机把样本划分为三个部分或者两个部分,一个用来训练和调参,一个用来测试结果。这种方法最讲究独立同分布,不然的话,效果可能会很好,因为很容易引入人为因素,测试集比训练集的效果还好,懂得都懂、

(2).交叉验证

网上关于这个说了很多,不管是5折还是10折,还是留一交叉验证吧,都是对训练集的。

记住,一定要有个测试集,它什么都没参与过。再交叉验证后,模型训练好了之后,就可以用它来测试模型的效果。

(3)自助法

这个方法是随机森林用的方法,自主采样(booststraping),有放回的简单随机抽样,从样本中抽N次数据,把这些数据作为训练集,没抽到的数据作为测试集。根据计算,总会有36.8%的数据抽不到。这个方法很少有人用吧,数据量不过,而且也没用办法分训练集和测试集,这个方法就很合适。

5.结尾

划分数据集之前可以先对数据进行筛选,选训练集可以按照自己的方法去选,没必要采样什么的,但是测试集一定要有,不然模型做出来,就没办法评估了,包括交叉验证。

  

相关推荐

  1. 机器学习特征选择方法

    2024-04-05 10:28:02       12 阅读
  2. 机器学习样本及统计量

    2024-04-05 10:28:02       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-05 10:28:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-05 10:28:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-05 10:28:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-05 10:28:02       18 阅读

热门阅读

  1. 快速排序和归并排序(递归实现)

    2024-04-05 10:28:02       14 阅读
  2. 如何正确使用reflect:Go反射规范与最佳实践

    2024-04-05 10:28:02       13 阅读
  3. VUE实现下一页的功能

    2024-04-05 10:28:02       14 阅读
  4. 使用generator实现async函数

    2024-04-05 10:28:02       15 阅读
  5. go中的常用的关键字

    2024-04-05 10:28:02       13 阅读
  6. Linux系统下tomcat服务自动重启

    2024-04-05 10:28:02       12 阅读
  7. 每天学习一个Linux命令之umount

    2024-04-05 10:28:02       13 阅读
  8. P1776宝物筛选

    2024-04-05 10:28:02       12 阅读
  9. Day1 单调数据结构

    2024-04-05 10:28:02       12 阅读