【模式识别与机器学习(10)】数据预处理-第二部分:数据预处理核心方法

文章目录

本文内容一览(快速理解)

  1. 缺失值处理有哪些方法? 6种方法从简单到复杂:忽略元组(<5%且随机)、人工填写(数据量小)、全局常量(快速处理)、均值/中位数(分布均匀)、同类样本统计量(有类别信息)、最可能值(预测模型,最准确)

  2. 数据预处理的四大功能是什么? 清理(去噪声)→集成(合并多源)→变换(格式转换)→归约(减少数据量),按顺序执行,逐步提升数据质量

  3. 属性选择有哪些方法? Filter方法(快速筛选,独立于算法)、Wrapper方法(优化组合,用算法评价)、Embedded方法(算法内置,效率高)

  4. 属性转换包括哪些? 降维(PCA精确但慢,随机投影快速但近似)、规范化(z分数推荐,最小-最大对离群点敏感)、特殊转换(文本TF-IDF,时间序列差值)

  5. 如何选择缺失值处理方法? 有类别信息优先用同类样本统计量,无类别信息用均值/中位数,准确性要求高用预测模型

  6. 如何选择属性选择方法? 大规模数据→Filter方法;数据量适中且准确性要求高→Wrapper方法;使用特定算法→Embedded方法

  7. 如何选择规范化方法? 有离群点→z分数规范化;无离群点→最小-最大规范化;简单快速→小数定标规范化

  8. 如何选择降维方法? 中小规模数据→PCA;大规模高维数据→随机投影

学习路线建议

初学者:理解缺失值处理的6种方法,掌握数据预处理的四大功能 | 进阶者:深入理解属性选择和转换的方法,掌握如何根据数据特点选择合适方法 | 实践者:重点掌握实战场景的完整流程和长期适配策略

总结口诀

  • 缺失值处理:简单→复杂;有类别信息→同类样本;准确性要求高→预测模型
  • 四大功能:清理→集成→变换→归约
  • 属性选择:大规模→Filter;准确性要求高→Wrapper;特定算法→Embedded
  • 属性转换:有离群点→z分数;中小规模→PCA;大规模→随机投影

概述

核心要点

  • 缺失值处理:6种方法从简单到复杂(忽略元组→人工填写→全局常量→均值/中位数→同类样本统计量→最可能值)
  • 数据预处理四大功能:清理(去噪声)→集成(合并多源)→变换(格式转换)→归约(减少数据量)
  • 属性选择:Filter(快速筛选)→Wrapper(优化组合)→Embedded(算法内置)
  • 属性转换:降维(PCA/随机投影)→规范化(z分数/最小-最大)→特殊转换(文本TF-IDF/时间序列差值)

本部分以电商用户数据分析为实战场景,系统讲解缺失值处理、数据清理集成、属性选择转换三大核心方法,帮助读者掌握"为什么这样设计"和"如何落地应用"的完整逻辑。

本部分内容概览

  1. 数据缺失值处理:学习6种处理方法,从最简单的忽略元组到最准确的预测模型填充
  2. 数据预处理基本功能:掌握清理、集成、变换、归约四大核心操作
  3. 属性选择和转换:理解如何筛选重要特征,如何将数据转换为算法友好的形式

学习目标

  • 能够根据数据特点选择合适的缺失值处理方法
  • 掌握数据清理、集成、变换、归约的操作流程
  • 理解属性选择和转换的方法和适用场景

一、数据缺失值的处理:填补空白

!NOTE

📝 关键点总结:缺失值处理的核心是根据数据特点选择合适方法,从简单到复杂,平衡准确性和成本。

方法要点

  • 忽略元组:缺失<5%且随机 → 直接删除(最简单但丢失数据)
  • 人工填写:数据量小且有上下文 → 人工填写(准确但成本高)
  • 全局常量:快速处理 → 固定值填充(简单但可能偏差)
  • 均值/中位数:分布均匀 → 统计量填充(比常量合理但忽略关系)
  • 同类样本统计量:有类别信息 → 同类统计量(比方法4更准确)
  • 最可能值:数据量大 → 预测模型(最准确但成本高)

决策标准:简单→复杂;有类别信息优先用同类样本;准确性要求高用预测模型。

问题:为什么需要处理缺失值?

真实数据往往有缺失值,会导致:无法使用算法 (大多数算法需要完整数据)、丢失信息 (直接删除会损失数据)、引入偏差(处理不当会影响结果)。因此,必须处理缺失值,根据情况选择合适方法。

解决方案:6种处理方法(从简单到复杂)


方法1:忽略元组(直接删除)

通俗理解 :就像拼图缺了几块,如果缺的不多且不影响整体,直接扔掉这几块继续拼。核心作用:快速处理少量缺失值,避免复杂处理流程。

