如果非要给数据挖掘一个定义的话,那么数据挖掘就是寻找数据中隐含的知识并用于产生商业价值。也就是说,它是在数据中(尤其是在大量的数据中)找到一些有价值,甚至是非常有价值的东西的一种手段。
技术与商业就像一对双生子,在互相促进中不断演进发展,随之而来的就是各大公司业务突飞猛进,很多新模式也涌现出来,使得数据量激增。面对数以千万甚至上亿、不同形式的数据,很难再用纯人工或纯统计的方法从成千上万的变量中找到其隐含的价值。数据挖掘就提供了一系列框架、工具和方法,可以处理不同类型的大量数据,并使用复杂的算法部署去探索数据中的模式。
数据挖掘的产生动因主要有以下 3 点:
分类问题是最常见的问题。比如新闻网站判断一条新闻是社会新闻还是时政新闻,就是分类问题——对已知类别的数据进行学习,为新的内容标注一个类别。
聚类与分类不同,聚类的类别预先是不清楚的,目标就是要去发现这些类别。聚类算法比较适合不确定的类别场景。比如捡了一大堆不同的树叶回来,可以根据大小、形状、纹路、边缘等特征给树叶划分成几个较小的堆,每一堆属于同一种类。
回归问题可以看作高中学过的解线性方程组。它的最大特点是生成的结果是连续的,而不像分类和聚类生成的是离散结果。比如用回归方法预测房价(y),假设只跟面积(x)有关,构建的方程式就是 ax+b=y。
关联问题最常见的场景是推荐,比如购物时选中一个商品后往往会推荐其他商品组合,这种功能就可以使用关联挖掘来实现。
四大问题的具体算法(KNN、决策树、K-Means、线性回归、Apriori、TF-IDF 等)见 数据挖掘算法合集。
数据挖掘也是有方法论的。应用最多的 CRISP-DM(Cross-industry Standard Process for Data Mining,跨行业数据挖掘标准流程)方法论如下:
下面按流程逐步讲解每一环节的工作要点、常见误区与工程经验。
在开始任何挖掘工作前,先确保对业务及其数据有充分理解。数据挖掘归根到底要解决业务问题,脱离业务去做价值有限。
数据准备是整个过程中最耗时、最重要的环节。原始数据存在不准确、格式多样、特征缺失、标准不统一等问题,需逐步加工到满足算法要求。
数据准备不是一次性完成。模型训练、评估出现问题时,往往要回到数据准备环节反复迭代。
算法很多,但要解决的问题有共同类型。先明确问题类型,再对应算法族。
各算法原理与代码实现见 数据挖掘算法合集。
以「识别小猪图片」二分类为例,用 1000 张已标注图片测试,得到混淆矩阵:
| 样本 1000 份 | 模型预测:是 | 模型预测:否 |
|---|---|---|
| 人工标注:是 | 745(TP) | 55(FN) |
| 人工标注:否 | 25(FP) | 175(TN) |
核心评估指标:
泛化能力:过拟合与欠拟合:
处理方式:重新整理数据,分析数据量、维度、准确性,调整数据重训。
其他评估维度:模型速度、鲁棒性、可解释性。评估数据处理可用随机抽样、交叉验证、自助法消减随机误差。
模型评估达标后进入应用环节,涵盖部署、监控与迭代:
本章走通了数据挖掘从概念到落地的完整路径:
算法原理与代码见 数据挖掘算法合集,实战项目见 数据挖掘实践。
| 库 | 本文编写时 | 当前稳定版 | 升级要点 |
|---|---|---|---|
| Python | 3.8-3.12 | 3.14 | 3.12+ 起性能显著提升;3.14 PEP 649/750 |
| NumPy | 1.x/2.0 | 2.5.x | np.float_ 等别名移除;NEP 50 类型提升 |
| Pandas | 1.x/2.x | 2.3.x | CoW 可经选项开启(3.0 起将默认);inplace 将移除;str dtype 将为默认 |
| Matplotlib | 3.x | 3.x 稳定版 | API 兼容,样式更新 |
| Seaborn | 0.12/0.13 | 0.13.x | API 稳定 |
| scikit-learn | 1.x | 1.9.x | API 稳定,新算法持续加入 |
本文讲解的数据分析流程(读取→清洗→分析→可视化)与核心 API 在最新版本中成立;升级时重点关注 Pandas 3.0 的 Copy-on-Write 与 NumPy 2.x 的类型变化。