统计与数据挖掘综述
摘要
本文系统梳理了统计学与数据挖掘的基本概念、方法论及其在数据分析中的应用。首先从数据理解、准备与建模流程入手,介绍了分类与回归模型的常用评价指标。随后,对集成学习方法(Bagging、Boosting、Stacking、Blending)进行了比较与总结,阐述了其在提升模型性能与鲁棒性方面的作用。在统计分析部分,涵盖了假设检验、列联分析、相关分析、回归分析以及方差分析等核心方法,强调了它们在数据关系探索与显著性验证中的价值。文章进一步综述了预测建模、分类建模、聚类分析、关联与序列模式挖掘,以及Web数据挖掘的典型技术与应用场景。整体而言,本综述将统计学的严谨方法论与数据挖掘的实用算法框架相结合,为理解和解决实际问题提供了系统化的思路,对数学建模及跨学科数据分析研究具有重要的参考价值。
1. 绪论
1.1 概念
数据挖掘从大型数据库中发现数据所表现出的特征,从中归纳得出新知识新方法。
统计学是研究如何测度、收集、整理和分析反映客观现象有关信息的数据,以帮助人们正确认识客观世界数量规律的方法论科学。包括数据采集、数据处理、数据分析的各种统计学方法。
1.2 方法论
有一套跨行业数据挖掘标准,具体步骤为:
商业理解,就是了解国内外研究现状;换句话讲就是明确我们进行数据分析的要求与最终目的是什么,明确数据挖掘能在其中为我带来什么。具体到数学竞赛中,往往目的就很明确了,要做的就是查找相关文献来了解相关的方法,同时进一步明确该方法的复现难度,提升空间。
数据理解,即了解数据需要进行如何进行预处理;了解数据完整性、正确性,初步掌握数据可能有什么特征,适合用什么样的建模方法
数据准备,即对数据进行预处理。
选择合适的建模方法,在确定参数时,可以手工调参,也可采用网格式搜索,即遍历给出的超参数组合来设定模型并训练,或者用随机搜索、贝叶斯搜索法,注意提前熟悉相关内容,预先准备好程序代码。如果不知道哪种建模方法更好,可以训练多个模型,通过一定的结合策略,以集成学习的形式得到一个较好的集成模型。
评价模型成效;
输出建模结果。
1.3 模型评价参数
当我们建立好一个模型后,无论是用于分类还是预测,我们都需要一套客观的标准来衡量它的性能。
分类变量预测模型 (Classification Metrics)
这类模型预测的是类别,比如“是/否”、“A/B/C类”、“有病/没病”。评价它们时,我们通常会先得到一个叫混淆矩阵 (Confusion Matrix) 的东西,它就是一个表格,总结了模型“猜对”和“猜错”的各种情况。
预测为正例 | 预测为负例 | |
---|---|---|
实际为正例 | 真阳性 (TP) | 假阴性 (FN) |
实际为负例 | 假阳性 (FP) | 真阴性 (TN) |
- 正例 (Positive): 通常是我们更关心的那个类别,比如“有病”、“是垃圾邮件”。
- TP (True Positive): 猜对了,本来是正例,模型也预测是正例。
- FN (False Negative): 猜错了,本来是正例,模型却预测是负例。(漏报)
- FP (False Positive): 猜错了,本来是负例,模型却预测是正例。(误报)
- TN (True Negative): 猜对了,本来是负例,模型也预测是负例。
基于这个矩阵,我们有了下面这些指标:
准确率 (Accuracy)
定义: 所有样本中,被模型正确分类的样本所占的比例。
公式:
(TP + TN) / (TP + TN + FP + FN)
局限性: 在样本不均衡的情况下,准确率是个“骗子”。比如,一个癌症检测模型,在1000个样本里只有1个是真病人。如果模型偷懒,把所有人都预测为“没病”,那它的准确率高达99.9%,看起来很棒,但实际上一个病人都没找出来,完全没用。
查准率 (Precision)
定义: 模型预测为“正例”的样本中,有多少是真正的“正例”。
公式:
TP / (TP + FP)
应用场景: 当误报 (FP) 的代价很高时,我们希望查准率高。比如垃圾邮件检测,你绝不希望一封重要的工作邮件被误判为垃圾邮件 (FP),宁可放过一些垃圾邮件。
查全率 (Recall) / 召回率
定义: 所有真正的“正例”中,有多少被模型成功地找了出来。
公式:
TP / (TP + FN)
应用场景: 当漏报 (FN) 的代价很高时,我们希望查全率高。比如传染病筛查或癌症诊断,漏掉一个真正的病人 (FN) 后果不堪设想,宁可把一些健康的人叫来复查 (FP)。
F1 分数 (F1-Score)
定义: 查准率和查全率的调和平均数。
公式:
2 * (Precision * Recall) / (Precision + Recall)
查准率和查全率往往是一对矛盾体,一个高了另一个可能就低了。F1分数就是想找一个平衡点,它同时兼顾了这两个指标,只有当两者都比较高时,F1分数才会高。它是一个更综合、更鲁棒的评价指标。
连续变量预测模型 (Regression Metrics)
这类模型预测的是一个具体的数值,比如房价、气温、股票价格。
均方误差 (Mean Squared Error, MSE)
定义: 就是方差,预测值与真实值之差的平方的平均值。
公式: (1/n) * Σ(y_true - y_pred)²
局限性:对偏差过大的值较为敏感
均方根误差 (Root Mean Squared Error, RMSE)
定义: 平方差,就是对MSE开个根号。
公式:
sqrt(MSE)
开根号的好处是,它的量纲和原始数据是一样的。如果你的模型预测的是房价(单位:万元),那么RMSE的单位也是“万元”,这样你就能直观地理解“模型平均预测误差大概在xx万元”这个量级,解释性比MSE好。
平均绝对误差 (Mean Absolute Error, MAE)
定义: 预测值与真实值之差的绝对值的平均值。
公式:
(1/n) * Σ|y_true - y_pred|
用人话讲: 它同样衡量预测的离谱程度,但因为它用的是绝对值而不是平方,所以它对那些特别离谱的异常值没有那么敏感,显得更“温和”,更能反映一般情况下的预测误差。
决定系数 (R-squared, R²)
定义: 一个衡量模型拟合优度的指标,表示模型的预测结果能解释因变量变化的百分比。
公式:
1 - (Σ(y_true - y_pred)² / Σ(y_true - y_mean)²)
用人话讲: 它的值在0到1之间。可以这样理解:如果我们不用任何模型,直接猜所有样本的值都是平均数(
y_mean
),这会产生一个总误差。而我们的模型产生的误差是Σ(y_true - y_pred)²
。R²衡量的就是“我们的模型比瞎猜(猜平均数)好多少”。- R² = 1:完美模型,预测值和真实值完全一样。
- R² = 0:模型和瞎猜一样烂。
- R² < 0:模型比瞎猜还要烂,简直是帮倒忙。
它提供了一个与量纲无关的、非常直观的“模型好坏”的百分比度量。
1.4 集成学习方法
集成学习的方法就是多种模型来组合成一个大模型,来提高整体模型店准确性与鲁棒性,具体的话之前的第二次校赛拿几种回归分析组合为一个大分(雾)析就是这样的。
集成学习主要方法归类为下述几种:
装袋(Bagging)
这是一种并行集成方法,通过构造多个独立的模型,然后通过投票、平均或加权的方式构造强学习器。
随机森林是Bagging的一个典型应用,它通过构建多个决策树并通过投票或平均来做出最终预测。
提升(Boosting)
这是一种串行集成方法,利用基学习器之间串行的方式进行构造强学习器。它通过调整数据点的权重来训练一系列弱学习器,赋予预测错误数据更高权重,使得后继学习器更试图纠正前一个学习器的错误。 AdaBoost是一种典型的Boosting方法。
堆叠(Stacking)
结合了Bagging和Boosting两种方法的集成方式。将第一层模型的输出作为第二层模型的输入,通过模型对原数据的堆叠进行建模,提高模型的泛化能力。
融合(Blending)
是一种集成学习方法,它通过结合多个模型的预测结果来提高预测的准确性和稳定性。这种方法主要分为两个阶段:第一阶段是训练多个基模型,这些基模型可以是同质的(使用相同类型的算法)或异质的(使用不同类型的算法);第二阶段是使用第一阶段模型在验证集上的输出结果作为特征,训练一个元模型(通常是线性回归模型),最终利用这个元模型对测试集进行预测。 优点包括:易于理解。可扩展性高:Blending的模型框架具有较高的可扩展性,可以根据需要添加或替换基模型。 缺点则为实现难、计算量大,感觉在国赛中现在我的水平我是不会用的。
2. 数据准备与探索性分析
2.1 统计学简介
定义:收集、分析、表述和解释数据的科学。
统计研究过程:收集、整理、分析、解释数据。
基本概念:总体、样本、参数、统计量。
2.2 统计数据的分类
按计量层次:定类数据、定序数据、定距型数据。
按收集方法:观测数据、试验数据。
按时间状况:截面数据、时间序列数据。
2.3 描述统计量
集中趋势:均值、中位数、众数、总和(及其关系与特点)。
离散趋势:标准差、方差、最小值、最大值、极差、均值标准误。
形状:偏度系数(Skewness)、峰度系数(Kurtosis)及其对分布的解释。
标准分数(Standard Score)及其作用。
2.4 数据可视化
可视化简介:数据视觉表现形式的科技研究,发展阶段(科学可视化、信息可视化、数据可视化、可视分析)。
DIKW层次模型:数据 -> 信息 -> 知识 -> 智慧的转化过程。
统计图类型:
条形图:反映分类数据频数分布。
线图:反映变量变化趋势(适用于连续变量)。
箱形图:显示原始数据分布(最大值、最小值、中位数、四分位数),观察分布形状。
散点图:展示两变量间数量关系和趋势。
直方图:反映分组数据的频数分布。
P-P图 / Q-Q图:检验数据是否服从特定理论分布(如正态分布)。
2.5 探索性数据分析(EDA)
介绍
它是一种数据统计分析方法,通过可视化图表和统计量表格,在没有太多先验假设的情况下,探索数据的内在结构和规律,提取关键信息 。
分析目的
数据理解和预处理: 帮助你弄清数据的含义和结构,发现异常值、缺失值、重复值,以便进行数据清洗和整理 。
特征描述和关系分析: 掌握数据的重要信息,比如变量的分布和它们之间的关系 。
为后续分析做准备: 帮助你决定是否需要进行数据变换、使用非参数方法或建立线性回归模型,从而将业务问题转化为可行的数据分析问题 。
分析内容
数据筛查: 检查数据是否存在缺失值、异常值、重复值,判断样本是否均衡,以及是否需要抽样、增加新的变量或变量转换 。
数据特征描述:
连续变量: 使用平均值、中位数、标准差等统计量,以及直方图、箱线图等图表来描述 。
离散变量(无序型和有序型): 使用频数、占比等统计量,以及频数分布表、条形图、饼图来描述 。
- 变量关系:
连续变量vs.连续变量
这个属于相关分析
图表:散点图、相关系数矩阵、热图
量化指标:Pearson、Spearman、Kendall相关系数。具体可见本站相关文章
离散变量vs.离散变量
图表:两两之间用交叉列联表、复式条形图;多个离散变量中用网格图
有序型离散变量使用相关分析,指标就是那些相关系数
无序型离散变量使用列连分析,量化指标是 \(\varphi\) 相关系数、 \(V\) 相关系数,列联相关系数
离散变量vs.连续变量
图像:直方图、箱线图、小提琴图
量化分析:t检验、方差分析等方法进行量化分析
量化指标:独立样本t检验中t统计量以及相应的p值,单多因素方差分析的统计量
- 数据正态性检验
直方图:看图形与钟形曲线吻合程度
箱线图:看图形是否对称
P-P图:正态分布,数据的累积比例与正态分布累积比例基本保持一致。将数据累积比例为X轴,对应正态分布累积比例为Y轴,作散点图。若各点近似分布在一条直线上,则数据符合指定分布。
Q-Q图:比较数据的分位数与某个理论分布的分位数是否匹配。
- 检验数据的分布类型
夏皮罗-威尔克检验(Shapiro-Wilk test)
科尔莫戈罗夫-斯米尔诺夫检验(Kolmogorov-Smirnov test)
6.数据变换
box-cox变换
用以描述的统计量
集中趋势:
均值(Mean): 最常用,但容易受极端值影响 。
中位数(Median): 数据排序后中间的那个数,不受极端值影响,适用于所有分布 。
众数(Mode): 出现频率最高的数,不受极端值影响,可以有多个 。
离散趋势:
- 描述数据分散程度,比如标准差、方差、极差等 。
可视化图表
条形图(Bar chart): 用长短表示数据类别频数,适用于离散变量 。
线图(Line chart): 用线条升降表示变量随时间的变化趋势,适用于连续变量 。
箱形图(Box plot): 用箱子和线段展示数据的分布,包括最大值、最小值、中位数和四分位数,可以直观地看出数据的对称性 。
3. 主要分析方法
3.1 假设检验 (Hypothesis Testing)
我们有一个怀疑或主张(比如“这个新药有效”),但我们不能直接下结论。我们必须先设定一个原假设H0,通常代表“无效”或“没变化”,并假定它是“无辜的”。然后,我们收集样本数据,看看这些证据是否足够强大,能够“毫无疑义地”(在某个概率水平上)推翻这个“无辜”的假定。
步骤 (The Steps of the Trial):
- 提出假设 (State the Hypotheses):
原假设 (Null Hypothesis,
H0):也叫“零假设”,代表“现状”或“没有效应”。它总是包含等号(=,
≤,
≥)。在法庭上,这就是“被告无罪”。例如:H0: 新药的平均疗效 = 安慰剂的平均疗效
。
备择假设 (Alternative Hypothesis, H1 或
Ha):这是我们想要证明的、与原假设对立的观点。它总是包含不等号(≠,
<,
>)。在法庭上,这就是“被告有罪”。例如:H1: 新药的平均疗效 ≠ 安慰剂的平均疗效
。
- 规定显著性水平 α (Set the Significance Level):
在审判开始前,我们要先设定一个“定罪标准”。这个标准就是显著性水平 α,通常取 0.05。它代表我们愿意承担的“判错案”的风险上限。α = 0.05 意味着,我们允许有5%的概率冤枉一个“好人”(即错误地推翻了一个实际上成立的H0)。
- 确定并计算检验统计量 (Calculate the Test Statistic):
这是将“证据”(样本数据)量化成一个单一数值的过程。这个数值衡量了我们的样本结果与原假设H0之间的差距有多大。不同的问题需要用不同的检验统计量(如Z, t, χ², F)。
- 作出统计决策 (Make the Decision):
这是最后“宣判”的环节。我们有两种方法: 临界值法:将计算出的检验统计量与一个“临界值”(根据α查表得出)进行比较。如果统计量落入了“拒绝域”,就拒绝H0。
P值法 (P-value Approach):这是现代统计软件中最常用的方法。计算出一个p值,它代表“如果原假设H0是真的,我们能观测到现有样本结果(或更极端结果)的概率”。然后将p值与α比较:
如果 p ≤ α:说明在H0成立的前提下,发生我们观测到的事件是个小概率事件。我们有理由怀疑H0的真实性,因此拒绝原假设H0。
如果 p > α:说明在H0成立的前提下,我们的样本结果很正常,不值得大惊小怪。我们没有足够证据拒绝原假设H0。
两类错误 (Two Types of Errors):
第一类错误 (Type I Error, 弃真错误):原假设H0本来是真的,但我们却错误地拒绝了它。其发生的概率就是我们设定的 α。
第二类错误 (Type II Error, 取伪错误):原假设H0其实是假的,但我们却没有足够的证据拒绝它,错误地接受了它。其发生的概率用 β 表示。
常见检验类型
1. 一个正态总体参数检验
均值检验 (σ 已知) - Z检验 问题:“我知道全国男性的平均身高是175cm,标准差σ是5cm。我随机抽了我们学校100个男生,算出平均身高是177cm。我们学校的男生比全国更高吗?”
检验统计量:
\[ Z = \frac{\bar{x} - \mu_0}{\sigma / \sqrt{n}} \]
其中 \(\bar{x}\) 是样本均值,\(\mu_0\) 是假设的总体均值,\(\sigma\) 是总体标准差,n
是样本量。
均值检验 (σ 未知) - t检验
问题:这是更常见的情况。“我想知道一批新生产的灯泡的平均寿命是否是800小时。我抽了25个灯泡,测出平均寿命是790小时,样本标准差s是30小时。”
检验统计量:
\[ t = \frac{\bar{x} - \mu_0}{s / \sqrt{n}} \]
注意这里用的是样本标准差
s
。t分布比Z分布更“胖”一点,因为它考虑了用s
估计σ
带来的额外不确定性。
方差检验 - χ² (卡方) 检验
问题:“一个零件的生产标准要求其长度的方差不能超过0.01mm²。我抽了30个零件,算出样本方差是0.015mm²。这条生产线的稳定性是否不达标?”
检验统计量:
\[ \chi^2 = \frac{(n-1)s^2}{\sigma_0^2} \]
其中 \(s^2\) 是样本方差,\(\sigma_0^2\) 是假设的总体方差。
比例检验 - Z检验
问题:“去年我们产品的市场占有率是20%。今年我们搞了市场推广,在1000个新用户里,有230个选择了我们的产品。我们的市场占有率是否显著提升了?”
检验统计量:
\[ Z = \frac{\hat{p} - p_0}{\sqrt{\frac{p_0(1-p_0)}{n}}} \]
其中 \(\hat{p}\)
是样本比例,p₀
是假设的总体比例。
2. 两个正态总体参数检验
双独立样本均值检验 (Independent Samples t-test)
问题:“A、B两种不同的教学方法,哪种效果更好?我把学生随机分成两组,一组用A方法,一组用B方法,然后比较两组的期末平均分。”
检验统计量 (假设方差相等):
\[ t = \frac{(\bar{x}_1 - \bar{x}_2) - (\mu_1 - \mu_2)_0}{\sqrt{s_p^2 (\frac{1}{n_1} + \frac{1}{n_2})}} \quad , \quad s_p^2 = \frac{(n_1-1)s_1^2 + (n_2-1)s_2^2}{n_1+n_2-2} \]
其中 \(s_p^2\) 是合并方差。
双独立样本方差检验 - F检验
问题:“在做上面的t检验之前,我需要先判断两组的方差是否相等。A组分数的方差是100,B组是120。这两个方差有显著差异吗?”
检验统计量:
\[ F = \frac{s_1^2}{s_2^2} \]
习惯上将较大的样本方差放在分子。
配对样本t检验 (Paired Samples t-test)
问题:“我想知道一种减肥药有没有效果。我找了一批人,记录下他们服药前的体重,再记录下他们服药一个月后的体重,然后比较这两组体重的差异。”
思路:这不是独立样本,因为数据是“成对”出现的(同一个人前后对比)。我们先计算出每个人的体重差值d,然后问题就转化成了对这些差值d进行单样本t检验,看差值的平均值 \(\bar{d}\) 是否显著不为零。
检验统计量:
\[ t = \frac{\bar{d} - D_0}{s_d / \sqrt{n}} \]
其中 D₀
通常是0,s_d
是差值 d
的标准差。
3.2 列联分析 (Contingency Analysis)
目的:专门用来分析定性变量(分类变量)之间是否存在关联。
分析思路 - 卡方检验 (Chi-squared Test, χ²):
- 这个检验的核心思想是“期望与现实的比较”。
提出假设 (H0):我们先假设这两个变量是完全独立、互不相干的。
计算期望频数 (Expected Frequency):基于“独立”这个假设,我们来算一下,理论上,列联表中每个格子里应该有多少人。
- 公式:某个格子的期望频数 =
(该格子所在行的总和 × 该格子所在列的总和) / 总人数
- 公式:某个格子的期望频数 =
计算卡方统计量 (χ²):现在我们有了“期望”和“现实”(观测频数),就可以计算出卡方值,它衡量了现实与期望之间的总体差距。
公式: \[ \chi^2 = \sum \frac{(\text{观测频数} - \text{期望频数})^2}{\text{期望频数}} \]
解读:如果现实和期望差得很多,算出来的χ²值就会很大,这说明我们的“独立”假设可能站不住脚。
作出统计决策:将计算出的χ²值与临界值比较(或直接看p值)。如果p值小于显著性水平α,我们就拒绝原假设,认为这两个变量之间存在显著关联。
列联表中的相关测量 (Measures of Association):
卡方检验只能告诉我们变量之间“有没有”关联,但不能告诉我们这个关联有多“强”。下面的系数就是用来度量关联强度的。
φ (Phi) 相关系数:专门用于 2x2 列联表。
公式: \(\phi = \sqrt{\frac{\chi^2}{n}}\) (n是总样本量)
解读:它的值在0到1之间,越接近1,表示关联性越强。
V (Cramér's V) 相关系数:更通用的系数,可用于任意大小的列联表。
公式: \(V = \sqrt{\frac{\chi^2}{n \cdot (\min(r, c) - 1)}}\) (r是行数, c是列数)
解读:它的值也在0到1之间,同样是越接近1,关联性越强。这使得它在不同大小的表格之间具有可比性,是实践中最常用的指标之一。
3.3 相关分析 (Correlation Analysis)
目的:判明定量数据(连续变量)之间有无关联,以及关联的强度和方向。
和函数关系之间的区别在于?
函数关系:是一种确定性的关系,一个X值精确地对应一个Y值。比如,
y = 2x + 1
。只要x定了,y就定了,没有任何偏差。画出来是完美的一条线。相关关系:是一种非确定性的、随机的关系。变量之间存在着大致的趋势,但并不严格。比如,身高和体重,身高越高的人,体重“倾向于”越重,但不是绝对的。画出来是围绕着一条趋势线分布的一团散点。回归分析研究的就是如何找出这团散点背后的那条“平均趋势线”,而相关分析则衡量这团散点向这条线“靠拢的紧密程度”。
相关关系的测定:
图形 - 散点图 (Scatter Plot):这是判断关系最直观的工具。通过观察散点的形态,我们可以看出:
关系的方向(从左下到右上是正相关,从左上到右下是负相关)。
关系的形态(是直线还是曲线)。
关系的强度(点越是紧密地聚集在一条线周围,关系越强)。
相关系数 (Correlation Coefficient):将图形化的关系量化成一个具体的数值。
Pearson简单相关系数 (r):
用途:最最常用的相关系数,衡量两个连续变量之间线性关系的强度和方向。
公式: \[ r = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^2 \sum_{i=1}^{n}(y_i - \bar{y})^2}} \]
解读:
取值范围在 -1 到 +1 之间。
r > 0
为正相关,r < 0
为负相关。|r|
的绝对值越大,线性关系越强。|r| = 1
表示完全线性相关,所有点都在一条直线上。r = 0
表示没有线性关系。
重要前提:它要求变量服从正态分布,并且对异常值非常敏感。
Spearman等级相关系数 (ρ 或 rs):
用途:当数据不满足正态分布,或者数据是定序变量(等级数据)时使用。比如,“产品喜好度排名”和“广告投入排名”之间的关系。
具体操作:它不直接用原始数值,而是先把每个变量的数据从小到大进行排序,用它们的“排名”来代替原始值。然后,再对这两个排名序列计算皮尔逊相关系数。
解读:它衡量的是两个变量单调关系(是不是同增同减)的强度。
Kendall's Tau (τ) 相关系数:
用途:也是一种非参数的等级相关系数,同样适用于定序变量。
具体操作:它的计算方式更复杂一些。它通过比较数据中所有“一致对”(两个变量的排序方向相同)和“非一致对”(排序方向相反)的数量来衡量关系。
解读:与Spearman相比,Kendall's Tau对于小样本和有大量相同等级的数据时可能更稳健。
相关系数的显著性检验 (t检验):
我们算出来的相关系数r不等于0,但这会不会只是样本的巧合?我们需要检验这个相关性在总体中是否也存在。
检验统计量:
\[ t = \frac{r\sqrt{n-2}}{\sqrt{1-r^2}} \]
将计算出的t值与t分布的临界值比较(或看p值),来判断相关系数是否显著不为零。
偏相关系数 (Partial Correlation):
目的:在多元分析中,我们想知道两个变量X1和Y之间的“纯粹”关系,需要排除掉其他变量(如X2)的干扰。
用人话讲:比如我们发现“冰淇淋销量”(X1)和“溺水人数”(Y)之间有很强的正相关。但这很可能是个伪相关,因为它们都受到了“气温”(X2)这个变量的影响。偏相关分析就是要计算在控制住“气温”这个变量不变的前提下,“冰淇淋销量”和“溺水人数”之间还剩下多少相关性。结果很可能是,剩下的相关性几乎为零。
3.4 回归分析
目的:建立变量间相互依赖的量化关系,进行预测或控制。
分类:一元/多元、简单/多重、线性/非线性回归。
线性回归分析:
模型假设。
线性 (Linearity):自变量和因变量之间必须存在线性关系。
独立性 (Independence):各个观测样本的误差项之间是相互独立的,互不影响。比如你预测今天的股价,那个误差不应该影响你对明天股价误差的判断。
方差齐性 (Homoscedasticity):误差项的方差应该是一个常数,不随自变量的取值而改变。用人话讲,就是模型预测的“离谱程度”应该是均匀的,不能在自变量小的时候预测很准,自变量大的时候就预测得非常离谱。
正态性 (Normality):误差项必须服从正态分布。
回归系数的最小二乘估计。
回归方程的拟合优度:
决定系数(R²) \[ R^2 = 1 - \frac{SS_{Res}}{SS_{Total}} \]
复相关系数
\[R = \sqrt{R^2}\]
修正决定系数
\[R^2_{\text{adj}} = 1 - (1 - R^2) \cdot \frac{n - 1}{n - p - 1}\]
普通的R²有个毛病——你往模型里加的自变量越多,R²就一定会变大(或不变),哪怕你加的是一个毫无关系的变量(比如用星座来预测房价)。这会误导我们以为模型越复杂越好。
解读:修正R²就是给R²打了个“补丁”,它在计算时考虑了自变量的数量。如果你加入的自变量对模型没有显著贡献,修正R²反而会下降。因此,在比较包含不同数量自变量的模型时,看修正R²比看R²更靠谱。公式中的
n
是样本量,p
是自变量个数。
回归标准误差
显著性检验
我们的模型和变量真的有意义吗?还是仅仅是数据巧合?这就需要做显著性检验。
回归的显著性检验 (F检验)
目的:检验整个模型的总体显著性。它回答的问题是:“你这个回归方程,作为一个整体,到底有没有用?”
怎么看:看F检验的p值。如果p值很小(比如<0.05),我们就有信心拒绝“所有自变量都和因变量没关系”这个原假设,认为这个模型整体上是成立的。
回归系数的显著性检验 (t检验)
目的:检验每一个自变量的个体显著性。它回答的问题是:“模型里的这个XX变量,它对因变量到底有没有显著的影响?”
怎么看:看每个系数对应的t检验的p值。如果某个变量的p值很小(<0.05),说明它是个有用的预测变量。如果p值很大,说明这个变量可能没什么用,可以考虑从模型中剔除。
残差分析:
概念:残差就是“真实值 - 预测值”,是模型没能解释的那部分“意外”。
目的:就是通过分析“意外”,看看我们的“理论”是不是出了问题。
残差图:这是最重要的诊断工具。我们通常画出“残差 vs. 预测值”的散点图。一个好的残差图,应该像一盘散沙,点在0线上下随机均匀分布,看不出任何模式。
如果残差图呈现出喇叭形或漏斗形,说明方差不齐。
如果残差图呈现出明显的曲线模式,说明可能存在非线性关系。
P-P图 / Q-Q图:这是专门用来检验残差正态性的图形工具。如果点基本都落在对角线上,就说明残差大致服从正态分布。
其他问题:
自变量筛选方法
当自变量很多时,我们想选出一组“最佳”的自变量组合。手动筛选太麻烦,于是有了自动筛选的方法。
前进法 (Forward Selection):像搭积木。从一个空模型开始,每次都把那个能让模型改善最显著的变量加进来,直到没有变量能再提供显著改善为止。
后退法 (Backward Elimination):像砍树。从包含所有变量的完整模型开始,每次都把那个最没用的变量(p值最大)剔除出去,直到剩下的变量都显著为止。
逐步回归法 (Stepwise Regression):前进法和后退法的结合体,更加灵活。每引入一个新变量后,都会重新审视一下模型里已有的所有变量,看看有没有哪个因为新成员的加入而变得不那么重要了,如果有就把它踢出去。
多重共线性 (Multicollinearity)
概念:指在多元回归中,自变量之间存在高度相关关系。
用人话讲:就是模型里的几个自变量“说的话都差不多”,信息重叠了。比如,同时用“房屋使用面积”和“房屋建筑面积”来预测房价,这两个变量高度相关,就可能引发多重共线性。
危害:它会导致回归系数的估计变得非常不稳定,符号可能与预期相反,t检验也可能不显著,让我们无法准确判断每个自变量的单独贡献。
诊断:最常用的指标是方差扩大因子 (Variance Inflation Factor, VIF)。如果某个变量的VIF值很大(通常认为>5或>10),就说明它和其他自变量存在严重的多重共线性问题。
3.5 方差分析 (ANOVA)
引论:
目的:检验多个总体均值是否相等,研究分类型自变量对数值型因变量的影响。
有关术语
基本思想:比较组间方差(系统误差+随机误差)与组内方差(随机误差),通过F比值判断均值差异是否显著。
基本假定:正态性、方差齐性、独立性。
单因素方差分析:
数据结构。
分析步骤:提出假设、构造检验统计量(SST, SSA, SSE及其自由度、均方MSA, MSE)、计算F值、统计决策。
关系强度测量(R²)。
多重比较:当拒绝原假设后,进一步检验哪些均值之间存在差异(如LSD方法)。
双因素方差分析:
类型:无交互作用、有交互作用。
目的:分析两个因素(行因素、列因素)及其交互作用对试验结果的影响。
数据结构。
分析步骤:提出假设(行因素、列因素及交互作用)、计算平方和(SST, SSR, SSC, SSinteract, SSE)、计算均方、计算F值、统计决策。
关系强度测量。
3.4 方差分析 (Analysis of Variance, ANOVA)
引论 (Introduction)
目的:方差分析主要用于检验两个或更多个总体(组)的均值是否相等。本质上,它研究的是一个或多个分类型自变量对一个数值型因变量的影响。
- 用人话讲:当我们想比较的组别超过两个时(比如,比较A、B、C三种教学方法下的学生平均分),做多次t检验会增加犯第一类错误的概率。ANOVA提供了一种“一锅端”的解决方案,一次性判断所有组的均值是否都相等。
有关术语:
因素 (Factor):就是我们研究的那个分类型自变量,比如“教学方法”。
水平 (Level):因素的不同取值,比如“A方法”、“B方法”、“C方法”。
基本思想 (The Core Idea):
ANOVA的精髓在于“分解总变异”。它把数据的总波动(总方差)分解为两个部分:
组间方差 (Between-Group Variance):由不同组别(因素的不同水平)带来的系统性差异。比如,A、B、C三种教学方法本身的效果差异。这部分方差既包含了系统误差,也包含了随机误差。
组内方差 (Within-Group Variance):同一组内部,由于个体差异等随机因素造成的波动。比如,同样用A方法教学,学生的分数也不可能完全一样。这部分方差被认为是纯粹的随机误差。
F比值:通过比较这两个方差,我们就能做出判断。 \[ F = \frac{\text{组间方差}}{\text{组内方差}} = \frac{MSA}{MSE} \]
- 逻辑:如果原假设“所有组的均值都相等”成立,那么就不存在系统误差,组间方差和组内方差应该差不多大,F比值就会接近1。反之,如果不同组的均值确实有差异,组间方差就会显著大于组内方差,F比值就会很大。
基本假定 (Assumptions):和线性回归一样,ANOVA也有它的“地基”。
正态性:各组的样本都分别来自正态分布的总体。
方差齐性:各组的总体方差相等。这是ANOVA非常重要的一个前提。
独立性:各样本之间是相互独立的。
单因素方差分析 (One-Way ANOVA)
研究一个分类型自变量对一个数值型因变量的影响。
分析步骤:
- 提出假设:
- H0: \(\mu_1 = \mu_2 = \dots = \mu_k\) (所有组的总体均值都相等)
- H1: 至少有两个组的总体均值不相等
- 构造检验统计量:这一步是核心,即分解平方和(Sum of
Squares)。
- 总平方和 (SST, Total Sum of Squares):所有数据点与总平均值的离差平方和,代表了总变异。
- 组间平方和 (SSA, Sum of Squares Between Groups):也叫处理平方和,代表了由不同组别引起的变异。 \[ SSA = \sum_{i=1}^{k} n_i (\bar{x}_i - \bar{\bar{x}})^2 \] (\(k\)是组数, \(n_i\)是第i组样本量, \(\bar{x}_i\)是第i组均值, \(\bar{\bar{x}}\)是总均值)
- 组内平方和 (SSE, Sum of Squares Within Groups):也叫误差平方和,代表了随机误差引起的变异。 \[ SSE = \sum_{i=1}^{k} \sum_{j=1}^{n_i} (x_{ij} - \bar{x}_i)^2 \]
- 关系:\(SST = SSA + SSE\)
- 计算F值:
- 为了消除样本量的影响,我们要用平方和除以各自的自由度
(df),得到均方 (Mean Square)。
- 组间均方 (MSA): \(MSA = \frac{SSA}{k-1}\)
- 组内均方 (MSE): \(MSE = \frac{SSE}{N-k}\) (N是总样本量)
- F统计量: \[ F = \frac{MSA}{MSE} \]
- 为了消除样本量的影响,我们要用平方和除以各自的自由度
(df),得到均方 (Mean Square)。
- 统计决策:将计算出的F值与F分布的临界值比较(或看p值)。如果p值 < α,则拒绝H0,说明各组均值之间存在显著差异。
- 提出假设:
多重比较 (Post-Hoc Multiple Comparisons):
- ANOVA的F检验拒绝了H0,只告诉我们“这些组的均值不全相等”,但没告诉我们具体是哪些组之间有差异。是A和B有差异?还是B和C有差异?多重比较就是用来做这个“事后追查”的。
- 常用方法:LSD (Least Significant Difference)、Tukey HSD、Bonferroni等。它们本质上是两两t检验的变体,但对显著性水平进行了修正,以控制整体的第一类错误率。
双因素方差分析 (Two-Way ANOVA)
研究两个分类型自变量及其交互作用对一个数值型因变量的影响。
类型:
- 无交互作用的双因素方差分析:假定两个因素的影响是相互独立的、可以叠加的。
- 有交互作用的双因素方差分析:这是更常见、更现实的情况。它不仅考虑两个因素各自的独立影响(主效应),还考虑它们组合在一起时产生的特殊“化学反应”(交互效应)。
- 交互效应举例:假设我们研究“肥料种类”(A/B)和“浇水量”(高/低)对农作物产量的影响。如果A肥在低水量时效果好,B肥在高水量时效果好,这就说明两个因素之间存在交互作用。它们的影响不是简单的1+1=2。
分析步骤:
- 提出假设:现在我们有三套假设要检验。
- 关于交互作用的:H0: 两个因素之间没有交互作用。
- 关于行因素主效应的:H0: 行因素的各个水平均值相等。
- 关于列因素主效应的:H0: 列因素的各个水平均值相等。
- 计算平方和:总变异被分解得更细了。
- \(SST = SSR + SSC + SS_{interaction} +
SSE\)
- SST: 总平方和
- SSR (Rows): 行因素引起的平方和
- SSC (Columns): 列因素引起的平方和
- SS_interaction: 交互作用引起的平方和
- SSE: 随机误差平方和
- \(SST = SSR + SSC + SS_{interaction} +
SSE\)
- 计算F值:我们要分别计算三个F值。
- \(F_{interaction} = \frac{MS_{interaction}}{MSE}\)
- \(F_{R} = \frac{MSR}{MSE}\)
- \(F_{C} = \frac{MSC}{MSE}\)
- 统计决策:
- 首先看交互作用的F检验。如果交互作用显著,说明两个因素的影响是纠缠在一起的,此时单独分析主效应的意义不大,应重点分析交互效应的模式。
- 如果交互作用不显著,我们再分别去看两个主效应的F检验,判断每个因素是否对因变量有独立、显著的影响。
- 提出假设:现在我们有三套假设要检验。
4. 问题建模
4.1 预测建模 (Predictive Modeling)
利用已有数据,建立数学模型,来预测未来的数值。
回归分析 (Regression Analysis)
(这部分在之前的对话中已经详细展开,此处补充和完善上述提到的其他回归类型。)
线性回归 (Linear Regression):基础模型,寻找最佳直线(或超平面)来拟合数据。
岭回归 (Ridge Regression)
目的:主要用于解决线性回归中的多重共线性问题。当自变量之间高度相关时,普通最小二乘法(OLS)估计的回归系数会非常不稳定,方差很大。
用人话讲:岭回归就像是给不稳定的回归系数“上了一道枷锁”。它在最小二乘法的基础上,增加了一个“惩罚项”(L2范数惩罚),这个惩罚项会抑制回归系数变得过大。这种约束使得模型整体上变得更稳定、更可靠,即使牺牲了一点点在训练集上的拟合精度。
Lasso回归 (Lasso Regression)
目的:它和岭回归很像,也是为了解决多重共线性问题。但它有一个更强大的特性——特征选择 (Feature Selection)。
用人话讲:Lasso回归用的惩罚项(L1范数惩罚)比岭回归更“狠”。它不仅会抑制系数的大小,还会把那些它认为不重要的自变量的系数直接压缩到零。因此,Lasso回归在得到一个稳定模型的同时,还帮我们做了一轮变量筛选,告诉我们哪些变量才是真正重要的。
逻辑回归 (Logistic Regression)
注意:虽然名字里带“回归”,但它实际上是一个分类模型。
目的:用于预测一个二元结果(是/否,1/0)。比如预测一个用户是否会点击广告,一封邮件是否是垃圾邮件。
用人话讲:它通过一个特殊的Sigmoid函数,巧妙地将线性回归的连续输出值(可以从负无穷到正无穷)映射到 (0, 1) 区间内。这个输出值就可以被解释为“事件发生的概率”。比如,输出0.8,就表示模型预测有80%的概率是正例。然后我们再设定一个门槛(比如0.5),大于这个门槛就判为1,小于就判为0,从而实现了分类。
决策树 (回归) - C&R Tree (Classification and Regression Tree)
目的:用树状结构来做回归预测。
用人话讲:分类决策树的每个叶子节点代表一个类别,而回归树的每个叶子节点则代表一个具体的数值。它的构建过程是这样的:树不断地通过对某个特征提出问题(比如“面积是否<80平米?”)来分裂数据,目标是让每次分裂后,新生成的节点(分支)内的因变量(比如房价)的方差变得最小。最终,当树停止生长时,一个新样本落入某个叶子节点,它的预测值就是这个叶子节点里所有训练样本的平均值。
XGBoost回归 (eXtreme Gradient Boosting)
目的:一种极其强大和高效的集成学习算法。
用人话讲:可以把它想象成一个“精英团队在不断学习和弥补错误”。
第一个学习器(一棵简单的决策树)先对数据进行一个粗略的预测。
第二个学习器上场,它的任务不是预测原始数据,而是专门学习和预测第一个学习器没预测对的那部分(残差)。
第三个学习器再来学习和预测第二个学习器没预测对的残差……
这个过程不断迭代,每一棵新树都在弥补前面所有树的不足。XGBoost在这个基础上做了大量的优化,速度极快,效果极好,并且内置了正则化来防止过拟合。
神经网络 (Neural Networks)
通过模拟人脑神经元的连接方式,来学习数据中极其复杂的非线性关系。这个略。
支持向量回归机 (Support Vector Regression, SVR)
目的:支持向量机 (SVM) 的回归版本。
用人话讲:普通线性回归的目标是找到一条线,让所有点到线的距离平方和最小。而SVR的目标是找到一个“管道”或“街道”,这个管道的宽度是
2ε
。它的目标是让尽可能多的数据点落在这个管道里,同时让管道本身尽可能“窄”。对于落在管道外的点,SVR才会计算它们的“损失”。那些决定了管道边界的点,就是“支持向量”。这种“对管道内的点不计较”的特性,使得SVR对异常值不那么敏感,模型更稳健。
4.2 分类建模 (Classification Modeling)
利用数学模型,将事物划分到预先定义好的不同类别中。因变量Y是离散的。
逻辑回归、判别分析
决策树(分类)
神经网络
支持向量分类机 (SVC):
它的核心思想是在不同类别的样本之间,找到一个“最宽的街道”(最大间隔超平面)。街道的边缘由距离最近的几个点(支持向量)来支撑。这样划分出来的边界容错性最好。对于线性不可分的数据,它通过“核技巧”(Kernel Trick)将数据映射到更高维的空间,让它们变得线性可分,再寻找那条最宽的街道。
随机森林 (Random Forest):
一种集成学习算法,也是决策树的一种。
它构建很多棵不同的决策树。为了让每棵树都不同,它在训练时采用了两种随机性:一是随机抽取一部分样本(行抽样),二是随机抽取一部分特征来参与决策(列抽样)。
当需要做预测时,让森林里的每一棵树都独立地“投票”,最后少数服从多数,得票最多的那个类别就是最终的预测结果。
这种机制极大地提高了模型的准确性和稳定性,并且能有效防止单棵决策树容易出现的过拟合问题。
4.3 关联分析 (Association Analysis)
从一大堆看似无关的事件中,找出“A发生了,B也很可能发生”这种模式。最经典的例子就是“啤酒与尿布”的故事。
Apriori算法
核心思想:“一个项集如果是频繁的,那么它的所有子集也必须是频繁的。” 反过来说就是:“如果一个项集不频繁,那么它的所有超集也肯定不频繁。”
操作:它像“筛筛子”一样,从包含1个商品的频繁项集开始,一层层地往上找包含2个、3个...商品的频繁项集。在每一层,它都利用上面的核心思想来“剪枝”,提前淘汰掉大量不可能频繁的组合,从而提高效率。
FP-growth算法
核心思想:Apriori算法需要反复扫描数据库并产生大量候选集,效率不高。FP-growth算法则更高明,它把整个数据库的交易信息压缩到一棵叫FP树 (Frequent Pattern Tree) 的特殊树状结构里。
操作:它只需要扫描两次数据库:一次是统计商品频率,一次是建树。建好树后,所有的挖掘工作都在这棵紧凑的树上进行,不再需要访问原始数据库,速度大大提升。
CARMA算法
序列模式挖掘算法
4.4 聚类分析 (Cluster Analysis)
用人话讲:聚类就是“人以群分,物以类聚”。它事先不知道有哪些类别,也没有标准答案。算法需要自己根据数据的“长相”(特征),把相似的样本自动地归为一堆,把不相似的分开。
系统聚类 (Hierarchical Clustering)
- 操作:它有两种方式。一种是“凝聚”法,开始时每个点都是一个独立的簇,然后一步步地把最相近的两个簇合并,直到所有点都合并成一个大簇,整个过程就像画一棵“树状图”。另一种是“分裂”法,反过来操作。
K-Means算法
- 操作:这是最经典的聚类算法之一。
- 你先指定要聚成几类 (K)。
- 算法随机选择K个点作为初始的“簇中心”。
- 所有其他点根据自己离哪个“簇中心”最近,来决定自己的归属。
- 然后,重新计算每个簇的“新中心”(该簇所有点的平均位置)。
- 重复第3、4步,直到簇中心的位置不再变化为止。
- 操作:这是最经典的聚类算法之一。
TwoStep算法
4.5 序列分析 (Sequence Analysis)
目的:与关联分析类似,但它额外考虑了时间顺序。它要发现的是形如“顾客先买了A,过了一段时间后,又买了B”这样的时序模式。
用人话讲:关联分析告诉你顾客的购物篮里同时有什么,而序列分析告诉你顾客的“购物时间线”是怎样的。比如,发现“买了新电脑的顾客,通常会在一个月内购买打印机”,或者“看了电影A的观众,下周很可能会去看它的续集B”。
应用:网站点击流分析(分析用户的浏览路径)、客户生命周期价值分析、DNA序列分析等。
4.6 Web数据挖掘 (Web Data Mining)
目的:一个综合性的领域,指利用数据挖掘技术从海量的Web数据(包括网页内容、网页链接结构、用户访问日志等)中发现有用的知识和模式。
主要内容:
Web内容挖掘 (Web Content Mining):从网页的文本、图片、音视频中提取信息。搜索引擎的网页索引就属于这一类。
Web结构挖掘 (Web Structure Mining):分析网页之间的链接关系(超链接)。比如,Google著名的PageRank算法就是通过分析网页的链接结构来判断网页的重要性。
Web使用挖掘 (Web Usage Mining):分析用户的访问日志,发现用户的访问模式和行为习惯。这包括了上面提到的关联分析和序列分析在网站上的具体应用,用于个性化推荐、网站布局优化等。