● 长尾场景下的数据如何清洗,有哪些方法、措施、注意点?
【议题说明】
数据对机器学习模型训练起着至关重要的基础作用,使用高质量数据集用于训练或微调模型,能够大大提升模型的效果和性能。在垂直领域训练过程中,有很多种任务,如何收集和标注多种情况的数据,对提升模型的综合能力应对有重要意义。长尾数据指的是数据集中一些类别样本数据很少,一些样本数量很多的情况,而这种样本的不平衡会影响模型的学习效果和泛化能力。本议题,希望大家可以针对长尾场景下的数据如何清洗加工进行探讨,从方法、措施及注意点等方面进行交流。
【议题主持人】邓俊峰 某银行 AI技术经理:
在人工智能领域,大模型被比喻为产业生产力进步的发动机,而数据则提供源源不断地石油。这个宝贵的资源,需要靠着先进的加工技术开采和加工,才能生产出优质的产品。而长尾场景下的数据如何清洗这个议题,则是非常值得探讨的一个好议题。从活跃在论坛的一众人工智能专家、行业专家、算法工程师的回复来看,大家都已经对大模型有丰富的应用经验,提供不少真知灼见,接下来我们一一学习。
如何收集和标注多种情况的数据,对提升大模型的综合能力应对有重要意义。
高质量的数据集的生成和持续管理在大模型应用落地过程中不中断,期间的困难也比较多。例如,语料数据生成问答对,很多是手工生成,耗时耗力;PDF文档中的图片读取,文字识别并不准确;数据集版本管理的及时性和效率等等。
数据清洗是首要步骤。在做数据清洗需要注意以下内容:
1、理解业务需求:在进行数据清洗前,要充分了解业务需求和数据背景,以确保清洗后的数据能够满足业务需求。
2、保持数据原始性:在进行数据清洗时,应尽可能保持数据的原始性,避免对数据的过度处理或修改。
3、建立数据质量标准:明确数据清洗的目标和标准,确保清洗后的数据满足业务需求。
4、数据验证:使用多种方法来验证数据的准确性,如交叉验证、逻辑验证等。
5、数据转换:对于不规则或格式不统一的数据,进行必要的转换和标准化,如日期格式统一、文本清理等。
6、数据填充:对于缺失值,可以采用插值、均值填充、中位数填充、众数填充或基于模型的方法。
7、异常值处理:识别并处理异常值,可以通过设定阈值、使用统计方法或基于模型的方法。
8、持续监控与反馈:建立数据质量的监控机制,及时发现并处理数据质量问题。
通过精心的数据清洗和模型微调,可以显著提高大模型在长尾场景下的综合应用能力。
在长尾场景下清洗数据是一项挑战性的任务,因为这类数据通常包含大量稀有或不规则的数据点。有效地清洗长尾数据可以帮助模型更好地理解和处理这些稀有案例,从而提高模型的泛化能力和准确性。以下是一些建议和方法,用于清洗长尾场景下的数据:
异常值处理:长尾数据中常常存在异常值,这可能由传感器故障、数据采集错误等原因引起。使用统计学方法可以识别和处理这些异常值,从而确保数据的准确性。
缺失值处理:长尾数据中缺失值的比例可能较高。可以根据具体情况采用适当的方法填充缺失值,例如使用均值填充、插值法或其他统计模型。重要的是要保持数据的完整性,避免随意删除含有缺失值的行或列,尤其是当缺失值不多且可以通过其他信息推断时。
特征选择:长尾数据可能包含许多特征,但并非所有特征都对建模有帮助。通过特征选择技术,可以剔除与任务无关或影响较小的特征,这有助于简化模型和提高建模效率。
数据平滑:长尾分布的数据可以通过数据平滑方法来改善,如对数转换、Box-Cox转换等,使数据更符合正态分布,有利于建模和分析。
数据标注:对于长尾场景下的数据,可能需要手动标注,因为自动标注算法可能难以处理稀有案例。多人标注和标注规范化可以提高标注质量。
模型微调:在微调模型时,应特别注重长尾场景下的数据,加强这些数据的训练,以提高模型在这些场景下的表现。数据增强和迁移学习等技术可用来提高模型的泛化能力。
持续监控与更新:长尾数据可能会随时间和环境变化而变化,因此需要持续监控数据的分布和变化,及时发现和处理新的异常值和偏差。
保护用户隐私:在处理长尾场景下的数据时,要注意保护用户隐私,避免泄露敏感信息,并遵守相关法律法规。
避免过拟合:在模型微调过程中,应注意避免过拟合,尤其是在长尾数据上。过拟合可能导致模型在新场景下的表现下降。
使用预训练模型:可以利用预训练模型初始化权重,然后在新数据集上进行微调。这有助于模型更好地泛化到各种数据集。
类别加权损失函数:在长尾数据分布的情况下,传统的损失函数可能偏向于优化多数类别的预测性能,而忽视了少数类别。使用类别加权损失函数可以平衡不同类别的权重,提高少数类别的预测性能。
数据去重与格式统一:确保数据中没有重复记录,并且格式统一,这样可以减少处理时间和成本,同时提高模型的准确性和性能。
清洗长尾场景下的数据需要综合考虑多种方法和技术,并注意数据的质量、隐私保护和法律法规的遵循。通过精心的数据清洗和模型微调,可以显著提高大模型在长尾场景下的综合应用能力。
对数据源的正确性和有效性的判断,在数据预处理环节一开始就非常重要。
如果模型基于错误的、无意义的数据建立,那么这个模型也会出错。因此,如果源数据带有缺失值(NaN),就需要在数据预处理中进行清洗。缺失值是最常见的数据问题,有很多处理缺失值的方法。保留对于有些缺失值占比不大或者通过其他信息可以进行推断的特征,去除缺失量太多的数据行或列。强烈建议在清洗的过程中每做一步都备份一下,或者在小规模数据上试验成功后再处理全量数据,节约时间,也充分留足撤销操作的余地。
如果数据是由系统日志而来的,那么通常会在格式和内容方面与元数据的描述保持一致。而如果数据是由人工收集或用户填写而来的,则有很大可能会在格式和内容上存在问题。
有时我们拥有多个包含相同信息的维度特征,这时就可以进行交叉验证,修复矛盾内容。比如一个隐去后六位的身份证号,100000199701XXXXXX,而年龄字段数据为18,这显然是不合理的,由于身份证号可信度更高,所以我们应该对年龄字段进行修复。
在真实世界中获取的数据常常会包含错误信息,有的是人为导致,有的是非人为导致,我们可以通过交叉验证及时发现并修复矛盾内容,为后期建模提供更高质量的数据信息
。
以下是清洗长尾数据的方法、措施和注意点:
异常值处理:长尾数据中常见异常值,可利用统计学方法处理异常值,确保数据准确性。
缺失值处理:长尾数据可能存在较多缺失值,需采用适当方法填充或处理,如均值填充、插值法等,以保证数据完整性。
特征选择:对长尾数据,可应用特征选择技术,剔除对建模无帮助或影响较小的特征,简化模型并提高建模效率。
数据平滑:考虑对长尾分布的数据进行平滑处理,如对数转换、Box-Cox转换等,使数据更符合正态分布,有利于建模和分析。
在清洗长尾数据时需注意保留重要信息,避免信息丢失。应谨慎处理异常值和缺失值,选择合适的填充方法。同时,特征选择和数据平滑能帮助优化数据集,提高建模效果。综合运用这些方法和注意点,可以有效清洗长尾数据,为后续分析和建模提供准确、完整的数据基础。
长尾场景下数据清洗需要及时发现和处理异常值和偏差。
如下是长尾场景下数据清理的注意事项:
1.数据完整性与异常值检测:长尾场景下的数据通常会存在一些异常值,这些值可能是由于传感器故障、数据采集错误等原因导致的。因此,在清洗数据时,需要仔细检查数据中是否存在异常值,并采取适当的方法进行处理。同时,也要确保数据的完整性,避免出现缺失值或重复值。
2.数据分类与标签处理:在长尾场景下,数据的分类和标签可能存在不平衡的现象,即某些类别的数据量远远超过其他类别。这可能会导致模型在训练时出现偏差。因此,在清洗数据时,需要对数据进行分类和标签处理,确保各类别的数据量相对均衡。
3.数据去重与格式统一:在长尾场景下,数据中可能存在重复记录或格式不统一的情况。这不仅会增加数据处理的时间和成本,还可能影响模型的准确性和性能。因此,在清洗数据时,需要仔细检查数据中是否存在重复记录或格式不统一的情况,并采取适当的方法进行处理。
4.持续监控与更新:长尾场景下的数据可能会随着时间和环境的变化而发生变化,因此需要持续监控数据的分布和变化情况,及时发现和处理异常值和偏差。同时,也要定期更新数据清洗规则和方法,以确保数据的准确性和完整性。
金融行业作为对长尾非常敏感的行业,不能忽视长尾带来的巨大风险。
金融行业经常会面临一些长尾风险,往往长尾风险会导致很大的损失。自然语言大模型作为泛化能力很强的模型,在长尾场景的表现却往往不尽人意。但是金融行业作为对长尾非常敏感的行业,不能忽视长尾带来的巨大风险。我认为,在上线之前要对大模型进行严格的测试,确保在极端情况下不会产生极端的错误。在这个过程中应该与业务相结合,对之前遇到的对业务产生巨大影响的业务场景进行归纳总结,作为训练数据,尽可能多的获取多种类型数据,并通过历史经验进行模型的微调和修正。此外,在大模型部署同时,做出对产生回答的过滤,减少产生巨大长尾风险。
“高质量”数据集对于机器学习模型的训练和微调具有至关重要的作用,是影响其性能效果以及样本泛化能力的关键因素之一。随着ChatGPT横空出世,大模型引来各界的新一轮热潮。从模型预训练、垂直任务微调、测试、评测等多个不同阶段都需要使用大量不同类型的数据集,包括通用数据集和垂直领域数据集。高质量数据集涉及到数据清洗、加工等一系列技术,需要我们重新进行学习和讨论。
在垂直任务领域,对特定任务训练需要使用特定数据,往往需要从特定环境或软件系统中收集,可能出现某些类别样本数据量很多,但也有很多类别数据量很少的情况。遇到这种长尾数据情况时,多位专家主要从机器学习有监督模型的数据集清洗加工方法上进行了详细完整的陈述说明。
对大模型预训练使用的高质量通用数据集也是近来常见的议题。此类数据集具有几个特点,一是规模巨大,往往涉及多语言的、数以亿记的海量文本对;二是主题丰富,涉及搜索、社区问答、百科常识、科技文献、出版书籍等多种主题。三是数据质量高,经过采样、抽取、过滤等必要的技术手段获得。大模型数据集往往涉及如下几个处理步骤或方法:
为了提高数据质量,首先要删除低质量数据,可以考虑用基于分类器(基于特征哈希的线性分类器)和基于启发式的方法。一是基于特征哈希的线性分类器,使用精选文本做模型训练,模型将与训练数据类似的网页给较高分数。二是通过精心设计的规则来消除低质量文本,包括语言过滤、评测指标过滤(如perplexity困惑度)启发式方法、统计特征过滤、关键词过滤等。
由于数据的倾斜或大量重复会影响模型效果,因此需对文档或网页内容做去重。譬如LLaMA采用CCNet的处理模式,使用SHA-1方法为每个段落生成一个hashcode,再进行重复判断和删除。
个人用户隐私、企业内的敏感信息,都不适合用于模型训练或微调,因此必须对所有数据做全面扫描和脱敏操作。常见做法是运用命名实体识别算法检测姓名、地址和电话等敏感信息,并做无法逆转的加密或哈希的处理。
除了具体的数据清洗等技术手段,企业的业务数字化、数据治理水平也很重要。这两方面做不好,缺少垂直任务的企业私有数据就是缺少企业特有的生产资料,则可能陷入“巧妇难为无米之炊”的困境。
综合来说,企业在人工智能的业务应用上,应想清楚应用场景产生的效益,想清楚为什么做、做什么、怎么提供生产资料,这是应用建设的道之所在,需要各位多多思考和探索。
觉得本文有用,请
转发
或点击
在看
,让更多同行看到
本文来自社区同行共识探讨,并形成文章首发于《迈向YB数据时代》第8期。扫一扫,识别二维码去社区立即兑换纸质版→