0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习中需要了解的5种采样方法

智能感知与物联网技术研究所 来源:通信信号处理研究所 2020-08-10 15:36 次阅读

采样问题是数据科学中的常见问题,对此,WalmartLabs 的数据科学家 Rahul Agarwal 分享了数据科学家需要了解的 5 种采样方法,编译整理如下。 数据科学实际上是就是研究算法。 我每天都在努力学习许多算法,所以我想列出一些最常见和最常用的算法。 本文介绍了在处理数据时可以使用的一些最常见的采样技术。 简单随机抽样假设您要选择一个群体的子集,其中该子集的每个成员被选择的概率都相等。 下面我们从一个数据集中选择 100 个采样点。

sample_df = df.sample(100)

分层采样

假设我们需要估计选举中每个候选人的平均票数。现假设该国有 3 个城镇: A 镇有 100 万工人, B 镇有 200 万工人,以及 C 镇有 300 万退休人员。 我们可以选择在整个人口中随机抽取一个 60 大小的样本,但在这些城镇中,随机样本可能不太平衡,因此会产生偏差,导致估计误差很大。 相反,如果我们选择从 A、B 和 C 镇分别抽取 10、20 和 30 个随机样本,那么我们可以在总样本大小相同的情况下,产生较小的估计误差。 使用 python 可以很容易地做到这一点:

from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size=0.25)

水塘采样

我喜欢这个问题陈述:

假设您有一个项目流,它长度较大且未知以至于我们只能迭代一次。 创建一个算法,从这个流中随机选择一个项目,这样每个项目都有相同的可能被选中。

我们怎么能做到这一点? 假设我们必须从无限大的流中抽取 5 个对象,且每个元素被选中的概率都相等。

import randomdef generator(max): number = 1 while number < max: number += 1 yield number# Create as stream generatorstream = generator(10000)# Doing Reservoir Sampling from the streamk=5reservoir = []for i, element in enumerate(stream): if i+1<= k: reservoir.append(element) else: probability = k/(i+1) if random.random() < probability: # Select item in stream and remove one of the k items already selected reservoir[random.choice(range(0,k))] = elementprint(reservoir)------------------------------------[1369, 4108, 9986, 828, 5589]

从数学上可以证明,在样本中,流中每个元素被选中的概率相同。这是为什么呢? 当涉及到数学问题时,从一个小问题开始思考总是有帮助的。 所以,让我们考虑一个只有 3 个项目的流,我们必须保留其中 2 个。 当我们看到第一个项目,我们把它放在清单上,因为我们的水塘有空间。在我们看到第二个项目时,我们把它放在列表中,因为我们的水塘还是有空间。 现在我们看到第三个项目。这里是事情开始变得有趣的地方。我们有 2/3 的概率将第三个项目放在清单中。 现在让我们看看第一个项目被选中的概率:

移除第一个项目的概率是项目 3 被选中的概率乘以项目 1 被随机选为水塘中 2 个要素的替代候选的概率。这个概率是: 2/3*1/2 = 1/3 因此,选择项目 1 的概率为: 1–1/3=2/3

我们可以对第二个项目使用完全相同的参数,并且可以将其扩展到多个项目。 因此,每个项目被选中的概率相同:2/3 或者用一般的公式表示为 K/N 随机欠采样和过采样

我们经常会遇到不平衡的数据集。 一种广泛采用的处理高度不平衡数据集的技术称为重采样。它包括从多数类(欠采样)中删除样本或向少数类(过采样)中添加更多示例。 让我们先创建一些不平衡数据示例。

from sklearn.datasets import make_classificationX, y = make_classification( n_classes=2, class_sep=1.5, weights=[0.9, 0.1], n_informative=3, n_redundant=1, flip_y=0, n_features=20, n_clusters_per_class=1, n_samples=100, random_state=10)X = pd.DataFrame(X)X[ target ] = y

我们现在可以使用以下方法进行随机过采样和欠采样:

num_0 = len(X[X[ target ]==0])num_1 = len(X[X[ target ]==1])print(num_0,num_1)# random undersampleundersampled_data = pd.concat([ X[X[ target ]==0].sample(num_1) , X[X[ target ]==1] ])print(len(undersampled_data))# random oversampleoversampled_data = pd.concat([ X[X[ target ]==0] , X[X[ target ]==1].sample(num_0, replace=True) ])print(len(oversampled_data))------------------------------------------------------------OUTPUT:90 1020180

使用 imbalanced-learn 进行欠采样和过采样imbalanced-learn(imblearn)是一个用于解决不平衡数据集问题的 python 包,它提供了多种方法来进行欠采样和过采样。a. 使用 Tomek Links 进行欠采样:imbalanced-learn 提供的一种方法叫做 Tomek Links。Tomek Links 是邻近的两个相反类的例子。
在这个算法中,我们最终从 Tomek Links 中删除了大多数元素,这为分类器提供了一个更好的决策边界。

from imblearn.under_sampling import TomekLinks
tl = TomekLinks(return_indices=True, ratio= majority )X_tl, y_tl, id_tl = tl.fit_sample(X, y)

b. 使用 SMOTE 进行过采样:在 SMOE(Synthetic Minority Oversampling Technique)中,我们在现有元素附近合并少数类的元素。

from imblearn.over_sampling import SMOTE
smote = SMOTE(ratio= minority )X_sm, y_sm = smote.fit_sample(X, y)

