你在做基于打卡点位的驻留地识别(家/公司):8000 万条带噪 GPS 点,包含漂移点、隧道缺失、高铁跨城;同一批用户在城区点密集、在郊区点稀疏,密度差可能在 100 倍以上;郊区用户虽然点少但真实驻留时间更长。你现在打算用 DBSCAN,请回答:(1) eps 和 minPts 怎么选,城区与郊区密度差这么大怎么处理;(2) 没有标签,你用什么指标判断聚类质量;(3) 如果每天要为 500 万活跃用户增量重算,工程上怎么落地。
面试官在考什么
判断候选人是否理解 DBSCAN 的核心假设(全局密度阈值)会在什么真实场景下失效,以及能否把无监督方法接到可验证的业务判据上。
回答框架 · 前两步
- 全局 eps 必然失败,三条可行路线:按空间分区(城市/网格)局部定 eps;改用 OPTICS/HDBSCAN 这类基于互达距离的密度层级方法;或者做特征变换,把「点密度」改成「时间加权密度」,让稀疏但长时间驻留的点也能形成高密度。
- 参数选择不能只靠 k-距离图的肘部:minPts 与噪声率、维度相关,GPS 是 2~3 维可以取 4~10 量级;更重要的是把下游判据拉进来(误把漂移点当驻留点的代价、漏掉真实驻留地的代价)。同时必须处理「停留会重复上报」造成的伪密度——去重或做时间衰减。
还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。
延伸阅读
想看这个方向的整体准备路线? 进入「机器学习基础」方向页
同一能力域的其他题
- 你有 500 万条 128 维用户 embedding,要聚成约 2000 个簇,单机 64GB 内存。你会选 MiniBatchKMeans 还是标准 KMeans?n_init、batch_size、tol 分别怎么定,空簇怎么处理,最后怎么判断这次聚类是可信的?
- 推荐系统要对 3000 万条用户 embedding(d=64, float32)做粗聚类分桶,k 在 1000~5000 之间,要求单机 128GB 内存、2 小时内跑完。你会选哪个聚类实现?k 怎么定?聚类质量怎么评估?
- 你负责一个用户 embedding 平台:2 亿用户 × 128 维 float32(单份约 100GB)。业务方要按 5000 个簇做分层运营,要求每晚在固定的 20 台机器(每台 8 核 / 32GB 内存 / 无 GPU)上 4 小时内完成一次重聚类;并且相邻两天的簇 ID 必须能对上,否则昨天的投放归因报表就断了。请回答:(1) 你会选哪种 KMeans 变体、用什么初始化,给一个量级估算说明 4 小时够不够、瓶颈在哪;(2) k=5000 这个数字你打算怎么论证;(3) 跨天的簇 ID 对齐你具体怎么做,代价多大、失败时怎么办。
- 有一维数据集 {1,2,3,10,11,12,50},用 KMeans 聚类,k=3,初始质心为 1、10、50。请写出第一轮簇分配和更新后的三个质心,并说明第二轮 50 还会不会单独成簇。距离使用欧氏距离。
- 8000 个商品 SKU,特征是从标题文本抽的归一化 embedding,你要输出一棵 3~5 层的类目树。如果直接用凝聚层次聚类:linkage 选哪种、为什么;8000 个点的内存和时间开销大概什么样;dendrogram 出来后你切在哪一层、依据什么?
- 商品库有 20 万 SKU、100 维特征,业务要求输出一棵可解释的分类树(不是扁平簇)。直接对 20 万样本跑凝聚层次聚类会怎样?你会怎么在规模与树结构之间取舍?