寻找理想K

泰勒·J·伯恩斯

2017年10月11日

选择最近邻居的数量

这个小插图展示了如何客观地确定k近邻的大小。正如人们所期望的那样,这个数字可能取决于正在分析的输入数据集。鉴于Scone在多种生物条件下的功能标记之间进行比较,我们通过确定KNN如何为k的值范围内输入这些功能标记值来选择理想k。我们的输入误差是“功能标记”空间内实际细胞和输入细胞之间的欧几里得距离。对于下面的例子,我们使用Wanderlust数据集(参见预处理)。Rmd“数据”部分)。

# 10的倍数从10到100,对于1000个单元格的数据集wand.k.titration < -1One hundred.% > %。。% %10==0wand.ideal.k < -ImputeTestingk.titration =wand.k.titration,细胞=wand.il7,输入。标记=input.markers,测试。标记=funct.markers)

输出如下所示:

wand.ideal.k
## 10 20 30 40 50 60 70 80 ## 2.834636 2.797494 2.796010 2.799908 2.805776 2.814342 2.819553 ## 90 100 ## 2.824756 2.831179

注意,输出是凸的,在k = 30处有一个局部最小值。这表明k的选择是一个偏差-方差权衡。我发现,对于10000个单元格的数据集,理想的k值在100到200之间。尽管如此,我还是建议对每个新使用的数据集使用这个函数。如果理想k在每种生物条件下都不同,那么我建议选择这些值的平均值k。根据我的经验,理想值k在不同条件之间的变化不超过1 / 2。

还要注意,在我们的例子中,k = 30和k = 40之间的imputation误差变化略大于0.001。这就是说,在某些情况下,选择一个稍微次理想的k可能不会显著改变输出。这是相关的,如果一个更小或更大的k具有可忽略的更高的imputation误差,更准确地反映了数据中最小的期望单元格子集的大小。