从采样的用户名中推断网站用户群规模的方法
Posted
技术标签:
【中文标题】从采样的用户名中推断网站用户群规模的方法【英文标题】:Way to infer the size of the userbase of a site from sampling taken usernames 【发布时间】:2010-10-03 06:16:06 【问题描述】:假设您想估计一个不公开此信息的网站的用户群规模。
人们更有可能以不同的概率获得不同的用户名。例如,如果系统上不存在用户名“nick”,则它的用户群可能非常小。如果使用用户名“starbaby”,它可能是一个更大的站点。这似乎是一个简单的贝叶斯问题。
存在的问题是不同的站点可能有不同的允许用户名空间。我想最大的问题是空格等常见字符的合法性。可能影响先前分发的另一个问题是,网站是在您想要的名字被取走时建议名称,还是让您自己想一个更有创意的名字。
您如何建立一个用户名在不同规模系统中出现频率的训练集?有没有办法使用贝叶斯进行数值估计而不是分类到固定宽度的桶中?
【问题讨论】:
为了得到更好的答案,我会删除最后一个问题,“你认为这个想法有价值吗?”每个人都会专注于那个问题,并给你基于意见的蹩脚答案,但对你来说更有价值的是前两个技术问题的答案。 @Brent Ozar:好建议!我很高兴看到他接受了。 很快就得到了更好的答案 【参考方案1】:您需要做的是在给定注册用户数量的情况下准确估计某个用户名出现的概率。假设 N 是用户数,如果用户 u 存在,则 u = 1,如果用户不存在,则 u = 0。
首先,假设每个用户名的概率分布相互独立。这不会是真的 - 你已经想出了一个原因 - 但它可能是必要的,因为它使数据收集和数学变得更容易。
您将需要来自具有注册用户名的站点以及该站点的用户总数的大量数据。现在,取任何特定的用户名并想象您的数据点在 2d 图上(x 上为 N,y 上为 u),在 y=0 处将有一条水平线点,在 y=1 处有另一条点。您可以按照您的建议对 x 轴进行 bin 并取 bin 中所有数据点的平均 y 坐标以获得离散函数,或者您可以尝试将图表上的点拟合到某些函数类别。我真的不知道那类函数会是什么——也许是某种幂律? (我在想Zipf's law)。
您现在拥有应用贝叶斯规则的概率分布。我不知道你想使用什么样的先验。一个统一的分布(最多一些)不会做任何假设,但我猜大多数网站的用户群都很小。
我怀疑为了使这项工作发挥作用,当您从一个站点对用户进行抽样时,您需要针对一组特定的用户这样做。我敢打赌,用户名的受欢迎程度将会有一个很长的尾巴,因此随机抽取的用户样本会给您提供很多非常不常用的名称,因此会提供很多信息不足的证据。
编辑:我有另一个想法;在大多数论坛(以及 *** 上)中,用户都有连续的用户 ID,因此您可以使用拥有大量用户的单个网站来估算所有较小的 N。
【讨论】:
【参考方案2】:我认为这是一个很酷的主意!
您可以将UserNameCheck.com 用于一些不同的用户名并将结果与提供它们的网站的规定用户群规模交叉引用,从而将数据集放在一起。
注意:该网站似乎不会检查用户名是否对该网站有效,例如它认为 Gmail 会让你注册“nick@gmail.com”,即使这太短了。
【讨论】:
如果您事先知道这些规则,如果您想估计 gmail 的大小,那么如果您愿意承担独立性,那么您可以在之前的分发中忽略这些名称。 (我只是注意到如果它说“采取”、“可用”或“不允许”服务会更好。)我认为假设独立是正确的开始。您提到的可能的倾斜结果是真实的,但可能是“过早的优化”。 =)【参考方案3】:唯一的方法是在您知道用户群规模的系统上获取大量使用的用户名。在某些名称更常见的用户群中,数据可能会出现偏差。例如,即使是指环王论坛中的一个很小的用户群也可能包含用户名 Strider。
【讨论】:
以上是关于从采样的用户名中推断网站用户群规模的方法的主要内容,如果未能解决你的问题,请参考以下文章