本质原理 :直接删除包含缺失值的记录,这是最简单的处理方式。设计原因 :当缺失值比例很低(<5%)且缺失是随机的时候,删除这些记录不会引入系统性偏差,也不会显著影响数据量。决策标准:缺失值比例<5%,缺失是随机的(不是特定群体缺失),且删除后仍有足够数据进行分析。

应用边界:适合缺失值很少且随机的情况。如果缺失值比例高(>10%),删除会损失大量信息;如果缺失有规律(如高收入人群更不愿意填写收入),删除会引入偏差。


方法2:人工填写

通俗理解 :就像老师批改作业时发现学生漏填了答案,根据上下文和常识帮学生补上。核心作用:利用领域专家的知识和经验,确保缺失值填写的准确性。

本质原理 :由人工根据经验或上下文信息填写缺失值。设计原因 :当数据量很小且缺失值有明确的上下文可以推断时,人工填写能保证准确性,因为人类能理解语义和上下文关系。决策标准:数据量很小(<1000条),缺失值有明确的上下文信息可以推断,且有领域专家可以填写。

应用边界:只适合小规模数据。如果数据量大,人工填写工作量巨大,成本高,不适合实际应用。


方法3:全局常量填充

通俗理解 :就像所有不知道答案的题目都填"不知道",用一个固定值填充所有缺失值。核心作用:快速填充缺失值,保证数据完整性,适合快速原型开发。

本质原理 :用一个固定的值(如"Unknown"、0、-1等)替换所有缺失值。设计原因 :当需要快速处理且对准确性要求不高时,用统一常量填充是最简单的方法,不需要计算,直接替换即可。决策标准:快速原型开发、探索性分析、对准确性要求不高的场景。

应用边界:适合快速处理,但会产生类似"Unknown"的新属性概念,方法简单但不可靠,可能会引入偏差,不适合对准确性要求高的场景。


方法4:用均值/中位数填充

通俗理解 :就像不知道某个学生的年龄,用全班学生的平均年龄来填。核心作用:利用数据的统计特性填充缺失值,比全局常量更合理。

本质原理 :用该属性的均值或中位数填充缺失值。设计原因 :当数据分布相对均匀时,用统计量(均值或中位数)填充比常量更合理,能利用数据的统计特性。选择均值还是中位数取决于数据分布:对称数据用均值,倾斜数据用中位数(因为均值受极端值影响大)。决策标准:数据分布相对均匀,缺失值比例不高,且没有明显的类别信息。对称数据用均值,倾斜数据用中位数。

应用边界:比常量合理,但忽略了数据之间的关系(如年龄和收入的关系),可能不够准确。如果数据有明显的类别信息(如年级、部门),应该用同类样本的统计量。

示例:学生年龄缺失,用全班学生的平均年龄或中位年龄来填充。


方法5:用同类样本的均值/中位数填充

通俗理解 :就像不知道某个学生的年龄,不用全校平均年龄,而是用同年级学生的平均年龄来填,因为同年级学生更相似。核心作用:考虑类别信息,提高填充准确性。

本质原理 :用与给定元组属同一类的所有样本的属性均值或中位数填充缺失值。设计原因 :当数据有明显的类别信息时,同类样本更相似,用同类样本的统计量填充比全体数据更准确。例如,如果要预测某个学生的成绩,该学生的年龄缺失,用同年级学生的平均年龄来填充,而不是用全校学生的平均年龄,因为同年级学生的年龄分布更相似。决策标准:数据有明显的类别信息(如年级、部门、地区等),且同类样本的数据分布相似。同样,对称数据用均值,倾斜数据用中位数。

应用边界:比方法4更准确,因为考虑了类别信息。但需要先确定类别信息,如果类别划分不当(如类别太多导致每类样本太少),效果可能不好。

示例:学生年龄缺失,用同年级学生的平均年龄来填充(不用全校平均)。


方法6:用最可能的值填充(最流行)

通俗理解 :就像不知道某个学生的年龄,但知道他的家庭收入、父母教育水平,用这些信息预测他的年龄,而不是简单用平均值。核心作用:考虑数据之间的关系,预测缺失值,获得最准确的填充结果。

本质原理 :使用已有数据的大部分信息来预测缺失值,常用方法包括回归、贝叶斯、决策树等。设计原因 :当数据量足够大且有足够的其他属性可以用来预测缺失属性时,用预测模型填充能充分利用数据关系,获得最准确的结果。例如,用回归方法根据学生的其他特征(如家庭收入、父母教育水平)预测缺失的年龄值,这样预测的年龄比简单用平均值更准确,因为考虑了数据之间的关系。决策标准:数据量足够大,有足够的其他属性可以用来预测缺失属性,且对准确性要求高。可以选择回归方法(用其他属性预测缺失属性)、贝叶斯方法(基于概率模型预测)、决策树方法(用决策树预测)等。

