大数据分析
English version: Analysis of Big Data
本讲介绍四种数据分析类型 —— 描述性、诊断性、预测性和规范性分析 —— 并附带 Python 实操示例。
数据分析类型
| 类型 | 关注点 | 回答的问题 |
|---|---|---|
| 描述性 | 洞察过去 | 发生了什么? |
| 诊断性 | 理解原因 | 为什么发生? |
| 预测性 | 预测未来 | 将会发生什么? |
| 规范性 | 决策支持 | 我们应该怎么做? |
描述性分析
描述性分析指分析历史数据并以易于解读的汇总形式呈现。当今完成的大部分分析都是描述性分析,通过统计函数如计数、最大值、最小值、均值、中位数、众数和百分比来实现。
用例
- 计算社交媒体帖子的总点赞数
- 分析评论以了解用户态度
- 收入、支出、现金流、库存和生产等业务报告
- 识别客户偏好和行为趋势
- 分析历史用电量以设定最优单价并对消费者进行分类
描述性分析的三种类型
| 类型 | 度量指标 | 可视化方式 |
|---|---|---|
| 频率 | 计数 | 直方图 |
| 形状(集中趋势) | 均值、中位数、众数 | 箱线图 |
| 离散度(变异性) | 方差、标准差、异常值 | 直方图和箱线图 |
示例:薪资数据分析
使用包含员工薪资、工作年限、年龄和性别的 .csv 数据集。
频率问题
- 男性和女性员工的数量及比例
- 按性别划分的平均薪资
- 各年龄段(21–30、31–40、41–50、51–60)的员工数量
- 工作年限超过 5 年的员工数量
分布/形状问题
- 薪资、工作年限和年龄的均值
- 中位数、最小值和最大值
- 薪资与工作年限、薪资与年龄的分布关系
- 按性别划分的薪资概况
Python 示例
import pandas as pd
data = pd.read_csv("/Desktop/salary_data.csv")
# 均值
mean_salary = data['salary'].mean()
mean_experience = data['years experience'].mean()
mean_age = data['age'].mean()
print('平均薪资:', mean_salary)
print('平均工作年限:', mean_experience)
print('平均年龄:', mean_age)# 中位数
median_salary = data['salary'].median()
median_experience = data['years experience'].median()
median_age = data['age'].median()# 最小值 / 最大值
min_salary = data['salary'].min()
max_salary = data['salary'].max()# 可视化:薪资 vs 工作年限
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
plt.figure(1)
plt.plot(data['years experience'], data['salary'] / 1E3, 'ro', linewidth=1)
plt.xlabel('工作年限')
plt.ylabel('薪资(千元 RMB)')
plt.grid(True)
plt.title('薪资与工作年限分布')
plt.show()# 可视化:薪资 vs 年龄
plt.figure(2)
plt.plot(data['age'], data['salary'] / 1E3, 'bo', linewidth=1)
plt.xlabel('年龄')
plt.ylabel('薪资(千元 RMB)')
plt.grid(True)
plt.title('薪资与年龄分布')
plt.show()# 可视化:按性别划分的薪资
import seaborn as sns
plt.figure(3)
plt.scatter(data['gender'], data['salary'] / 1E3, c='blue', alpha=0.5)
plt.xlabel('性别')
plt.ylabel('薪资(千元 RMB)')
plt.grid(True)
plt.title('按性别划分的薪资分布')
plt.show()数据的变异性
标准差衡量数据的分散程度。它在执行预测性分析(如假设检验)时非常有用。
示例:
28, 29, 30, 31, 32和10, 20, 30, 40, 50的均值都是 30,但第二个列表的分散程度明显更大。
诊断性分析
诊断性分析是使用数据来确定趋势原因和变量之间相关性的过程。它是描述性分析之后的逻辑下一步,可视为一种根本原因分析。
核心特征
- 帮助理解正在发生什么以及为什么发生
- 可手动完成,也可使用算法或统计软件(MATLAB、R、Excel)
- 为决策者提供可操作的洞察
- 调查导致特定结果的因素
示例:薪资差距分析
从描述性分析中得出:男性平均薪资高于女性,且女性平均薪资低于总平均线。
问题:为什么女性员工的平均薪资较低?
- 直方图显示男性薪资分布相对于女性分布右偏。
相关性分析
用于揭示参数之间(工作年限、薪资、年龄、性别)的关系。
- 相关系数 (r):描述两个特征之间的密切程度
- 接近 1 或 −1 的值表示强线性关系
- 接近 0 的值表示弱线性关系
- 正值:一个变量值越大,另一个变量值也越大
- 负值:一个变量值越大,另一个变量值越小
Python 示例:相关性矩阵
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
data = pd.read_csv("/Desktop/salary_data.csv")
# 薪资与工作年限的相关性
correlation_matrix = data[['salary', 'years experience']].corr()
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('薪资与工作年限的相关性矩阵')
plt.show()# 仅男性员工的相关性
male_data = data[data['gender'] == 'Male']
correlation_matrix = np.corrcoef(male_data['salary'], male_data['years experience'])
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm',
xticklabels=['薪资', '工作年限'],
yticklabels=['薪资', '工作年限'])
plt.title("男性员工的相关性分析")
plt.show()发现
| 年龄段 | 男性平均年限 | 女性平均年限 | 男性平均薪资 | 女性平均薪资 |
|---|---|---|---|---|
| 21–30 | 7 | 8 | 48,355 | 46,809 |
| 31–40 | 8 | 9 | 74,013 | 65,503 |
尽管女性员工经验更丰富,但她们的平均薪资更低。在没有额外数据(教育、技能)的情况下,男性较高的薪资可能表明存在偏见和主观判断。
预测性分析
预测性分析使用历史数据预测未来结果。
示例:为资深员工预测薪资
一家公司希望雇佣工作年限超过 15 年的顾问。应该支付多少薪资?
使用薪资与工作年限的分布图,应用回归分析。
回归类型
回归
├── 线性
│ └── 简单线性
│ └── 多元线性
└── 非线性
模型对比
| 模型 | 方程 | R² |
|---|---|---|
| 线性(1 阶) | y = 4677.7x + 42799 | 0.7555 |
| 非线性(2 阶) | y = −197.31x² + 7395.4x + 35904 | 0.7692 |
| 非线性(3 阶) | y = 81.613x³ − 1929.7x² + 17798x + 19818 | 0.8016 |
| 非线性(4 阶) | y = 15.512x⁴ − 362.5x³ + 2270x² + 3067.3x + 34930 | 0.8113 |
Warning
虽然四次模型具有最高的 R²,但在实际情况中,线性或二次模型通常更受青睐,因为它们具有更好的泛化能力。
分类
另一种预测方法,用于识别给定数据集所属的类别。
| 方面 | 分类 | 回归 |
|---|---|---|
| 输出 | 类别 / 类别标签 | 连续数值 |
| 示例 | 预测疾病、欺诈检测、人脸分类 | 评估房价、预测需求、温度预测 |
Scikit-Learn 库用于预测性数据分析,通常与 NumPy、SciPy 和 Matplotlib 一起使用。
# 标签编码示例
from sklearn.preprocessing import LabelEncoder
# 将分类标签(如蓝色、绿色)转换为数值(0、1)规范性分析
规范性分析提供决策支持,帮助从分析结果中获益。它不仅预测未来结果,还提供建议以提取收益并利用预测结果。
核心特征
- 通过结合数学模型、机器学习算法和历史数据来优化业务成果
- 预测将会发生什么、何时发生以及为什么发生
- 使用模拟和优化来实现
- 指导用户了解不同行动将如何影响业务,并建议最优选择
应用
定价、生产计划、营销、财务规划和供应链优化。
示例:资产绩效管理
- 基础:由历史数据库工具整合的时间序列数据
- 预测性分析:创建预测风险或次优资产性能的指标和预警
- 规范性行动:每个预警都有预定义的规范性行动。一旦触发,这些行动使人员能够在故障产生影响之前管理预警并解决问题
要点总结
| 分析类型 | 目的 | 方法 |
|---|---|---|
| 描述性 | 汇总历史数据 | 统计、直方图、箱线图 |
| 诊断性 | 查找根本原因 | 相关性分析、假设检验 |
| 预测性 | 预测未来事件 | 回归、分类、机器学习 |
| 规范性 | 推荐最优行动 | 模拟、优化 |