统计基础

第02课:描述统计

集中趋势、离散程度、分布形态、五数概括、箱线图、数据探索

1. 集中趋势度量

1.1 均值(Mean): x̄ = (1/n)Σxᵢ

优点: 数学性质好 缺点: 对极端值敏感

1.2 中位数(Median)

将数据从小到大排列,取中间位置的值。优点: 对极端值稳健

1.3 众数(Mode)与截尾均值

众数:出现频率最高的值。截尾均值:去掉两端各p%后求均值,兼顾稳健性和信息利用。

2. 离散程度度量

2.1 方差与标准差

样本方差: s² = (1/(n-1))Σ(xᵢ-x̄)²

为什么除以 n-1? 贝塞尔校正——样本方差是总体方差的无偏估计。

2.2 变异系数 CV = σ/μ × 100%

消除量纲影响,比较不同尺度数据的离散程度。

2.3 四分位距(IQR)= Q₃ - Q₁

箱线图中定义异常值:x < Q₁-1.5×IQR 或 x > Q₃+1.5×IQR

3. 分布形态

3.1 偏度 Skew = E[(X-μ)³]/σ³

3.2 峰度 Kurt = E[(X-μ)⁴]/σ⁴ - 3

金融风险: 峰度大意味着极端事件(黑天鹅)更频繁。

4. 五数概括与箱线图

五数概括: Min, Q₁, Median, Q₃, Max

箱线图直观展示:箱体(Q₁到Q₃)、箱内线(中位数)、须(1.5×IQR)、点(异常值)

5. 数据探索性分析(EDA)

  1. 整体概览: 数据维度、类型、缺失情况
  2. 单变量分析: 直方图、箱线图、统计量
  3. 双变量分析: 散点图、相关系数
  4. 多变量分析: 相关矩阵热力图

实践建议: 永远先看数据再建模;可视化 > 数值概括(安斯库姆四重奏)

Python代码实现与验证

💡 代码说明:以下代码使用 Python / Scikit-learn 实现,已实机运行验证。

完整代码


import numpy as np
import pandas as pd
from scipy import stats
np.random.seed(42)

data = np.concatenate([np.random.normal(50, 10, 95), np.random.normal(200, 5, 5)])
df = pd.DataFrame({'value': data})

print("=== 描述统计 ===")
print("均值: {:.2f}".format(df['value'].mean()))
print("中位数: {:.2f}".format(df['value'].median()))
print("标准差: {:.2f}".format(df['value'].std()))
print("偏度: {:.4f}".format(df['value'].skew()))
print("峰度: {:.4f}".format(df['value'].kurtosis()))

Q1, Q3 = df['value'].quantile(0.25), df['value'].quantile(0.75)
IQR = Q3 - Q1
print("IQR: {:.2f}".format(IQR))

print("\n=== 五数概括 ===")
print("Min={:.2f} Q1={:.2f} Med={:.2f} Q3={:.2f} Max={:.2f}".format(
    df['value'].min(), Q1, df['value'].median(), Q3, df['value'].max()))

outliers = df[(df['value']<Q1-1.5*IQR)|(df['value']>Q3+1.5*IQR)]
print("\nIQR异常值: {}个".format(len(outliers)))
print("截尾均值(5%): {:.2f}".format(stats.trim_mean(df['value'], 0.05)))

运行结果

=== 描述统计 === 均值: 56.52 中位数: 49.46 标准差: 34.03 偏度: 3.7174 峰度: 13.4274 IQR: 12.42 === 五数概括 === Min=23.80 Q1=44.28 Med=49.46 Q3=56.70 Max=201.48 IQR异常值: 6个 截尾均值(5%): 50.11
✅ 验证通过

深入理解:描述统计的艺术

安斯库姆四重奏的启示

1973年,统计学家F.J. Anscombe构造了四组数据,它们拥有几乎相同的统计量(均值、方差、相关系数、回归线),但散点图形状截然不同。这告诉我们:永远先画图,再算数

数据集x均值y均值相关系数回归线形状
I97.500.816y=3+0.5x线性
II97.500.816y=3+0.5x抛物线
III97.500.816y=3+0.5x离群点
IV97.500.816y=3+0.5x垂直聚集

稳健统计量

当数据包含异常值或非正态分布时,传统统计量可能产生误导。稳健统计量提供更可靠的替代:

传统统计量稳健替代优势
均值中位数/截尾均值不受极端值影响
标准差MAD(中位绝对偏差)对异常值稳健
方差IQR基于分位数,不受极端值影响
Pearson相关Spearman/Kendall捕捉单调关系,不受异常值影响

EDA最佳实践

💡 EDA黄金法则
  1. 先看整体,再看细节:数据维度、类型、缺失→单变量→双变量→多变量
  2. 可视化优先:直方图、箱线图、散点图比数字统计量更直观
  3. 检查数据质量:缺失值、异常值、重复记录、逻辑错误
  4. 关注分布形态:右偏→对数变换;多峰→可能需要分组建模
  5. 记录发现:EDA是探索性过程,重要发现必须文档化

实际数据集EDA案例

在Kaggle的Titanic数据集上,优秀的EDA会发现:

实践案例与深入分析

统计思维在日常ML工作中的体现

统计思维不仅是理论工具,更是ML工程师的核心素养。以下是一些日常工作中的统计思维应用:

数据质量检查:在建模前,始终检查数据的分布、异常值和缺失模式。一个异常值可能导致模型完全失效。用箱线图和直方图做第一道关卡,用Z-score和IQR做第二道关卡,用业务逻辑做第三道关卡。
实验设计:每次模型改进都需要统计验证。仅看测试集指标是不够的——你需要置信区间和假设检验来确认改进不是随机波动。使用配对t检验比较两个模型的交叉验证分数,比单次比较更可靠。
结果解读:永远不要只报告点估计。R2=0.85和95%CI[0.82,0.88]比单独的0.85更有信息量。p值<0.05不意味着效果显著——还需要看效应量。

概率论的工程应用

在推荐系统中,贝叶斯平滑是处理冷启动问题的经典方法。例如,一个商品只有3个评分(5,5,4),均值4.67可能不可靠。贝叶斯平滑公式:smoothed = (n*mean + m*global_mean)/(n+m),其中m控制先验的强度。当m=10时,这个商品的平滑评分变为(3*4.67+10*4.0)/13=4.15,更接近全局均值,更稳健。

常见统计错误与防范

  1. p-hacking:反复尝试不同分析直到p<0.05。防范:预先注册分析计划,报告所有尝试的检验次数。
  2. 选择性报告:只报告显著结果,忽略不显著的。防范:报告所有分析结果,使用森林图展示完整画面。
  3. 忽略多重比较:20个特征中可能1个"显著"纯属偶然。防范:Bonferroni/BH校正。
  4. 样本量不足:小样本下的"显著"结果不可靠。防范:预先计算所需样本量。

统计学习理论概览

VC维是衡量模型复杂度的理论工具。VC维越高,模型能拟合的函数越复杂,但也越容易过拟合。结构风险最小化(SRM)在经验风险和模型复杂度之间取得平衡:SRM = 经验风险 + 复杂度惩罚。这解释了为什么正则化能防止过拟合——它在做结构风险最小化。

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

📝 课后练习

  1. 实现本课核心算法并用Scikit-learn验证
  2. 调优关键超参数并记录性能变化
  3. 用交叉验证评估模型稳定性
  4. 与之前学过的方法对比分析
  5. 分析本课方法的失效条件
📊
数据之眼
学会用统计量看透数据本质