应用边界:最准确的方法,但费时间,计算成本高,需要训练预测模型。如果数据量小或没有足够的其他属性,可能效果不好。

示例:用回归方法根据学生的其他特征(如家庭收入、父母教育水平)预测缺失的年龄值。

二、数据预处理基本功能:四大核心操作

!NOTE

📝 关键点总结:数据预处理通过清理→集成→变换→归约四大功能,逐步提升数据质量,为后续分析做准备。

方法要点

  • 数据清理:删除离群点、处理缺失值、纠正不一致、平滑噪声 → 获得干净数据(第一步,必须执行)
  • 数据集成:实体识别(识别同一实体)、处理冗余(去重复)、解决冲突(统一不一致值) → 合并多源数据
  • 数据变换:规格化、归约、切换、旋转、投影 → 转换成适合算法的形式(可能丢失信息)
  • 数据归约:聚集、压缩、离散化、概念分层 → 减少数据量但保持主要信息(适合大数据量)

决策标准:按顺序执行(清理→集成→变换→归约);根据数据特点选择具体方法;注意权衡信息丢失和效率提升。

问题:为什么需要数据预处理?

原始数据往往存在各种问题:噪声数据干扰分析 (如测量误差、录入错误)、遗漏数据导致信息不完整 (如缺失值)、异构数据难以统一处理 (如不同格式、不同单位)、数据量过大影响计算效率(如百万级记录)。数据预处理通过四大核心功能解决这些问题,保证数据质量,为后续分析奠定基础。

解决方案:四大核心功能


2.1 数据清理

通俗理解 :就像洗菜,要把烂叶子、泥土、虫子都清理掉,才能做出好菜。核心作用:去除源数据集中的噪声数据,处理遗漏数据,清洗脏数据。

本质原理 :通过识别和删除离群点、处理缺失值、纠正不一致、平滑噪声等操作,获得干净、完整、一致的数据。设计原因 :源数据集中存在噪声数据、遗漏数据和脏数据,这些数据会干扰分析结果,影响模型性能。例如,离群点(异常值)可能是测量错误,如果不处理会影响统计结果;不一致的数据(如同一客户在不同系统中姓名不同)会导致分析错误。决策标准:识别和删除离群点(用统计方法如3σ原则、IQR方法)、处理缺失值(用前面介绍的6种方法)、纠正不一致(统一数据格式和编码)、平滑噪声(使用滤波等方法减少噪声)。

应用边界:数据清理是数据预处理的第一步,必须执行。但要注意不要过度清理,删除太多数据会影响样本量。


2.2 数据集成

通俗理解 :就像把来自不同部门的客户信息合并到一起,但要识别哪些记录是同一个客户,处理重复数据,解决数据不一致的问题。核心作用:将多文件或多数据库运行环境中的异构数据进行合并处理。

本质原理 :将来自不同来源的数据整合成统一的数据集,需要解决实体识别、冗余问题、数据值冲突三大问题。设计原因 :实际应用中,数据往往来自多个文件或多个数据库,这些数据格式不同、编码不同、结构不同,无法直接使用。例如,一个数据源用"姓名",另一个用"名字",需要识别它们是同一个属性;同一个客户在不同数据源中可能有多个记录,需要识别并合并;一个数据源中客户年龄是25岁,另一个数据源中是26岁,需要解决冲突。决策标准实体识别 (识别同一实体,如"姓名"和"名字"是同一个属性,可以用相似度匹配、规则匹配等方法)、冗余问题 (处理重复数据,可以用去重算法、相似度匹配等方法)、数据值冲突(解决同一属性值不一致,如年龄25岁vs 26岁,可以用投票、取最新值、取平均值等方法)。

应用边界:适合需要整合多个数据源的场景。如果数据源太多或格式差异太大,集成成本会很高。

示例:合并来自不同部门的客户数据,需要识别哪些记录属于同一个客户,处理重复记录,解决数据格式不一致的问题。


2.3 数据变换

通俗理解 :就像把不同单位的数值统一换算成同一单位,比如把身高从厘米换成米,把体重从公斤换成克,这样才能比较。核心作用:找到数据的特征表示,用维变换或转换方法减少有效变量的数目或找到数据的不变式。

