Atlassian,产品分析的存在是为了帮助我们的团队构建更好的产品通过捕获和描述产品内的行为。在我们本地产品,只有一个子集的客户选择寄匿名事件数据,意味着我们有一个不完整的和有偏见的数据集。在这个世界上,一些简单的多少百分比的客户使用功能X”就变成了一个非平凡的评估任务。这个世界变得进一步复杂当次加性指标,如估计不同的产品功能,用户一个用户使用的功能在多个(也可能是未知的)实例应该只算作一个用户和我们的方法需要考虑这一点。在这次演讲中,我们将深入我们的评估方法和调整使各种指标,在这种环境下提供一个可访问的操作指南。我们还将讨论如何democratixed这些评估方法,允许任何利益相关者可以编写一个查询立即访问我们的模型并创建准确和一致的估计。
你好,每一个人。欢迎来到虚拟火花+人工智能峰会2020。我是麦克·迪亚斯和和我一起是卢克·海因里希。我作为一个数据工程师,工作和卢克作为数据分析工作。我们都在Atlassian工作,今天我们要讨论如何构建理解不完整的和有偏见的数据集使用机器学习和数据砖。但是首先我要向你们介绍Atlassian公司和景观,与我们合作。
在Atlassian我们相信每个伟大的人类成就的背后有一个团队。从医学和太空旅行,到数据响应和比萨饼交付,所有产品团队遍布地球人类通过软件的力量。我们的使命是帮助释放每一个团队的潜力。为了实现这一任务,我们构建工作协作工具,帮助我们的客户实现他们的潜力,做伟大的事情。我们的一些最受欢迎的产品是Jira,融合,Bitbucket都,Trello Statuspage, Opsgenie。
我们给我们的客户的部署选项更适合他们。一些客户的准备我们的云产品,我们管理的一切对他们来说,我们有云产品。但对于那些没有准备好我们也有可用的解决方案,客户可以安装我们的产品在他们自己的环境。在这两种情况下,我们必须确保我们正在建设伟大的产品和满足客户的期望和需求。和几件事情,有一个特殊的东西是非常重要的建立伟大的产品,这是叫做产品分析。产品分析帮助我们理解用户如何浏览我们的产品和参与我们的特性,所有的建筑更好的产品。所以产品分析让我们理解他们的用户和找到假设创造最好的产品和功能。
我们的工作方式,我们测试我们的产品,和云内部捕获用户操作,我们可以使用它来生成了解产品使用情况。
我们内心的云产品,他们通过实时分析数据流流管道。在我们的内部产品,我们每天积累分析数据并将其发送一次。但它是非常重要的说,我们从来没有捕获任何敏感的个人可识别信息或用户生成内容。一切都是安全和匿名。
为了使数据可访问数据工人,我们处理它使用火花,通过流技术和流和批处理管道。然后导致湖Atlassian数据中的数据。我们将这些数据存储为分组表,atlassian可以访问这些数据和其他与数据服务生成的见解来帮助我们的团队去开发更好的产品。更广泛地说,在Atlassian, Atlassian数据湖非常HR-genius处理和摄入。除了产品分析,我们也有一些其他来源,如内部数据库和系统集成。数据流流,如批量通过AWS运动、卡夫卡和其他技术。我们也有其他的文件格式,如CSV和湖在兽人中存储数据。但无论如何处理的样子,降落在S3结束的所有数据,映射表通过胶水Metastore湖的所有数据表在哪里注册并由名称空间。
这些表是通过SQL使用砖和AWS链。我们也非常灵活的可视化工具。所以数据分析师和数据科学家们可以使用自己喜欢的工具来创建他们的见解像砖笔记本,画面,Redash,振幅等。与产品经理和分享他们的发现,可以使用这些信息来赚更多的数据驱动的决策。
正如我已经提到的,一切都在Atlassian AWS基础有关的数据。我们依靠Azure、胶水、雅典娜和砖账户也在AWS上运行。我们的数据是一个湖pb级别,持续增长的速度每月100字节。
我们也有2000用户,每月2000内部用户数据的湖。数据,我们有超过200员工,他们的主要工作是处理数据,如数据工程师,数据分析师、数据科学家,等等。
但让我们回到产品分析。虽然我们有很多的数据,我们没有所有的数据。考虑这种情况下,我们的云计算选择,我们有完整的产品分析数据集。所以我们可以完全与其他数据集,比如许可证。有一个完整的数据集给了我们很大的信心在这个数据集的结构。
有完整的分析数据集并非总是如此,我们的产品分析师选择,一些我们自己的防火墙背后前提客户保持他们的产品无法与我们分享分析数据。所以从我们的角度来看,我们知道客户购买产品许可证,但我们不知道他们如何使用产品。这是一个不完整的和有偏见的数据集,导致的后果将会解释我的伴侣卢克海因里希。在交配。——太棒了。谢谢你,迈克。你好,每个人。很高兴来到这里。我希望你保持安全的在这个疯狂的时代。我想给你介绍的问题想出偏见和不完整的数据运行通过几个例子。 But hopefully, by the end of them, you’ll have an appreciation for why data, like the one we have here can become pretty messy when trying to do analytics in practice and analytics at scale.
让我们从一个简单的问题开始。产品经理是取决于你,问有多少客户使用功能,他们只是运送。这是面包和黄油的了解产品使用,使数据明智的决定。
现在对于这个例子,我想简化问题通过想象,在现实中,我们只有两个客户组。A组,其中左边的10%的客户使用的特性,和B组,在右边,90%使用的特性。这是一个非常大的群体之间摇摆。假设每个小组包括一半的真正的客户基础。
如果我们回答这个问题并能获得完整的和真正的产品使用的数据集,我们会说,50%的客户使用的特性,它们之间的平均。这是很容易看到当你有完整的图片。只是创建一个1或0,根据客户使用的特性,采取平均在你的基地。这是一个非常快速的查询。
但是让我们添加一些偏见在这个场景中,然后说,由于产品的可选特性分析,红色组是两倍给我们分析。在这种情况下,我们收到的数据由三分之二的客户从红组,从黄色和三分之一的客户,所代表的酒吧在幻灯片上。虽然这不是真正的混合客户在现实中,它代表了混合,查询我们的产品分析工作。
和直接查询数据集将产生,只有37%的客户使用的功能,现在这个集合是偏红组,使用该功能少了很多。现在,这是在实践中发生了什么吗?哦,不,这是我们所看到的另一方面,基于人的好心的决定把这个产品分析。
,相反,如果我们说我们有一个更大的酒吧,三次,但这一次对黄组,使用更多的功能。在这种情况下,我们直接查询答案,70%的客户使用的功能,远高于过去两的答案。正如你所看到的,它可以有点问题,因为现实情况是,查询…对不起,直接查询偏差数据给出了一个答案,有多少客户实际使用的函数特性,以及功能使用不同的偏见你正在使用的数据集。对于这个示例,我们可以创建一个原始分析数据响应,10%到90%之间,这取决于地方极端偏见对两组。记住这一点,你必须对你的数据是否提供多少价值还是只是提供一定数量的过度自信。
你可能会认为我刚刚描述的偏见是极端,但这是一个实际的偏差,存在于我们的一个工具的产品分析,更大的许可证,所定义的有多少用户的许可,几乎有一半可能会选择进入并寄给我们分析相比,较小的。现在,如果你分析功能,吸引了那些试图管理和大规模部署我们的产品,这个特定的偏见可以成为非常有影响力。
现在,你可能会考虑一些其他的技术可以使用或判断你在处理偏差适用于创建一个进步之后,最后的考试。
但是这一个是孤立的。现实情况是,随着时间的推移,我们有许多分析师创建许多分析师或许多答案在许多产品。从来都只是一次性的深入探究数据和忘记它的。让我们继续下一个例子中,影响有多少用户给定的平台的变化,影响我们的许多产品。bob体育客户端下载
在这个示例中,假设我们有三个分析师吉姆,简,和约翰,每个工作产品,B和C,分别。
让我们开始了吉姆。然后吉姆在收到这个问题多少用户受到影响,运行该查询,发现15用户在我们的产品分析数据受到影响。真正的用户受到影响,记住我们的产品分析只是一个示例实际上是45。
数量和吉姆不做任何他认为期待其他人做同样的事情,并报告回15用户影响产品业务。
然后我们转到简。所以简并运行一个类似查询她的产品,发现10个用户都受到影响。再一次,因为这些数据是一个样本,实际上真正的数量是30。
现在简去推断基于一个简单的逻辑有多少人找到家。所以对于这个示例中,假设我们有50%的客户找到家,所以简翻她的号码我们有50%,看起来像100%,报告说,20个用户影响产品B。
最后,约翰,约翰把8个用户,也一种推断,尝试和控制尺寸偏差我们前面谈到。他在大许可证并生成一个估计,25个用户影响产品C。
现在,如果你之后,你会发现基于真正为我们的客户,产品平台的影响最大的变化和报道的最低数量的用户受到影响。bob体育客户端下载反之,约翰,和他的估计,尽管是最接近现实和客观地做最好的工作报告产品的最高影响C,而事实上,最低的影响。这个例子是一个不完整的数据给了一个完全错误的观点影响平台的变化和有害影响决策。bob体育客户端下载不一定,因为一个方法应用一致性将持续,对不起,会给出错误的答案,但因为人们使用不同的。现在这可能有点极端,因为如果有人问这个问题,在实践中,你会看到一个更严格的分析师之间的协作。但是想象一下,简正在做她的分析两个月后其他人。吉姆的分析是一个快速和不相关的产品经理已经和数字。和约翰可能在一个完全不同的部门。当快速移动和规模,确保过去的实验和见解是杠杆,像这样的例子可以变得非常可能的。
希望从这些例子,事情已经跌倒,你同意的偏见和不完整的数据集在实践中会造成一些问题。真的,有潜力成为一个狂野的西部,如果每个人都去做自己的事情。这让我们更大的这个页面的话题。这是我们试着解决这个问题通过提供自助估计。
为什么评估?好,因为每一个回答,我们创建没有数据的估计我们认为在现实。它是一种坚毅的估计。这不是一个A, B测试,你随机分配组有不同的经验,并根据九个隆起和错误估计公式,或一个真正的随机样本,你可能有10%的人口,但一个随机的10%。你可以可靠地推断出,提供你可能会大错特错的置信区间。相反,我们知道我们的产品样本分析是有偏见的。我们有数据证明它远远超出合理怀疑。对我们来说是不可能知道我们不知道真正的知道现实是什么样子。所以,我们总是试图估计是正确的。估计是在统计在随机环境下,有很多可取的属性定义。 Things like unbiasness that your number will be accurate on average. Or consistency, where your estimate gets more and more precise as your data volume increases. Or efficiency, where using the best metric to estimate some unknown quantity.
但在实践中,有更多的东西,你想要在构建大规模估计帮助业务决策。之类的命令的能力,你可以看看看看或复制的数字计算,得到了它们。现在第二个意义上的一致性,一位分析师和另一个使用相同的方法。因此决策者能够比较苹果和苹果。和最佳实践,理想情况下每个估计使最佳努力控制偏差的数据。理解利益相关者和信任的方法上有一些对它有一定的局限性。最后一个我提到我可以继续是可访问性,上下,分析师的光谱技术和编程能力都有能力使用方法。现在你还想要的在左边,他们是非常重要的,但是这些在右边是有点的,和当事情出错,有时虽然在实践中非常困难。
所以建造出满足这些属性的东西,我们会反思之后,我们提供自助估计任何人使用的产品分析。
所以这是什么意思?
我们将逐步通过细节,
但它是如何工作的上级许可不把这些分析,我们提供他们之间的相似性得分和分析发送给我们的许可证。许可证,我们不知道,有效地分配自己的池许可证,说我X %相似,和Y %类似于另一个。现在这些成绩允许用户快速创建一个预测环境对于那些不寄给我们分析数据,允许他们使用任何指标如果他们有完整的图片。
从实用的角度来看,它看起来像这样,分析师第一次去创建一个数据集的许可证和指标,在这种情况下,一些许可证,不把这个数据和没有已知值测量他们看着。第二步是相似性得分上的触摸你提供了通过一个简单的加入,在这里,5%被认为是类似于B, C 8%,等等。然后用户可以估计未知或产品的相似性得分,和已知的指标。如果对于一个,估计5%的B的值,为C + 8%的价值,等等,最终创建一个值预测未知的许可。现在有附加估计,分析师可以计算指标,有效地忽视,他们使用的样本数据,如估计的平均指标在整个客户群,不仅被观察的。现在让我们进一步下降,因为我描述相似分数甚至没有任何指导我如何生成它们。
所以我必须首先创建相似分数是建立一个预测模型对产品使用基于属性对所有许可证,我们知道,无论他们是否发送这个产品分析。给一些例子,认为诸如多久他们拥有该产品,有多少席位,他们有许可,他们拥有和各种其他产品到他们如何与我们的生态系统和可访问性。现在,就像更传统的例子,假设那些不发送我们产品分析验证集,我们正在努力优化模型已知的数据,最终预测。
这是假设我们可以更好描述已知的数据,更好的我们可以描述未知。
现在,为了创建相似的分数而不是只有一个点预测能力,我们建立一个随机森林,我刚刚描述的问题。我们使用一个随机森林是我们能够捕捉其内部树结构来定义相似。这是因为忽略了装袋方面,随机森林预测使用土地的训练数据的加权平均每个终端节点。这是预测一个未知的例子中,是通过训练数据的加权平均。如果你已经没有这个链接,权重的加权平均,我们使用我们的相似性得分。他们可以提取与幻灯片上的公式,即相似性的一小部分终端节点,两个许可证一起降落,规范化多少其他著名的例子在终端节点和所有树木在森林里。相比,随机森林对我们来说是巨大的其他内核或相似的方法,因为监管元素提供特征选择在定义相似,而不是其他方法(喃喃自语)邻居一样,把所有的输入变量一样。和树结构使得它简单,我们不需要预处理,规范化或排斥任何我们的距离计算功能。一旦我们有了这些权重的相似之处,我们把这些和得分模型输出数据湖。这些分数都是提供给所有用户估计任意指标。 It can be what we trained on to, or maybe there’ll be used to estimate usage of a given feature that it wasn’t explicitly trained on. Sound familiar to the earlier example? This is basically transfer of a train model to a different response. And just like other circumstances, you might have seen it used in some responses do better at transferring to a certain situation than others. Accordingly, we have trained forest do additional responses such as product co-use. Here an important characteristic in defining similarity is whether a customer actually owns both products, something that might be uninteresting when just predicting generic usage or scale.
现在,我们将每个模型数据湖,用户可以选择他们想要使用哪一个估计。
和用户讨论,深入代码接下来,我想展示的是简单创建估计从用户体验的角度。这是在前面的例子的背景下,两个,三个,你创建你的度量在已知数据,估计高度相似,然后列。现在,在自定义表表达式,用户去定义他们的指标分析数据但是他们想要的东西。他们自己的部分,它可以广泛应用于任何他们看着。现在在那里,他们画的相似表和已知的相似度加权平均的例子。也就是说,一些相似性乘以中的度量类似许可证。现在,树查询确实有其他元数据,如模型的模型选择和一个日期。但是代码的关键就是这么简单。和SQL,很少的几行代码从一组观测数据使用一个相当复杂和考虑模型来构建完整的人口估计,东西是不可用的。
我们可以走得更远。但是接下来在屏幕上被代码在树结构将如何使用SQL生成估计。我将通过这个直接运行,对不起,也许吓唬你。但这是一个远程的祝福这样做,对你来说是希望容易暂停或返回记录如果你感兴趣。现在,您可能想知道为什么一个数据工人可能希望树结构而不是使用相似性分数。答案是已知的数据有点简单化,可以分解,更复杂的情况。提供一个例子应用程序本地客户选择的产品版本升级或。也许一个分析事件被监视对于一个给定的版本,这意味着相似的客户在这些版本需要退出计算,分析在这个计算是不幸的是没有意义的,他们基本上是未知的。
从平台的角度来bob体育客户端下载看,我们开始与未知输入变量对所有许可坐在我们的数据。我们每天安排砖网络分数我们所有的模型。这些模型都是建立在另一个网络和得分MLflow每日可以访问的评分工作。我们只是在SKlearn使用随机森林的实现。现在工作填充模型结果回数据湖正如前面所讨论的,现在那些表能够结合产品分析,允许数据工人快速创建估计和忘记他们我们正在与偏差和不完整的数据集,非常快乐的日子。在我们继续下一个部分之前,我想回到我们先前讨论的性质,看看解决方案的。所以从有序的能力的角度来看,我们有一个模型数据砖建成的笔记本和存储在Mlflow,所有的命令提供的能力。和从实用的角度来看,分析师只需要一个图表,使用逻辑从那天和计算流程。一致性,这绝对是当多个分析师使用推断的逻辑,而不是生成自己的。对于最佳实践,我们可以优化我们的模型越来越多。 Now this state, it’s using many available attributes and fine tune way to the known data. Something that people couldn’t easily replicate on the fly or build it out within a SQL group. And understanding, it effectively lets analysts outsource that to us, where we’ve socialized the results to a wider on-premise business, meaning they need to spend less time explaining techniques and more time building insights. And lastly, for accessibility, any analyst just needs to use SQL. It’s as much as helpful, they don’t really need a comprehension or a supervised learning, for random forests or so forth, to leverage this output. So hopefully, you’ll agree that it serves these properties pretty well. And now you’ve got a bit of a taste for scaling out estimation in organization while at self-serve, we want to make things a bit more tricky and run through sub-additive metrics in this framework. Because everything we spoke about in the past falls down when metrics aren’t affine or additive.
这样一个很好的例子,一个度量什么?
每月活跃用户或通常被认为是猫。
不同数量的人使用一套产品或一组产品,或者一些功能在他们对于一个给定的时间窗内。
所以它可能是一天或一年,或别的什么。
现在,在我离开之前,我想国旗,所有这些估计有巨大的星号。这绝对不是我们报告外部。我们坚持我们的云产品,它是已知的和可靠的。
我们这样做评估,
因为有产品团队在我们前提业务仍然想尝试和理解这个决策的目的。即使最初估计有酒吧和一个相当严重的错误给我们一些头痛。为什么头痛?因为它是一个不同的数。Atlassian,我们的产品大一起工作,用户经常与很多人进行交互。
在这个方程中,坚持茂,在左边,你的JIRA实例有14月度活跃用户旁边有11个融合实例。当你把它们放在一起,你计算17的猫。只有三个用户在融合不是JIRA的活跃用户。再一次,我要强调的是,当你有完整的数据集,这个计算是简单的和可靠的。抓住你的宇宙和计数截然不同。
当我们删除一些数据会发生什么呢?14加问号是不幸的是问号,这一切成为未知。我们可以更进一步不知道第一个许可证的值。
但分析师试图创建一个不同的数估计在这个环境中,他们需要考虑在一个与已知许可不是已经捉在他们已知的数据。也就是说,他们只需要添加新用户的未知的许可。并进一步,他们需要重复,对于其他许可证。现在还在考虑他们已经潜伏性补充说从第一个和确保他们被排除在第二个。一样困难已经成为,我们从头再来解决我们所有的问题。
因为当人们试着做出自己的近似假设或不同的计数,尽管他们可能对每个实例使用一个线性相似许可估计,他们添加上自己的味道。和一致性的数学,是一致的,但不一致,仍是不一致的,可能有点多,如果第一部分也是随机的自由裁量权,而不是分析师,但它仍然是原来的我们面临的问题。
这个世界上的一个典型的方程是什么样子?也就是说,9 + 10)是什么?好,如果我们有一个客户有两个不同的产品比如JIRA和融合在同一地理,也许是11日的总和。有很多co-use,因为我们的产品真的很好地在一起工作。
但如果这是我们的一个跨国客户的情况下说JIRA执照在美国,也许在瑞典或在一个完全不同的地理位置。在这种情况下,没有一个用户可能重叠,和9 + 10,通常你会说过,平凡。有很多的解释空间。但是应该如何估计这些计算,我们问,我们如何提供一个类似规模的估计框架来解决这个问题。
这就是我们现在跑过。甚至当事情变得艰难,估计组织容易多了。
我发现时间的兴趣和理解的很多技术细节将在幻灯片,并将保持相当高的水平空间。当开始的时候,我们可以使用预测模型,但这一次不同的元素的猫或任何其他计算。这一次,它是一个迭代过程,我们说的是,一组许可的猫等于设置的猫一证+茂的一小部分的许可我们排除了。所以这是什么意思?也许我们有两个许可与20猫在一起。还有第三个,10个毛。但当你把它放在一起是25。所以20 + 10是25。在这种情况下,它是20% + 50%的10个毛,为了使25。在50%,或下一个许可的一部分我们应该包括去预测。
因为我们有一些数据,我们能够构建出一种监管模式为这个分数,或根据特征权重的设置许可我们已经考虑,和添加。是否同样的产品,不同的地理位置,相对大小,等等。这个模型是整个从许可证将在一起也许两个实例添加一个11日到10已经考虑。利用已知影响毛/许可使用,通过方法生成它,我们可以分出来,每个人都和每个客户创建一个猫估计。从第一个预测第二和第三等等做同样的,直到所有许可证为客户考虑。
从这个,我们有能力估计总毛,不只是猫在一个孤立的许可。这个评估框架,我们的下一步是sub-additive总个人许可证分配,有效地创建一个添加剂指标。我们做这个比例。和一个简单的例子,这意味着什么,我有两个证,一个有10个用户和一个20。第二个是第一个的两倍。假设在一起,那么我们只有24猫,不是30。在这里,我们需要分配24回个人许可证。所以在做,我们说第一个值得八,,第二个是值得16。所以他们都是按比例缩小了20%,他们一起总结24然后猫。现在仍有大量实例分配第一大小的两倍,和猫被认为是成正比。 Now, once that’s done, we focus on how the known licenses predict the unknown. Because for all estimation magic in predicting the unknown, what actually goes on, is that we’re just smartly scaling up known data in order to estimate the whole, that’s all were doing. And now in that sense, if I’m unknown license, and there’s two unknown licenses that have 50% similarity to me each, then everything I do is worth double when scaled out to the whole population. If another user in my license uses a feature, we estimate the two more did in the whole population, or it express it is a license as an influence of two. That influence score or two in a situation as described is what we’d build out for each license in estimation.
一旦我们有那些影响分数,他们对任何积极的使用可以快速传输计算,如一个单一功能的不同用户的计数。原理是一样的,我们可以。类似于我们如何为多个响应提供相似分数从在线性情况下,我们在多个窗口提供影响成绩,如单个产品的窗口,或所有产品在一起,或者只是一个地理位置。这是因为猫分配方法变化你看什么宇宙的许可,它收缩大宇宙。但与那些影响分数,它变成了真的,很简单的建立一个不同的数估计,现在我们通过运行。
所以回到这一座桥代码中用户体验的角度,和这个世界高级查询,再一次,有一个用户定义的计算活跃用户的加入是一个简单的依恋影响分数,他们需要使用规模估计。现在,您可能想知道为什么早期的代码片段,没有那么简单,这是因为它是一个独特的计数。数据工人只能使用通用的许可证建造这个计算,而不是任意子集,说的这十个许可证。这里的限制,实际上创建了简单的使用,我们不再需要账户任意情况。
但如果你看到希望,很容易创建活跃的估计使用,尽管他们生活的世界的复杂性。偏见和不完整的数据加上试图估计sub-additive指标上。我也想回到最早的幻灯片的属性。和思考一些在右边,一致性和可访问性,你会发现这个方法满足他们以同样的方式。
哦,谢谢你的坚持我们这么远。我们会进入我们的总结和问答。
所以我们去了相当深入的技术实现估计方法,但我想回到高水平的关键问题和解决方案。
我们内部产品团队依靠偏见和不完整的数据集或产品使用,帮助他们更好地理解客户和建立更好的产品。我们想从扩展的方式,尽我们所能。通过使用访问智慧,我们有方法对其他工人为整个人口创造一致和准确的估计。最终的结果是更快、更值得信赖的见解回到球队。就是这么简单。在问答之前,我想这个机会提醒你写反馈。我们喜欢它。请像你喜欢,可以坦诚。反馈对我们来说是一份礼物,试图改善。,否则,我们将在线问答。 Apologies in advance if anything sounds a bit dopey, as I believe it’ll be around 8:00 am in Sydney. (mumbles) But thanks a ton for attending, we both hope you got something out of it and you can make some connections to your own organization and the way it uses data. I’m sure you’ll find something incomplete sitting around somewhere.