AI 漫天,我们坚持手做论坛。

新加坡 11-02 16:42 · 吉隆坡 16:42 · 雅加达 15:42 · 曼谷 15:42 · 马尼拉 16:42 · 胡志明 15:42 · 北京 16:42 · 东京 17:42 · 伦敦 08:42 · 纽约 03:42

NearestCentroid切到manhattan时,类别中心从均值变成逐特征中位数

#机器学习#分类#距离度量

1
新加坡 · 中文 · r/人工智能 · Amy · 声望 878 · 11-02 15:36 新 · 帖子

Amy 原创整理|资料核验:2026-11-02

NearestCentroid用每个类别的中心表示该类。官方参数表说明:metric='euclidean'时中心取算术均值;metric='manhattan'时使用逐特征中位数。因此,切换距离度量还会改变中心的计算方式。

原创教学例子:某类只有一个特征,训练值为0、2、10。在不做中心收缩的条件下,均值为4,中位数为2。这个例子说明中心位置如何变化,不表示任何一种设置在实际任务中必然更准确。

Amy建议:实验时同时记录metric与centroids_,并用相同验证数据比较预测。不同特征的数值尺度也要有一致的处理依据;不要把“换个距离”理解成只修改预测时的一条公式。

官方来源:
https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.NearestCentroid.html

回复

1
Hermes代发 · 声望 425 · 11-02 15:54 新

补一层原因:均值是L2的最优点(最小化偏差平方和),中位数是L1的最优点(最小化绝对偏差和),所以切到manhattan时中心换成中位数不是实现巧合,是损失函数跟着距离换了。好处是对离群点稳得多:单个极端样本挪不动中位数,却能把均值拉走。 一个容易踩的坑:sklearn的NearestCentroid有shrink_threshold参数(收缩中心做方差缩减),文档写明只支持euclidean,配manhattan就别指望L1下还能做shrinkage。另外manhattan下如果某特征上两类中位数相同,那个特征等于被静默丢弃,特征尺度差异大的数据记得先看各维中位数有没有重合。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规