本质原理 :通过规格化、归约、切换、旋转、投影等操作,将数据转换成适合算法处理的形式。设计原因 :原始数据的表示方式可能不适合所选的学习算法,或者数据维度太高难以处理。例如,不同单位的数值(如身高用厘米,体重用公斤)如果不统一,数值大的会"压倒"小的;高维数据如果不降维,计算会很慢。决策标准 :根据算法需求选择变换方法:规格化 (将数据转换到统一的范围,如0-1之间)、归约 (减少数据量)、切换 (改变数据表示方式)、旋转 (坐标轴旋转)、投影(降维投影)。

应用边界:适合数据格式不适合算法或维度太高的场景。但要注意变换可能会丢失信息,需要权衡。

示例:将身高(厘米)和体重(公斤)标准化到相同的范围,便于比较和分析。


2.4 数据归约

通俗理解 :就像把一本厚厚的书压缩成精华版,保留主要内容,但篇幅大大减少。核心作用:将数据库中的海量数据进行归约,归约后的数据仍接近保持原数据的完整性,但数据量相对小很多。

本质原理 :通过数据立方体聚集、维归约、数据压缩、数值压缩、离散化、概念分层等策略,减少数据量但保持主要信息。设计原因 :当数据量非常大时(如百万级、千万级记录),直接处理会非常慢,甚至无法处理。通过数据归约,可以在保持主要信息和模式不变的前提下,大大减少数据量,加快后续处理速度。例如,如果原始数据有100万条记录,通过数据归约可以减少到10万条,但保留主要的信息和模式不变。决策标准 :根据数据特点选择归约策略:数据立方体聚集 (对数据进行汇总,如按地区、时间汇总)、维归约 (减少属性数量,如用PCA降维)、数据压缩 (压缩数据存储,如用压缩算法)、数值压缩 (用更少的数值表示数据,如离散化)、离散化 (将连续值转换为离散值)、概念分层(将低层概念泛化为高层概念,如将"北京"、"上海"泛化为"一线城市")。

应用边界:适合数据量很大的场景。但要注意归约可能会丢失细节信息,需要权衡。

示例:100万条记录减少到10万条,但保留主要模式。

三、属性选择和转换

3.1 属性选择:找出真正有用的特征

!NOTE

📝 关键点总结:属性选择的核心是解决维度灾难、噪声干扰、计算慢、过拟合问题,通过筛选重要特征提高模型效率和准确性。

方法要点

  • Filter(过滤方法):独立于算法,速度快,通用性好 → 适合大规模数据快速筛选(速度快但可能不是最优组合)
  • Wrapper(包装方法):用算法评价,组合更好 → 适合数据量适中,准确性要求高(能找到更好组合但计算成本高)
  • Embedded(嵌入方法):算法内置,效率高 → 适合使用特定算法(决策树、Lasso)(效率高但只能用于特定算法)

搜索策略 : n n n个属性有 2 n 2^n 2n个子集(指数爆炸)→ 用贪心策略(正向选择:从空集添加;反向消除:从全集删除)

决策标准:大规模数据 → Filter方法;数据量适中且准确性要求高 → Wrapper方法;使用特定算法 → Embedded方法。

问题:为什么需要属性选择?

属性选择主要解决四个问题:维度灾难 (属性太多,数据变稀疏,难找规律)、噪声干扰 (很多属性没用,还会干扰学习)、计算慢 (属性越多,计算越慢)、过拟合(属性太多,模型记住细节但泛化差)。例如,垃圾邮件分类收集了1000个特征,但真正有用的可能只有50个。

解决方案:三种属性选择方法


方法1:Filter(过滤方法)

通俗理解 :就像用筛子筛米,根据米粒的大小直接筛选,不需要煮饭来验证。核心作用:快速筛选重要属性,不依赖具体算法,通用性好。

本质原理 :独立于算法,根据数据本身的特性评价属性,常用评价准则包括基于可分性的准则(Fisher判别、邻域覆盖)和基于相关性的准则(互信息准则、粗糙集依赖度)。设计原因 :当数据量很大且需要快速筛选时,独立于算法的过滤方法能快速找到重要属性,不需要训练模型,计算成本低。例如,可以用相关性分析找出与目标变量相关性高的属性,或者用可分性分析找出能很好区分不同类别的属性。决策标准:大规模数据,需要快速筛选,通用性要求高。选择评价准则:如果关注属性与目标的相关性,用相关性准则;如果关注属性的可分性,用可分性准则。

应用边界:适合大规模数据,需要快速筛选的场景。但可能选出的特征组合不是最优的,没有考虑特征之间的相互作用。

优缺点:✅ 速度快、适合大规模数据、通用性好;❌ 可能不是最优组合,没有考虑特征之间的相互作用。


方法2:Wrapper(包装方法)

通俗理解 :就像试衣服,要穿上身才知道合不合适,用实际算法来评价属性子集的好坏。核心作用:找到更好的属性组合,考虑特征之间的相互作用。

