卫哥上课笔记 / 内部资料
# 1 数据分析与挖掘-概述数据分析与挖掘系列教程
📌 一、 数据分析与挖掘概述
✅ 什么是数据分析与挖掘
数据分析和挖掘都是基于搜集来的数据,应用数学、统计、计算机等技术抽取出数据中的有用信息,进而为决策提供依据和指导方向。
- 数据分析(Data Analysis): 基于已收集的数据,运用统计学、数学等方法,对数据进行描述、总结和推断,以发现数据中的模式、趋势和洞察。其目标是解释已发生事件,并通过数据支撑决策。
- 核心: 解释性、总结性、基于现状。
- 数据挖掘(Data Mining): 更深层次地探索数据,结合统计学、机器学习、人工智能、数据库知识等多种技术,从海量、复杂的数据中发现隐藏的、有价值的模式、规则和预测模型。其目标是预测未来事件或发现未知知识。
- 核心: 预测性、发现性、基于算法和模型。
✅ 数据分析与挖掘的应用领域
数据已成为各行各业的核心资产,数据分析与挖掘的应用无处不在:
- 电商领域:
- 用户行为分析: 购物偏好、浏览路径、点击率。
- 推荐系统: 个性化商品推荐、关联销售。
- 精准营销: 优惠券发放、广告投放策略。
- 库存优化: 销量预测、滞销品识别。
- 交通出行领域:
- 路线规划与优化: 实时路况预测、最佳路径推荐。
- 共享出行调度: 车辆供需预测、智能派单。
- 交通流量预测: 缓解拥堵、智能红绿灯。
- 医疗健康领域:
- 疾病诊断与预测: 基于病例数据辅助医生诊断、预测疾病风险。
- 药物研发: 新药筛选、靶点发现。
- 精准医疗: 个性化治疗方案、基因数据分析。
- 金融领域:
- 信用风险评估(风控): 贷款审批、信用卡欺诈检测。
- 量化交易: 股票价格预测、投资策略优化。
- 客户流失预测: 识别高风险客户并进行挽留。
- 房地产: 房价预测、地段分析、投资回报评估。
- 互联网行业:
- 游戏: 用户行为分析、付费预测、流失预警。
- 社交: 社交网络分析、舆情监控、内容推荐。
- 中介服务: 房产/招聘匹配、服务质量评估。
✅ 数据分析与数据挖掘的区别(深化理解)
| 特征 | 狭义数据分析 | 数据挖掘 | 广义数据分析 |
|---|---|---|---|
| 定义 | 运用统计学方法,解释和总结数据。 | 运用多种交叉学科方法,发现隐藏模式和预测模型。 | 包含数据分析和数据挖掘。 |
| 核心方法 | 统计学方法: 描述性统计、假设检验、相关分析。 | 交叉学科: 统计学、机器学习、人工智能、数据库、优化算法。 | 融合以上所有方法。 |
| 侧重点 | 业务洞察: 为什么会发生?发生了什么? | 技术实现: 如何预测?如何发现? | 综合价值: 既解释也预测。 |
| 技能要求 | 业务理解能力、数据敏感度、基础统计学知识、报表制作。 | 数学功底 + 编程能力、算法理解、模型调优。 | 全面要求,但侧重领域不同。 |
| 结果输出 | 报表、图表、KPI 指标、业务建议。 | 预测模型、分类规则、聚类结果、异常检测。 | 综合性的业务决策报告和智能化系统。 |
| 复杂度 | 相对较低,更注重人工解读。 | 相对较高,依赖复杂算法和计算资源。 | 覆盖从简单到复杂的各种场景。 |
📊二、 项目流程(基于 CRISP-DM 跨行业标准)
数据分析与挖掘项目通常遵循一个结构化流程,最常用的是 CRISP-DM (Cross-Industry Standard Process for Data Mining) 模型,它包括以下六个阶段:
1. 明确业务目标 (Business Understanding)
这是项目的起点,也是最容易被忽视但至关重要的一步。需要深入理解业务问题、确定数据分析/挖掘能带来的价值。
✅ 案例 1: 餐饮行业:
- 核心目标: 降低人工成本、避免食材浪费。
- 拆分目标: 精准预测未来一周的客流量和菜品销量;优化排班;智能采购。
✅ 案例 2: 金融授信:
- 核心目标: 风险控制。
- 拆分目标: 建立用户信用评分模型,区分高风险与低风险用户;预测逾期概率;识别欺诈行为。
✅ 案例 3: 用户价值高低(RFM 模型):
- 核心目标: 精细化运营,提升用户生命周期价值。
- 拆分目标: 对用户进行分群,识别高价值用户、潜在流失用户、新用户;制定个性化营销策略;提高用户留存率和复购率。
卫哥上课笔记 / 内部资料
2. 数据理解与收集 (Data Understanding & Data Collection)
理解并获取解决业务问题所需的数据。
✅ 数据收集: 识别内外部数据源,获取原始数据。
✅ 数据理解:
- 了解数据结构(字段含义、数据类型、数据格式)。
- 数据量、数据质量(缺失值、异常值、重复值)。
- 数据来源和生成方式。
✅ 案例 1: 餐饮行业数据:
- 食材数据: 采购记录(采购量、价格、供应商)、库存记录(入库、出库、损耗)、菜品配方(食材用量)。
- 经营数据: 销售记录(菜品、价格、时间、数量、订单金额)、顾客消费记录(会员ID、消费次数、总金额)、员工排班、天气、节假日。
- 其他数据: 评论数据(文本挖掘)、市场活动数据。
✅ 案例 2: 金融授信数据:
- 用户基本数据: 个人信息(年龄、性别、教育、职业、婚姻状况)、联系方式、居住地址。
- 信用数据: 征信报告(历史借贷记录、还款记录、逾期情况)、信用卡使用记录(刷卡金额、频率、商户类型)、负债情况。
- 行为数据: App使用行为、社交数据(如征得用户同意)。
- 其他数据: 设备信息、IP地址。
✅ 案例 3: 影响用户价值高低数据:
- 会员数据: 会员注册信息、等级、积分、开通时间。
- 交易数据: 购买商品、购买金额、购买时间、购买频率、退换货记录。
- 促销数据: 参与活动记录、优惠券使用情况。
- 客服数据: 咨询记录、投诉记录、解决时间。
- 行为数据: 浏览记录、点击记录、收藏、购物车添加。
3. 数据清洗与预处理 (Data Preparation)
原始数据往往是“脏乱差”的,需要进行一系列处理才能用于模型构建。
✅缺失值处理:
- 删除法: 删除包含缺失值的行或列(数据量大时,缺失率低)。
- 替换法:
- 均值/中位数/众数填充: 适用于数值型和类别型数据。
- 特定值填充: 如
0或-1。 - 插值法: 基于数据分布或相关性进行推断填充(线性插值、多项式插值)。
✅重复值处理: 删除完全相同的重复行,确保数据唯一性。
✅异常值处理:
- 识别: 统计方法(Z-score, IQR)、可视化(箱线图)、聚类。
- 处理:
- 删除法: 异常值数量很少且确认是录入错误时。
- 替换法: 用均值、中位数或分位数替换。
- 单独处理法: 对于某些有业务意义的异常值,可能需要单独分析或特殊标记。
- 离散化: 将连续型异常值分箱处理。
✅数据不一致性:
统一格式: 日期时间格式、单位(如人民币/美元)。
统一命名: 相同含义的字段名称不同。
数据源对齐: 不同系统并发数据可能不一致,需要数据对账和校准。
量纲的影响(数据转换):
- 标准化 (Standardization / Z-score Normalization): σX−μ,将数据转换为均值为 0,方差为 1 的分布,适用于高斯分布或对距离敏感的模型(如 KNN, SVM, 线性回归)。
- 归一化 (Normalization / Min-Max Scaling): Xmax−XminX−Xmin,将数据缩放到特定范围(通常是 [0, 1]),适用于神经网络等对输入范围敏感的模型。
无量纲化处理: 消除不同特征的量纲和数量级影响,使模型更好地学习。
维度灾难与特征工程:
- 特征提取: 从现有特征创建新特征(如日期中提取星期几、从交易明细计算总金额)。
- 特征选择: 识别并保留对模型最重要的特征(基于统计测试、模型重要性)。
- 降维: 将高维数据映射到低维空间,减少特征数量(如 PCA 主成分分析)。
维度灾难: 高维数据可能导致模型性能下降、计算复杂度增加。
特征工程: 从原始数据中构建、选择和转换最有用的特征。
4. 数据分析与可视化 (Exploratory Data Analysis - EDA)
在建模前,通过统计图表和描述性统计来理解数据特征、发现潜在模式、验证假设。
✅描述性分析:
- 中心趋势: 均值、中位数、众数。
- 分散程度: 方差、标准差、分位数、极差。
- 分布形态: 偏度、峰度。
- 关联性: 相关系数(皮尔逊、斯皮尔曼)。
✅数据可视化:
- 单变量: 直方图、箱线图、柱状图、饼图。
- 双变量: 散点图、折线图、条形图(分组)。
- 多变量: 热力图、平行坐标图。
- 工具: Matplotlib, Seaborn, Plotly, Bokeh。
🤖 三、 构建模型 (Modeling)
根据业务目标选择合适的机器学习模型。
✅案例 1: 餐饮行业 - 预测类型(数值型、连续型): 销量预测、客流量预测。
- 回归模型:
- 线性回归 (Linear Regression): 简单、可解释性强。
- 决策树回归 (Decision Tree Regressor): 能够处理非线性关系,易于理解。
- 随机森林回归 (Random Forest Regressor): 集成学习,泛化能力强。
- XGBoost/LightGBM: 梯度提升树,性能和准确率高。
✅案例 2: 金融信贷 - 分类模型(离散型): 欺诈识别、逾期预测、信用评级。
分类模型:
- 随机森林 (Random Forest Classifier)
- GBDT (Gradient Boosting Decision Tree)
- XGBoost/LightGBM/CatBoost: 行业内广泛使用,效果卓越。
逻辑回归 (Logistic Regression): 简单、可解释性强,常用于二分类问题。
K-近邻 (KNN - K-Nearest Neighbors): 基于距离的分类。
决策树 (Decision Tree Classifier): 易于理解,可用于特征筛选。
支持向量机 (SVM - Support Vector Machine): 适用于小到中等数据集,处理高维数据。
集成模型:
✅案例 3: 用户价值分析 - 聚类模型: 用户分群。
- 聚类模型:
- K-Means: 最常用、最经典的聚类算法,需要预设聚类数量 K。
- DBSCAN: 基于密度的聚类,无需预设 K,能发现任意形状的簇。
- 层次聚类 (Hierarchical Clustering): 产生聚类树,可根据需求切割。
🧪 四、 模型评估与优化 (Evaluation & Deployment)
1 模型评估: 找出最佳模型
评估模型的性能,确保其能够泛化到未见过的数据。
✅机器学习工程师: 不仅仅是“调包侠”或“调参侠”,更重要的是理解模型原理、评估指标、业务含义。
✅评估指标:
- 回归模型: MSE (均方误差)、RMSE (均方根误差)、MAE (平均绝对误差)、R2 (决定系数)。
- 分类模型:
- 准确率 (Accuracy): 简单直观,但可能在类别不平衡时误导。
- 精确率 (Precision): 预测为正例中真正例的比例。
- 召回率 (Recall): 所有真正例中被正确预测为正例的比例。
- F1-Score: 精确率和召回率的调和平均。
- ROC 曲线 & AUC 值: 衡量分类器性能的综合指标,特别适用于二分类和类别不平衡问题。
- 混淆矩阵 (Confusion Matrix): 详细展示分类器在不同类别上的表现。
- 聚类模型: 轮廓系数 (Silhouette Score)、Calinski-Harabasz Index、Davies-Bouldin Index。
✅过拟合 (Overfitting) 与欠拟合 (Underfitting):
- 过拟合: 模型在训练集上表现非常好,但在测试集(新数据)上表现一般或很差。
- 原因: 模型过于复杂、训练数据量太少、噪声数据被模型学习。
- 解决方法: 增加数据、特征选择/降维、简化模型、正则化(L1/L2)、交叉验证、提前停止、Dropout。
- 欠拟合: 模型在训练集和测试集上表现都差。
- 原因: 模型过于简单、特征不足、训练迭代次数不够。
- 解决方法: 增加特征、选择更复杂的模型、增加训练时间。
✅模型选择与改进:
- 交叉验证 (Cross-Validation): 更可靠地评估模型性能,减少过拟合风险。
- 超参数调优: Grid Search, Random Search, Bayesian Optimization。
- 集成学习: Stacking, Bagging (如随机森林), Boosting (如 XGBoost)。
✅结果输出: 将模型评估结果、发现的洞察和业务建议清晰地呈现给利益相关者。
🚀2. 应用部署 (Deployment)
将训练好的模型集成到实际业务系统中,使其能够持续提供价值。
运维工程师 / MLOps 工程师: 负责模型上线、监控、维护。
核心环节:
- 云计算平台:
- 无服务器 (Serverless): 函数计算 (Lambda, Azure Functions, 阿里云函数计算),按需付费,无需管理服务器。
阿里云 (Alibaba Cloud): 弹性计算 (ECS)、函数计算 (FC)、机器学习平台 PAI。
AWS (Amazon Web Services): EC2, Lambda (无服务器), SageMaker。
Azure (Microsoft Azure): Virtual Machines, Azure Functions, Azure Machine Learning。
Jenkins / GitLab CI/CD: 自动化构建、测试、部署流程。
模型封装: 将模型打包成可调用的 API 接口(如 Flask, FastAPI)。
容器化 (Docker): 将模型及其运行环境打包成独立的容器,确保在任何环境下一致运行。
CI/CD (持续集成/持续部署):
部署平台:
模型监控: 监控模型性能、数据漂移、预测准确率,及时发现问题并触发模型重训练。
🛠五、 常用工具与语言
✅编程语言:
- Python: 毫无疑问是数据分析与挖掘的首选语言,拥有极其丰富的科学计算库和机器学习库。
- 数据处理: NumPy, Pandas
- 数据可视化: Matplotlib, Seaborn, Plotly
- 机器学习: Scikit-learn, TensorFlow, PyTorch, Keras
- 科学计算: SciPy
- R 语言: 统计学背景强,在学术界和统计分析领域广泛使用。
✅统计分析软件 (商业):
- SPSS: 历史悠久,图形界面友好,适合社会科学和市场研究。
- SAS: 强大的企业级统计分析软件,在金融、制药等行业有广泛应用。
✅大数据平台:
- Hadoop生态: HDFS, MapReduce, Hive, Spark
- 云计算平台自有服务: AWS S3/EMR, Azure Data Lake, 阿里云 MaxCompute/OSS
实训建议
- 理论与实践结合: 每个知识点都应辅以代码演示和实操练习。
- 真实数据集: 使用贴近实际业务的公开数据集或模拟数据集进行练习。
- 项目驱动: 以完成一个完整的数据分析/挖掘项目为目标,贯穿整个课程。
- 工具熟练度: 强调 Pandas、Scikit-learn、Matplotlib/Seaborn 的熟练使用。
- Git 版本控制: 引入 Git 和 GitHub/GitLab 的使用,培养良好的代码管理习惯。