数据挖掘概述与流程
这是数据挖掘学习站的第一课。学完它,你会知道"数据挖掘"四个字到底指什么、它能回答哪几类问题,以及业界用了二十多年、至今没被推翻的那套流程。
先记住一句话:报表回答"发生了什么",数据挖掘回答"接下来会怎样、为什么会这样"。
一、从一张日报表说起
奶茶店店长每天看一张日报表:昨天卖了多少杯、营业额多少、哪个卖得最好。这就是报表——它把已经发生的事数给你看。
有一天店长想多问一句:"明天哪些人可能不来了?该给谁发券?"日报表瞬间哑火,因为答案不在"昨天"里,而在"过去的每一天"共同组成的规律里。把这个规律从数据里挖出来的过程,就是数据挖掘:
text
数据(一条条记录)→ 信息(统计出来的数字)→ 规律(反复出现的模式)→ 行动(发券、补货、调整货架)注意最后一步:挖出规律不是终点,能指导行动的规律才值钱。"晚上七点销量高"是规律,"所以五点开始备料"才是价值。
二、你每天都在被挖掘
数据挖掘不是实验室里的名词,你今天已经被它"伺候"过很多次了:
- 电商"猜你喜欢":把你和成千上万买家的行为放在一起,找出"和你相似的人还买了什么"——分类 + 关联规则的组合
- 外卖满减:平台算过"满多少你会凑单多买一件",这是从历史订单里挖出来的阈值
- 银行风控:一笔刷卡瞬间被判断"是不是盗刷",因为它和"你平时的消费模式"不一样——异常检测
- 短视频推送:看完一个点赞了另一个,下一批全是同款——分类推荐
再补一个和 Web 最相关的例子:网站访问日志挖掘。你的服务器每天记下成千上万条请求,正常的访客请求分布是有规律的,而扫描器会在几秒内请求几十个不存在的路径——用"异常检测"的思路从日志里把它揪出来,就是安全岗位里"安全数据分析"的日常。
三、六类经典任务
所有挖掘问题几乎都能塞进下面六个格子里。看懂这张表,你就拿到了给问题归类的坐标系——以后拿到任何需求,先问一句:它属于哪一类?
| 任务 | 回答的问题 | 身边的例子 | 一句话类比 |
|---|---|---|---|
| 分类 | 这个新样本属于哪一类? | 判断一封邮件是不是垃圾邮件 | 照着答案学,贴标签 |
| 聚类 | 这堆数据天然分成几堆? | 把会员分成"高频 / 低频 / 沉睡" | 没有答案,自己分堆 |
| 回归 | 接下来的数值是多少? | 预测下个月营业额 | 画一条最贴近的线 |
| 关联规则 | 哪些东西总被一起买? | 啤酒与尿布 | 找"出双入对" |
| 序列模式 | 事情按什么顺序发生? | 买了手机之后常买手机壳 | 找"前后脚" |
| 异常检测 | 哪条记录不对劲? | 信用卡凌晨境外大额消费 | 找"不合群的" |
本站会动手做其中三类:分类、聚类(第三课)、关联规则(第四课);异常检测的思路你在第二课找异常值时就会先碰一碰。
四、监督与无监督:有没有"标准答案"
六类任务还能按"有没有答案"合并成两大类,这条分界线决定了算法的干活方式:
| 监督学习 | 无监督学习 | |
|---|---|---|
| 有没有标签 | 有:每条数据都带着正确答案 | 没有:只有数据本身 |
| 干活方式 | 照着答案学,学"输入怎么变成输出" | 在数据里自己找结构 |
| 典型任务 | 分类、回归 | 聚类、关联规则 |
| 评估方式 | 拿一部分题考试(准确率) | 没有"对错",只有"分得合不合理" |
🧠 记忆锚点:监督学习是照着答案学,无监督学习是自己找分堆。 判断一个任务属于哪边,只问一句:我手里有没有标准答案?
五、流程:CRISP-DM 的六步
业界做了二十多年,沉淀出一套通用流程叫 CRISP-DM(跨行业数据挖掘标准流程)。名字唬人,内容全是常识:
text
① 业务理解 → ② 数据理解 → ③ 数据准备 → ④ 建模 → ⑤ 评估 → ⑥ 部署
↑ │
└──────────── 不满意就回头 ←───────────────┘- 业务理解:到底想回答什么问题?"提高复购"不是问题,"找出未来 30 天最可能流失的会员"才是问题
- 数据理解:手上有什么数据?多少条、多少列、缺不缺?先"体检"再动手
- 数据准备:清洗、去重、补缺失、造特征。这一步占整个项目八成的工作量——不是夸张,是行业常态
- 建模:挑算法、跑模型。这一步在代码量上反而是最小的
- 评估:准确率高就完了吗?不——要问"业务上有没有用":模型说该发券的人,真的被券拉回来了吗?
- 部署:把模型接进真实业务,定时跑,并且持续观察效果
🧠 记忆锚点:八成时间洗数据,两成时间跑模型。 新手最大的误区就是把 90% 的热情砸在第 4 步——模型谁都会调,数据谁洗得干净谁才赢。
还有一条新手必踩的坑先打预防针:评估时绝不能用"模型见过的数据"来打分。拿上课抄过的原题去考试,考 100 分也说明不了什么——第三课你会学到 train_test_split,就是为了把"上课的题"和"考试的题"分开。
六、动手实验
💡 动手实验 1:装环境。去 python.org 装 Python 3(Windows 安装时务必勾选 "Add Python to PATH"),然后打开终端执行:
bashpip install pandas scikit-learn装完执行
python -c "import pandas, sklearn; print('ok')",看到ok就是成了。
💡 动手实验 2:跑通你的第一段"挖掘"。下面这几行代码统计了一段网站访问日志里每个 IP 出现的次数——频率统计是最朴素的挖掘,后面所有花活都建立在它上面。新建
first.py,整段复制运行:pythonimport pandas as pd # 一小段访问日志:IP 路径 logs = [ "1.2.3.4 /index", "1.2.3.4 /about", "5.6.7.8 /index", "1.2.3.4 /goods/1", "9.9.9.9 /.env", "9.9.9.9 /admin", "9.9.9.9 /wp-login", "5.6.7.8 /goods/2", "9.9.9.9 /.git/config", ] df = pd.DataFrame(logs, columns=["raw"]) df["ip"] = df["raw"].str.split().str[0] # 把第一段切出来当 IP 列 print(df["ip"].value_counts())你会看到
9.9.9.9以 4 次高居榜首,而且它请求的全是/.env、/admin这类扫描路径——这正是老站《一次网页访问的完整旅程》里讲过的扫描行为。规律已经自己浮出来了:这个 IP 不正常。
小结
- 报表回答"发生了什么",挖掘回答"接下来会怎样"——规律要能指导行动才值钱
- 六类经典任务:分类、聚类、回归、关联规则、序列模式、异常检测;先归类,再挑方法
- 有标签的是监督学习,没标签的是无监督学习;分类照着答案学,聚类自己找分堆
- CRISP-DM 六步:业务理解 → 数据理解 → 数据准备 → 建模 → 评估 → 部署,八成时间在数据准备
- 评估看的是"业务上有没有用",不是一纸准确率;考试题不能和上课题重复
下一课解决六步里最重的第 2、3 步:数据从哪来、怎么用 pandas 把它洗干净——数据获取与清洗。