【快手】数据挖掘面试题0002:求某地铁站每日客流量,乘地铁经过、进出站人都包括在内
文章大纲
- 第一步:明确问题与数据基础
- 第二步:费米问题拆解框架
- 关键假设(基于“二线城市区域中心站”场景)
- 第三步:用SQL实现“数据驱动的费米估算”
- Step 1:按“时段+事件类型”统计基础数据
- Step 2:结合费米假设估算总量
- Step 3:调整假设,优化估算
- 结论:结合SQL的费米估算逻辑
- ~~ 机器学习方案 ~~
- 一、预测目标与数据基础
- 二、特征工程(关键步骤)
- 1. 时间特征
- 2. 外部特征
- 三、模型选择(适合客流量预测的模型)
- 1. 经典统计模型
- 2. 机器学习模型
- 3. 深度学习模型
- 四、模型训练与评估
- 1. 数据划分
- 2. 评估指标
- 3. 模型优化
- **五、实际应用:预测结果落地**
- **六、总结:机器学习预测的优势**
1.求某地铁站每日客流量,乘地铁经过、进出站人都包括在内 费米问题
结合费米问题的“拆解-假设-估算”
逻辑与SQL的“数据提取-聚合分析”能力,可以更系统地估算地铁站每日客流量。
- 以下是具体分析过程:
第一步:明确问题与数据基础
- 目标:估算某地铁站每日总客流量(含进站、出站、换乘/经过三类人群)。
假设我们有基础数据记录表subway_events
,结构如下:字段名 含义 示例值 user_id
乘客唯一标识 1001 station_id
地铁站ID S018 event_time
事件时间 2023-10-01 08:30:00 event_type
事件类型 ‘IN’(进站)、‘OUT’(出站)、‘TRANSFER’(换乘)
第二步:费米问题拆解框架
将总客流拆分为3个核心组成部分,再按“时段”细化(地铁运营时间通常为5:30-23:30,共18小时):
总客流 = 进站人数 + 出站人数 + 换乘/经过人数
关键假设(基于“二线城市区域中心站”场景)
-
时段划分:
高峰:7:00-9:00(早高峰,2h)、17:00-19:00(晚高峰,2h),共4h
;平峰:9:00-17:00(8h)、19:00-21:00(2h),共10h
;低峰:5:30-7:00(1.5h)、21:00-23:30(2.5h),共4h
。
-
客流组成假设:
- 进站 / 出站:
同一乘客的“进站”和“出站”是配对的,但单日同一乘客可能多次进出(如通勤+购物)
; - 换乘 / 经过:乘客在该站从A线换乘到B线,未出闸机,属于“经过”,记录为“TRANSFER”事件。
- 进站 / 出站:
第三步:用SQL实现“数据驱动的费米估算”
通过SQL提取各组成部分的量化数据,结合假设验证并汇总。
Step 1:按“时段+事件类型”统计基础数据
先用SQL分时段统计“进站、出站、换乘”的原始记录数(反映各环节的流量规模)
:
-- 按时段和事件类型分组统计
WITH time_segments AS (SELECT station_id,DATE(event_time) AS stat_date,-- 划分时段(高峰/平峰/低峰)CASE WHEN HOUR(event_time) BETWEEN 7 AND 8 OR HOUR(event_time) BETWEEN 17 AND 18 THEN 'peak' -- 早7-9、晚17-19(简化为整点时段,便于计算)WHEN HOUR(event_time) BETWEEN 9 AND 16 OR HOUR(event_time) BETWEEN 19 AND 20 THEN 'flat' -- 平峰9-17、19-21ELSE 'off_peak' -- 低峰5-7、21-23END AS time_period,event_type -- 事件类型:IN/OUT/TRANSFERFROM subway_eventsWHERE station_id = 'S018' -- 目标地铁站
)
-- 统计各时段的事件数量
SELECT stat_date,time_period,SUM(CASE WHEN event_type = 'IN' THEN 1 ELSE 0 END)