| 扬声器 |
文字稿 |
| 基拉·阿尔霍恩 |
好的,欢迎收听我的演讲“通过文本探索器了解客户需求”。我非常高兴…… |
| |
本次JMP Discovery Summit峰会以线上形式举行。我叫Kira Alhorn,是WL Gore and Associates公司的统计学家。 |
| |
在正式开始演讲之前,我想先简要介绍一下我们公司。WL Gore and Associates 是一家全球材料科学公司,我们生产…… |
| |
针对截然不同的行业,我们提供截然不同的解决方案,从航空航天到医疗产品,以及您可能比较熟悉的领域。 |
| |
这是我们自有的Gore-tex品牌。所以今天我们就重点介绍这个品牌,Gore-tex品牌生产耐用的防水透气面料层压材料。 |
| |
这些层压板会出售给我们的客户或品牌合作伙伴,他们用这些层压板生产产品。更具体地说,我们今天将重点关注鞋类产品。 |
| |
这是关于我演讲的简要概述。我将从背景和动机开始。那么,我们要研究什么呢?我们要研究鞋子的描述,以及我们为什么对它感兴趣。 |
| |
之后,剩余的讲解将在 JMP 中进行。我将使用 JMP 15 专业版,并向您演示如何使用文本浏览器。 |
| |
用于分析我们的鞋款描述。如何从这些文本或鞋款描述中找到主题,以便利用这些主题找到常见的鞋款描述或鞋款描述中的常见主题,并将其与我们拥有的不同鞋款类别进行比较。 |
| |
最后,这只是一个非常简短的介绍,我们使用一些预测模型来验证我们的发现,并更深入地了解不同的鞋子描述是如何对鞋子进行分类的。 |
| |
所以,想象一下你自己的衣柜,以及你衣柜里所有的鞋子。 |
| |
你们每个人的鞋柜里都会有不少鞋子,问题是,你们为什么会有这么多鞋子? |
| |
鞋子要符合你的风格,你可能还需要不同颜色等等,但这并不是你拥有不同鞋子的唯一原因。 |
| |
另一个原因是你需要不同的鞋子。试想一下,你有一双跑鞋,几双休闲鞋,可能还有登山鞋。 |
| |
之所以有这些鞋子,是因为每双鞋都有不同的或略有不同的特点,使得这双鞋能够用于特定的最终用途,而你也需要这些特点才能用于该最终用途。 |
| |
所以我们想知道,如果我们查看品牌合作伙伴提供的鞋款描述,能否找到不同鞋款的独特之处?您将在这里看到一系列鞋款。 |
| |
不同鞋类类别对应着我们现在所说的鞋子的不同最终用途。 |
| |
现在的问题是,如果客户想要生产一款新的徒步鞋,例如,我们应该在我们销售的用于徒步鞋的层压板中提供什么样的功能配置? |
| |
那么,这些鞋子的描述能否为我们提供可以提供给客户的原型产品呢? |
| |
当然,这里另一个有趣的方面是,其他鞋子是如何进行差异化的?徒步鞋和日常鞋有什么区别?为什么我们需要这些区别? |
| |
而这正是我们开始分析数据时的初衷。 |
| |
所以,接下来我想去JMP。 |
| |
在 JMP 中,我首先想向大家展示我们收集的数据是什么样子。 |
| |
因此,我们只需访问品牌合作伙伴的网页,并从这些网页上收集鞋子的描述即可。 |
| |
对于每种鞋类,我们都有一定数量的鞋款描述,你会看到,我们只是简单地将整个描述复制到了我们的数据表中。 |
| |
所以,这段话可能很长,也可能很短,但我们所做的只是简单的复制。 |
| |
但另一方面,你可以想象,有了那个文本框,我们能做的事情并不多。 |
| |
或者至少看起来我们做不到,因为 JMP 提供了强大的功能。那么,我们该怎么做呢?我们想从长篇文本中提取信息,并将其拆分成更易于理解的小块。 |
| |
以及那些易于消化的部分 |
| |
可以使用文本浏览器提取。所以我想打开文本浏览器,把鞋子的描述填入这里的文本列中。 |
| |
这里有很多选项。这些选项会被输入到算法中,算法会生成我们的鞋子描述,或者在文本分析语言中,我们称这些描述为文档。 |
| |
正如我之前提到的,这样做是将文件拆分成更小的信息块,也就是更容易理解的小块。 |
| |
你会看到一些易于理解的小块信息,也就是最小的信息单位——术语,以及经常一起出现的短语,这些短语如果把它们组合起来可能会有意义。 |
| |
所以您可以在这里看到最常用的术语 |
| |
在所有文件中,也就是在所有鞋子的描述中,都出现了“舒适”这个词。 |
| |
所以,我们首先做的就是把这里所有的短语都过一遍,看看有没有哪个短语是合理的? |
| |
第一个例子已经很清楚了。你看,这里 Gore 和 tex 这两个词是分开出现的,但当然,更合理的分析对象是 Gore-tex 这个词,而不是 Gore 和 tex。 |
| |
所以你可以把所有有意义的短语添加到术语列表中。例如,我们添加的短语是 Gore-tex,现在你会看到,这里显示的是 Gore-tex 这个术语,而不是之前的 Gore 这个词。 |
| |
这就是我们数据处理的第一步。第二步是检查术语列表是否存在重复项或 |
| |
如果存在任何不合理的词语。JMP 的处理能力已经非常出色,因为它已经排除了很多不合理的词语,例如 and、a 等。 |
| |
或者,有些词根本无法提供任何信息。然而,总会有一些词条没有意义,例如字母 S。 |
| |
你会如何处理字母 S?它能告诉你关于鞋子的什么信息?所以我们必须逐一检查所有术语,如果某个术语没有意义,我们就称之为停用词,并将其添加到停用词列表中,以将其从分析中排除。 |
| |
那是其中一件事。我提到的另一件事是,我们需要检查是否有重复项,例如,您可以在这里看到“Gore-tex”这个词。 |
| |
还有GTX这个术语。GTX只是Gore-tex的缩写,所以我们不应该分开分析这两个术语,而应该将它们结合起来分析。 |
| |
所以,您可以使用重新编码功能,它与列的重新编码功能基本相同,这是一个用于合并这些列的强大工具。 |
| |
??? 数据。所以你看,这里是 Recode 函数,我把它们两个都放在一起了。 |
| |
您现在可以看到,现在只有一个词(Gore-tex),而且这实际上是我们数据中最常见的词。 |
| |
所以。 |
| |
我们最初收集了4000个词条,经过筛选后最终只剩下100个。所以你看,我们现在只剩下100个词条,有了它们,我们就可以进行大量的分析。这些分析对我们了解鞋子描述的含义非常有帮助。 |
| |
所以你可以使用该列表来查看最常用的术语,但 JMP 还提供了一个非常简单的可视化工具。 |
| |
点击红色三角形,即可添加词云。词云会根据词语的大小,显示其在所有文档(包括所有鞋类描述)中的出现频率。例如,Gore-tex、舒适和轻便是我们收集的鞋类描述中最常用的词语。 |
| |
但你可能记得,这并不是我们真正想问的,对吧?所以我们想问的是,针对不同终端用户的鞋子有哪些特点? |
| |
为此,我们可以轻松地在此处添加本地数据过滤器,并使用鞋子的最终用途作为过滤器。例如,我可能想知道所有关于冬季街头鞋的描述中出现频率最高的词语是什么。 |
| |
难怪在街头冬季鞋的描述中,“冬季”和“保暖”这两个词经常出现。 |
| |
另一方面,以越野跑鞋为例,你会发现这里的重点有所不同。越野跑鞋不需要保暖,但需要透气、轻便且合脚。 |
| |
所以这些词云对于我们初步了解最初的问题非常有用,即描述不同鞋类特征配置的是什么。 |
| |
但我们并没有就此止步。我们还想更进一步。 |
| |
更进一步,如果您已经准备好了所有数据,能否通过建模找到这种鞋子配置的原型?JMP 中提供了不同的建模选项,我们决定采用奇异值分解 (SVD)。 |
| |
SVD 正在对我们的文档词项矩阵进行主成分分析。 |
| |
那这意味着什么呢?文档词项矩阵包含了每个文档的词项,因此,对于每双鞋的描述, |
| |
统计每个术语出现的频率。例如,对于第一条鞋子描述,它会统计“Gore-tex”这个词出现的频率,“舒适”这个词出现的频率,等等。你可以想象,这是一个非常庞大的矩阵。 |
| |
现在的想法是通过主成分分析来降低文档词项矩阵的维度,从而更好地掌握数据。 |
| |
而且,还能更好地将数据可视化。 |
| |
基于尺寸的缩小,我们现在可以进行一些建模。那么,我们感兴趣的是哪种建模呢?我们感兴趣的是,什么样的建模能够描述一双鞋在特定最终用途下的特征。 |
| |
为了得出这个结论,我们分析了鞋子描述中是否存在任何主题?如果存在主题,这些主题是否与某些最终用途相对应? |
| |
理想情况下,我们的数据中会包含九个主题,这九个主题恰好代表一个鞋类类别。这样,每款鞋都会有一个原型鞋型或特征配置。 |
| |
那么,我们来看看如果我搜索九个主题会发生什么。我会点击这里进入主题分析,然后输入数字9,因为我对九种不同的鞋类感兴趣。 |
| |
这样我就得到了一个主题列表,以及这些主题中频繁出现的术语。例如,主题一就包括“鞋子”。 |
| |
它们的鞋子描述里都出现了“超贴合”、“纺织面料”、“保暖”等等字眼。所以我的第一感觉是,这些应该是日常鞋或者冬季休闲鞋。 |
| |
例如,第二个主题包含鞋子的描述,其中包括小屋、徒步旅行、多日等术语,所以这似乎是徒步旅行鞋。 |
| |
当然,作为一名统计学家,我并不满足于仅仅凭直觉判断。我真正想知道的是,哪些鞋子类别属于哪个主题。为此,我正在对鞋子类别进行简单的分布分析,并且我会在这里添加本地数据筛选器,以便仅显示特定类别。 |
| |
类别 |
| |
那些是…… |
| |
只显示已选中的鞋子。 |
| |
那是什么意思?我该如何使用它?JMP 在这里提供了主题得分图,这些主题得分图 |
| |
每个主题下,每条鞋子描述计1分。 |
| |
因此,鞋子描述的得分越高,这双鞋就越能代表该特定主题。 |
| |
所以我的做法是,我只需选择所有在第一项指标上得分高的鞋子,然后我会在里面看到…… |
| |
这里的直方图显示,这些是日常穿着的鞋子和冬季街头鞋。所以基本上我的直觉是对的。那些纺织面料的、超合脚的鞋子,就是日常穿着的鞋子和冬季街头鞋。 |
| |
第二个主题,我们预计是徒步鞋。您会在这张直方图中看到,这些都是徒步鞋。 |
| |
现在你可以对所有主题都这样做,我已经把这些内容记入了日志。 |
| |
你会发现这样做会遇到一些困难。例如,如果给每个主题分配一个或多个鞋类类别,就会出现两个问题。 |
| |
第一个问题(如图所示)是,某些鞋类,例如登山鞋,并非由一个主题来表示,而是由几个主题来表示。 |
| |
你还会发现这些主题之间存在重叠,例如,“crampon”(冰爪)这个词就出现在这两个主题中。 |
| |
这意味着,我们这里似乎有太多话题了。 |
| |
所以,理想情况下,每个鞋类类别都应该有一个主题,如果我们发现有些主题重叠,对应多个类别,那么九个主题似乎就太多了。 |
| |
但这当然还有另一个问题,所以如果登山鞋对应多个主题,那么必然存在一些不太容易识别的主题。 |
| |
例如,请看第五个主题。这里展示的是最具代表性的鞋款。你会看到一个庞大的系列。 |
| |
有越野跑鞋、公路跑鞋、休闲跑鞋等等。这些类别之间大多存在重叠,界限并不分明。那么,试想一下,越野跑鞋和公路跑鞋之间究竟有什么区别呢? |
| |
或者,接下来,越野跑和徒步旅行有什么区别? |
| |
这些鞋子之间存在一些重叠之处,如果存在这些重叠之处,你就无法清楚地确定该鞋类中某一特定特征的配置。 |
| |
所以这也是非常有价值的学习内容。当然,这还包括管理你拥有的不同层压板组合。你想知道,我是否需要为特定的最终用途准备特定的层压板,还是它与我已有的其他层压板大同小异? |
| |
所以我们最终的做法是,我们希望最终的主题集合中没有任何一个主题对应多个类别,而这是我们手动完成的。因此,我们分析了不同数量的主题,最终确定了五个。 |
| |
你会发现,这五个主题对应着一定数量的类别,但我们也会发现,并非所有的鞋类类别都能用它们来表示。 |
| |
所以我们总结了两点经验。第一点是,我们已经有一些鞋子描述的原型了。 |
| |
鞋类分类。另一方面,所有未在此提及的鞋类分类可能差异不大,或者可能不具备这种单一的配置。 |
| |
在鞋子的描述中。 |
| |
这只是文本浏览器提供的众多选项之一。它还有其他选项,但我们重点关注了这一个,而且效果相当不错。 |
| |
至此,我想离开文本探索器,并简要介绍一下您还可以使用主题文档术语矩阵做些什么。 |
| |
所以,这里我使用的是和之前一样的数据集,但我已经导出了文档词项矩阵。因此,您可以看到很多新列,分别显示了每个词项对应的信息。 |
| |
该术语在特定鞋款描述中出现的频率。 |
| |
我们尝试了不同的版本,比如用文档词项矩阵表示词频;用一个矩阵只表示词项是否被包含;等等。最终我们采用了现在这个版本。 |
| |
利用 JMP Pro 的功能,我们创建了一个验证列,将数据集拆分为训练数据、验证数据和测试数据。训练数据和验证数据用于训练我们的预测模型,测试数据用于测试模型。 |
| |
那么,当我们谈到预测建模时,我们的目标是什么?我们之前所做的是一种无监督技术,因为 |
| |
我们之前只是搜索了一些主题,然后与鞋子的类别进行了比较。现在我们想更主动一些,所以我们有了鞋子的描述,能否直接预测出鞋子的类别呢? |
| |
我们尝试了 JMP 15 Pro 提供的各种预测建模技术,最终选择了自助森林模型。在这里,我只想向您展示一下结果的大致样子以及我们可以利用这些结果做什么。 |
| |
因此,您将在测试数据集的混淆矩阵中看到结果,类别是什么,具体的鞋子描述是什么,以及我使用 bootstrap forest 预测的结果是什么? |
| |
有趣的是,你会发现结果和之前几乎一样。因此,某些类别可以与其他类别明显区分开来。 |
| |
有些鞋款已经具备独特的功能配置,而有些则没有。例如,看看公路跑鞋就知道了。 |
| |
我们在第一次分析中已经发现,这些鞋子并没有明确的定义。而且我们在这里也会看到,我预测很多鞋子虽然被列为公路跑鞋,但实际上却是其他类型的鞋子。 |
| |
这意味着这证实了我们之前的发现。我们看到,使用无监督方法能够很好地描述的鞋类类别,在这里也同样能够很好地描述;而那些区分度不高的类别,在这里也依然区分度不高。 |
| |
所以这很有意思,而且现在你可以利用这个分析做很多其他的事情。例如,你可以: |
| |
分析一下,当我想区分某些鞋款时,最重要的问题是什么?也就是说,在区分鞋类类别时,哪些术语的贡献最大? |
| |
或者,您还可以使用 ROC 曲线进一步探索哪些鞋类类别可以进行非常明显的区分,哪些类别不能。 |
| |
最后,您还可以使用此模型进行预测。因此,您可以在此处输入某些特征配置或鞋子描述。 |
| |
然后预测该描述属于特定鞋类类别的概率。例如,在本例中,我们会预测这双鞋可能是公路跑鞋。 |
| |
由于时间有限,我无法详述细节,但想简要总结一下。那么,我们的主要发现是什么?主要发现是: |
| |
文本浏览器是一个非常强大的工具,它非常直观易用,你可以用它快速从非结构化文本数据中提取信息。 |
| |
它们之间的区别在哪里,又有哪些相同之处?这些鞋子需要具备哪些特性?但不知何故,研究结果证实了我们的预期。 |
| |
而这一确认,我们可以使用无监督技术或有监督技术来实现,因此,我们将主题分析与这里的 SVD 和预测模型以及 bootstrap 森林进行了比较,其他方法可能也能取得类似的效果。 |
| |
最后,我要感谢提出这个问题的团队(此处原文缺失团队名称)。他们收集并清理了所有数据,并就此展开了精彩的讨论。 |
| |
不同技巧的意义或荒谬之处。如果没有它们,你现在就不会听到那场演讲。此外, |
| |
我要感谢我以前在多特蒙德工业大学的同事 Jonas,他曾就文本分析方面向我提供咨询。 |
| |
最后,感谢您的关注,我很乐意回答任何问题,无论是通过电子邮件还是在 JMP 用户社区。请随时给我留言。 |