imbLearn 包中还有许多其他方法,可以用于欠采样(Cluster Centroids, NearMiss 等)和过采样(ADASYN 和 bSMOTE)。 结论算法是数据科学的生命线。 抽样是数据科学中的一个重要课题,但我们实际上并没有讨论得足够多。 有时,一个好的抽样策略会大大推进项目的进展。错误的抽样策略可能会给我们带来错误的结果。因此,在选择抽样策略时应该小心。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8095

    浏览量

    130519
  • 数据集
    +关注

    关注

    4

    文章

    1176

    浏览量

    24340
  • 数据科学
    +关注

    关注

    0

    文章

    163

    浏览量

    9979

原文标题:机器学习中需要了解的 5 种采样方法

文章出处:【微信号:tyutcsplab,微信公众号:智能感知与物联网技术研究所】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    选择贴片电容时需要了解哪些问题?

    购买贴片电容时,需要了解以下几个方面: 1、电容类型与规格:贴片电容有多种类型,如陶瓷电容器、铝电解电容器、钽电解电容器、多层陶瓷电容器(MLCC)以及聚合物电容器等。每种类型都有其特定的应用场
    的头像 发表于 03-29 15:45 78次阅读

    J-Link 中的JTAG 接口:正确使用需要了解的注意事项,在这里!

    J-Link 中的JTAG 接口:正确使用需要了解的注意事项,在这里!
    的头像 发表于 12-01 16:01 695次阅读
    J-Link 中的JTAG 接口:正确使用<b class='flag-5'>需要了解</b>的注意事项,在这里!

    我们为什么需要了解一些先进封装?

    我们为什么需要了解一些先进封装?
    的头像 发表于 11-23 16:32 306次阅读
    我们为什么<b class='flag-5'>需要了解</b>一些先进封装?

    需要了解的FPGA基础知识

    的微处理器(MPU)和微控制器(MCU)、现成的图形处理单元(GPU)、FPGA和自定义片中系统(SOC)装置。要决定使用哪种方法需要根据具体的应用需求来综合考虑。 举例来说,在研究诸如5G基站这样
    发表于 11-20 18:56

    了解一下函数指针的概念和使用方法

    在讲回调函数之前,我们需要了解函数指针。
    的头像 发表于 11-06 10:04 300次阅读
    <b class='flag-5'>了解</b>一下函数指针的概念和使用<b class='flag-5'>方法</b>

    机器学习与数据挖掘方法和应用

    机器学习与数据挖掘方法和应用(经典)
    发表于 09-26 07:56

    PLC的8种常见错误类型,PLC修理人员需要了解

    我们整理了当PLC呈现反常报警时,PLC修理人员需要了解的8种常见错误类型。一、CPU反常CPU反常报警时,应查看CPU单元衔接于内部总线上的一切器材。具体方法是顺次替换可能存在问题的单元,找出
    的头像 发表于 09-23 08:08 499次阅读
    PLC的8种常见错误类型,PLC修理人员<b class='flag-5'>需要了解</b>

    基于机器学习的车位状态预测方法

    本发明公开一基于机器学习的车位状态预测方法,基于历史数据,建立回归决策树模型进而构建改进决策树模型,对每个区域的停车率进行预测,基于停车率和用户喜好度为用户推荐相应的停车区域,获取相
    发表于 09-21 07:24

    替换滚珠螺杆需要了解哪些参数?

    替换滚珠螺杆需要了解哪些参数?
    的头像 发表于 09-08 17:47 656次阅读
    替换滚珠螺杆<b class='flag-5'>需要了解</b>哪些参数?

    机器学习为什么需要数据预处理

    并以格式化的方式进行存储。为此,我们使用数据预处理任务。 为什么我们需要数据预处理? 现实世界的数据通常包含噪声、缺失值,并且可能采用无法直接用于机器学习模型的不可用格式。数据预处理是清理数据并使其适合
    的头像 发表于 08-24 09:20 1135次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>为什么<b class='flag-5'>需要</b>数据预处理

    机器学习算法入门 机器学习算法介绍 机器学习算法对比

    机器学习算法入门 机器学习算法介绍 机器学习算法对比 机器
    的头像 发表于 08-17 16:27 612次阅读

    机器学习和深度学习的区别

      机器学习是一种方法,利用算法来让机器可以自我学习和适应,而且不需要明确地编程。在许多应用中,
    发表于 08-02 17:36 369次阅读

    联合学习在传统机器学习方法中的应用

    联合学习在传统机器学习方法中的应用
    的头像 发表于 07-05 16:30 530次阅读
    联合<b class='flag-5'>学习</b>在传统<b class='flag-5'>机器</b><b class='flag-5'>学习方法</b>中的应用

    需要了解的有关射频匹配网络的5件事

    在RF电路中,阻抗可以在很宽的频率范围内变化。RF匹配网络的主要目标是匹配源和负载的阻抗,以最大限度地提高功率传输,并在所需的工作频率范围内最小化反射。这需要了解源和负载的阻抗,并选择在该频率下产生匹配的组件。
    的头像 发表于 06-27 11:38 1091次阅读
    您<b class='flag-5'>需要了解</b>的有关射频匹配网络的5件事

    公交导乘屏选择需要了解哪些参数?

    公交导乘屏选择需要了解哪些参数? 公交导乘屏的应用范围是很广泛,我们生活的方方面面都有接触到公交导乘屏,比如:车载、货架、机场、餐厅、多媒体教学、地铁站台、公交站台等。以车载类公交导乘屏为列,车载
    的头像 发表于 05-23 17:07 417次阅读