本质原理 :用实际的学习算法来评价属性子集,工作流程是选择属性子集→训练模型→评估性能→决定是否保留→重复。设计原因 :当对准确性要求高且可以承受计算成本时,用实际算法评价属性子集能找到更好的组合,因为考虑了特征之间的相互作用。例如,两个属性单独看可能不重要,但组合在一起可能很重要,Filter方法会错过这种组合,但Wrapper方法能发现。决策标准:数据量适中,对准确性要求高,可以承受较高的计算成本。选择搜索方法:双向搜索、最佳优先搜索、遗传算法搜索等。

应用边界:适合数据量适中,对准确性要求高的场景。但计算成本高,小数据集容易过拟合。

优缺点:✅ 能找到更好的属性组合、考虑特征之间的相互作用;❌ 计算成本高、小数据集容易过拟合。


方法3:Embedded(嵌入方法)

通俗理解 :就像智能洗衣机,洗衣服的过程中自动选择最合适的洗涤模式,不需要单独选择。核心作用:在算法运行过程中自动选择重要属性,效率高。

本质原理 :属性选择是算法的一部分,算法在运行过程中自动选择重要属性。例如,决策树在构建过程中自动选择最重要的属性进行分裂;Lasso回归通过正则化自动将不重要特征的系数变为0。设计原因 :当使用特定算法(如决策树、Lasso回归)时,算法本身就能自动选择重要属性,不需要单独的特征选择步骤,效率高。例如,决策树在分裂节点时会选择信息增益最大的属性,这本身就是一种特征选择。决策标准:使用特定算法(如决策树、Lasso回归),需要高效的特征选择。选择算法:如果使用决策树,特征选择是自动的;如果使用Lasso回归,通过调整正则化参数控制特征选择。

应用边界:适合使用特定算法的场景。但只能用于特定算法,选择结果依赖于算法特性。

优缺点:✅ 效率高、选择过程与学习过程结合;❌ 只能用于特定算法、选择结果依赖于算法特性。


搜索策略:如何找到最优属性子集?

问题 : n n n个属性有 2 n 2^n 2n个子集,属性数量每增加1,组合数就翻倍,这就是指数爆炸。因此,穷举搜索只适合属性很少的情况。

解决方案:常用贪心策略(每一步都选择当前最优的选择),虽然不保证全局最优,但在实际应用中通常能找到足够好的解,而且计算效率高。

策略1:正向选择 ------从空集开始逐步添加属性。优点 :简单直观,适合属性很多的情况。缺点:可能错过需要多个属性配合才能发挥作用的组合。

策略2:反向消除 ------从全集开始逐步删除不重要的属性。优点 :不会错过重要的属性组合。缺点:计算量大,不适合属性很多的情况。

3.2 属性转换:改变数据表示方式

!NOTE

📝 关键点总结:属性转换的核心是将原始数据转换为算法友好的形式,通过降维、规范化、特殊数据转换等方法提高算法效果。

方法要点

  • 降维方法:PCA(精确但慢,适合中小规模)和随机投影(快速但近似,适合大规模高维数据)
  • 规范化方法:z分数规范化(推荐,鲁棒性强)优于最小-最大规范化(对离群点敏感)
  • 特殊数据转换:文本用TF-IDF,时间序列用差值

决策标准 :中小规模数据 → PCA;大规模高维数据 → 随机投影;有离群点 → z分数规范化;无离群点 → 最小-最大规范化。关键原则:必须保存转换参数,训练和测试用相同参数。

问题 :原始属性不适合算法,或维度太高。解决 :通过数学变换产生新特征,或降维。效果:找到更适合算法的特征表示。


主成分分析(PCA):降维神器

问题:为什么需要PCA?

PCA主要解决三个问题:维度灾难 (属性太多如100个,数据稀疏难处理)、属性相关 (很多属性相关如身高和体重,冗余信息多)、难可视化 (高维数据无法直接可视化)。PCA能解决:降维 (100个属性压缩成10个,保留主要信息)、去相关性 (新属性互不相关)、可视化(投影到2维或3维)。

解决方案:PCA怎么做?

通俗理解 :就像看一幅倾斜的画,PCA会帮你把画旋转到最"正"的角度,让你更容易看清主要内容。核心作用:找到数据变化最大的方向,将高维数据投影到低维空间,保留主要信息。

