我有一个Sagemaker端点,用于提供一个随机森林分类器的SKLearn模型。该模型根据用户在网站上的互动预测用户的类型。我已经发布了这个模型的两个版本。
第一个模型有四种用户类型:'user-type-1', 'user-type-2', 'user-type-3', 'other'
第二个版本与第一个版本的不同之处在于使用了更多的训练数据,并且有10种用户类型:'user-type-1', 'user-type-2', 'user-type-3', 'user-type-4', 'user-type-5', 'user-type-6', 'user-type-7', 'user-type-8', 'user-type-9','other'
。更具体地说,在第一个模型中,许多用户被预测为'other'
,而在第二个模型中,这些用户中的许多被归入了新的类别之一。
两个模型的随机森林参数是相同的。
问题:第二个模型使用的内存比第一个模型多很多,我无法弄清楚原因。两个模型的大小相似,并且在第二个版本中对端点的调用次数与第一个版本相同。有什么想法可以解释为什么第二个模型需要比第一个模型更大、内存更多的实例吗?
回答:
分类类型的SkLearn树模型的values
属性本质上是一个数据矩阵(n_leaves, n_classes)
(与每个叶节点关联的概率分布)。
在第一次实验中,这个矩阵有4列,在第二次实验中它有10列——大小增加了2.5倍。