本质原理 :PCA的核心思想是找到数据变化最大的方向(第一主成分),然后找垂直方向且变化第二大的(第二主成分),以此类推。设计原因 :数据的变化(方差)包含了信息,变化最大的方向包含的信息最多。通过找到这些方向并投影到低维空间,可以在保留主要信息的同时降低维度。例如,人脸识别中一张照片可能有10000个像素,但真正重要的信息可能只集中在少数几个"特征脸"上,PCA能找到这些特征脸。决策标准 :步骤包括:1. 计算协方差矩阵(看属性关系);2. 找特征向量和特征值(数据变化最大的方向,特征值越大,包含的信息越多);3. 按重要性排序,选择前k个主成分(通常选择能保留80-90%方差的主成分);4. 转换数据到新坐标系( X new = X × V k X_{\text{new}} = X \times V_k Xnew=X×Vk,其中 V k V_k Vk是前k个特征向量组成的矩阵)。

应用边界:适合高维数据降维、去除相关性、数据可视化的场景。但需要标准化(不同属性的单位不同,必须先标准化),只适合数值属性,假设线性关系(对于非线性关系效果不好),不考虑类别信息(只看数据的分布,不考虑样本属于哪个类别)。

效果:✅ 降维效果好(用很少的主成分就能保留大部分信息)、去除相关性(新属性互不相关)、可解释(可以看每个主成分由哪些原始属性组成);❌ 需要标准化、只适合数值属性、线性假设、不考虑类别信息。

示例:学生10门课成绩,PCA发现主成分1是理科能力(数学、物理、化学权重高),主成分2是文科能力(语文、历史、地理权重高),主成分3是语言能力(英语权重高)。用3个"综合能力"代替10门课。


随机投影:PCA的快速替代

通俗理解 :就像摄影师精心选择最佳拍摄角度(PCA),而随机投影就像随便拍一张照片,虽然可能不是最佳角度,但也能看清主要内容,而且拍得更快。核心作用:快速降维,在保持数据点之间距离关系的前提下,大幅降低计算成本。

本质原理 :将数据投影到随机选择的低维子空间,随机生成一个投影矩阵,用这个矩阵将高维数据投影到低维空间。设计原因 :PCA计算协方差矩阵的特征向量需要的时间是维数的立方(10维数据需要1000次操作,10000维数据需要 1 0 12 10^{12} 1012次操作),当数据维度很高时,PCA计算成本太高,不实用。随机投影的计算复杂度是 O ( d k ) O(dk) O(dk)(k是目标维度),比PCA的 O ( d 3 ) O(d^3) O(d3)快得多。决策标准:大规模高维数据(文本上万个特征、图像百万像素),需要快速降维。根据Johnson-Lindenstrauss引理,理论上证明随机投影能很好地保持数据点之间的距离关系,虽然投影是随机的,但数据点之间的相对位置关系基本保持不变。

应用边界:适合大规模高维数据的场景。但每次结果可能略有不同(因为是随机的),结果质量接近最优但可能不如PCA。

效果 :✅ 速度快得多( O ( d k ) O(dk) O(dk) vs O ( d 3 ) O(d^3) O(d3))、结果质量接近最优;❌ 每次结果可能略有不同(随机性)。随着维数的升高,随机投影的效果越来越接近PCA,但计算速度快得多。


规范化:统一数据的"度量衡"

问题:不同属性单位不同(身高厘米150-200,收入元3000-50000),数值大的会"压倒"小的。如果不规范化,在KNN等算法中,数值大的属性会主导距离计算;在神经网络中,不同尺度的特征会导致训练不稳定;在PCA中,数值大的属性会占主导,影响主成分的方向。

解决:三种规范化方法

方法1:最小-最大规范化

通俗理解 :就像把不同长度的绳子都拉伸或压缩到同一长度。核心作用 :把数据"压缩"或"拉伸"到0-1之间,公式为 v i ′ = v i − min ⁡ A max ⁡ A − min ⁡ A × ( new_max A − new_min A ) + new_min A v_i' = \frac{v_i - \min_A}{\max_A - \min_A} \times (\text{new\_max}_A - \text{new\_min}_A) + \text{new\_min}_A vi′=maxA−minAvi−minA×(new_maxA−new_minA)+new_minA。

本质原理 :将数据线性变换到固定区间(通常是0-1)。设计原因 :结果在固定区间内,容易理解,保留了原始数据的相对关系。决策标准:数据分布均匀,无极端值。如果有一个极端值(如年龄200岁),会压缩其他数据的范围;如果新数据超出原始范围(如年龄120岁),规范化后会超出0-1范围(越界问题)。

应用边界:适合数据分布均匀、无极端值的场景。但对离群点敏感,有越界问题。


方法2:z分数规范化(推荐)

通俗理解 :就像把所有人的身高都减去平均身高,再除以标准差,让平均身高变成0,标准差变成1。核心作用 :把数据"居中",让均值变成0,标准差变成1,公式为 v i ′ = v i − A ˉ σ A v_i' = \frac{v_i - \bar{A}}{\sigma_A} vi′=σAvi−Aˉ。

本质原理 :将数据标准化为均值为0、标准差为1的分布。设计原因 :对离群点更鲁棒(离群点的影响被标准差"稀释")、无越界问题(理论上可以处理任何数值)、符合正态分布假设。对于离群点,可以用均值绝对偏差(MAD)代替标准差,因为标准差对离群点敏感(因为用了平方),而均值绝对偏差更稳定。决策标准:可能包含离群点的数据。如果数据有极端值,考虑用MAD代替标准差。

应用边界:适合可能包含离群点的数据。结果范围无固定范围,但理论上可以处理任何数值。

优点:对离群点更鲁棒,无越界问题。


方法3:小数定标规范化

通俗理解 :就像把所有的数字都除以10的n次方,让它们都小于1。核心作用 :通过移动小数点位置,让所有数值都小于1,公式为 v i ′ = v i 1 0 j v_i' = \frac{v_i}{10^j} vi′=10jvi,其中 j j j是使得 max ⁡ ( ∣ v i ′ ∣ ) < 1 \max(|v_i'|) < 1 max(∣vi′∣)<1的最小整数。

本质原理 :通过除以10的幂次,将数值缩小到小于1的范围。设计原因 :简单直观,保留原始数据的相对大小关系。决策标准:简单快速,数据范围已知。但结果依赖于最大绝对值,对离群点敏感。

应用边界:适合简单快速、数据范围已知的场景。但对离群点敏感。


重要注意事项:规范化后,必须保存规范化参数(最小值、最大值、均值、标准差),以便对新数据使用相同的规范化。就像做菜时记录调料比例,下次做同样的菜要用相同的比例。训练数据用一套参数规范化,测试数据必须用相同的参数规范化,否则模型会出错。例如,训练时用训练数据的均值100、标准差20进行z分数规范化,测试时必须用相同的均值100、标准差20,不能用测试数据的均值和标准差。


文本转换:从文字到数字

问题:文本无法直接用于算法,需要转成数字。

解决

步骤1:分词(Tokenization)------将文本分解为单词单元。需要考虑的问题:是否只保留字母而丢弃非字母字符(数字、+-号、幂次方等);如何定义分割符(空格、换行符、标点符号等);所有单词在被加入词汇表之前是否需要先转变为小写;预先设定的功能词或停止词(stopwords)是否可以忽略(如the、a、an等);低频率词(如只用过一次的词hapax legomena)是否被丢弃。

步骤2:处理停止词------停止词是取决于语言的,大写习惯、数字语法、标点符号习惯、字符集本身都是取决于语言的。

步骤3:TF-IDF转换 ------将单词频率转换为TF-IDF值。TF(词频) :单词在文档中出现的频率;IDF(逆文档频率) :衡量单词的稀有程度,在所有文档中出现越少的单词,IDF值越大;TF-IDF:TF × IDF,既能反映单词在文档中的重要性,又能降低常见词的影响。

效果:文档变成属性向量,每个属性对应一个单词,属性值是TF-IDF值,然后可以用机器学习算法进行分类、聚类等任务。

示例:在文本分类中,将文档转换为属性向量,每个属性对应一个单词,属性值是TF-IDF值,然后可以用机器学习算法进行分类。


时间序列转换

问题:时间序列数据不适合直接用于算法。

解决

方法1:用过去或将来的值替换------将当前实例的一个属性值用过去或将来的实例所对应的属性值来替换。例如,用前一天的价格、前一周的价格作为特征。

方法2:用差值替换(更常用)------用当前实例与过去实例属性值的差值来替换当前的属性值。差值从本质上来说是以由时间间隙大小所决定的某个常量为量度的第一次求导,连续差值转换即为更高次的求导。例如,用价格的变化率(差值)作为特征。

特殊时间序列的处理

情况1:不定期间隔------在一些时间序列中,实例并不代表定期的样本,每个实例的时间由特定的时间戳(timestamp)属性给出,如股票市场中的临时公告。如果要取其它属性的连续差值,必须除以时间戳大小以使求导正常化。

情况2:属性代表时间------每个属性代表不同的时间,而非每个实例代表不同时间,如上学经历。时间序列从一个属性到下一个属性,而非从一个实例到下一个实例。如果需要差值,必须取每个实例的一个属性和下一个属性之间的差值。

效果:提取时间序列的趋势和变化模式,将时间序列转换为适合机器学习算法的特征。

示例:股票价格预测,用前一天的价格、前一周的价格、或者价格的变化率(差值)作为特征。

注意事项:注意样本属性中是否含有时间属性,否则样本处理方法不同。

实战场景:电商用户数据分析完整流程

业务痛点识别

某电商平台需要分析用户购买行为,数据来自三个系统:CRM系统(用户基本信息)、订单系统(交易记录)、行为系统(浏览点击)。核心问题:数据缺失严重(30%用户缺少收入信息)、多源数据格式不一致(年龄字段有"25岁"和"25"两种格式)、特征维度高(1000+个特征但大部分无用)、数值尺度差异大(收入万元级,年龄个位数)。

方案拆解:用核心知识点解决问题

第一步:数据清理 (应用2.1节方法)。识别离群点:用IQR方法发现收入>100万的异常值(可能是录入错误),删除或修正。处理缺失值:收入缺失30%,但数据量大(100万用户),且有类别信息(用户等级),采用方法5(同类样本统计量):用同等级用户的收入中位数填充(因为收入分布倾斜,用中位数更合理)。纠正不一致:统一年龄格式,将"25岁"转换为25。

第二步:数据集成(应用2.2节方法)。实体识别:CRM系统的"姓名"和订单系统的"名字"识别为同一属性。处理冗余:同一用户在不同系统中有多条记录,用用户ID合并,保留最新信息。解决冲突:同一用户年龄在CRM是25岁,在订单系统是26岁,采用投票策略(取出现次数多的值)或取最新值。

第三步:属性选择 (应用3.1节方法)。数据量大(100万用户),需要快速筛选,先用Filter方法 (相关性分析)快速筛选出与购买行为相关性高的50个特征。然后对筛选后的特征用Wrapper方法(用随机森林评价)找到最优的20个特征组合,考虑特征交互作用。

第四步:属性转换 (应用3.2节方法)。规范化:收入(0-100万)和年龄(18-80)尺度差异大,用z分数规范化 (因为可能有离群点),保存均值和标准差参数。降维:20个特征仍有冗余,用PCA降维到10个主成分(保留85%方差),提高计算效率。文本转换:用户评论用TF-IDF转换为数值特征。

长期适配策略

判断标准 :根据数据特点选择方法。缺失值处理 :有类别信息优先用同类样本统计量,无类别信息用均值/中位数,对准确性要求高用预测模型。属性选择 :大规模数据先用Filter快速筛选,再根据准确性要求决定是否用Wrapper。属性转换:有离群点用z分数规范化,无离群点用最小-最大规范化;中小规模数据用PCA,大规模高维数据用随机投影。

效果评估:经过预处理后,数据质量显著提升(缺失值从30%降到5%,特征从1000+降到10个),模型训练速度提升10倍,准确率提升15%。这验证了"数据质量比算法选择更重要"的原则。


总结

通用应用逻辑公式

数据预处理的五步法:1. 识别问题 (缺失值、噪声、不一致、高维)→ 2. 数据清理 (删除离群点、处理缺失值、纠正不一致)→ 3. 数据集成 (实体识别、去冗余、解决冲突)→ 4. 属性选择 (Filter快速筛选→Wrapper优化组合)→ 5. 属性转换(规范化统一尺度→降维减少维度)。

落地模板/清单

缺失值处理决策树 :缺失<5%且随机→忽略元组;有类别信息→同类样本统计量;无类别信息→均值/中位数;准确性要求高→预测模型。属性选择策略 :大规模数据→Filter方法;数据量适中且准确性要求高→Wrapper方法;使用决策树/Lasso→Embedded方法。规范化选择 :有离群点→z分数规范化;无离群点→最小-最大规范化;简单快速→小数定标规范化。降维选择:中小规模数据→PCA;大规模高维数据→随机投影。

关键原则:一次说透,避免重复;重点分层,主次分明;必须保存转换参数,训练和测试用相同参数。

相关推荐
用户5191495848451 小时前
探秘C#伪随机数生成器的安全漏洞与破解之道
人工智能·aigc
小糖学代码1 小时前
LLM系列:1.python入门:2.数值型对象
人工智能·python·ai
gs801402 小时前
Ascend 服务器是什么?(Ascend Server / 昇腾服务器)
运维·服务器·人工智能
csdn_aspnet2 小时前
AI赋能各类主流编程语言
人工智能·ai·软件开发
CodeNerd影2 小时前
RAG文件检索增强(基于吴恩达课程)
人工智能
阿里云大数据AI技术2 小时前
一行代码,让Elasticsearch 集群瞬间雪崩——5000W 数据压测下的性能避坑全攻略
人工智能
Slaughter信仰2 小时前
图解大模型_生成式AI原理与实战学习笔记(前三章综合问答)
人工智能·笔记·学习
霍格沃兹测试学院-小舟畅学2 小时前
告别误判:基于n8n构建你的AI输出安全测试护盾
人工智能
阿乔外贸日记2 小时前
中国汽车零配件出口企业情况
大数据·人工智能·智能手机·云计算·汽车