Algolia 博客中文翻译(十八)

原文:Algolia Blog

协议:CC BY-NC-SA 4.0

高性能推荐系统剖析-第 1 部分

原文:https://www.algolia.com/blog/ai/the-anatomy-of-high-performance-recommender-systems-part-1/

推荐系统介绍

用外行人的话说,推荐系统是一种软件,它过滤用户的选择,并根据他们的要求或偏好为他们提供最合适的建议。

第一个推荐系统创建于 20 世纪 70 年代,在杜克大学的研究社区;然后由施乐帕洛阿尔托研究中心开发。当互联网在 20 世纪 90 年代出现时,推荐系统立即被采用,作为帮助人们从过多的可用选项中选择最合适的产品的方法。

自那以后,推荐系统变得越来越受欢迎,它们现在对脸书、亚马逊、网飞、谷歌、YouTube 和 Tripadvisor 等大型互联网公司发挥着关键作用,涉足社交网络、娱乐、电子商务、旅游、婚介等领域。

在这个博客系列中,我们将解构推荐引擎的剖析,探索构建一个高性能的推荐引擎需要什么,以便您在决定如何将该功能集成到您的应用程序中时有更好的准备。

个性化推荐系统的四大指导原则

首先,我们需要对非个性化个性化 推荐系统进行区分。对于非个性化推荐,所有用户都会收到相同的推荐。非个性化推荐的例子是给定位置的流行电影、最近的热门歌曲和最佳评级的餐馆。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用个性化推荐系统最明显的操作目标是向用户推荐与相关的商品,因为人们更有可能购买他们 觉得有吸引力的商品

推荐人需要实现四个次要目标:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A .冷启动 当可用的信息或元数据不足时,推荐引擎不能最优地执行。有两个(极端的)冷启动问题:当没有关于用户的数据时,这分为缺乏关于访问者的先前知识和没有来自当前会话的足够信息;当用户没有足够的反馈或评分时。 例如,假设一个首次访问的访问者在一个电子商务网站上搜索一部新的智能手机。不到一周,他就买了一部手机,对浏览手机不再感兴趣。推荐引擎现在应该显示什么?

B .克服数据稀疏性 数据稀疏性源于电子商务网站上的用户倾向于与有限数量的商品进行交互(将商品添加到购物车、购买或评论)。大多数推荐引擎对相似用户的评级进行分组;然而,他报告的用户-项目矩阵具有高达 99%的空的或未知的评级,因为缺乏用户对项目进行评级的激励或对项目进行评级的足够知识。因此,不提供反馈或评级的用户会收到不相关的推荐。

C .可扩展性 可扩展性问题随着电子商务行业的快速增长而显著增加:现代推荐引擎需要为大规模应用生成实时结果。换句话说,推荐模型的性能是根据吞吐量(每秒的推理次数)和延迟(每次推理的时间)来衡量的。

D .多样性和新颖性 推荐引擎能够获得的最准确的结果是基于用户或对象的相似度。然而,这使得用户只能选择范围更窄的商品——热门商品——而高度相关的小众商品可能会被忽略。推荐的多样性允许用户发现他们自己不容易发现的项目。

为推荐者构建可扩展的架构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1. Data Sources 2. Feature Store 3. Machine Learning Models 4. Predictions 5. Actions 6. Results 7. Evaluation 8. AI Ethics

从工程的角度来看,为了实现推荐系统的主要目标,推荐系统的架构必须是可扩展的。完成这项工作需要 8 个关键要素:

1。数据来源

在潜入数据源之前,首先要了解的是 隐性 vs 显性 的收视率性质。评级形式的反馈是明确的,因为用户在指定他们对各种项目的好恶的特定评估系统(例如,五星评级模型)中选择数值。 在收集反馈的隐式方法中,用户的浏览和购买行为,或他们的一元评级(例如,他们是否“喜欢”、“阅读”或“观看”)——其中存在一种机制来表达他们对某个项目的亲和力——可以被视为评级信号。今天,许多商业系统允许基于显式和隐式反馈提供推荐的灵活性。这就引出了一个问题,“推荐引擎的最佳输入是什么?”至少,你应该包括用户、项目和明确的评分(五分制):

****| 用户/项目 | U1 | U2 | U3 | U4 | U5 |
| I1 | 1 | ❓ | 3 | 4 | ❓ |
| I2 | 3 | ❓ | ❓ | 2 | 3 |
| I3 | 2 | 5 | 3 | ❓ | ❓ |
| I4 | ❓ | 4 | 1 | ❓ | ❓ |
| I5 | 5 | ❓ | 2 | ❓ | 5 |

虽然此表有一些缺失的评分(用问号表示),但实际上,不到 1%的项目经常被评为 ,这些可以被称为流行项目。绝大多数被评为 很少被评为 ,这导致了潜在评级的高度偏斜分布——实际上,我们正在处理评级的长尾特性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于推荐系统,有两种主要的数据来源可以考虑:

  • 您的产品目录(商品)和用户元数据(如年龄和性别)的首选 CMS(如 Shopify、Magento 或 woo commerce)
  • Google Analytics(或任何第三方分析平台)用于互动,如页面浏览量、停留时间和转化率

聚合数据集可能看起来像这样:

[
  {
    "user_id": "1",
    "item_id": "100",
    "events": [{
      "event_1": "2016-04-20T13:25:55+02:00", //detail-page-view
      "event_2": "2016-04-20T14:01:55+02:00", //add-to-cart
      "event_3": "2016-04-20T14:13:55+02:00" //purchase
    }]
  },
  {
    "user_id": "2",
    "item_id": "200"
  },
  {
    "user_id": "3",
    "item_id": "300"
  }
]

阅读关于数据源的更多信息

2。特征工程(FE)

构建机器学习(ML)模型最重要也是最耗时的一个方面就是数据准备,具体来说就是特征提取(或 engineerng)。 我们都知道: 数据科学家 80%的工作是数据准备。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

特征提取阶段——提取各种物品的描述——是高度特定于应用的。项目可能有多个描述其各个方面的字段。例如,一个销售书籍的电子商务企业可能有一个项目、标题、描述、作者和价格字段。

| 项目 | 标题 | 描述 | 作者 | 价格 |
| I1 | 后来的 | 杰米·康克林是一位苦苦挣扎的单身母亲的儿子,他只想拥有一个平凡的童年。但是杰米不是普通的孩子。 | 斯蒂芬·金 | $10.88 |
| I2 | 我们从结尾开始 | 故事发生在一个小镇上,每个人都知道明星拉德里的事情——她的毒瘾,她的孩子被忽视的方式——但是很少有人伸出援助之手,除了与明星有过节的当地警长沃克。 | 克里斯·惠特克 | $14.84 |
| I3 | 2034:下一次世界大战的小说 | 来自两位前军官和获奖作家,这是一部令人毛骨悚然的真实地缘政治惊悚片,想象了 2034 年美国和中国在南中国海的海军冲突,以及从那里通往噩梦般的全球大灾难的道路。 | 埃利奥特·阿克曼,海军上将詹姆斯·斯塔夫里迪斯号 | $17.84 |
| … |

除了描述每个项目的信息之外,除了关于用户评级的数据(隐式或显式)之外,一些推荐系统可能还需要用户属性(例如,人口统计)。

| 用户 | 最后一次出现 | 性别 | 年龄 | 国家 | 浏览量 | 添加到购物车 | 订单值 |
| U1 | 2021 年 10 月 1 日 | 男 | 45 | 加拿大 | 13 | 0 | 0 |
| U2 | 2021 年 2 月 28 日 | 母 | 25 | 美国 | 5 | 1 | $129 |
| U3 | 2021 年 1 月 2 日 | 女 | 39 | 法国 | 9 | 1 | $98 |
| … |

为了解决 ML 生命周期中的这一乏味挑战,引入了特征库的概念:特征工程和模型开发之间的接口,为数据科学团队提供特征的集中式数据仓库,解决两个问题。It:

  • 以集中方式存储大量特性,允许 DS/ML 工程师更快地重用、试验和生产 ML 模型
  • 为其他应用程序或数据库提供低延迟和高吞吐量的特性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不是所有的推荐系统都有特征存储的硬性要求;然而,当 DS/ML 工程师正在处理多个机器学习计划时,手动特征工程可能会导致冗余。 因此,首先,功能商店为共享所有可用的功能提供了一个真实的点。当数据科学家开始一个新项目时,他们可以访问该目录并轻松找到他们正在寻找的功能。但是特征存储不仅仅是数据层;它也是一种数据转换服务,使用户能够操作原始数据并将其存储为特征 ,以备任何机器学习模型 使用。

阅读更多关于特征存储和工程的信息。

3。型号

推荐系统的基本模型处理两种类型的数据:用户-项目交互,如评分和购买行为,以及关于用户和项目的属性信息,如文本简介和相关关键词。

下面是基本的推荐系统模型

  1. 基于内容的过滤 在基于内容的推荐系统中,内容在推荐过程中起着主要作用。利用项目描述和属性来计算项目相似性。在这种情况下,上面的用户评级矩阵被替换为项目内容矩阵,其中项目在行中,项目属性在列中。
  2. 协同过滤 协同过滤模型利用多个用户提供的评分的协同力量进行推荐。基本思想是可以计算未指定的评级,因为观察到的评级通常在各种用户和项目之间高度相关。

例如,考虑两个用户,Julia 和 John,他们是朋友并且有非常相似的品味。如果他们的等级(他们两个都指定了等级)非常相似,那么他们的相似性可以通过潜在的算法来识别。在这种情况下,很可能只有其中一个指定了值的评级也很可能是相似的。这种相似性可用于对不完全指定的值进行推断。

协同过滤主要有两种:

    • 基于用户的 基于用户的协同过滤(UB-CF)背后的主要思想是,具有相似特征的人分享相似的品味。例如,如果 Julia 有兴趣向 John 推荐一部电影,只要他们一起看过很多电影,并且对它们的评价几乎相同,就可以肯定他们会继续喜欢类似的电影。
    • 基于项目 与 UB-CF 相反,项目-项目协同过滤是基于项目之间的相似性,使用用户给项目的评级来计算。因此,约翰对类似科幻电影的评分,如外星人捕食者可以用来预测他对终结者的评分。

阅读更多关于型号的信息。

4。混合推荐系统

**有些情况下可以使用不同的输入源。例如,协同过滤系统依赖于社区评级,基于内容的方法依赖于文本描述和目标用户自己的评级,而基于知识的系统依赖于在知识库的上下文中与用户的交互。类似地,人口统计系统使用用户的人口统计资料来进行推荐。

值得注意的是,这些不同的系统有不同的优点和缺点。一些推荐系统,例如基于知识的推荐系统,在大量数据不可用的冷启动设置中更有效。

其他推荐系统,如协作方法,在大量数据可用时更有效。在许多情况下,当更多种输入可用时,人们可以灵活地为同一任务使用不同类型的推荐系统。在这种情况下,存在许多混合的机会:将不同类型系统的各个方面结合起来以获得最佳结果。

基于内容的过滤和协同过滤经常一起使用,因为它们可以很好地相互补充。基于内容的系统受到过度专业化的困扰——它们倾向于推荐与用户已经看过的其他项目相似的项目。另一方面,协作推荐器不能有效地给出新项目的推荐。这两种方法经常在混合推荐系统中结合起来,从而获得两个世界的最佳效果。

阅读更多关于混合动力车型的信息。

**5。**目的地和动作

**此时,你能够生成建议,但是你会如何使用它们,在哪里使用它们呢?对于电子商务企业,标准方法是在产品详情页面上显示一个“推荐给你”的小部件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Etsy 是一个利用热门商品展示推荐的电子商务平台的完美例子。这里是它的主页: 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意建议的中心位置。

首先展示受欢迎的产品背后的想法是,因为有如此多的购物者购买了它们,其他人也很可能对它们感兴趣。

虽然这种方法并不能真正个性化客户体验,但展示受欢迎的商品可以让你锁定没有账户的首次用户。作为比较,下面是 Etsy 主页在登录后的样子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

平台记录了所有过去的产品视图和添加到收藏夹的商品。然后,它与来自同一类别或同一卖家的类似产品进行自动关联。

推荐系统也可以用于交叉销售和追加销售,旨在帮助人们选择最适合他们的商品,同时增加商家的收入。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

阅读更多关于预测&用户操作的信息。

6。商业结果和评估推荐系统

给定一组推荐算法,它们的表现如何?你如何评价它们的相对有效性?

开发人员正在关注技术方面,但商业领袖仍然有一个主要角色:决定在哪个页面上测试产品推荐。它可以是任何页面,只要你能收集到足够的数据。最好只将测试发送给 20%的流量,这样如果出现问题,你就不会破坏对所有人的建议。如果您想安全地测试上述任何推荐系统而不干扰实时数据,您可以让您的数据或 web 开发团队在其沙箱中进行测试。

无论哪种情况,都要关注你的关键绩效指标以及某项技术对它们的影响。如果你没有做过 A/B 测试,你的每一件商品的点击率和转换率,而不仅仅是整个商店的点击率和转换率,是你可以开始的两个安全的选择。

你将何去何从?

在这个阶段,你不仅应该能够理解使用推荐系统的好处,还应该对最适合你的应用的方法有一个直观的想法。

基于人工智能的电子商务推荐系统的主要目的是帮助你选择合适的产品放在你的用户面前。一切都有他们之前喜欢或感兴趣的产品的真实数据支持,所以你不再需要猜测他们可能在寻找什么。

定制产品推荐系统的未来将允许你瞄准新的用户群,并出现在任何地方:社交媒体、移动应用、电子邮件,当然,还有你的网站。同时,你可以推销你的所有商品,包括新产品,甚至可以记录用户行为的数据。因此,如果一个利基产品的受欢迎程度在一夜之间突然飙升,你不必等到第二天早上才更新你的推荐,因为所有这些都是实时进行的。

这篇文章只是致力于剖析高性能推荐系统的一系列博客中的第一篇。请继续关注下一篇文章,它将关注推荐系统的数据源。********

高性能推荐系统剖析,第二部分

原文:https://www.algolia.com/blog/ai/the-anatomy-of-high-performance-recommender-systems-part-2/

为您的推荐系统处理公共数据源

在本系列 的第一篇 中,我们谈到了一个高性能推荐系统的关键组件: (1)数据源 (2)特征库、(3) 机器学习模型、(4) 预测&行动、(6)结果、(7)评估和(8) AI 伦理。

在这篇文章中,我们将深入探讨你的协同过滤推荐系统所需的公共数据源。至少,推荐引擎的输入包括用户、项目和评级:

| 用户/物品 | U1 | U2 | U3 | U4 | U5 |
| I1 | 1 | ❓ | 3 | 4 | ❓ |
| I2 | 3 | ❓ | ❓ | 2 | 3 |
| I3 | 2 | 5 | 3 | ❓ | ❓ |
| I4 | ❓ | 4 | 1 | ❓ | ❓ |
| I5 | 5 | ❓ | 2 | ❓ | 5 |

对于一个协同过滤系统,有三种类型的推荐系统数据集是你必须准备的:

1。项目数据集 从您的内部电子商务平台或您的 CMS 平台(如 Shopify、Magento 或 WooCommerce)导出数据。包括产品目录(项目)以及价格、SKU 类型或可用性等信息。

2。用户数据集 关于用户的元数据可能包括年龄、性别或忠诚会员等信息,这些信息对于推荐系统来说是重要的信号。

3。互动数据集谷歌分析(或任何第三方分析平台)通常被认为是用户互动信息的良好来源,如位置或设备(手机、平板电脑、台式机)、页面浏览量、网站停留时间和转化率。

如何准备物品数据集

在将 项目数据集 发送到推荐引擎之前,您需要从一个或多个来源提取数据,并以推荐引擎能够识别的方式对其进行格式化。

让我们考虑一个简单的场景,您已经在使用 Algolia 搜索您的电子商务,并且您正在使用 Algolia API 客户端 之一发送您的产品目录。JSON 可能是这样的:

[
  {
    "item_id": "0000031852",
    "title": "CeraVe Moisturizing Cream",
    "description": "Developed with dermatologists, CeraVe Moisturizing Cream has a unique formula that provides 24-hour hydration and helps restore the protective skin barrier with three essential ceramides (1,3,6-II). This rich, non-greasy, fast-absorbing formula is ideal for sensitive skin on both the face and body.",
    "price": 16.08,
    "image": "../images/0000031852.jpg",
    "categories": [
      "Beauty & Personal Care",
      "Body Creams"
    ],
    "availability": "in stock"
  },
  {
    "item_id": "0000042941",
    "title": "REVLON One-Step Hair Dryer And Volumizer Hot Air Brush, Black, Packaging May Vary",
    "description": "The Revlon One-Step Hair Dryer and Volumizer is a Hot Air Brush to deliver gorgeous volume and brilliant shine in a single step. The unique oval brush design smooth hair while the rounded edges quickly create volume at the root and beautifully full-bodied bends at the ends in a single pass, for salon blowouts at home.",
    "price": 41.88,
    "image": "../images/0000042941.jpg",
    "categories": [
      "Beauty & Personal Care",
      "Hot-Air Hair Brushes"
    ],
    "availability": "in stock"
  },
  {
    "item_id": "0000053422",
    "title": "Maybelline Lash Sensational Washable Mascara",
    "description": "Get a sensational full-fan effect with Maybelline New York’s fan favorite Lash Sensational Washable Mascara! Lashes grow in more than one layer. This volumizing mascara can unfold layer upon layer of lashes thanks to its exclusive brush with ten layers of bristle.",
    "price": 6.49,
    "image": "../images/0000053422.jpg",
    "categories": [
      "Beauty & Personal Care",
      "Makeup",
      "Mascara"
    ],
    "availability": "out of stock"
  }
] 

很明显,你不需要包含所有的东西——你应该对数据集中的内容有所选择,只收集对构建你的推荐系统有用的信息。例如,如果推荐引擎不是为了处理图像而构建的,那么您应该简单地忽略*【image】*元数据。

另一个选择是从您的 Shopify、Magento 或 WooCommerce 商店导出 CSV 格式的产品目录。下面是他们每个人都需要的步骤:

从 Shopify 导出产品

  1. 从您的 Shopify 管理员,转到 产品>所有产品 。注意:如果您只想导出部分产品,那么您可以过滤产品列表,以查看和选择要导出的特定产品。
  2. 点击导出。从对话框中选择您要导出的产品:当前页面**(产品的)【所有产品】选定产品(您已选择的)当前搜索(与您的搜索和过滤器匹配的产品)。
    *** 选择您想要导出的 CSV 文件类型–使用 普通 CSV 文件 。* 点击 导出产品 。* 你最终会得到一个类似于这个 的 CSV 文件 ,你可以下载下来检查。

**从 Magento 出口产品

对于 Magento 2,数据导出是一个异步操作,它在后台执行,因此您可以继续在管理中工作,而无需等待操作完成。以下是步骤:

  1. 在管理侧栏上,转到系统>数据传输>导出
  2. 在导出设置部分,将实体类型设置为“产品”。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  3. 接受默认的导出文件格式CSV。
  4. 默认情况下,实体属性部分按字母顺序列出所有可用的属性。您应该选择要包括在导出中的特定属性。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  5. 向下滚动,点击页面右下角的 继续 。默认情况下,所有导出的文件都位于*/var/export*文件夹中。如果启用远程存储模块,所有导出的文件都位于 <远程存储根目录> /import_export/export 文件夹

从 WooCommerce 出口产品

WooCommerce 有一个内置的产品 CSV 导入器和导出器,您可以按照下面的步骤来使用:

  1. 转到: WooCommerce >产品
  2. 选择顶部的导出。将显示导出产品屏幕。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  3. 选择导出所有列、导出所有产品或导出所有类别。或者使用下拉菜单选择要导出的列、产品或类别。
  4. 如果您想为您的推荐系统添加更多元数据,请勾选导出自定义元数据
  5. 选择生成 CSV 并等待导出完成。

最后但同样重要的是,您可能已经在使用 Google Merchant Center,在这种情况下,您已经在 拥有一个产品提要 ,您可以在您的推荐系统中重用它。

如何准备用户数据集

虽然 条目数据集 更容易生成或导出,但当涉及到使用 用户 数据集、 时,事情变得有点复杂,主要是由于隐私限制而不是技术限制。显然,从机器学习的角度来看,用户的元数据越多越好。然而,这并不总是可能的,您必须在如何处理用户数据(例如,从用户处收集的或关于用户的信息,包括设备信息)方面保持透明。

2006 年,披露了近 50 万客户的不充分匿名信息。在 网飞的 100 万美元竞赛 期间,为了改进其推荐系统,一些研究人员能够重新识别用户。它显然侵犯了用户的隐私,诉讼结束时网飞支付了 900 万美元来解决诉讼。

在欧盟,许多个人数据被视为敏感数据,并受到特定处理条件的限制。当讨论个人身份信息(PII)时,我们需要区分已认证、未认证或匿名用户。

这里我想强调一个细微差别——根据 欧盟法规 ,匿名化是创建匿名信息的过程,即“与已识别或可识别的自然人无关的信息”或“以数据主体不可识别或不再可识别的方式匿名的个人数据”。虽然我们认为未经认证的用户是匿名的,但值得注意的是,确保 100%匿名是很难实现的。

| 未认证/匿名 | 已认证 |
| cookie_id | 用户标识 |
| session_id | 名和姓 |
| 装置装置装置 | 家庭住址 |
| 国家 | 电子邮件地址 |
| 城市 | 电话号码 |
| | 护照号码 |
| 驾驶证号码 |
| 社会保障号 |
| 一张脸的照片 |
| 信用卡号 |
| 账号用户名 |
| 指纹 |

在这个阶段需要做出一个重要的设计决策: 你应该为经过认证的用户还是未经认证的用户构建你的推荐系统? 如果你选择认证用户,你有更多的元数据可以支配,理论上,你的推荐系统可能会更准确,但缺点是看到推荐的用户数量会非常非常少。

另一方面,用匿名用户元数据构建推荐系统只会为你的推荐带来更广泛的受众,即使准确度可能没有那么高。

这是在实施推荐模型的早期阶段需要做出的妥协。当然,在后期阶段,如果投资回报值得的话,可以考虑混合方法。

从 Google Analytics 导出未经认证的用户

用户浏览器报告 让您隔离和检查个人,而不是聚合用户行为。个人用户行为与客户端 ID(已验证)或用户 ID(匿名)相关联。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于每个客户端或用户 ID,您会看到以下数据:

| **User Data **(在上面的屏幕图像中点击客户端 Id 时可见) | 互动数据 |
|

  • 设备类别
  • 设备平台
  • 采集日期
  • 频道
  • 源/媒体
  • 战役

|

  • 上次查看日期(用户上次启动会话的时间)
  • 会话
  • 平均值。会话持续时间
  • 跳出率
  • 收入
  • 交易
  • 目标转化率

|

此外,当您基于人口统计、技术和行为信息的任意组合对用户浏览器报告进行细分时,您会有一个与该细分相关联的所有 id 的列表,您可以导出这些 id。请注意,2019 年发布的谷歌分析 4 (GA4)引入了一些重要的细微差别——用户浏览器是分析部分可用的技术之一。

然而,仪表板中的导出功能仅限于您可以获得的几个列/维度,这对于我们的 用户数据集来说并不真正有用。T55

解决方案是使用谷歌分析报告 API v4。但是有一个警告:默认版本不从用户浏览器报告中导出任何客户端 id,您必须通过创建定制维度来使这些 id 可用。这允许分析 API 在客户端 ID 或会话级别导出数据,而不是仅返回聚合数据。从谷歌分析管理面板的 进入 管理 部分。在 属性 部分,转到 自定义定义>自定义尺寸 。增加以下维度:

  • ClientID 与用户范围自定义定义 部分,转到 自定义维度 部分,点击**+新建自定义维度** 按钮。添加名称*【ClientID】*并选择用户范围。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • SessionID 与会话范围自定义定义 部分,转到 自定义尺寸 部分,点击**+新建自定义尺寸** 按钮。添加名称*【Session id】*并选择会话范围。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • (可选)带有用户范围的 UserID。自定义定义 部分,转到 自定义尺寸 部分,点击**+新建自定义尺寸** 按钮。添加名称 *【用户 id】*并选择用户范围。这个自定义维度将包含来自 CMS 的用户 id。它应该只在将 GA 连接到其他平台时使用,如 Shopify、Magento 或 WooCommerce。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

添加完所有维度后,您的表将类似于下图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,您需要设置客户端 ID 和会话 ID 跟踪。如果 Google Analytics tracker 直接包含在您网站的源代码中,您可以通过修改现有代码来添加自定义维度值。

复制下面的脚本,将视图 id(应该是类似于UI-xxxxx-01)替换为与您的网站对应的视图 id。此外,用步骤 1 中创建的实际维度索引替换“维度 1”、“维度 2”和(可选)“维度 3”。你可以阅读更多关于 用 gtag.js 添加客户 ID 到自定义维度。

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXX-Y"></script>
<script>
    window.dataLayer = window.dataLayer || [];
    function gtag() { dataLayer.push(arguments); }
    gtag('js', new Date());

    // Maps 'dimension1' to client id, 'dimension2' to session id and 'dimension3' to user id.
    gtag("config", "UA-XXXXXXXX-Y", {
        custom_map: {
            dimension1: "clientId",
            dimension2: "sessionId",
            dimension3: "userId", // Remove this line if you're not using the UserID custom dimension 
        }
    });

    // Sends an event that sets the dimensions
    gtag("event", "custom_set_dimensions", {
        sessionId: new Date().getTime() + "." + Math.random().toString(36).substring(5)

        // Remove following line if you're not using the UserID custom dimension
        userId: '## Replace with User ID from your CMS ##'
    });
</script>

最后一部分包括创建可用于验证 Google Analytics 报告 API 和访问数据的 API 凭证。参见 关于如何访问分析报告 API 的谷歌文档。

您可以使用下面的 Python 脚本为您的协同过滤推荐系统创建一个匿名的 用户数据集 。该脚本使用 Google Analytics 数据创建一个 dataframe,并将其保存为 csv 文件。

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = '<REPLACE_WITH_JSON_FILE>'
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'
CUSTOM_DIMENSION_USER = '<REPLACE_WITH_CUSTOM_DIMENSION_INDEX, ex. ga:dimension1>'

def initialize_analyticsreporting():
  """Initializes an Analytics Reporting API V4 service object.

  Returns:
    An authorized Analytics Reporting API V4 service object.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)

  # Build the service object.
  analytics = build('analyticsreporting', 'v4', credentials=credentials)

  return analytics

def get_report(analytics):
  """Queries the Analytics Reporting API V4.
  The API returns a maximum of 100,000 rows per request. If you have more data, you have to implement pagination:
  - https://developers.google.com/analytics/devguides/reporting/core/v4/basics#pagination
  - https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet#ReportRequest.FIELDS.page_size

  Args:
    analytics: An authorized Analytics Reporting API V4 service object.
  Returns:
    The Analytics Reporting API V4 response.
  """
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}],
          'dimensions': [{'name': CUSTOM_DIMENSION_USER}, {'name': 'ga:country'}, {'name': 'ga:deviceCategory'}],
          'pageSize': 10000
        }]
      }
  ).execute()

def parse_response(response):
  """Parses the Analytics Reporting API V4 response and returns it in a Pandas dataframe.

  Args:
    response: An Analytics Reporting API V4 response.
  Returns:
    Pandas dataframe with the data.
  """
  df = pd.DataFrame() 

  for report in response.get('reports', []):
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])

    for row in report.get('data', {}).get('rows', []):
      dimensions = row.get('dimensions', [])
      dateRangeValues = row.get('metrics', [])

      entry = {}
      for header, dimension in zip(dimensionHeaders, dimensions):
        entry[header] = dimension

      for i, values in enumerate(dateRangeValues):

        for metricHeader, value in zip(metricHeaders, values.get('values')):
          entry[metricHeader.get('name')] = value

        df = df.append(entry, ignore_index=True)
    return df

def main():
  analytics = initialize_analyticsreporting()
  response = get_report(analytics)
  df = parse_response(response)
  print(df.count())
  print(df.head(10))
  df.to_csv("data.csv")

if __name__ == '__main__':
  main()
sample_read_ga_data.py
Displaying sample_read_ga_data.py.

从 Shopify 导出客户

您可以通过以下快速步骤导出所有客户及其详细信息的 CSV 文件:

  1. 从你的 Shopify admin ,转到 客户
  2. 点击 导出
  3. 点击 所有客户 导出您店铺的所有客户。
  4. 选择 普通 CSV 文件 格式。
  5. 点击 导出客户

正如您可以从 这个模板 中看到的,有很多列您实际上并不需要——例如,在您的 用户数据集 中包含全名或电子邮件地址作为推荐系统的输入是没有意义的。

从 Magento 导出客户

类似于从 Magento 2 中导出产品,您可以将 实体类型 设置为 【客户主文件】 ,您将获得一个客户列表,您可以在您的推荐系统中进一步清理和使用该列表。

从 WooCommerce 导出客户

从 WooCommerce 手动导出客户:

**1. 进入 WooCommerce >出口外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2. 在 手动导出 选项卡上,更新以下设置:
1. 输出类型 :选择以 CSV 格式导出文件。
2. 导出类型 :选择要导出的客户。
3. 格式 :选择一种 预定义的自定义的 格式。
4. 文件名:输入本次导出生成文件的名称。
5. 标记为导出 :启用,确保导出的数据不包括在以后的导出中。 点击此处了解有关此设置的更多信息。
6. 批量处理 :仅当您的站点 不支持后台处理 时启用。

3。点击 导出

如何准备交互数据集

数据集拼图的最后一块是生成 交互数据集。 根据 Builtwith.com 的数据,有近 3000 万个网站在使用谷歌分析,因此,为我们使用谷歌分析报告 API v4 的推荐系统介绍导出 用户行为 的最佳方式是有意义的。

我们已经介绍了用户数据集部分的大部分流程,您可以使用相同的 Python 脚本来导出将进入推荐系统的关键事件。如果你想添加额外的列,你可以看看 维度&度量浏览器

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = '<REPLACE_WITH_JSON_FILE>'
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'
CUSTOM_DIMENSION_USER = '<REPLACE_WITH_CUSTOM_DIMENSION_INDEX, ex. ga:dimension1>'
CUSTOM_DIMENSION_SESSION = '<REPLACE_WITH_CUSTOM_DIMENSION_INDEX, ex. ga:dimension2>'

def initialize_analyticsreporting():
  """Initializes an Analytics Reporting API V4 service object.

  Returns:
    An authorized Analytics Reporting API V4 service object.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)

  # Build the service object.
  analytics = build('analyticsreporting', 'v4', credentials=credentials)

  return analytics

def get_report(analytics):
  """Queries the Analytics Reporting API V4.
  The API returns a maximum of 100,000 rows per request. If you have more data, you have to implement pagination:
  - https://developers.google.com/analytics/devguides/reporting/core/v4/basics#pagination
  - https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet#ReportRequest.FIELDS.page_size

  Args:
    analytics: An authorized Analytics Reporting API V4 service object.
  Returns:
    The Analytics Reporting API V4 response.
  """
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [
                {'expression': 'ga:productListViews'},
                {'expression': 'ga:productDetailViews'},
                {'expression': 'ga:productAddsToCart'},
                {'expression': 'ga:productCheckouts'},
                {'expression': 'ga:itemQuantity'},
                {'expression': 'ga:itemRevenue'}
            ],
          'dimensions': [
              {'name': CUSTOM_DIMENSION_USER},
              {'name': CUSTOM_DIMENSION_SESSION},
              {'name': 'ga:productSku'}
            ],
          'pageSize': 10000
        }]
      }
  ).execute()

def parse_response(response):
  """Parses the Analytics Reporting API V4 response and returns it in a Pandas dataframe.

  Args:
    response: An Analytics Reporting API V4 response.
  Returns:
    Pandas dataframe with the data.
  """
  df = pd.DataFrame() 

  for report in response.get('reports', []):
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])

    for row in report.get('data', {}).get('rows', []):
      dimensions = row.get('dimensions', [])
      dateRangeValues = row.get('metrics', [])

      entry = {}
      for header, dimension in zip(dimensionHeaders, dimensions):
        entry[header] = dimension

      for i, values in enumerate(dateRangeValues):

        for metricHeader, value in zip(metricHeaders, values.get('values')):
          entry[metricHeader.get('name')] = value

        df = df.append(entry, ignore_index=True)
    return df

def main():
  analytics = initialize_analyticsreporting()
  response = get_report(analytics)
  df = parse_response(response)
  print(df.count())
  print(df.head(10))
  df.to_csv("interactions.csv")

if __name__ == '__main__':
  main()
sample_read_ga_interactions.py
Displaying sample_read_ga_interactions.py.

| 事件 | 触发 | 参数 |
| 添加 _ 付款 _ 信息 | 当用户提交他们的支付信息时 | 优惠券,货币,项目,付款类型,价值 |
| 添加 _ 运输 _ 信息 | 当用户提交他们的运输信息时 | 优惠券,货币,项目,运输层,价值 |
| 添加到购物车 | 当用户向购物车添加商品时 | 货币、项目、价值 |
| 添加到愿望列表 | 当用户向意愿列表添加项目时 | 货币、项目、价值 |
| 开始 _ 结帐 | 当用户开始结账时 | 优惠券、货币、项目、价值 |
| 生成 _ 销售线索 | 当用户提交表单或信息请求时 | 价值,货币 |
| 购买 | 当用户完成购买时 | 从属关系、优惠券、货币、项目、交易标识、运输、税收、价值(必需参数) |
| 退还 | 当退款发出时 | 从属关系,优惠券,货币,项目,交易标识,运输,税收,价值 |
| 从购物车中删除 | 当用户从购物车中移除商品时 | 货币、项目、价值 |
| 选择 _ 项目 | 当从列表中选择一个项目时 | 项目,项目列表名称,项目列表标识 |
| 选择 _ 促销 | 当用户选择促销时 | 项目,促销标识,促销名称,创意名称,创意时段,位置标识 |
| 查看 _ 购物车 | 当用户查看他们的购物车时 | 货币、项目、价值 |
| 查看 _ 项目 | 当用户查看项目时 | 货币、项目、价值 |
| 查看 _ 项目 _ 列表 | 当用户看到商品/供应的列表时 | 项目,项目列表名称,项目列表标识 |
| 查看 _ 促销 | 当向用户显示促销时 | 项目,促销标识,促销名称,创意名称,创意时段,位置标识 |

零售和电子商务应用程序应记录下列事件。记录事件及其规定的参数确保了报告中最大的可用细节,并提高了协同过滤推荐系统的整体性能。

虽然更多的用户交互增加了推荐系统的准确性,但你可能会考虑尝试更少更基本的交互,比如产品详情页面浏览量(针对未经认证的用户)和/或订单(针对经过认证的用户)。这里的直觉是,推荐系统将能够仅基于隐含的评级来推荐相关项目,例如:产品详细页面视图和购买历史。

从 Shopify 导出订单

您可以导出订单及其交易历史,也可以仅导出订单的交易历史:

  1. 订单 页面,点击 导出外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  2. 出口订单 窗口:
    • 为您想要导出的订单选择选项。例如,如果您想按日期导出订单,则单击 按日期导出 订单,并设置您要导出的订单的开始和结束日期。
    • 下下导出为下,选择一种文件格式。
  3. 如果你想下载所有关于你的订单的信息,那么点击 导出订单 。如果您只想下载您的交易信息,则点击 导出交易历史

从 Magento 导出订单

在你的 Magento 2 后端,转到 销售>订单 ,点击 出口 下拉,勾选 CSV。

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从 WooCommerce 出口订单

您可以按照与 导出客户 相同的步骤从 WooCommerce 导出订单,唯一不同的是选择 导出类型 的“订单”。 记住,对于你的协同过滤推荐系统的第一次迭代,你可能需要清理 交互数据集 导出直到它只包含: UserId,Date,ProductIds。

综合起来

如果您达到了这一点,您应该有 3 个 CSV 文件,每个文件的结构如下:

| 物品数据集 |
| ItemId | 标题 | 描述 | 价格 | 其他项目元数据(……) |

| 用户数据集 |
| UserId | 国家 | 城市 | 其他用户元数据(……) |

| 交互数据集 |
| ItemId | UserId | 时间戳 | 事件类型 | 其他交互元数据(……) |

请注意,如果您没有(或不想包含)任何用户元数据,完全可以忽略 用户数据集

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

互动是构建用户评级矩阵(URM)的基础。只需使用用户标识-项目标识对,您就可以创建第一个版本的 URM /基线模型。其他特性可以一个一个地添加,同时在每一步测量模型的性能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从所有可用的数据集中,可以很容易地将数字或一次性编码的属性添加到模型中。其他的则需要额外的处理——例如应用自然语言处理从文本数据中提取嵌入内容,或者用计算机视觉处理产品图像。

在本系列的下一篇博文中,我们将专注于为我们的协同过滤推荐系统准备数据集和探索特征工程,这是构建高性能机器学习模型的关键一步。

敬请期待!

还有,如果有问题:https://twitter.com/cborodescu******

高性能推荐系统剖析-第三部分

原文:https://www.algolia.com/blog/ai/the-anatomy-of-high-performance-recommender-systems-part-3/

进入推荐系统的工程特征

在本系列 的第一篇 中,我们谈到了一个高性能推荐系统的关键组件:(1) 数据源、 (2) 特征库、(3) 机器学习模型、(4 & 5) 预测&行动、(6)结果、(7)评估和(8) AI 伦理。

在这第三篇文章中,我们将深入探讨推荐系统的特征工程这一主题。虽然从原始数据到推荐的路径要经过各种工具和系统,但该过程涉及两个数学实体,它们是任何推荐系统的面包和黄油: 特征模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

特征是原始数据的数字表示。特征工程是在给定数据、模型和任务的情况下组合最合适的特征的过程。在基本的协同过滤场景中,我们实际上没有特征,因为评级实际上是标签。

基于内容的系统处理各种各样的物品描述和关于用户的知识。特征工程包括将这些不同类型的非结构化数据转换成标准化的描述。尽管可以使用任何类型的表示,比如多维数据表示,但最常见的方法是从底层数据中提取关键字。

项目有多个字段,其中列出了各种属性。例如,书籍有描述、标题和作者。在某些情况下,这些描述和属性可以转换成关键字。

| ItemID | 标题 | 作者 | 描述 | 流派 | 价格 |
| 0000031852 | 2034:下一次世界大战的小说 | 美国海军上将詹姆斯·斯塔夫里迪斯·阿克曼号 | 来自两位前军官和获奖作家,这是一部令人毛骨悚然的真实地缘政治惊悚片,想象了 2034 年美国和中国在南中国海的海军冲突,以及从那里通往噩梦般的全球大灾难的道路。 | 惊悚片&悬疑片 | 17.84 美元 |

另一方面,当属性包含数字量(如价格)或从可能性的小宇宙(如类型)中提取的字段时,您可以直接使用多维(结构化)表示。

除了描述商品,你还需要收集用户资料。比如movie lens,一个经典的用户属性推荐数据集, 包含了性别、年龄、职业三个用户属性。因为这些是单标签属性,所以可以在预处理过程中使用 一键 编码对它们进行编码。

| 用户标识 | 性别 | 年龄 | 职业 |
| | 男/女 | * 1:“18 岁以下” * 18:“18-24 岁” * 25:“25-34 岁” * 35:“35-44 岁” * 45:“45 | * 0:“其他”或未指定

  • 1:“学术/教育工作者”
  • 2:“艺术家”
  • 3:“文书/行政”
  • 4:“学院/研究生”
  • 5:“客服”
  • 6:“医生/保健” 12:“程序员”
  • 13:“退休”
  • 14:“销售/营销”
  • 15:“科学家”
  • 16:“个体户”
  • 17:“技术员/工程师”
  • 18:“工匠” |

最后,并不是所有的特征都是平等的。您可以应用特性 权重、 根据特性的重要性给出不同的权重,或者应用特性 选择、 根据相关性包括或排除属性。

现在让我们探索推荐引擎中最常见的项目和用户属性的特征工程方法。

数字特征

离散化

项目数据集中包含的价格属性是一个 连续变量 ,因为它可以取不可数的一组值,并且可以包含给定范围内的任何值。为了将这种原始特征转换成机器学习模型可以接受的格式,您将使用 量化: 本质上,将连续值映射到离散值。从概念上讲,这可以被认为是 统计箱 的有序序列。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

宁滨有三种典型的方法:

  • 统一: 所有箱柜宽度相同
  • 基于分位数: 所有箱都有相同数量的值
  • 基于 K-均值: 每个仓属于最近的一维 K-均值聚类

统一宁滨是最简单的方法。它使用公式将一系列可能的值划分为宽度相同的 N 个箱

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 N 为区间数。

N 通常是通过实验确定的——这里没有经验法则。

例如,如果变量 interval 为[10,110],并且您想要创建 5 个容器,这意味着110-10 / 5 = 20,因此每个容器的宽度为 20,间隔为[10,30],[30,50],[50,70],[70–90]和[90,110]。

统一、分位数或 k 均值宁滨的代码和直方图如下:

from sklearn.preprocessing import KBinsDiscretizer
# create the discretizer object with strategy uniform
discretizer = KBinsDiscretizer(bins, encode='ordinal', strategy='uniform') # replace "uniform" with "quantile" or "kmeans" to change discretization strategies
data_disc= discretizer.fit_transform(data)

| 统一(垃圾箱= 10) | 分位数(仓= 10) | K-均值(仓= 10) |
| 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 | 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 | 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 |

规范化和标准化

讨论最多的两种缩放方法是**(将值重新缩放到[0,1]的范围内)和 标准化 (将数据重新缩放到平均值为 0,标准差为 1)。以下是数据经过规范化和标准化后的可视化表示:**

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

您可以对页面浏览量、点击量和交易量等特征使用归一化,因为这些值不是正态(高斯)分布的,大多数时候它们是长尾。

这是归一化的公式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中XmaxXmin分别为特征的最大值和最小值。

# data normalization with sklearn
from sklearn.preprocessing import MinMaxScaler

# fit scaler on training data
norm = MinMaxScaler().fit(X_train)

# transform training data
X_train_norm = norm.transform(X_train)

# transform testing data
X_test_norm = norm.transform(X_test)

标准化对客户评论很有用,因为数据遵循高斯(正态)分布:

其中 μ 是特征值的平均值,𝝈是特征值的标准差。注意,在这种情况下,这些值不限于特定的范围。

from sklearn.preprocessing import StandardScaler

# fit on training data
scale = StandardScaler().fit(X_train)

# transform the training data 
X_train_stand = scale.transform(X_train)

# transform the testing data 
X_test_stand = scale.transform(X_test)

分类特征

通常,特征被表示为分类值,而不是连续值。在上面的例子中,用户可以拥有诸如性别([男性、女性])、年龄([18 岁以下、18-24 岁、25-34 岁])和职业([其他、学术/教育工作者、艺术家、职员/管理人员],…)等特征。这样的特征可以有效地编码为整数,例如,[男性,18-24 岁,文书/管理]可以表示为[0,1,3],而[女性,25-34 岁,学术/教育工作者]可以表示为[1,2,1]。

我们有几个将分类特征转换成整数的选项:

  • 使用普通编码器。 该估计器将每个分类特征转换为一个新的整数特征(0 到 n _ categories–1)
from sklearn.preprocessing import OrdinalEncoder

user_data = [['male', '18-24', 'clerical/admin'], ['female', '25-34', 'academic/educator']]
encoder = OrdinalEncoder().fit(user_data)
encoder.transform([['female', '25-34', 'clerical/admin']])

# array([[0., 1., 1.]]

  • 使用 scikit-learn 估计器。这个估计器使用一个“K 选一”的方案,也称为一键编码或虚拟编码,将类别转换为整数。
from sklearn.preprocessing import OneHotEncoder

user_data = [['male', '18-24', 'clerical/admin'], ['female', '25-34', 'academic/educator']]
encoder = OneHotEncoder().fit(user_data)
encoder.transform([['female', '25-34', 'clerical/admin'],['male', '25-34', 'academic/educator']]).toarray()

# array([[1., 0., 0., 1., 0., 1.], [0., 1., 0., 1., 1., 0.]])

文字嵌入

这些方法——标准化、规范化和分类特征——用于组合特征。它们都依赖于对语言的语义理解。让我们来看看如何阅读基于文本的内容。

自然语言处理(NLP)是人工智能的一个子领域,它使计算机能够理解和处理人类语言。有两种技术可以完成这项任务:对未处理的文本应用词袋模型,并对文本进行预处理,以便稍后使用神经网络模型。

袋字

词汇袋模型是最常用的流程,因为它易于实施和理解。这个想法是为句子和文档创建一个出现矩阵,而不考虑语法或词序。

from sklearn.feature_extraction.text import CountVectorizer

corpus = ["From two former military officers and award-winning authors, a chillingly authentic geopolitical thriller that imagines a naval clash between the US and China in the South China Sea in 2034–and the path from there to a nightmarish global conflagration."]

vectorizer = CountVectorizer(stop_words=None, ngram_range=(1, 1), min_df=1, max_df=1)
# stop_words - Please see the following guidelines before choosing a value for this param: https://scikit-learn.org/stable/modules/feature_extraction.html#stop-words
# ngram_range - Provides the range of n-values for the word n-grams to be extracted. (1, 1) means the vectorizer will only take into account unigrams, thus implementing the Bag-of-Words model
# min_df && max_df - The minimum and maximum document frequency required for a term to be included in the vocabulary

X = vectorizer.fit_transform(corpus)

print(vectorizer.get_feature_names())
'''
['2034', 'and', 'authentic', 'authors', 'award', 'between', 'chillingly', 'china', 'clash', 'conflagration', 'former', 'from', 'geopolitical', 'global', 'imagines', 'in', 'military', 'naval', 'nightmarish', 'officers', 'path', 'sea', 'south', 'that', 'the', 'there', 'thriller', 'to', 'two', 'us', 'winning']
'''

print(X.toarray())
#[[1 3 1 1 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1]]

产生的频率用于训练分类器。请注意,因为不需要对句子进行预处理,所以这种方法会带来一系列缺点,比如结果向量的稀疏表示、理解文本数据的能力差,以及在处理大量文档时性能不佳。

预处理文本

预处理句子的标准顺序是记号化、去掉不必要的标点和停用词、词干化、词条化。

标记化包括把句子变成单词。来自nltk packageword_tokenizer对字符串进行标记,以分离除句点以外的标点符号。

import nltk
nltk.download('punkt') # a pre-trained Punkt tokenizer for English
from nltk.tokenize import word_tokenize

text = "From two former military officers and award-winning authors, a chillingly authentic geopolitical thriller that imagines a naval clash between the US and China in the South China Sea in 2034–and the path from there to a nightmarish global conflagration."

tokens = word_tokenize(text)
print(tokens)
'''
['From', 'two', 'former', 'military', 'officers', 'and', 'award-winning', 'authors', ',', 'a', 'chillingly', 'authentic', 'geopolitical', 'thriller', 'that', 'imagines', 'a', 'naval', 'clash', 'between', 'the', 'US', 'and', 'China', 'in', 'the', 'South', 'China', 'Sea', 'in', '2034–and', 'the', 'path', 'from', 'there', 'to', 'a', 'nightmarish', 'global', 'conflagration', '.']
''' 

不同的包都有预定义的停用词。另一种方法是定义一个与语料库相关的自定义停用词列表。
nltk.download('stopwords') # 2,400 stopwords for 11 languages
from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))
tokens = [w for w in tokens if not w in stop_words]

print(tokens)
'''
['From', 'two', 'former', 'military', 'officers', 'award-winning', 'authors', ',', 'chillingly', 'authentic', 'geopolitical', 'thriller', 'imagines', 'naval', 'clash', 'US', 'China', 'South', 'China', 'Sea', '2034–and', 'path', 'nightmarish', 'global', 'conflagration', '.']
'''

通过去除后缀和前缀,将语料库中的单词缩减到它们的根。词干分析器查找常见后缀和前缀的列表,并删除它们。

from nltk.stem.porter import PorterStemmer #there are more available

porter = PorterStemmer()
stems = []
for t in tokens:    
    stems.append(porter.stem(t))

print(stems)
'''
['from', 'two', 'former', 'militari', 'offic', 'award-win', 'author', ',', 'chillingli', 'authent', 'geopolit', 'thriller', 'imagin', 'naval', 'clash', 'us', 'china', 'south', 'china', 'sea', '2034–and', 'path', 'nightmarish', 'global', 'conflagr', '.']
'''

词汇化与词干化有相同的预期输出:将单词简化为一个公共基或其词根。然而,lemmatizer 考虑到了单词的形态分析,对所有词形变化使用相同的词根。

nltk.download('wordnet') # a dictionary is needed for a Lemmatizer
from nltk.stem import WordNetLemmatizer

lemmatizer = WordNetLemmatizer()
lemmas = []
for t in tokens:    
    lemmas.append(lemmatizer.lemmatize(t))
print(lemmas)

'''
['From', 'two', 'former', 'military', 'officer', 'award-winning', 'author', ',', 'chillingly', 'authentic', 'geopolitical', 'thriller', 'imago', 'naval', 'clash', 'US', 'China', 'South', 'China', 'Sea', '2034–and', 'path', 'nightmarish', 'global', 'conflagration', '.']
'''

图像编码

在进入这个话题之前,你必须了解计算机“看”图像的方式。每个图像被表示为 1 或 3 个像素矩阵。每个矩阵代表一个 通道。 对于黑白图像,只有一个通道,而对于彩色图像,有三个:红、绿、蓝。每个像素依次由 0 到 255 之间的数字表示,表示颜色的强度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

像素值作为特征

从图像中检索特征最简单的方法是重新排列所有像素,生成一个特征向量。对于灰度图像,这可以使用 NumPy: 轻松实现

import skimage
from skimage import data, io # data has standard test images
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline

camera = data.camera() 
io.imshow(camera)
plt.show()

print(camera.shape) # (height, width)
# (512, 512)
features = np.reshape(camera, (512*512))
print(features.shape, features)
# ((262144,), array([156, 157, 160, ..., 121, 113, 111], dtype=uint8))

相同的技术可用于 RGB 图像。然而,更合适的方法是通过使用来自所有通道的像素的平均值来创建特征向量。

import skimage
from skimage import data, io # data has standard test images
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline

astronaut = data.astronaut() 
io.imshow(astronaut)
plt.show()

print(astronaut.shape) # (height, width, no. of channels)
# (512, 512, 3)
feature_matrix = np.zeros((512, 512)) # matrix initialized with 0
for i in range(0, astronaut.shape[0]):
    for j in range(0, astronaut.shape[1]):
        feature_matrix[i][j] = ((astronaut[i, j, 0]) +(astronaut[i, j, 1]) + (astronaut[i, j, 2])) / 3

print(feature_matrix)
'''
array([[65.33333333, 26.66666667, 74.33333333, ..., 35.33333333,
        29\.        , 32.66666667],
       [ 2.33333333, 57.33333333, 31.66666667, ..., 33.66666667,
        30.33333333, 28.66666667],
       [25.33333333,  7.66666667, 80.33333333, ..., 36.33333333,
        32.66666667, 30.33333333],
       ...,
       [ 6.66666667,  7\.        ,  3\.        , ...,  0\.        ,
         0.33333333,  0\.        ],
       [ 3.33333333,  2.66666667,  4.33333333, ...,  0.33333333,
         1\.        ,  0\.        ],
       [ 3.66666667,  1.66666667,  0.33333333, ...,  0\.        ,
         1\.        ,  0\.        ]])
'''

边缘检测

边缘是图像中亮度和颜色急剧变化的一组点。有不同的边缘检测技术,最常用的是 Canny 边缘检测算法。下面是它如何工作的概述:

  1. 使用高斯滤波器降噪
  2. 梯度计算
  3. 非最大值抑制(该算法遍历梯度强度矩阵上的所有点,并找到边缘方向上具有最大值的像素)
  4. 双阈值(将像素分为两类:强和弱)
  5. 滞后边缘跟踪(当且仅当有另一个强像素作为其邻居时,将弱像素转换为强像素)
import skimage
from skimage import data # data has standard test images
import cv2
from matplotlib import pyplot as plt
%matplotlib inline

camera = data.camera() 
# from skimage import color # the image should be grayscale for Canny
# camera = color.rgb2gray(camera) # however this one already is
edges = cv2.Canny(camera,100,200) # thresholds for the hysteresis procedure

plt.subplot(121), plt.imshow(camera, cmap = 'gray')
plt.title('Original Image')
plt.subplot(122), plt.imshow(edges, cmap = 'gray')
plt.title('Edge Image')
plt.show()

不同的项目和团队维护和提供特性的方式可能会有很大的不同。这增加了基础架构的复杂性,并经常导致重复工作。分布式组织面临的一些挑战包括:

  • 特征未被重用
  • 特性定义不同
  • 计算特征需要很长时间
  • 训练和发球不一致
  • 特征衰减未知

为了解决这些问题,一个 特征库 作为一个中心库,用于存储一个组织内的文档化的、管理的和访问受控的特征。

| 特征存储 |
| 名称 | 描述 | 元数据 | 定义 |
| 平均 _ 用户 _ 订单 _ 价值 | 一个用户的平均订单值。 | 为什么将特征添加到模型中,它如何有助于概化,负责维护特征数据源的组织中的工程师姓名,输入类型,输出类型。 | 在运行时环境中执行并应用于输入以计算特征值的版本化代码。 |

本质上,特征库允许数据工程师插入特征。反过来,数据分析师和机器学习工程师使用 API 来获取他们认为相关的特征值。

此外,应对要素存储中的要素值进行版本化,以确保数据分析师能够使用与用于训练先前模型版本的要素值相同的要素值来重新构建模型。给定输入的特征值更新后,先前的值不会被删除;相反,它是用时间戳保存的,表明它是何时生成的。

在过去的几年里,分析师和工程师发明、试验并验证了各种适用于特性工程的最佳实践。在本文中,我们研究了规范化、标准化和分类特性。其他实践包括生成简单的特性、重用遗留系统、在需要时使用 id 作为特性、尽可能减少基数、谨慎使用计数、在必要时进行特性选择、仔细测试代码、保持代码、模型和数据同步、隔离特性提取代码、将模型和特性提取器序列化在一起,以及记录特性的值。

功能工程是一个创造性的过程,作为一名机器学习工程师,你最有资格确定哪些功能适合你的推荐模型。

在本系列的下一篇文章中,我们将专注于构建协同过滤推荐模型,这将是一件轻而易举的事情,因为我们已经解决了特征工程的问题。敬请期待!还有如果有什么问题,可以在Twitter上问我。**

高性能推荐系统剖析——第四部分—

原文:https://www.algolia.com/blog/ai/the-anatomy-of-high-performance-recommender-systems-part-iv/

推荐系统的流行模型和技术

在本系列关于推荐 的第一部分 中,我们谈到了一个高性能推荐系统的关键组件:(1) 数据源 ,(2) 特征工程和特征库 ,(3) 机器学习模型,(4)&5)预测&这里的重点是 3-应用于推荐模型的机器学习。

在我们之前关于 功能推荐 的文章中,我们了解到推荐系统最流行的技术依赖于三种数据源类型:(1)用户元数据——性别、年龄、职业、位置等。(2)关于项目的属性信息——销售书籍的商家可能具有书籍的描述和描述内容、标题和作者的关键字,以及(3)用户-项目交互——点击、查看、交易、评论等。

在本文中,我们将自己构建推荐模型

我们根据处理这些原始数据源的方式对常见的推荐方法进行分类:

  • 基于内容 —内容在推荐过程中起主要作用。正如我们将看到的,项目描述和属性被用来计算项目相似性。

  • 协同过滤 —这些模型利用多个用户提供的评级的协同力量来进行推荐。基本思想是可以计算未指定的评级,因为观察到的评级通常在各种用户和项目之间高度相关。协作过滤主要有两种:

    • 基于用户的——基于用户的协同过滤背后的主要思想是,具有相似特征的人分享相似的品味。
    • 基于项目的 —与基于用户的相反,项目对项目的协作过滤基于项目之间的相似性,使用人们对这些项目的评级来计算。

让我们更深入地研究每一种技术。

基于内容的推荐模型

在基于内容的过滤中,我们根据项目的属性来推荐项目。因此,基于内容的推荐系统的输入由项目内容矩阵中描述的所有属性组成。

基于内容的推荐器的主要假设是,表达了对某个项目的偏好的用户可能会偏好类似的项目。例如,如果我碰巧喜欢漫威的电影,尤其是 2011 年的《绿灯侠》中的瑞安·雷诺兹,我很可能会喜欢《死侍》(2016 年和 2018 年)……更不用说《死侍 3》(据说他们将在 2022 年开拍,耶!)因为他们有同一个演员,他们是同一个电影类型。

条目内容度量(ICM)最能代表条目池的属性,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“1” if the item has the attribute “A”, “0” otherwise.

现在,关键问题是: 我们如何根据两个物品的属性来衡量它们的相似度? 为此,我们在如下矩阵上计算余弦相似度:

| | 属性 1 | 属性 2 | … | 属性 N |
| 第 1 项 | 1 | 0 | … | 1 |
| 第 2 项 | 0 | 1 | | 0 |
| … | 1 | 0 | | 1 |
| 第 N 项 | 0 | 1 | | 0 |

直觉是,如果两个物品向量有很多共同的属性,我们可以假设这两个物品非常相似。数学上,这可以用点积运算来表示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

而几何上,可以表示为两个向量之间的余弦:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以看出,较小的角度(较大的余弦)意味着项目具有较高的相似度。还有另外两个重要的概念将帮助我们构建相似性矩阵:

  • 支持——向量中非零元素的数量。
  • 收缩项 C——用于通过仅考虑与大型支持项目最相似的项目来调整相似性。

这样,使用公式计算相似度矩阵:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在下面,您可以看到我们如何根据众所周知的 电影镜头 数据集计算推荐,该数据集由电影标题和用户提供的标签组成:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

首先,我们计算矩阵中所有样本之间的余弦相似度,并将其保存在一个新的数据帧中,该数据帧稍后将用于返回前 k 个相似电影:

# creating the tf-idf Vectorizer to analyze, at word level, unigrams and bigrams
tf = TfidfVectorizer(analyzer='word', ngram_range=(1,2)) 

# applying the vectorizer on the 'tags' column
tfidf_matrix = tf.fit_transform(movies_df['tags'])

# compute the cosine similarity between all the samples in the matrix
cosine_sim = cosine_similarity(tfidf_matrix) 

# saving the values in a DataFrame for better visualisation
cosine_sim_df = pd.DataFrame(cosine_sim, index=movies_df['title'], columns=movies_df['title']) 

def get_recommendations(movie_id, similarity_df, movies_df, k=10):

# partitions the matrix such that the indices are in the position they would be in a sorted array
ix = similarity_df.loc[:,movie_id].to_numpy().argpartition(range(-1,-k,-1))

# gets the corresponding movie titles for k+1 sorted indices    
closest = similarity_df.columns[ix[-1:-(k+2):-1]] 

# removes the queried title from the results
closest = closest.drop(movie_id, errors='ignore')    

# returns top k most similar movies
return pd.DataFrame(closest).merge(movies_df).head(k) 

最后,获得推荐非常简单:

x = 'Superman (1978)'

# get recommendations for the given x title
y = get_recommendations(x, cosine_sim_df, movies_df[['title', 'tags']])

这个基本的基于内容的推荐算法将产生以下结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

相似度矩阵的问题在于它非常密集(计算量大),相似度值非常小,这在数据中引入了大量噪声,从而降低了推荐的质量。为了解决这个问题,我们可以使用 K-最近邻算法(KNN),这是一种在相似性矩阵中只保留 K 对最相似的项目的方法。

from sklearn.neighbors import NearestNeighbors

# Create the unsupervised learner with k=10 and train it on our data
knn = NearestNeighbors(n_neighbors=10).fit(cosine_sim_df)

def get_recommendations(movie_title, similarity_df, movies_df):

# Get the indices of the neighbors of the queried movie
ix = knn.kneighbors(similarity_df[movie_title].to_numpy().reshape(1, -1), return_distance=False)

# Get the titles of the corresponding indices
closest = similarity_df.columns[ix].flatten()

return pd.DataFrame(closest,columns=['title']).merge(movies_df)

相同的查询,使用与上面相同的代码,将产生以下结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在上面的基本例子中,我们只考虑了 1 个属性,即 标签。 基于内容的算法可以通过包含更多的非二进制属性如片名、演员、流派等得到极大的改进。

协同过滤推荐模型

协同过滤方法的主要思想是通过观察来自其他高度相关的用户和已经给出评级的项目的评级来推断用户没有明确给项目的评级。它们不需要任何项目属性就能工作,而是依赖于用户社区的意见。

协同过滤推荐系统的输入是用户评级矩阵(URM),它包含所有用户对项目的评级:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

the rating user U gave to item I, “0” if no rating was given

例如,用户评级矩阵中的交互可以是明确的评级。显式评级意味着用户明确地陈述了他或她对某个项目的意见。显式评级的一个例子可以是用户给一个项目的星级数。如果没有用户对某个项目的评分,则 URM 中的相应值为 0。

| | 第一项 | 第二项 | … | 第 N 项 |
| 用户 1 | 1 | 3 | … | 1 |
| 用户 2 | 2 | 4 | | 4 |
| … | | | | |
| 用户 N | 3 | 5 | | 2 |

URM 中描述的另一种类型的交互可以是隐式评级。隐式评级只是说明用户是否与某个项目进行了交互,因此只有两个值:0 或 1。1 表示用户与项目进行了交互,而 0 表示没有信息。

原则上,可以设计一种算法,既可以使用显式评级,也可以使用隐式评级。最简单的算法被设计成只处理两种类型中的一种:隐式或显式评级。

尽管有不同类型的协同过滤技术,下面我们将介绍基于用户和基于项目的技术。

基于用户的协同过滤

当我们想向一个用户做推荐的时候,基于用户的协同过滤可以用来搜索其他有相似品味的用户,并推荐那些用户最喜欢的商品。

因此,第一个问题是找到一种方法来衡量用户之间的相似性。我们如何衡量这种相似性?

我们从查看用户的评分开始,并根据这些评分来比较用户的口味。如果两个用户对几个项目给出了相似的评价,我们可以假设这两个用户对这些项目有相同的意见;如果他们在很多项目上有相同的观点,我们可以假设这两个用户是相似的。

我们根据用户的评级计算用户之间的相似性,并创建一个相似性矩阵,其中行 i 和列 j 的值是用户和用户之间的相似性得分

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了计算两个用户之间的相似度,我们使用余弦相似度。为了计算的目的,我们将同时计算一个用户和所有其他用户之间的相似性:

# create URM

URM = np.zeros((num_users, num_items), dtype=int)

for _, row in data.iterrows():
   URM[row['user_id'] - 1, row['item_id'] - 1 ] = row['rating']

# find the most N similar users to the current one (we picked N to be 3)

def similar_users(user_id, URM, N = 3):
   number_of_users = URM.shape[0]

# create the list of other users (take all users ids and then remove the id for the current one)
   other_users_ids = np.array(range(number_of_users), dtype=int)
   other_users_ids = np.delete(other_users_ids, user_id).tolist()

# take the ratings made by the current user
   user = URM[user_id].tolist()

# iterate through all the other users ids and compute the similarity to the current user
   other_users_similarity = []

   for other_user_id in other_users_ids:
     other_user = URM[other_user_id].tolist()
     other_users_similarity.append(cosine_similarity_pair_of_users(user, other_user))

# create a dictionary with the user indexes and their similarity
   index_similarities = dict(zip(other_users_ids, other_users_similarity))

# sort by the similarity
   index_similarity_sorted = sorted(index_similarities.items(), key=lambda x: x[1], reverse=True)

# get the first N users and their similarity
   top_user_similarity = index_similarity_sorted[:N]

# get the ids for the top N users
   top_user_ids = [usr[0] for usr in top_user_similarity]

   return top_user_ids

此时,识别给定 user_id 的相似用户是简单的:

# for example we take the user with the id 48
example_user_id = 48
top_similar_users = similar_users(example_user_id, URM)

下一步是实际定义要推荐给我们用户的前 K 个项目。一旦我们确定了最相似的用户,下面的代码就可以做到这一点:

def recommend_topK_items_for_user(user_id, similar_users_ids, URM, topK = 5):

   # get the similar users ratings
   similar_users = URM[similar_users_ids]

   # compute the average rating for every item rated by the similar users
   average_ratings = similar_users.mean(axis=0)

   # get the current user
   user = URM[user_id]

   # transpose it
   user_transposed = user.transpose()

   # get the items ids where the rating is 0 (the user didn't rate the item)
   items = np.where(user_transposed == 0)[0]

   # get the similar users ratings for the unrated items by the current user
   similar_users_ratings = similar_users[:, items]
   average_ratings = average_ratings[items]

   # order the items by the average of their ratings
   item_indexes = np.argsort(average_ratings)[::-1]

   # get the top k items indexes
   top_items_index = item_indexes[:topK]

   return top_items_index.tolist()

最后一步是生成基于用户的推荐,并将它们与分级电影进行比较:

recommended_items = recommend_topK_items_for_user(example_user_id, top_similar_users, URM)

# items rated by the user
user_ratings = URM[example_user_id]
items_rated = np.where(user_ratings != 0)[0].tolist()

items_info.loc[items_info['movie_id'].isin(items_rated)]

# recommended items for user
items_info.loc[items_info['movie_id'].isin(recommended_items)]

基于项目的协同过滤

在基于项目的协同过滤方法中,为了预测用户对目标项目的评分,我们必须确定与目标项目最相似的项目集。这个想法是根据有多少用户对每一对商品进行了评价来计算它们之间的相似度。然后,我们使用用户在该项目中指定的评级来预测他或她是否会喜欢目标项目。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,第一步是计算项目之间的相似度,如下所示:

def similar_items(item_id, URM, topK = 5):
   # get the current item
   item = URM[:, item_id].tolist()

   # get all the other items
   number_of_items = URM.shape[1]
   other_items_ids = np.array(range(number_of_items), dtype=int)
   other_items_ids = np.delete(other_items_ids, item_id).tolist()

   # compute the similarity between the current item and the other items
   other_items_similarity = []

   for other_item_id in other_items_ids:
     other_item = URM[:, other_item_id].tolist()
     other_items_similarity.append(cosine_similarity_pair_of_items(item, other_item))

   # create a dictionary with the item indexes and their similarity
   index_similarities = dict(zip(other_items_ids, other_items_similarity))

   # sort by the similarity
   index_similarity_sorted = sorted(index_similarities.items(), key=lambda x: x[1], reverse=True)

   # get the first K items and their similarity
   top_item_similarity = index_similarity_sorted[:topK]

   # get the ids for the top K items
   top_item_ids = [itm[0] for itm in top_item_similarity]

   return top_item_ids

就像基于用户的协同过滤一样,在这个阶段,项目之间的相似度可以计算如下:

example_item_id = 29
recommended_items = similar_items(example_item_id, URM)

最后,获取推荐:

example_item_id = 29
# recommended items
items_info.loc[items_info['movie_id'].isin(recommended_items)]

在了解了协同过滤的工作原理之后,你可能还有一些悬而未决的问题,比如:

  • 基于项目的推荐和基于用户的推荐有什么区别?
  • 基于内容的推荐和基于项目的推荐有什么区别?

要回答这些问题,我们需要看看相似性是如何计算的——余弦相似性公式可以适用于从用户评级矩阵或 URM 开始计算用户之间的相似性和项目之间的相似性。 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

考虑到项目之间的相似性,解决问题的方法与我们看到的基于内容的过滤技术相同。在基于内容的过滤中,我们可以根据用户以前喜欢的内容向他或她推荐项目。通过考虑属性来测量相似性。如果两个项目有很多共同的属性,我们可以说这两个项目是相似的。

在不知道属性的情况下,是否可以衡量物品之间的相似度?

是的,我们不需要知道任何关于项目的属性,因为我们可以计算我们的相似性矩阵,知道来自用户评级矩阵或 URM 的评级。

进一步分类推荐方法

基于内存与基于模型

到目前为止,我们已经将基于记忆的技术用于我们的协同过滤算法,在该算法中,我们基于用户相似性来预测评级。它们在生产中直接使用用户评级矩阵或 URM 的评级,并且更易于实施。

然而,在协同过滤中还有第二种常用的技术:基于模型的方法。

基于模型的技术在计算建议时并不依赖于整个数据集,而是从数据集中提取信息来构建模型。这些技术需要两步进行预测:(1)第一步是建立模型;(2)第二步是使用将第一步中建立的模型和用户简档作为输入的函数来估计评级。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们在系统中有了一个新用户会怎么样?

在基于记忆的技术的情况下,我们需要将新用户添加到 URM,并重新计算新用户和所有其他用户之间的相似性。这个操作的计算量很大,我们只能向模型中的用户提出建议。

在基于模型的技术的情况下,如果 URM 足够大,我们不需要将用户添加到 URM。我们不必重新计算相似性矩阵;它可以每天更新一次,也可以每周或每月更新一次。因此,我们甚至可以向不在模型中的用户进行推荐。

杂交

至少,混合推荐系统结合了一种协同过滤技术和一种基于内容的技术。然而,我们可以通过整合任意多的技术来构建一个混合推荐系统。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以使用几十种不同的方法来构建混合推荐系统,所有这些方法可以大致分为五类:

  • 线性组合 在这种类型的混合系统中,每种算法都是以现成的方式使用,也就是说每种算法都是按原样使用,不做任何修改。事实上,只有它们的输出被用于提供组合预测。这种结构允许算法及其并行执行的简单组合。例如:我们可以构建基于内容的算法 A 与协作算法 b 的组合。注意所使用的不同类型的输入数据:算法 A 使用 ICM,算法 b 使用 URM

  • 列表组合一种简单而有效的方法是使用循环法:以循环的方式从每个列表的顶部开始选择项目。

  • 流水线操作 流水线操作包括链接两个或多个算法,使得一个算法的输出等级作为输入被馈送到流水线中的下一个算法。例如,让我们考虑一个通用推荐算法 a。该算法可以将 URM 或 ICM 作为输入数据。 建立模型后,我们能够计算一些估计的评分。在流水线方法中,用算法 A 估计的评级可以用来丰富现有的用户评级矩阵。这个丰富的用户评级矩阵成为第二算法 B 的输入。结果是估计评级的最终矩阵。算法 A 的输出必须通过使用从我们希望为算法 b 充实的 URM 中获取的用户简档来计算。流水线的一个实际应用是使用基于内容的过滤算法作为第一阶段来充实用户评级矩阵,该矩阵随后被协作过滤算法使用。【T9

  • 合并
    在某些情况下,算法 A 的模型可以与算法 B 的模型相结合,得到一个新的模型用于推荐。只有当模型具有相同的结构时,我们才能使用这种方法。例如,我们可以将基于 ACF 项目的算法 A 与 CBF 算法 B 合并:第一个模型接收 URM 作为输入,第二个模型接收 ICM。重要的是两个型号是同一类型的。因此,不可能将协作算法的相似性矩阵与矩阵分解算法的因子矩阵合并。

  • 联合训练
    最后一种混合方法基于联合训练。它类似于合并方法,不同之处在于,对于共同训练,合并的模型是在训练阶段直接获得的,并且算法 A 和 B 必须一起训练。

因式分解机

因式分解机器算法是一种通用的监督学习算法,可用于分类和回归任务,使其成为一种有吸引力的协作过滤方法。我们算法的输入被构造成一个表,其中所有的列,除了最后一列,都被分组。例如,我们有两个组:用户和项目。每个组对应于 URM 的一个维度。这些列代表数据集的特征。最后一列包含用户对项目的评级,这使得它成为推荐系统场景中的预测目标。

【T2外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了表示用户和项目,我们使用一个热编码。使用这种方法,我们为每个用户和项目分配一个列。通过将适当的列设置为 1 并将所有其他列设置为 0,我们可以选择特定的用户和特定的项目。 例如,第一列可能是 URM 的第一个用户,第二列可能是第二个用户,依此类推。通过将第一列设置为 1,将其他列设置为零,我们选择了第一个用户。类似地,在项目组中,如果我们将第一列设置为 1,而将其他列设置为零,则我们指定第一个项目。

与 URM 相比,这种格式使用更大的表,表中有更多的零,这使得表比 URM 更稀疏。根据这种表示,对于 URM 中的每个交互,我们在表中插入一行。例如,如果 URM 有 1000 个交互,我们应该在表中插入 1000 行。一旦我们定义了因式分解机的数据结构,我们就可以开始研究用于估计未知收视率的模型。

如何选择最好的推荐手法?

尽管我们希望有一个通用的推荐系统能适应所有的现实生活场景,但更现实的想法是拥有一系列推荐模型,每一个都有特定的用途。

例如,如果你是一家电子商务企业,你可能希望使用协同过滤技术来提供基于项目的推荐,就像我们提供的 Algolia 推荐 。然而,如果你是一家拥有数字出版物的媒体公司,提供基于内容的推荐可能更有意义。

或者,如果你正在寻找个性化推荐,那么基于用户的协同过滤是一个不错的选择。此外,当可伸缩性成为一个问题时,决定基于模型还是基于内存的技术更多的是一种技术考虑。

大多数情况下,混合方法是最佳策略,对于拥有能够迭代和微调推荐模型的机器学习团队的公司来说,这显然是一条出路。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Recommender Systems Cheat Sheet

在本系列的下一篇博文中,我们将关注各种推荐系统可以通过它们生成的预测来促进的行动。敬请期待!如有疑问:https://twitter.com/cborodescu

推荐和用户操作

原文:https://www.algolia.com/blog/ai/the-anatomy-of-high-performance-recommender-systems-part-v/

建议和用户操作

在本系列的前几篇文章中,您学习了,如何使用 正确的数据源 ,如何 设计它将从中学习的正确特性 ,以及有哪些 工业级推荐模型和技术

现在你已经有了一个可靠的推荐模型,是时候回到你的用户身边了。为什么用户甚至会在意推荐?在这里,从一些角度来看用户在网上导航时必须做出的越来越复杂的决定是有好处的。

引用网飞的研究:

“人类在生活的各个方面都面临着越来越多的选择——当然是在视频、音乐和书籍等媒体方面,但更重要的是,在健康保险计划、治疗和测试、求职、教育和学习、约会和寻找生活伴侣以及其他许多选择非常重要的领域。

“我们相信,推荐系统领域将继续发挥关键作用,利用现有的丰富数据使这些选择变得可管理,有效地引导人们选择真正最好的几个选项进行评估,从而做出更好的决策。”

卡洛斯·a·戈麦斯-乌里韦&尼尔·亨特。2015.网飞推荐系统:算法、商业价值和创新

我们已经到达了这样一个点,选择的数量让瘫痪。以 YouTube 为例:现在有 82 年的视频内容每天上传到他们的目录。作为一个用户,我甚至从哪里开始为我*将会重视的 gem 探索这一堆内容呢?
*

在我们系列的一开始,我们就着手“ 筛选出用户的选择,并根据他们的要求或喜好为他们提供最合适的建议 ”。一旦你手头有了一个高性能的推荐系统,是时候充分利用它可以生成的预测,在一个战略性的时间和地点向你的用户展示它们,以建议要采取的相关 行动

**## 你能从高性能推荐系统中得到什么

正如我们在上面网飞的引文中所看到的,对人类来说,能够独自在他们面对的网上选择的海洋中航行已经太晚了。因此,推荐系统的兴起是由商业需要驱动的:如果人们很难做出选择来访问你的内容,并且如果你有足够的数据来帮助他们做出正确的选择,那么你会因为 而不是 帮助他们而失去业务。

什么样的推荐可以帮助你的用户充分利用你的服务?在本系列的 第四部分 中,我们看到不同的推荐器模型可以提供不同种类的推荐:

从用户的角度来看,在每种情况下,他们都获得了 浏览快捷方式 :取代用户随机浏览一段时间,希望最终偶然发现正确的项目,高性能的推荐者可以直接为他们指出旅程的目的地。

不仅如此,用户还获得了 新的机会 :登陆这个页面的人可能不知道他们可能对一些相关项目感兴趣。这些预测可以让你扩大用户对你能提供的内容的接触,帮助他们充分利用大量的选择。

这使得企业能够为用户提供数量惊人的新内容,同时帮助他们理解这些内容:如果我们回到 YouTube 的例子,82 年来每天都有新内容出现,平均会话长度仍然很长—13m平均 。因此,YouTube 用户的参与度很高,月活跃用户 20 亿,其中1.22 亿** 为 日活跃用户 。**

**同样, 抖音在这一点上非常出色 :你开始观看任何种类的内容,你的互动告知系统你的兴趣。如果你表示对烹饪视频感兴趣,随着系统学习迎合你当前的口味,你可能会突然在你的提要中看到很多这样的视频。

鼓励行动:展示用户如何从战略建议中获利

在上一节中,我们已经看到了为什么有很多产品的企业对公开工业级推荐以帮助他们的用户有着至关重要的兴趣。然而,这不仅仅是把推荐信硬塞给他们。让我们举一个极端的例子,一个脱销的产品页面显示你的前 500 个相关商品作为备选:即使有一个高性能的系统,用户也不太可能滚动浏览它们。

我们如何从 获得好的推荐展示战略推荐?T52

把推荐当成一种手段而不是目的:推荐是你让用户参与进来的方式,但是 行动 是你引导他们的目标。因此,一份好的推荐信应该是:

  • 有限公司
  • 上下文
  • 省力

限定

只显示一个****相关的** 项。**

**人们很容易被诱惑去展示更多的选择,认为这只能提供更多的机会。然而,这种直觉很容易被推翻,而且有一个 的研究机构 证明,少量的选项(3-6)可以比大量的选项(10-24)转换高达 10 倍。我们在这里是为了帮助用户过滤不相关的选项,而不是为了带回太多信息的综合症,我们已经开始着手解决了!

语境

一个推荐物品此时此地应该有用。

推荐的价值来源于它在当前时间和地点为当前用户提供了多少服务;这种直接的相关性使得上下文意识成为提供优秀推荐的一个重要方面。

这里有一些例子

  • 产品登陆页面上,用户在购物车 中添加了一件商品后,用户想知道 中是否有他们需要 购买的所有商品。这正是时候推荐 补充, 经常一起买的 产品一键添加到购物车 按钮
  • 另一方面,在一个产品登陆页面上,用户正在 寻找其他选项 来解决同样的需求;推荐 替代, 相关产品 带链接看其详情 肯定会带来更多价值。
  • 一个视频播放完 后,强烈推荐相似的视频不太可能令人满意;最好推荐那些经常一起看的内容,最大限度地提高用户参与度。
    ** 在某个类别的登陆页面上 ,用户正在寻找灵感或者一个新的想法;因此,显示具有该类别最佳推荐的轮播,例如,通过向该类别 中的最畅销者显示 相关产品 ,可能在将首次访问者转化为顾客方面表现良好。*

*### 省力

只有在为用户节省时间并帮助他们实现目标时,推荐才有价值。

  • 一方面,这意味着你需要 保守 :推荐变化多端的内容,虽然增加了意外收获,却带来了用户受挫的风险。设身处地为用户着想,以初学者的视角浏览服务,并想知道:“这些推荐能帮助我更好地实现目标吗?”
  • 另一方面,这意味着你可以 创新 :推荐在很多方面都很有用,不仅仅是作为你网站上的旋转木马。将这样的推荐反馈到营销平台和你的内容管理系统等其他工具中,会释放出很多价值。例如:
    • 邮件活动 ,如 SendGrid :您可以根据相关建议定制您的邮件。这可以把普通的每周电子邮件变成动态的、高度相关的时事通讯!
    • 营销自动化 n ,例如,Shopify :您可以让您商店中的应用程序利用来自 Algolia 的预测,将这些用户/商品洞察与您现有的商品和促销内容相结合,从而提高您当前 Shopify 应用程序的实用性。
    • CRM 集成,例如 HubSpot :您可以通过对潜在感兴趣的服务进行分段推荐来扩充客户的资料,以通知您的销售团队在下次致电时提出正确的新功能。
    • 像 Segment 或 BigQuery 这样的数据平台:从这些平台你可以使用生成的推荐来 扩充你自己的数据。

如果您遵循这些指导原则,您可以相信,您从系统中获得的可靠建议会有效地为您的用户服务。

推荐系统可能只需要数据和算法,但推荐系统本身并不能让用户满意。决定如何利用其 推荐 ,通过在正确的时间向正确的人建议正确的 行动 来最大限度地提高用户的满意度,这是让这种高性能推荐系统为您的用户群服务的关键,并最终使为您的业务充分利用推荐

我们如何衡量你的推荐是否成功?

在这篇博文中,我们了解了什么是好的推荐,用户可以根据它们采取哪些行动,以及它们如何最好地服务于你的用户,以指导他们在你的服务中的行动。要了解 Algolia 推荐,从这里开始或查看我们的推荐 API 文档

但是我们怎么知道这是正确的行动呢?您如何根据您的业务指标来衡量您的建议的有效性?一个人如何避免为了的短期表现而优化 的长期商业目标 【确保这个用户不会在一次又一次深夜狂看会议后取消他们的会员资格?)

请继续关注本系列的下一部分——结果和评估,深入了解在您的产品中利用推荐系统的这些关键方面!

如果你想继续对话,在推特上联系保罗-路易:【https://twitter.com/PaulLouisNech】*******

强大的应用内搜索的优势

原文:https://www.algolia.com/blog/ux/the-benefits-of-powerful-accurate-in-app-search/

你终于找到了。那个送餐应用。app store 中现在有了应用名称。

兴奋——更重要的是,饥饿——你下载它。

点击 iPhone 主屏幕上的搜索栏,你开始输入你最喜欢的泰国餐馆的名字。这个应用程序中唯一的一个。你迫不及待地想尝尝他们令人垂涎的泰国菜。

您等待自动完成功能立即给出餐馆的全名。

没事。

你再试一次——你拼错他们的名字了吗?他们有没有变成融合泰式/汉堡的地方,改了名字?他们被 app 甩了吗?

还是一无所获。

失望之余,你浏览了应用程序的其他餐厅。

然后你会看到这个地方,坐落在众多泰国美食中。

管它呢。

糟糕的应用内搜索令人扫兴

没有什么比像这样糟糕的苹果搜索体验更令人沮丧的了。

可悲的是,在应用程序中搜索的乏味体验比你想象的更普遍,因为许多应用程序仍然在昨天的搜索技术上蹒跚而行。考虑到近 60%的在线搜索是在手机应用程序占主导地位的 等移动设备 上进行的,这尤其是个问题。

一个时髦的应用搜索引擎可能会让搜索者失望,带来与他们想要的无关的内容,或者不适应他们输入了一个小的打字错误或拼写错误的事实。从短期来看,这只会惹恼用户,他们可能会叹口气,将徽标从移动设备的屏幕上滑掉。但随着时间的推移,如此糟糕的性能可能会大大消耗应用程序的受众。

什么是强大的应用内搜索?

出色、准确的应用内搜索 提升了应用用户的体验 ,同时为商业领袖提供了他们取得成功所需的电子商务工具。

说到搜索,最好的应用程序的特点包括:

  • 无与伦比的速度: 提供即时结果的高性能算法
  • 洞察 揭示你的客户如何使用应用
  • A/B 测试
  • 高安全性: 为您的数据提供强大、安全的环境
  • 可扩展性: 持续强劲的性能,即使您不断增长

无论你是在苹果应用商店还是 Google Play 提供应用内搜索,有效的应用内搜索都能帮助你的用户快速找到最好的内容。有了最先进的搜索,你的应用程序可以提供更准确的搜索结果,提供 卓越的客户体验 ,快速跟踪用户的在线旅程。

应用内搜索用例

应用搜索引擎可用于增强多种流行类型的应用,包括:

  • 约会。应用内搜索帮助约会者管理大量可能的匹配对象,并(希望如此)与潜在客户一起喝咖啡,直到他们找到那个人。当他们进入他们的 deets,他们期望被引导到他们的梦想的正确的男人或女人。如果这种情况没有发生,他们可以放弃这个应用程序,转而使用另一个应用程序。
  • 送餐。 需要甜甜圈吗?自从 COVID 以来,送餐应用一直处于全盛时期,满足了那些太懒或不能离开家的人的用餐需求。大多数送餐应用都允许你使用应用内搜索来锁定特定的餐馆或按食物类型进行搜索。
  • 社交。对话和虚拟朋友可以在 WhatsApp 这样的社交媒体应用中叠加。好消息是,通过输入相关的搜索词,您可以快速浏览界面,了解谁在做什么。
  • 音乐。例如,使用 Spotify 应用程序,你可能会对你的老播放列表或歌曲感到厌倦。你可以打破常规,使用搜索框输入几个字符,找到一个新的播放列表或流派,如“conc”,它会带来平静的曲调,便于集中注意力和学习。
  • 运输。 一个常见的例子:使用拼车应用的搜索引擎来叫出租车。当像这样的应用程序顺利工作时,很容易输入你的目的地,如果幸运的话,看着地图,司机似乎被卡住了,转过身,但仍然出现在前面。
  • 新闻。 想了解政坛最新动态?应用内搜索帮助你涉水通过总是溢出的大量突发事件,而不会被有趣的点击诱饵分心。

强大的应用内搜索有什么好处?

一流的应用搜索引擎会让传统的网络搜索功能显得过时或落伍。以下是实施深思熟虑的应用搜索对企业的一些好处:

精确搜索结果

一个成功的应用搜索引擎能提供可靠、相关的搜索体验。与传统搜索相比,这些算法运行更快、更准确,并具有生成定制结果页面的预测功能。拼写错误和拼写错误都被考虑在内,而搜索查询建议很可能会引导用户顺利通过应用程序。与强大的搜索引擎(谷歌)一样,该软件似乎能读懂搜索者的心思。

【保持竞争力】

人工智能支持的搜索已经成为最好、最成功的应用程序的行业标准。如果你能向消费者提供这种水平的性能,你就比那些不能或不愿多做一点的竞争对手领先一步。

留住用户

就应用程序而言,就像网上做生意的许多其他方面一样,留住客户比吸引新客户成本更低。就营销和销售支出而言,吸引新客户的成本可能是保持现有客户的五倍,因此与用户建立持久的积极关系是值得的。此外,与新客户相比,现有客户尝试新产品的可能性要高 50%,因此您当前的客户群可能会产生更多的销售额。所有这些都意味着可靠的应用内搜索可以帮助你获得更高的用户留存率。

收益更高

毫不夸张地说,出色的应用内搜索体验可以大幅提高你的底线。你的用户界面就是一切,设计或执行不好的搜索功能几乎肯定会导致用户放弃或删除你的应用。即使是一次糟糕的体验也会让用户望而却步,这还不算他们第一次使用你的糟糕应用时警告别人而不是赞美它的影响。投资于最新的人工智能搜索是让人们想要并多年保持忠诚的一个关键途径。

应用内搜索的状态

就像用网络浏览器搜索网页一样,应用内搜索从早期开始已经走过了漫长的道路,应用开发者已经利用了许多奇妙的新功能。这项技术现在由人工智能提供支持,正如你可能知道的那样,如果你使用谷歌搜索或在亚马逊购物,它可以模拟和预测人类互动,并可以从人们输入的搜索词中学习。一个现代的应用内搜索引擎提供了快速、直观的体验,提供了正确内容的快捷方式,同时产生了潜在的有价值的商业洞察力。

你的搜索结束了

需要最好的搜索引擎来为你的应用带来新的收入吗?借助我们的 强大的搜索 API ,您的开发者可以在您的应用环境中优化和构建任何搜索体验。

有了 Algolia,你得到:

  • 相关的个性化结果,帮助用户从第一次击键开始
  • 为搜索优化的索引
  • 帮助您利用隐藏机会的分析见解
  • 强大的安全性保护您的数据
  • 随着增长而扩展的能力

开始使用 Algolia 免费的联系我们 将你的应用搜索界面变成你的用户喜欢的东西,更重要的是,喜欢使用它来购买你的产品或服务。

庆祝组织——为什么庆祝成就很重要—

原文:https://www.algolia.com/blog/algolia/the-celebration-organization/

我是 Algolia 的一名经理,我的职责是帮助我的团队选择正确的行动,并在安全的环境中正确执行。举行庆祝活动是一个很好的工具,可以引导我的员工走向成功,并让他们继续前进。在这篇博文中,我将告诉你为什么、做什么以及如何庆祝,以在你的组织中培养一种向上的文化,关注成就。

文化集标准

文化塑造工作场所的心态和行为。Reward Gateway 公司的一项研究发现,近 70%的员工希望他们的公司做更多的事情来激励他们。接受调查的美国员工提到的最主要的两个原因是缺乏认可和感觉被忽视/被低估。公司的文化决定了管理者是否以及如何认可或激励他们的报告。

消极情绪不仅限于美国人。例如,我是法国人,从我的个人经历来看,我们法国人倾向于关注不好的方面,而不是好的方面。以研究幸福社会学而闻名的巴黎大学教授克劳迪娅·塞尼克说,法国人被他们的文化教育得悲观。她 发现 大多数法国人的不快乐可以用“心态”和“文化”来解释(除了通常的社会经济决定因素),而不是外部环境。

几年前的一个故事说明了这一点。我就职于一家以关注员工而闻名的公司。这家公司位于另一个国家,所以我远离家人,脾气暴躁。一位工程总监在去开会的路上,注意到我拉长了脸,于是他停下来和我击掌。我从未和他共事过,我们以前几乎没说过话。这一举动太出乎意料了,以至于那天剩下的时间我都在咯咯地笑。通过击掌——就像所有的实践经验一样——我知道有东西要学:

  • 即使是最小的庆祝也能振奋人心:一个微笑,一封祝贺的电子邮件,一张手写的便条,在同事面前说一句“干得好”。或者击掌庆祝。
  • 管理者是团队文化的销售人员,也是整个公司内部的销售人员。环顾四周。如果你看到一些奇怪或令人担忧的事情,不要犹豫:作为一名经理,你有责任向他人伸出援手——即使是那些不属于你团队的人。

庆典福利

表扬个人会增强他们的自尊,因为他们看到自己在团队中的价值得到认可,他们工作的意义得到确认。最忠诚的员工表现更好,离开组织的可能性更小。

团队看到所有值得表扬的人,而不仅仅是最资深/有价值/速度快的球员。我们都在一起,公司/经理/同事的认可应该反映这一点。

项目可能会有长达数月的目标,有时与日常活动或个人发展相去甚远。庆祝经常提醒我们,持续的进步来自于一小步一小步,即使是日常活动。

通过认可你的同事的工作和其他团队的成功,包括其他部门的成功,你可以建立纵向的信任和横向的关心,这将使你和你的团队在整个组织中可见。

庆祝什么

为了创造积极的心态,有很多事情值得庆祝

  • 超越期望的人
  • 团队成员克服挑战,无论是否意外
  • 很棒的客户反馈
  • 早年的贡献者需要因成功的小步骤而得到认可
  • 体现公司文化的人
  • 帮助或影响整个组织的其他团队的同事
  • 个人生活中的事情(如家庭、艺术、体育)
  • 重大举措
  • 迅速而有规律地做家务
  • 富有成效的合作/会议

庆祝失败怎么样?

经理必须确保他们的团队成员能够尝试并有远大的目标,提供一个安全的空间是一件好事。会有几个失球,红色 OKRs,没关系。然而,承认冒险、家务和学习与给人一种没人关心结果或没人负责的感觉之间只有一线之隔。我相信我们应该帮助团队继续前进,不是庆祝失败,而是庆祝对失败的伟大反应。

如何以及在哪里庆祝

我们文化配方中的一个关键成分是我们称之为#庆典的 Slack 频道,每个员工都参与其中。我们鼓励每个人——不仅仅是经理——去那里向其他人表示敬意,庆祝同事的生日或获得一份大合同。经营一家公司是一项团队运动,我们关心其他参与者。在平常的一天,我们在那个频道有 1 到 5 场庆祝活动,一群人为每一场庆祝活动欢呼。此外,我们还会在每周的全体活动中讨论重大成功案例。

定期的团队活动(如每周同步)或内容(如邮件摘要、公告板)也是表扬团队成员的好地方。在回顾中收集庆祝活动是一个很好的激励因素:它有助于团队概念化什么是好的结果和伟大的行为,它创造了承认优点的集体努力,特别是来自其他团队的优点。

请务必将这些庆祝活动记录在笔记中,因为它们是 1-1 中绩效评估和讨论的重要材料。讨论庆祝活动可以帮助员工找到复制同事成功条件的方法。它可以确保你的经理知道你的庆祝和认可,它可以准备甚至开启关于加薪或晋升的讨论。理想情况下,员工希望在讨论开始前就知道所有的事情。

发布早&发布常开发者信奉的口头禅也适用于 kudos:等待重大进展或项目结束后再庆祝会为你的反馈创造一个隧道效应。

当一个人很长时间没有受到表扬——比如超过四分之一——这可能是一个信号,表明你必须问自己一些问题:作为一名经理,你足够关心吗?你错过了什么吗?你的团队如何评价自己的表现?他们觉得被授权/被引导了吗?他们需要做些什么才能从一般或很好变得很棒?

不适合大家

对一些人来说,成为焦点可能会很麻烦。在她的帖子 中,Lara Hogan 强调了一些人可能对公众的认可不放心,需要根据他们的条件来获得认可。你必须找到其他合适的方式来庆祝:想想手写的便条、专为他们打印的 3D 小物件,或者他们最喜欢的食物——这对偏远的团队也很有用。这一切都是为了让他们能够享受这一刻,而不是感到非常不舒服。

欢庆是关爱,这是我们 DNA 的一部分

如果你正在寻找一份新工作,并对在一个授权和认可是企业文化重要组成部分的环境中工作感兴趣,请前往https://algolia.com/careers,我们一直在寻找聪明善良的人来进一步推动我们的产品。并击掌庆祝。

数字商品销售的变化|

原文:https://www.algolia.com/blog/ecommerce/the-changing-face-of-digital-merchandising/

这一分为二的专题深入探讨了数字商品销售的转型之旅,以推动积极的电子商务体验。第 1 部分根据我们的客户以及他们如何考虑开发他们的销售策略,揭示了最重要的销售任务。第 2 部分将解构推动业务成果所需的卓越数字销售平台的核心组件。

在封锁期间,网上购物激增,但此后需求模式发生了很大变化。作为观察到的主要趋势的一部分,消费者已经重新回到商店,同时继续期待出色的数字体验。通货膨胀仍然居高不下,全球经济形势依然动荡,所有这些都影响着购物行为。除了寻找最划算的交易之外,还有一种越来越明显的趋势,那就是将他们的购买分散到几家网上商店。

这为在线零售商创造了一个复杂的等式,现在比以往任何时候都更需要 提高盈利能力是关键 。这种业务需求需要得到公司所有职能部门的支持,在公司中,所有员工都在建立并优先考虑他们的目标,以获得更多收入、更好的运营效率和更少的支出。一个比其他行业更迫切需要转型的特殊行业是数字营销。

为什么?数字销售商有能力影响几乎整个网上购物过程。他们的战略和活动推动业务成果。以至于他们的角色已经从内容网站管理员转变为多渠道产品发现战略家。他们在购买过程中创造的体验对业务有直接影响。首先,让我们看看这个小组的首要任务是什么。

按重要性排列的销售任务

根据 Algolia 最近进行的一项调查,以下是我们客户群中的业务员根据价值和重要性排列的前 7 项任务。不足为奇的是,虽然“物品可查找性”排在首位,但我们还发现,优先级因业务规模和阶段而异,例如,“在全球扩展的同时与本地相关”对 SMB 公司来说不太重要(与企业同行相比,SMB 公司可能不在全球范围内运营)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Top 7 tasks ranked by value and importance.

相反,他们最常见的挑战是:

  • 产品量/品类 创造了新的可扩展性挑战
  • 营销能力差 缺乏高级工具或解决方案
  • 缺少持续优化的数据
  • 重复性/手动任务因 大量产品而恶化

总体来看,销售工作流程分为两大类:自动化和手动。根据我们的调查对象,两者之间的理想比例是大约 70%自动化和 30%手动。对自动化的强调将允许人们专注于更具战略性和/或更复杂的任务。大多数团队认为他们没有达到理想的比例,目前做了太多的手工工作。他们希望实现更多的自动化,但经常发现自己专注于紧迫的日常任务。更具体地说,他们的工作流将是一个混合体,其中手动任务仍然为异常或非典型的实例提供价值,以反映在他们的自动化流程中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

另一个重要的相关维度是创意和数据驱动的活动/策略之间的动态关系。大约 70%的人认为数字销售是一种数据驱动的活动。客户发现,通过使用大数据,他们可以获得最成功的答案来完成上述关键任务,如优化 KPI 等。另一方面,创造力在一些事情上扮演着重要的角色,比如对新信息、类别等的实验进行构思。,建立视觉体验,如页面布局和产品图像,以及其他目标,如建立差异化的品牌形象和竞争优势。

这是一个 艺术与科学的理想融合 根据手头的问题,一个优先于另一个。一家企业零售品牌的实验负责人说:“ 这一切都是为了确保网站是商品化的或风格化的,这样产品才能以一种特定的方式得到推广和视觉展示,从而促进销售和交易 。”

在 Algolia,我们相信这可以通过 智能销售能力 来实现,这些能力利用数据和人工智能的组合力量来构建快速、相关、可扩展和高转化的体验。在本系列的第 2 部分(即将推出!),我们将分享旨在帮助商家取得成功的高性能数字销售解决方案中不可或缺的关键原则!

开发者评估 Algolia 的综合资源列表

原文:https://www.algolia.com/blog/product/the-comprehensive-list-of-resources-for-developers-to-evaluate-algolia/

你好。如果你在这里,你可能正在评估 Algolia 是否是你试图解决的问题的正确解决方案。您可能正在寻找第三方的真实信息来做到这一点——您的同行对我们技术的观点可以加分。

我们知道你可能想根据除我们之外的任何内容来伪造你的观点,我们鼓励你这样做,☺,但我们仍然希望在这个过程中帮助你!因此,我们在这里参考了我们在互联网上能找到的所有东西——无论是有利的还是不利的——以及我们所有的技术内容(文档、代码交换、客户实施等),我们相信这些可以帮助您对 Algolia 做出自己的判断。

我们希望上市更多可用的资产。如果你发现了什么新的东西,或者我们错过了什么,请 让我们知道

说够了,这是清单。

关于阿洛利亚的不请自来的讨论和意见

我们没有问,人们只是分享了他们对 Algolia 的想法。

**## 阿洛 vs…

人们把我们和一些竞争对手相提并论。

**## 主动和被动的 Algolia 评论

任何人都可以随时在这些网站上留下评论。在某些情况下,我们主动联系用户留下评论。

阿果搜索与直播实现

自己评估最终用户体验。

Algolia 文档& Algolia API 文档

评估 Algolia 是否适合您的使用案例和堆栈。

看看你能用阿洛利亚建造什么

自己试试

我们希望在您的评估过程中对您有所帮助。如果您想在此处推荐任何其他资产,请联系我们。更多资源,请访问我们的 开发者中心 。****

新冠肺炎如何加快零售数字化转型

原文:https://www.algolia.com/blog/ecommerce/the-covid-effect-how-the-pandemic-has-accelerated-retail-digital-transformation/

还记得生活 BP(疫情之前)吗?

从电子商务的角度来看,数字事物非常不同。虽然一些网站和 市场 已经接受了先进的数字商务,而其他人在时机成熟时采用了新技术来扩展他们的业务流程,但许多人只拥有相当于数字门面的东西——有吸引力的在线店面,在主页后面有空的虚拟房间。而且对许多消费者来说,实体店和商场仍然是的去处。因此,这是公司集中精力(非数字业务转型)的地方。

沿着 COVID 走过来

谁能忘记 2020 年 3 月?在一个不确定的时期,世界各地的消费者听从了留在家中安全的呼吁,锁定并放弃外出进行“零售治疗”。实体零售业会得重病还是会死于 COVID?

正如我们后来了解到的那样,不确定的时代会催生革命性的变化,事实证明,电子商务中的数字技术尤其如此。消费者被困在家里的一线希望?发现他们仍然可以 各种各样的事情 ,比如买菜、 被允许远程工作 ,减少开车,从而帮助 让大自然休息一下 ,并通过从等在线零售商订购令人振奋的装饰来装修他们的生活空间

对于那些在家里发疯的人来说,一切似乎都没有失去。在数字升级方面进行了初步投资的企业进一步加大了提供在线资源的力度,以帮助消费者在持续的危机中恢复正常。许多数字领导者做了一些有见地的事情,如 升级他们的搜索和发现 功能,以更好地满足他们客户的需求。

与此同时,那些在疫情之前没有多少数字化业务的企业,比如那些深深扎根于实体模式的企业,很快就接受了数字颠覆(Gartner definition)的困境。他们注意到了这一点,并在许多情况下开始对数字化转型工具进行快速投资,以避免错过即将到来的数字化转型淘金热。

电子商务销售额开始上升。毕竟,疫情或者没有疫情,人们需要和想要 的东西。 他们中的许多人喜欢(或热爱)购买非必需品和必需品,无论他们只是浏览或查看他们最喜欢的在线零售商的新产品。他们中的许多人甚至更喜欢当他们被困在家里用电脑或移动设备的时候。

……还有变焦的特质

当然,在疫情,人们开始成群结队地购买各种不同的东西,比如上班时穿的漂亮衬衫。他们很大程度上不再购买其他东西(比如裤子,因为没人能看到你穿了什么,或者忘记穿什么,除非你犯了站起来的错误)。

无论如何,似乎现代的疫情,尽管对人类生活具有破坏性,但也可以成为消费者花掉他们因不能旅行而攒下的钱的借口,从而对张开双臂等待他们的精明的零售商来说是一个福音。

数字商务 360 ,“电子商务在新冠肺炎来袭之前发展很快。但疫情将更多的美国消费者推到了网上,并推动更多的消费者更多、更频繁地在线消费。”DC360 估计,在过去几年中,疫情通过电子商务获得了约 2180 亿美元的收益。

当你被困在家里时,首要任务是:获得足够的食物并储备足够的食物,这样你就可以养活你的家人。此外,因为你坐立不安或无聊,买一些垃圾食品或酒精?人们使用在线渠道购买大量的食品杂货(当然,如果能找到的话,还会在 TP 上囤积)。毫不奇怪,一年比一年,网上杂货销售额增长了 103%,根据 Adobe 数字经济指数 。好消息,除了那些不幸获得了“COVID 15”磅的人或者那些因拥有太多 快乐时光 而应对紧张局势的人。

这的确是令人着迷的社会心理学数据,不是吗?但是让我们回到疫情时期的零售业。

在家庭经济中,某些行业,如电子产品和家庭装修,可以理解地脱离了图表。而其他板块【旅游、能源】遭遇惨败。对于每个类别中的一些公司来说,他们在疫情开始时的数字化转型工作状态是一个关键因素。对于全球的零售商来说,这无疑是一个变革的时代,无论是好是坏。

砂浆砖的耐久性

对一些人来说,这是一个惊喜,但当亲临现场的购物者消失时,实体零售并不一定会消失。即使在新的数字时代,实体商店也是零售业的一个重要组成部分。根据 杂色傻子 :“你可能认为美国的大部分零售都发生在网上,但事实并非如此。据美国人口普查局(Census Bureau)统计,包括汽车在内的零售总额中,只有约 13%是通过电子商务渠道实现的。

在疫情,实体商店不仅 不会 消失,它已被证明是成功数字化转型的支柱,也是人们可以购物的无数“全渠道”方式之一。消费者可能希望在商店购买或在网上下订单并获得送货上门服务,或者亲自去商店、路边或储物柜取货。然后,他们可能会选择通过邮寄、通过第三方或走进商店来退货。

能够促进所有这些选择的零售商(当然,以经济的方式)会增加他们的市场份额。

一切都好,但数字渠道中仍有相对较大的资金,所以让我们继续关注经济中的这个子集。

一个“历史性的转折点”

这里有一些令人瞠目结舌的信息:根据麦肯锡对全球企业高管的调查,由于新冠肺炎——一个“历史性的转折点”,企业加快了“其客户和供应链互动以及内部运营的数字化进程,时间长达三到四年。数字或数字产品在他们投资组合中的份额以惊人的速度增长了 7 年。”

在 COVID 期间,一些公司敏锐地意识到消费者不断变化的需求,这使它们在盈利能力方面成为更大的赢家。例如,PYMNTS 提到了疫情孤立期间“拿来经济”的兴起,包括食品杂货和家庭必需品。

自从限制放松后,这种趋势在在家生活和工作的人群中愈演愈烈。皮姆茨补充道,“消费者现在认为鼓励他们去实体零售商那里购物的最常见因素是 根本不用去商店;他们想要店内提货和路边送货服务。”提供这些选项来满足或超越客户期望是一项成功的数字化转型计划。

疫情零售业成功的一个例子是 Target,它为消费者提供了多种在线购物和提货的选择,此外,消费者还可以在巨大的商店过道中漫游。《福布斯》指出:“塔吉特的电子商务业务增长比沃尔玛和好市多都要快。你可以在 Target 网站上订购一件商品,然后不用排队就可以在商店里拿起它,开着你的车把它送到你面前,或者让它送货上门。这家零售商还继续致力于简化数字创新,其运营模式反映了一种预测,即在不太遥远的未来,电子商务将成为长期增长的最重要驱动力。

什么是数字转换?

一般来说,“数字化转型”指的是在企业中整合数字组件以促进成功的总体思路。然而,美国职场趋势专家梅丽莎·斯威夫特指出,“数字化转型”这个术语有点问题。它是模糊的,可能会引发争论,并被用作一个总括,以及其他事情。

好了,让我们避开这种模糊的讨论,专注于数字化转型的一个环节: 零售 数字化转型。 问问任何一个从实施成功的零售数字化转型战略中获得回报的商人:潜在的业务成果是不是很棒 还是什么?

更重要的是,在与电子商务相关的数字化转型方面,企业可以做些什么?

数字转型趋势的例子

那么数字化转型的趋势是什么, 您的 后 COVID 数字化战略有哪些可能性?

在做出重大决策之前,第一个合乎逻辑的步骤是与你的利益相关者一起重新构想你所在行业的可能性和独特的商业价值主张。在头脑风暴之后,你可以创建一个客户友好、易于导航的电子商务网站,或者改进你已经有的网站,然后投资 社交媒体广告 来帮助潜在买家访问该网站。并在此基础上提供一些更高级的功能。

都是关于你的客户体验

首先,就像砖头和砂浆一样,记住 一切都是为了你的客户。 另外,你实际上还有另一个客户,你的员工,我们稍后会谈到。

所以回到你的购物顾客。在这样的疯狂时期,关键是确保为他们提供精彩的零售疗法客户体验,这是一次伟大的购物之旅,在他们与你联系的各个方面都大放异彩。

在零售客户眼中,你可以通过哪些方式让你的零售客户之旅更有趣、更有回报、更神奇、更难忘、更值得,从而提高你网站的收入和留存率?

数字化转型和成功的客户体验密不可分。创建无缝的用户体验可能意味着修改您的数据集成工作流以及您的内部系统如何相互关联。例如,当你有一个索引良好、可搜索的数据库,再加上一个 以人工智能为中心的搜索引擎 ,你的购物者可以快速找到他们想要的产品。在他们这么做的过程中,你可以让他们的生活变得更加轻松。

一场不断演进的数字化转型之旅

数字零售商在大流行后(目前)应该做些什么来获得或保持领先地位?值得在大流行后进行网上购物的客户体验的几个要素包括:

提供无接触支付

自疫情以来,企业实施的一个数字化转型项目是在实体店购物时建立非接触式支付。COVID 的世界已经发生了有趣的变化,其中之一是没有人愿意拿着一支带菌的笔或在触摸板上签名,即使它已经过适当的消毒。

无接触支付是显而易见的。精明的零售商决定加入这个项目,跳过实体签名(就像你在网上买东西一样)。当商店或餐馆的顾客可以简单地在他们的移动设备上打开该公司的应用程序,并通过扫描二维码支付时,他们也在实现同样的事情。

通过人工智能使购物个性化

你可能听说过人工智能辅助的 个性化 已经成为在大数据推动的数字零售世界中取得成功的必要条件。这种明智的策略在现代疫情时代变得更加及时。人工智能促进的个性化是成功数字化转型的关键组成部分。

人工智能正大举进军主流数字购物体验。例如,如果你最近碰巧是一名Lands End在线欧洲购物者,你会对这一点有所了解,因为零售商正在使用人工智能来 反映店内体验 。董事总经理 Constanze Freienstein 指出,“如果(顾客)正在寻找一件特定的商品,或者想从我们的网站上转移,我们可以通过根据以前的购买建议类似或匹配的商品来帮助他们了解还有什么。”

在拥抱现代化的过程中,一些零售商更进一步,在购物体验中提供 增强现实 或虚拟现实。例如,如果你在宜家网上购买一件笨重的家具,你可以通过使用该公司的一个应用程序来查看该物品在你的实际空间中会是什么样子,从而避免以后的麻烦。

零售商也在实施智能搜索引擎,帮助购物者轻松找到他们想要购买的商品。关键是 个性化搜索 ,它的智能会注意到人们在搜索什么,例如,向他们显示协调的服装项目。

英国在线运动服装零售商 Gymshark,其 收入在 2020 年达到 5 亿美元 ,是一家发现在其网站上个性化购物体验对扩大其客户群有很大帮助的公司

提供协调的全渠道体验

现在,大多数购物者通常使用不止一种方法来识别、获取和购买他们想要的产品。他们使用各种购物体验入口和出口点。例如,消费者可能在他们的社交媒体订阅源上看到某个产品的广告,去该公司的网站购买,然后决定立即购买,所以他们会去实体店购买(或在路边购买)。

全渠道营销让零售商以更高层次的细节来微观定位这些购物者。 当所有适用的渠道对消费者可用,品牌一致,彼此联系良好,以便给人们带来令人满意的整体购物体验,这就是胜利。

美妆零售商 丝芙兰 是一家拥有全渠道客户体验和最先进的个性化服务的公司。顾客可以通过多种渠道获得无缝集成的零售体验,他们可以远程使用该零售商功能丰富的移动应用程序,也可以在店内查看产品。

设置“环形通道”

你可能已经注意到,自从疫情开始以来,许多零售网站已经增加了“从商店发货”和“送货到商店”选项。无尽的通道是无缝购物体验的概念,让人们开始浏览或搜索网络,并在商店中完成购物,或反过来,创建一个“循环”无尽的通道还消除了实体商店货架空空如也的问题,让人们可以使用移动设备、信息亭或平板电脑订购商品。

令人印象深刻地实施了无尽走道的一家公司是 百思买 ,其管理层注意到了实体电子商务的融合,并积极应对。

通过手机应用提供便捷的访问和优势

由于许多狂热的购物者在外出时会持续使用他们的移动设备,因此全渠道的一个关键要素是提供一个移动应用程序,根据你的商业模式提供任何有意义的功能。如果你想让人们喜欢从你这里买东西,一个好的、高度可用的应用程序是必不可少的。即使你的客户只是在家沙发上冲浪,他们也会很高兴能够快速找到他们想要的东西。例如,如果他们真的带着他们的移动设备在你的实体店闲逛,他们可能仍然在使用你的应用程序来查找商品的评论。

家得宝的 产品定位器 应用程序是另一个一流的全渠道努力的例子。该公司在其网站上解释说,它“就像你购物清单上的全球定位系统”。在手机上,购物者可以立即在网站上搜索他们需要的商品,指定他们当地的商店,并查看该商品是否有货。酷毙了。现在他们要做的就是去仓库,按照 GPS 的指示找到物品。家得宝仍然是一个巨大的、没有人情味的地方,但你可以说,该公司通过提供这种易于喜爱的购物帮助以及其他努力来弥补这一不足。

照顾你的 其他 客户:你的员工

最近你为你的员工做了什么?在后大流行时代,关注他们的需求对于取得成功同样重要。

通过努力改变他们的数字生活,你可能会让他们更喜欢为你工作,因此可能会计划呆得更久。例如,你可以给他们一些伟大的实时数字化转型成功工具,如 Slack 这样的在线交流场所,或者一个经过深思熟虑、可直观搜索的知识库,以帮助他们简化工作。你还可以做得更多:一些公司甚至转而采用每周四天工作制来帮助员工减压。

你也可以给他们灵活的工作地点。你知道吗,2020 年皮尤研究中心 的一项调查发现,71%的受访者在疫情期间在家工作,能够做到这一点是一个游戏改变者。54%的人说他们还想在疫情之后继续在家工作。

因此,如果你是一家真心想取悦员工的零售商,你该如何进行数字化转型呢?

一种选择是采用一种 混合工作 模式,这种模式让员工可以灵活地在某些时间远程工作,而在其他时间进入办公室。

如果员工真的需要亲自到场,需要尽力工作,那更进一步呢?当然,在零售业,完全远程工作对一些员工来说可能有点挑战。另一方面,如果你的销售助理可以从使用混合模式或完全远程模式中受益,那么如果你想吸引和留住最优秀的人才,这是值得考虑的。因为自从疫情让员工在家的客房和地下室工作以来,最优秀的人才经常坚持认为他们仍然可以在家工作(毕竟,他们已经证明了他们可以在家工作好几年了)。

企业家项目 很好地总结了这一点:“对于许多工人来说,远程工作已经成为一种不可协商的职业要求。如果公司取消了远程工作,远程工作的员工甚至可能会寻找另一份工作。在当前的就业市场上,许多雇主都面临着严重的技能短缺,不准备冒险让员工流失。”

一些公司还让他们的零售店员工在等待顾客时,通过与他们在网站上注意到的购物者在线联系,从整理商品中拓展业务。这种做法可以提高转化率和销售佣金(如果适用)。在某些情况下,比如 COVID 再次关闭实体店,这种联系可能完全是远程发生的。

简而言之,在这个不断变化的电子商务环境中,你为员工提供的灵活性越多,你作为一家接受数字化转型的公司的声誉就越好。

精简你的运营效率

分析师认为,后新冠肺炎时代的零售环境已经成熟,可以燃放数字化转型烟花了。疫情迎来了以客户为中心的范式转变,通过拥抱数字化转型的各种原则做出回应的公司正在推动他们的运营,并从新的商业模式中获得丰厚的利润。

如果作为一家在线零售商,你没有使用数据分析和机器学习来为你的主要商业决策提供信息,这是你可以获得重大收益的一个领域。所有类型的数字零售商都在使用人工智能来收集数据驱动的见解和评估趋势。预测分析可以有效地增强您的库存并提高您的效率。你还可以专注于创建一个更好的(数字)供应链,并在任何有意义的地方拥抱自动化,比如在电子邮件活动中以及通过使用社交媒体。

数字化转型外卖

到目前为止,新冠肺炎·疫情已经讽刺地变成了一件对某些企业来说非常健康的事情。

因此,从疫情的角度来看,你的公司如何保持良好状态,并为接下来发生的任何事情做好准备,无论是另一种令人讨厌的 COVID,更多的消费者因为他们在封锁中被宠坏了而要求巨大的全渠道优惠,还是病毒威胁的缓解,导致更多的购物者开始在商场爬行?

不管有没有疫情,升级你的 电子商务网站 搜索功能是一种低成本、高投资回报率的方式,无论发生什么,都可以启动(或继续完善)一个有效的数字化转型框架。

投资 Algolia 搜索和发现技术是获得数字化转型的好处、增强您的业务战略并实现大流行后业务目标的一个好方法。当你准备好了, 我们的团队 期待听到你的数字化转型需求!

语音搜索和电子商务的未来

原文:https://www.algolia.com/blog/ecommerce/the-future-of-ecommerce-and-voice/

世界各地的消费者越来越频繁地以“好吧,谷歌”这句话开始他们的在线体验在过去的几年中,数字语音助手主要用于相对简单的任务,如查看天气、播放歌曲或开灯。然而,这些功能每天都在扩展,业务影响可能是巨大的。

但是随着语音识别技术的进步,语音搜索不再仅仅包括数字助理。人们也开始在移动设备、商店和智能电视上使用语音搜索和其他语音功能。

会话式商务在许多方面都在增长。例如,Apple TV 用户可以对着遥控器说话,同时检索多个应用程序的结果,而不是手动搜索多个流媒体平台来查找特定的节目。零售商也开始在他们的实体店中使用语音搜索,使消费者能够通过对应用程序说话来快速了解产品细节和他们在商店中的位置。

随着在线用户每天在手机、商店和电视上与数字语音助手和语音搜索功能的互动越来越舒适,购物和其他形式的商务将继续向客户所在地转移。即使消费者还没有通过语音搜索进行购买,随着人们开始更经常地使用语音搜索功能来研究和建立与品牌的关系,语音商务将成为日常生活的一部分。

什么是语音商务?

语音商务是允许在线消费者使用他们的声音来探索和购买产品的一组技术和系统。通过允许用户通过更 的对话界面 与品牌互动,商家可以减少传统网站和移动应用的一些摩擦,提供更人性化的体验。

在实体零售中,销售代表提供了一种人际互动,让顾客自然地了解他们可能有兴趣购买的产品。然而,随着电子商务的兴起,这种体验大部分已经丧失,客户只能自己照顾自己。语音商务是一种新颖的方式,通过在计算机系统之上增加一层对话来弥合两者之间的差距。

虽然与电脑对话购买产品听起来可能有些奇怪,但事实上,近十年来,世界各地的消费者一直在与这些类型的系统互动。像苹果的 Siri 或亚马逊的 Alexa 这样的流行语音助手已经 训练我们向我们的设备 提问,就像我们向任何其他人提问一样。随着这成为一种更加正常和被接受的做法,这些公司几乎肯定会试图通过推广购买产品来更好地将这些服务货币化。

虽然语音助手仍然是最受欢迎和最受认可的语音搜索形式,但机会远不止于 Siri 和 Alexa。消费者正在通过语音进行研究并与品牌建立关系,包括在智能手机、智能电视、智能扬声器甚至商店内的移动应用程序中。

随着用户开始以这种新的方式与在线服务互动,电子商务品牌通过这种系统和界面让自己易于访问是非常重要的。仅仅有一个网站和在线广告来吸引用户购买你的产品已经不够了。

语音商务的重要性

数字语音助手预计到 2023 年将上升到 80 亿活跃单位——比 2019 年增加近 2.5 倍。到那时,由这些数字助理产生的语音商务市场预计将达到每年 800 亿美元。未来十年对品牌的影响是惊人的,所有电子商务企业都应该认真考虑。

随着越来越多的消费者通过语音搜索开始他们的购买之旅,浏览不同产品选项和竞争品牌的过程几乎肯定会发生变化。付费植入广告和大品牌可能会主导通用产品搜索,因此较小的企业将不得不重新思考如何获得客户。

虽然语音技术的兴起可能会增加竞争,但它也为各种规模的品牌带来了许多机遇。如果企业可以区分他们的品牌形象,并为他们的客户提供良好的体验,这些语音技术实际上可能会提供新水平的客户忠诚度和参与度。关键是要确保你的竞争对手不会击败你提供这种水平的经验。

语音商务的挑战

语音商务为品牌发展和赢得忠诚客户提供了巨大的机会。

对于较小的组织来说,挑战在于选择合适的语音技术合作伙伴,并以与语音搜索兼容的方式建立您的在线商店(和在线形象)。

对于拥有大量产品目录的大型组织来说,挑战在于以一种语音友好的方式组织大量内容。

但是,无论组织规模或在线目录如何,语音搜索都有一些固有的挑战需要解决。其中一些挑战可以通过语音搜索技术合作伙伴来解决,而其他挑战则需要解决方案提供商和品牌之间的合作。

然而,各种规模的企业都必须解决许多问题,才能让这些系统以可持续、长期的方式运行:

  • 自然语言 。语音商务本来就是一个技术难题。它需要高级的 自然语言处理 (NLP)。对于国际业务,这必须用许多不同的语言和方言来完成。
  • 隐私顾虑 。鉴于语音商务和自然语言处理需要用户对着他们的设备说话,公司需要向最终用户提供隐私保证。许多人只有在确信该应用程序不会监听所有内容或与第三方分享他们所说的话时,才会使用它。
  • 对商家缺乏信任 。除了对技术安全的担忧,还有一个简单的事实:消费者对科技公司失去了信任。语音搜索技术的合作伙伴需要在市场上建立信任,才能完全采用这项技术。使用这种技术的个体企业将不得不弄清楚如何向客户传达他们的政策,以确保他们对收集的信息感到满意,并了解这些信息是如何被使用的。未来几年,我们可能会看到对这些做法的一些监管审查。
  • 对 ASR/NLU 缺乏信任自动语音识别(ASR)自然语言理解(NLU) 是语音商务的关键组件,允许数字语音助手分解和理解语言。虽然人们已经习惯了这些系统,但仍有许多人对它们感到不舒服。企业将不得不找出如何训练用户信任这些系统,并减轻公众对他们家中的 【老大哥】设备 的担忧。

前瞻:语音商务的未来

短期来看,电子商务品牌和科技公司面临着诸多挑战。他们需要继续改进他们的自然语言处理技术,让用户习惯于使用它,建立安全管理数据和满足法规要求的系统,并弄清楚产品发现和交易的流程。

这些问题会很快自行解决,因为语音商务是用户与他们喜欢的品牌和网站互动的一种更加自然和个性化的方式。因此,消费者将拥有更直观的在线体验,不再受小屏幕或键盘的束缚。这将为新技术、新系统和新业务带来机遇。

随着所有这些变化,现有的电子商务品牌将需要想出如何接触到客户,无论他们在哪里。要做到这一点,他们需要一个强大的技术合作伙伴,能够为他们提供工具来接触所有这些渠道,而无需大量的定制开发工作或昂贵的技术投资。 通过我们的网上技术交流讲座 了解更多关于为语音搜索的未来做准备,打造卓越语音搜索体验的最佳实践

电子商务营销指南

原文:https://www.algolia.com/blog/ecommerce/the-guide-to-e-commerce-merchandising/

实体零售商并不是唯一能够利用产品、服务等的战略布局来促进购买者旅程的零售商。电子商务和在线零售商可以通过在线销售对他们的商店进行数字化管理,以确保关键产品和促销活动得到充分强调。

什么是网络营销?

在线销售或电子商务销售是在网站上构建、组织和管理产品供应的过程,以实现特定的商业或营销目标。这个过程通常包括管理促销、管理搜索结果和测试改进,以引导用户完成他们的客户之旅。

为什么网上销售很重要?

在当今 竞争激烈的电子商务格局 中,营销人员必须为顾客提供独特的购物体验。建立有效和差异化的用户体验不仅能提高转化率,还能创造持久的品牌形象,让顾客长期回头客。

网上销售也有助于企业实现其战略商业目标。营销活动可以通过促销和特别活动直接在网站上实施,您可以突出战略合作伙伴关系,以确保您和您的合作伙伴的成功。

销售流程有助于电子商务企业管理大量不断变化的库存。例如,季节性产品或清仓商品可以战略性地放置和促销,以确保库存及时周转。

4 网上营销策略

在线销售是一个持续不断的迭代过程。这里有四个战略最佳实践,你可以遵循来提高你的努力:

1。聚焦首页

作为从搜索、社交媒体等进入你的电子商务网站的入口,主页必须提供引人入胜的互动体验,以最大限度地降低跳出率,吸引顾客浏览网站。主页应该:

  • 讲一个品牌故事。品牌故事有助于吸引顾客,让你在竞争中脱颖而出,并向他们展示为什么他们应该和你一起购物。
  • 展示系列产品和特色产品。主页是突出您希望客户参与的机会的绝佳位置。当顾客进入网站时,摆放得当的产品和促销罐会立即抓住他们的注意力。
  • 确保主页是可扫描的。这个页面应该提供简洁而有用的信息,让客户可以快速浏览,很好地了解你的情况,以及他们可以在你的网站上做什么或找到什么。
  • 包括 CTA和。主页上的行动号召可以鼓励客户采取某些行动。这也为他们提供了一条清晰的途径。
  • 加入“社会证明”客户生成的内容(评论、社交媒体照片等)进一步吸引您的客户,并验证您产品的质量和实用性。
  • 确保搜索栏可见。通过确保搜索栏易于查找和使用来锁定搜索者。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2。撰写强有力的产品描述

产品描述通常是顾客了解他们感兴趣的产品的第一个地方。你可以把这想象成销售代表在网上向感兴趣的顾客推销产品。

描述应该包含关于产品用途、规格、材料、生产和益处的有用信息。你还应该强调运输和生产时间,特别是如果你提供免费运输。所有这些都应该用与你的品牌声音相匹配的信息性语气来完成,这样客户会感到与你有联系。

3。使用在线视觉营销

在线视觉营销是在网站上战略性地展示视觉和设计元素的过程。有效地实现这一点可以帮助传达品牌形象,验证品牌的合法性,并增加客户的参与度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

网站上使用的照片以及总体设计是这一过程的关键。除了获得高质量的产品图片和通过设计进行思考,重要的是迭代和调整视觉设计网站,以确保它是最有效的。这些变化应该通过 A/B 测试 来衡量对 KPI 的影响。消费者对这些类型的变化很敏感,很难预测对他们行为的影响,因此量化措施可以确保变化产生积极影响。

4。根据电子商务客户数据更新您的销售策略

作为一个在线零售商,你可以有效地 跟踪你的顾客从搜索到购买的每一个举动 。这对于确定销售策略、尝试不同的布局和产品描述、制定未来产品供应策略等都是非常有价值的信息。此外,电子商务网站可以使用社交媒体重定向像素来运行重定向/再营销活动,并收集人口统计信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

搜索如何推动电子商务的营销努力

搜索日益成为客户购买之旅的入口。然而,许多营销人员没有充分利用搜索,结果他们错过了销售机会。搜索营销(Search merchandising)允许对搜索体验进行管理,以推动业务和营销目标。

这里有一些网站搜索可以用来改善销售流程的有效方法:

  • 个性化定制用户体验 。线上和线下营销的一个关键是向顾客提供 个性化 和相关产品。网站搜索允许您在用户搜索时向他们推销特定的产品。如果用户有你的商店的历史,你可以使用过去的购买行为来提供他们更有可能购买的相关内容。
  • 推荐同类产品 。当客户在站点搜索界面中查看产品时,这使您能够立即向他们展示其他相关产品。这增加了他们找到想要的产品并最终购买的机会。
  • 在搜索结果中显示横幅 。当用户搜索某些查询或查询组时,可以显示自定义横幅。例如,当客户搜索与类别相关的产品时,可以向他们推送特定类别的促销信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 推广特定产品 。出于各种原因,企业通常喜欢促销特定的产品——季节性、节假日、新的产品线等等。有了网站搜索,这些类型的促销可以针对特定的查询或查询组。促销也可以基于用户简档来定制。
  • 使用滤镜和刻面 。过滤器和方面允许用户通过产品类别快速缩小搜索范围,方面允许用户基于多个不同的搜索维度来这样做。这些可以通过向客户突出或推销某些类型的产品来构建。
  • 针对热门或值得关注的查询 重定向到特定的 URL。当用户搜索您的企业指定为重要的特定产品时,您可以将他们重定向到包含产品和品牌相关内容的页面,以满足他们的需求。这对于与交叉销售和追加销售可能性较高的品牌或商品相关的查询尤其有用。
  • 使用自动完成和查询建议自动完成和查询建议 让您不仅可以通过加快搜索过程来提高点击率,还提供了一个将用户推向特定产品的机会。用户在搜索时会主动寻找产品,因此这为引导他们的产品探索之路提供了一个很好的机会。
  • 在搜索 中提供文字和视觉建议。包括视觉助手,如产品图片或高亮显示的结果,可以吸引用户对这些产品的注意,并增加他们点击它们的可能性。这有助于在推广产品的页面上获得更多流量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 收集并展示客户评论 。顾客评论提供社交证明。然而,他们不必局限于产品页面。当用户搜索时动态显示它们可以快速验证他们正在搜索的产品。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

利用出色的网站搜索进行电子商务营销

搜索是在线销售流程的重要组成部分。 观看我们的网络研讨会“ 加速购物车之路 ”,了解如何利用搜索吸引用户并增加销售额。

与 Algolia 首席执行官 Bernadette Nixon 的内幕

原文:https://www.algolia.com/blog/algolia/the-inside-track-with-algolia-ceo-bernadette-nixon/

Adrian Bridgwater 就最近宣布的 D 轮融资采访了 Algolia 首席执行官 Bernadette Nixon。Adrian 是一名专门研究软件、数据和云的科技记者,三十多年来一直在撰写科技行业的文章。

阿德里安·布里奇沃特: 你能给我们透露一点你的背景吗?

伯纳黛特尼克松: 绝对!我真的是那种懂得努力工作,并带着同情心和决心一路向上的人。我喜欢建立企业,但我这样做是出于对这样一个事实的核心认识,即这意味着首先要建立团队。

我早期职业生涯的一部分时间是在英国和瑞士为联合国(UN)从事商业工作,但一次滑雪事故促使我改变了人生计划,我前往美国,在科技领域的商业企业工作。通过在公共部门和私营部门的工作,我认为我看到了生活的两面。这一现实促使我建立了一个我称之为“混合高管团队”的团队,将多样性、能力和包容性放在首位。

我对卓越运营有一种 GSD 式的态度。我也意识到团队的构成自然会随着时间的推移而变化,但我的一个不变的观点是,不仅需要智商,最重要的是情商,这样人们才能有自我意识,有社交能力,最重要的是,有人情味。

Adrian Bridgwater: (根据TechCrunch中对你的任命档案分析)你被认为是一名走向市场的战略家和冠军,这一过程对你在 Algolia 是如何体现的,你对公司以客户为中心的中长期目标是什么?

伯纳黛特·尼克松:是的,你绝对可以把我描述为顾客至上,这是我的工作,我就是这样的人。理解(并满足)每个客户的细微需求是最重要的,这也是我每天工作的主要任务。

但是在这方面——根据你的问题考虑中长期——我坚持采用由外向内的方法,以确保我们不仅仅是将产品推向市场的供应商。太多的公司变得与世隔绝,对市场中出现的真正问题视而不见,而 Algolia 永远不会是那种公司。

我从客户和整个市场的角度看待业务,这意味着将客户问题置于我们产品战略的核心。这迫使我们客观地看待我们自己的产品开发,并设计它不仅解决今天的问题,而且解决明天的问题,以不同于竞争对手的方式

Adrian Bridgwater: 当你只有“电梯销售”的机会时,你如何定义 Algolia 并解释公司的核心技术主张?

**Bernadette Nixon:**Algolia 是一个 API 优先的搜索和发现平台。每个人都可以联想到其中的“搜索”部分,并在脑海中描绘出网站或应用程序中的搜索框。但我们也支持“发现”…该功能在网站或应用程序中提供导航,根据实时预测意图的能力向用户(以及未来可能的智能机器)提供建议。结果是搜索和发现提供了个性化和高度相关的实时动态体验。我们为三种类型的公司这样做:电子商务、SaaS 和大型企业。我想那大约是六层电梯,加上大厅,对吗?

Adrian Bridgwater: 请告诉我们目前在 Algolia 的投资活动,以及该公司目前 22.5 亿美元的估值。

Bernadette Nixon: 我们完成了由 Lone Pine Capital 领投的 1.5 亿美元 D 轮融资。其他投资者包括 Fidelity Management&Research Company LLC、STEADFAST Capital Ventures、Glynn Capital、Twilio,以及现有投资者 Accel、Salesforce Ventures、DAG、Owl Rock 和世界创新实验室。

Adrian Bridgwater: 你当时在寻找新的资金吗?

伯纳黛特·尼克松:不,完全没有,但我们从投资者那里获得了很多投资兴趣,所以即使我们资金充足,不需要钱,那也正是你应该筹资的时候。但是在我们进行融资之前,它被抢先了,我们收到了一些条款清单,这导致我们最近以 22.5 亿美元的事后估值完成了我们的 D 轮融资

Adrian Bridgwater: 考虑到这笔重大投资(这笔投资不是 Algolia 本身直接或最初寻求的),你在哪些方面做得如此正确——为什么这些公司在你身上投资这么多钱——你打算如何处理这笔资金?

Bernadette Nixon: 这可以归结为三件事第一件是增长,这是拥有一个杀手级的 API-first 产品和一个经验丰富的管理团队领导公司的结果。当你关注增长时,市场会根据你的年同比收入增长以及你的净美元留存(NDR)率来看待这一点,净美元留存率是衡量你如何留住和发展客户的一个指标。

投资者告诉我们,我们在这些方面是一流的,所以当他们从外部向你提出这样的事实时,你真的无法反驳,对吗?

Adrian bridg water:Algolia 什么时候会上市?

**Bernadette Nixon:**IPO 可能是我们的未来,有些人会说,我们现在拥有执行这一进程的规模、范围和广度。我们对 IPO 的看法是,作为一家公司,它是我们保持卓越运营的整个旅程中的一个里程碑,而不是一个终极目标。你可以说,我们正朝着“值得上市”的方向努力,但在很大程度上,我们正在跨越这个里程碑

Algolia 出版社: 在你看来,Algolia 的独特优势是什么?

我们是业内唯一一家大规模提供 API 优先平台的公司,这让我们成为了明显的领导者。从第一天开始,我们就通过 SaaS 交付模式进行部署,我们拥有固有的云原生 DNA,这再次让我们在当今的现代开发堆栈中占据了特殊的位置。另外,在大多数其他搜索技术公司依赖 Apache Lucene 算法的地方,我们开发了自己的专有技术;掌控您自己的智能引擎可以提高速度、相关性和灵活性,让我们的客户受益匪浅。

我们在另一方面也很特别……虽然我们的根基是产品导向型增长(PLG)和自助服务模式(这是我去年决定加入 Algolia 的原因之一),但我们也在早期打破了自上而下的销售导向型增长。作为融资的一部分,我们通过与投资者的讨论了解到,这很不寻常,许多来自 PLG 的公司经常难以解决企业销售问题。例如,我们最近与一家大型企业客户达成了一笔超过 350 万美元的 ARR 交易,我们对此感到非常荣幸,并致力于让该客户获得巨大成功。所以我们在顶部和底部都赢了,我们相信这给了我们在市场上不公平的优势。

最后,我们在传统上也与众不同,因为我们成立于法国,并从一开始就和 Y Combinator 一起来到美国,所以我们从第一天起就全球化了。这使我们能够在大约 120 个国家发展一定程度的市场覆盖面和多样性。

Adrian Bridgwater: 在路线图开发方面,你与产品工程团队的合作有多紧密?

Bernadette Nixon: 自去年 5 月加入 Algolia 以来,我一直与我们的联合创始人兼首席技术官朱利安·莱莫因密切合作。我领导了公司新愿景的工作,这使我们从一个单纯专注于搜索的单一产品公司转变为一个拥有 Algolia 预测、搜索和推荐功能的多产品公司。这是朱利安和高管团队其他成员的合作过程。直到上个月,Julien 还是我们的 CTO 和 CPO,但上个月我们聘请了 Bharat Guruprakesh 担任我们的 CPO,因此我们充满活力的二人组现已成为三人组!

阿德里安·布里奇沃特: 随着你进一步扩大公司规模,你希望在多大程度上坚持 Algolia 的联合创始人尼古拉斯·德塞格恩&朱利安·莱莫因的核心价值观和最初愿景?

Bernadette Nixon: 我真的很喜欢 Nico(我这样称呼他)和 Julien 创立公司的核心价值观:勇气、谦逊、关怀、坦诚和信任。它们只是一套很强的原则,我没有改变任何核心价值观。

我唯一详述的是信任基石的一个方面。我们过去常说“赢得信任”,我把它改成了“信任是给予的,不是赢得的,但信任的破坏是一件大事”,因为我认为这表达了现代商业真正的动态本质。

我与新员工的“每周价值观”会议是我一周的亮点之一。但我也是一个实用主义者,我意识到尽管我们的价值观保持不变,但我们作为一家公司的运作方式必须随着规模的扩大而发展。我们正经历着非常高的增长率,这就造成了这样的情况和环境:过去行得通的,今天可能不再行得通。所有这一切意味着,我们将作为一家公司不断发展,同时忠于我们的核心价值观。

Adrian Bridgwater: 您的合作伙伴战略处于什么样的“状态”,您将如何定义出色的合作伙伴体验……它们发生在何时何地?

Bernadette Nixon: 我们的合作伙伴战略是我们解决客户问题使命的关键要素。我们与合作伙伴的合作是进一步扩大我们与大大小小的公司合作的机会,因为他们基于我们的产品来满足他们不断变化的需求和要求。通过与其他软件公司(其中一些现在也是投资者)合作,我们可以进一步扩大我们自己的未来平台,从而使我们的客户受益。和系统集成商的关系是我们关注的另一个领域。

Adrian Bridgwater: 我们故意不询问你关于女性在技术领域的问题,以强调我们应该超越这个讨论——但是你个人对平等、包容和精英管理的态度是什么?

Bernadette Nixon: 我坚信多样性、包容性、精英管理以及最重要的归属感。相反,我不喜欢等级制度或特权制度。这个千年已经过去了大约 20 年,我们应该走得更远。

我之所以强调归属感,是因为如果我们处在一个不认同的环境中,就不可能有归属感,如果我们处在这样的环境中,就不可能把工作做到最好。我直接与所有新员工团队合作(通常在他们加入 Algolia 的几周内),以确保人们知道他们可以提问、质疑、挑战,甚至在需要时大喊大叫。在整个疫情,这可能是一扇虚拟的门,但我的办公室永远是敞开的。

当我在联合国工作时,我们在基于配额的系统内运作。虽然我对配额制度又爱又恨,但它们确实在短期内起到了对抗群体思维的作用,但它们不应该代表或表征当代组织在任何部门或任何行业的长期运作方式。

Adrian Bridgwater: 在当今注重可持续发展的管理世界中,我们必须确保增长出于正确的原因,而不仅仅是为了增长和扩张,对吗?

Bernadette Nixon: 我喜欢这样的想法,一个组织不仅可以是股东的生意,也可以是每个层次的利益相关者的生意,从员工到合作伙伴到客户,再到不是你的客户(现在还不是,或者可能永远不会是)的人,以及其他人。我喜欢 商业圆桌 谈论利益相关者管理的方式。作为一个星球,我们已经发展了很多,所以为了发展而发展业务不应该完全合理,除非有更广泛的使命以某种形式或功能帮助其他人,这就是为什么我们的愿景是为其他人服务,而不是在市场上成为 Algolia # 1-这是愿景的副产品,而不是愿景本身。

知识管理流程的 4 个步骤

原文:https://www.algolia.com/blog/ux/the-knowledge-management-process-4-steps-to-corporate-success/

确保集体知识——智力资本——的保留,无论是作为正式的组织知识还是非正式的技术诀窍,都是很困难的。组织、分析和分享你设法保留的知识会变得更加难以捉摸。

这就是 知识管理 流程工具的用武之地。专注于快速知识检索、 智能搜索功能 ,以及卓越的组织结构和能力,它们对于企业的平稳运行至关重要,在这个大数据时代,可以帮助公司在整体客户满意度方面获得竞争优势。

知识管理流程包括四个步骤,可通过管理计划实施。

一、知识是什么意思?

组织每天都被知识——数据和信息——所淹没。了解不同类型的工作场所知识是很重要的,这样你就可以正确地组织它们,并得到最佳的处理。

三类知识

就组织学习而言,有三种不同的知识类别:

  • 显性知识: 可以被记录和共享的信息。员工能够轻松获取和传递显性知识。
  • 隐性知识: 即学习到的信息。例如,显式知识可能是案例研究中存在的关于产品的信息。隐性知识是指当你“应用”这些信息(使用知识)时发生的事情,例如在与客户的会面中提及这些信息。
  • 隐性知识: 可能难以正式传达给另一个人的信息。例如,在商业环境中,它可能是员工与客户互动的方式的代码,如穿着特定的服装。

好的知识管理意味着更好的效率

有效的知识管理流程可让您轻松访问公司信息,避免在多个数据仓库中搜寻关键信息的需求。良好的信息管理可以大大减少员工挖掘数据所花费的成本高昂、令人沮丧的时间。此外,改进敏感数据(如个人身份信息、PII)的管理有助于防止违反数据合规性法规。

更好、更快、更直观的分享

知识管理系统还促进 员工之间的数据共享 ,帮助员工快速检索信息,加快时间相关流程。遵循知识管理过程有助于团队识别存在哪些知识,以及哪些领域可能由新知识的文档提供服务。

这里有几个知识管理流程示例:

例 1:定位一个重要案例研究

准备就绪后,销售顾问如果需要快速获得特定案例研究以支持潜在客户的产品主张,可以使用您组织的知识库快速访问它。

例 2:使需要的信息可用

同一名顾问可能意识到组织的销售宣传材料没有反映产品或服务的全部投资回报。当她这样做时,她可以与适当的利益相关者一起促进该信息的创建。因此,遵循知识管理流程并使用正确的知识管理工具可以帮助员工在任何需要的地方积累所需的公司知识。

知识管理流程生命周期的步骤

对于考虑知识管理工具以及如何灌输重视公司信息的组织文化的公司来说,工作流程相对容易遵循。以下是关键步骤:

1。知识发现

第一步,知识获取,是关于识别值得保存的知识,以及任何知识缺口和适合知识创造的领域。做出这个决定后,就需要寻找对员工有用的知识。

例如,考虑一名认识到需要更多推荐内容的销售团队成员。他们的销售线索需要投资回报的证明,因此在转换销售线索时,记录案例分析会有所帮助。

2。知识获取

当关键知识被识别时,它可以被捕获、创建、编辑或以其他方式产生以供使用。认识到需要感谢信的销售代表可以以正确的格式制作感谢信,或者要求营销团队制作感谢信。

通过文档,知识变得明确,以一种可访问的格式存在,并且可以被共享。知识管理过程将可能存在于员工头脑中的信息——或者可能在非正式笔记中草草记下的信息——转化为可以在整个企业中使用的有形信息。

3。知识组织与优化

当你已经识别并获取了必要的知识时,它必须被 组织成知识库中的

WordPress 是一种常用的内容管理系统,用于建立知识库,市场上还有许多其他好的选择。

您可以像对待数字图书馆一样对待您的知识库,所有内容都用元数据进行索引和标记,以便存储知识和查找文档变得简单。还应该使用正确的工具(如 智能企业搜索 )对其进行优化,以便用户能够以最高效的方式查找和访问资料。

注: 通过分析,你可以跟踪员工如何使用你的知识库。了解哪些文档阅读量最大,哪些文档是员工下一步要浏览的,哪些文档已经过时,可以帮助您的团队做出明智的决策,建立归档,并更专业地组织您的内容。

4。知识分享

知识共享就是交换有价值的信息。拥有一个包含正确内容的经过组织和优化的知识库有助于知识管理过程的最后阶段。

许多组织不遗余力地建立文档管理系统并促进知识转移,无论是跨他们的 内部网 还是其他形式的数据管理,但他们的员工共享知识的能力往往微不足道。为什么?员工可能习惯于旧的方法,或者知识库没有被广泛宣传,或者业务流程没有被更新。

拥有一个没人使用(或知道存在)的知识管理系统就像出版一本没人愿意打开的书。这可能是一部不朽的文学作品,但如果没有读者,它的智慧几乎毫无用处。

经验教训:有了良好的信息知识管理流程,要实现知识管理的好处,必须读取、处理数据,并与能够使用这些数据的团队成员共享。通过协作工具(如 Slack)分享内容可以促进其作为参考材料的传播。

知识是(企业)力量

分享知识可确保员工获得所需的数据,以尽可能最好的方式完成工作。一个经过组织和优化的有效知识库使得共享信息和利用信息成为可能。

作为成功的知识管理解决方案,Algolia 的 搜索工具 值得一看;它可以优化您的知识库,以便进行一流的知识发现。凭借无与伦比的速度和人工智能(AI)能力,您可以提供卓越的搜索。我们的软件将员工与他们需要的知识联系起来,促进信息吸收,并为您提供关于您的用户如何与您的数据交互的见解。

想要建立自己的知识库,并追求使用正确的知识管理软件产生强大知识资产的潜在更好指标?联系我们的 产品专家 了解我们著名的 搜索和发现平台 以及我们如何帮助您实施非凡的知识管理战略。

语义搜索的过去、现在和未来

原文:https://www.algolia.com/blog/ai/the-past-present-and-future-of-semantic-search/

设计搜索解决方案的技术人员开始听到很多关于语义搜索的说法。但是,什么语义搜索呢?最先进的语义搜索是什么样子的呢?

语义搜索没有单一的技术。这就像术语“AI”——一个营销术语,可以指几乎任何与机器学习相关的东西。1999 年,蒂姆·伯纳斯·李是最早将 引入语义网的概念 的人之一。从那以后,“语义搜索”这个术语就指的是查询处理中使用的许多不同的技术。

在这篇文章中,我将解释语义搜索,并描述一些用于深化查询处理的主要技术。我将探讨这些技术的来源、工作原理和发展方向。

剧透警告 :无论你是在电子商务网站还是企业内部网添加搜索,语义搜索技术 与更传统的关键词搜索 相结合,可以提供最完整、最相关的结果。

简史查询了解

关键词搜索及统计排名:从 20 世纪 70 年代开始

关键词搜索已经存在很长时间了,它的工作方式很像一本书后面的索引。关键字搜索引擎创建所有文档中所有单词的索引,并根据简单的匹配算法提供结果。

为了提高搜索相关性和结果排名,搜索引擎引入了词统计,如 TF-IDF 和 BM25。 统计搜索查看一个词在文档中的逆频率(IDF)与一个词的术语频率(TF)来确定其重要性。例如,像“the”和“or”这样的停用词在任何地方都频繁出现,而像“牙刷”或“水”这样的词出现的频率较低,也就是说,它们更不常见。词频可以作为一个指标来表示有多重要,或者 相关, 文档是

基于频率的统计非常初级,依赖于精确匹配。用 Lucene APIs 构建的关键字搜索算法今天在广泛的应用中仍然依赖于这些统计公式——实现起来非常简单和快速。然而,为了提高准确性,客户必须创建同义词库,添加规则,使用额外的元数据或关键字,或者采取其他类型的变通办法。

NLP 简介:始于 1980 年代

统计排名有用,但还不够;有太多的用例中单词与查询不完全匹配。例如,单复数术语,动词变化(现在时与过去时,现在分词,等等。)、粘合或复合语言等等。

这导致了自然语言处理(NLP)功能的发展,以帮助管理语言的复杂性。这些过程包括:

*** 词干化: 词干化是通过去除前缀和后缀,将单词转换成其基本形式的过程。这减少了资源使用并提高了计算能力。例如,“change”和“changing”转换为词根形式“chang”。

  • :与词干化类似,词汇化将单词转化为其基本(或根)形式。它通过考虑每个单词的上下文和形态学基础来做到这一点。比如“changed”转换为“change”,或者“is”转换为“be”。需要注意的一件重要事情是,词干化和词汇化都是用来将单词还原为原始格式的,所以大多数项目都使用其中的一种。

*** 分词 :在英语和许多基于拉丁语的语言中, 空格 是单词分隔符(或单词分隔符)的一个很好的近似,尽管由于每种语言如何组合和分隔单词部分的可变性 ,这个概念具有局限性。 比如很多英语复合名词都是不定写的(ice box = ice-box = icebox)。但是 空格 并不是所有书写的文字中都有的,没有它,分词就成了难题。没有琐碎的分词过程的语言包括汉语和日语,其中句子而不是单词被定界;泰语和老挝语,其中短语和句子而不是单词被定界;和越南语,其中音节而不是单词被定界。

  • 语音标注 :语音标注,也叫词性(PoS)标注,是一种将单词列表分类为名词、动词、形容词等的方法。,以便更准确地处理查询。它着眼于一个句子中单词之间的关系 来提高准确性 通过更清楚地“识别”句子的意思。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image via Medium

  • 实体提取 :实体提取是自然语言处理的另一项技术,对于语音搜索变得尤为重要。顾名思义,实体抽取是一种识别查询中不同元素的方法——人、地点、日期、频率、数量等。—帮助机器“理解”它包含的信息。实体提取对于克服简单的关键字搜索限制是一个非常好的解决方案,但是,像下面讨论的本体论和知识图一样,它只对特定的领域和查询有效。

本体和知识图:从 2005 年开始

开发对查询的更好的语义理解的另一种方法是使用本体和知识图。知识图表示不同元素——概念、对象、事件——之间的关系。本体定义了每个元素及其属性。

总之,这种语义方法试图表现不同的概念以及它们之间的联系。例如,谷歌的 使用了一个知识图 来不仅匹配搜索查询中的单词,还寻找查询所描述的实体。这是一种绕过关键字搜索限制的方法。

然而,在实践中,知识图和本体方法很难扩展或移植到不同的主题,主题很快就会过时——运动队、世界领袖,甚至产品属性。你为一个领域建立的知识图和本体不会轻易转移到下一个领域。虽然您可以为一个主题构建高度健壮的解决方案,但对于需要不同专业领域的不同主题,它可能会完全失败。只有包括谷歌在内的几家大公司能够自动开发知识图表。大多数其他公司不得不手工制作。

自动完成:2004 年开始

Autocomplete 是一个非常有用的语义搜索工具,可以有效地帮助客户更快地找到结果。最流行的例子是 Google 在 2004 年底发布了自动完成

自动完成是一种尝试预测搜索词以帮助客户输入查询的方法。它还提供上下文建议,帮助用户避免打字错误,并根据用户的位置或偏好过滤内容。这些建议由一系列算法生成,这些算法依赖于多种机器学习和自然语言处理算法和模型来生成匹配,从简单的前缀字符串开始,以识别、匹配和预测未完成的搜索查询的结果。

为了使自动完成有效地工作,搜索引擎必须有大量的数据来处理所有的会话,此外,它还必须能够根据每个用户的行为、以前的搜索、地理位置和其他属性来预测他们的搜索词。

预测自动完成现在已经成为任何现代的、有竞争力的搜索引擎的预期特征。

AI 排名:2007 年起

像 BM25 这样的早期关键词概率模型已经使用术语频率建立了相关性,如上所述。人工智能排名向前迈出了一大步,纳入了用户的反馈,以进一步确定相关性。这方面的一个例子是 强化学习 。强化学习的基本思想很简单:使用反馈来强化积极的结果。强化学习不是很少进行大的改变,而是经常进行增量改变。这样做有很多好处,比如持续改进结果和更快地显现其他潜在结果。此外,通过滚动实验,表现不佳的结果往往会很快消失。

和 Autocomplete 一样,强化学习需要大量数据才能返回有意义的结果;没有重要的历史性能数据,这是一个糟糕的解决方案。此外,强化学习往往对搜索结果排名非常好,但它并不能帮助识别记录,它仍然依赖于关键字和语言资源来识别匹配记录。

这就是矢量发挥作用的地方。

矢量搜索:从 2013 年开始

矢量表示的文字是 非常古老的 。它的理论根源可以追溯到 20 世纪 50 年代,在过去的几十年里有几个关键的进展。我们也看到了 2013 年开始的伟大创新:基于利用大型训练集的神经网络的新模型(特别是谷歌在 2018 年推出的 BERT)已经设定了标准。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image via Google. This diagram shows vector dimensions along simple axises. In practice, there can be thousands of dimensions in use.

什么是矢量搜索?最简单地说,这是一种找到具有相似特征的相关对象的方法。匹配是通过检测索引中对象之间的语义关系的机器学习模型来完成的。向量可以有上千种维度,但是为了简化,我们可以用一个三维图(上图)来可视化向量。向量搜索可以连接单词之间的关系,相似的向量聚集在一起。像“国王”、“女王”和“皇室”这样的词会聚集在一起,像“跑”、“快步”和“慢跑”这样的词也会聚集在一起。

几乎任何对象都可以嵌入和矢量化——文本、图像、视频、音乐等。早期的向量模型使用单词作为维度;每一个不同的单词都是一个维度,值就是单词的个数,这太简单了。随着 潜在语义分析(LSA) 和潜在语义索引(LSI)的出现,这种情况发生了变化,潜在语义索引通过减少维度的数量来分析文档和它们包含的术语之间的关系。今天,由矢量引擎驱动的较新的人工智能模型能够快速检索高维空间中的信息。

这已经改变了游戏规则。 更新的基于向量的解决方案现在可以知道“雪”、“冷”和“滑雪”是相关的概念。这一进步成就了上面提到的一些其他技术——如实体提取、本体、知识图等。—过时。

那么,为什么矢量不能驱动所有的搜索呢?主要有两个原因。一个原因是它们扩展速度慢且成本高。另一个原因是,在一些重要的用例中,向量搜索返回的结果质量不如简单查询。

在网上,消费者期待即时的搜索结果( 亚马逊谷歌 都对消费者行为滞后 100 毫秒的负面结果进行了研究)。你可以加速和扩展向量传递,但是它很贵,而且在速度上永远比不上关键词搜索。

对于某些查询,向量也不能提供与关键字搜索相同的相关性。在单字查询和精确品牌匹配查询上,关键字搜索仍然比矢量搜索效果更好。向量更适合多词查询、概念搜索、问题和其他更复杂的查询类型。例如,当你在关键词引擎上查询“阿迪达斯”时,默认情况下你只会看到阿迪达斯品牌。向量引擎中的默认行为是让所有鞋品牌用于“阿迪达斯”查询(例如,耐克、彪马、阿迪达斯等)。)因为都在同一个概念空间。关键词搜索仍然能提供更好的——也更容易解释(和调整)的——结果。

怎样才能两全其美?这就是混合搜索的用武之地。

混合搜索:2022 年及以后

混合搜索是一种将全文关键词搜索引擎和矢量搜索引擎结合成单一 API 的新方法。

对于同一个查询,同时运行关键字和矢量引擎非常复杂。一些公司选择通过顺序运行这些过程来规避复杂性;他们运行关键字搜索,然后,如果没有达到某个相关性阈值,运行向量搜索。这样做有很多糟糕的权衡——速度、准确性和训练每个模型的有限能力。

真正的混合搜索是不一样的。通过将全文关键词搜索和向量搜索结合到单个查询中,客户可以快速获得更准确的结果。当然,为了让矢量搜索像关键词搜索一样快,它需要搜索引擎在不增加疯狂成本的情况下提升性能。对于今天的大多数矢量引擎来说,这是不可能的。

这就是从 Search.io 获得的新技术neural search 能够提供帮助的地方。Neuralsearch 是唯一真正的混合搜索服务之一,无论规模或查询吞吐量如何,都可以提供个位数毫秒级的查询时间。

这是通过使用 散列 技术实现的,该技术将向量减少到文件大小的 1/10,并且不需要专门的硬件或 GPU 来扩展。我不会在这里详细介绍哈希是如何工作的——我们有一整篇关于 向量 vs 哈希 的博客文章——但是我要说我们已经看到了一些令人难以置信的结果…

  • 与当今最快的关键词搜索不相上下
  • 由于同时利用了语义和关键词检索,明显更加准确
  • 由于我们在 UI 中添加了一个一键式教学模块,重新培训异常变得更加容易——很快会有更多相关信息!

未来十年

很难预测下一个 10 年的搜索会是什么样子,但几乎可以肯定的是,它将由混合搜索功能组成——结合全文关键词和矢量搜索技术——这比任何一种单独的技术都更准确。

如果你是一名负责实现语义搜索的技术领导者,我希望我已经帮助你了解了语义技术的一些主要里程碑,我们现在的状况,以及未来的技术发展状况。****

网站搜索的(几乎)终极指南

原文:https://www.algolia.com/blog/product/the-ultimate-guide-to-site-search/

我们认为说我们是网站搜索专家是公平的。我们拥有大大小小 9000 多家客户,包括一些世界顶级品牌,如安德玛、鳄鱼、Medium 和 Twitch。

那么,为什么我们称之为几乎终极指南呢?

首先,因为网站搜索是一个复杂的话题。搜索 UX 由研究公司机构研究。相关性本身就是一个值得一书的主题。这样的例子不胜枚举。

其次,搜索是由各种各样的人构建和使用的,从开发人员和产品技术人员到销售人员和数字团队。为不同的搜索用户和专家写一本指南看起来会非常不同。

最后,搜索特定于您的行业、用例以及项目的复杂性。我们一直在为电子商务巨头提供开发者文档搜索,以及高度丰富和个性化的体验。为每个用例编写一个指南可能会有好几本书。

然而,这篇文章的目的是给你一个基本的工具包,让你能够:

1)了解网站搜索最重要的方面

2)准备好评估您正在使用或计划使用的工具,以及

3)确定有机会改进您的网站搜索及其结果的领域

说到这里,让我们开始吧。

我们所说的站点搜索是什么意思?

首先,让我们确定术语。

我们的工作定义是:网站搜索是一种功能,它使用户能够快速、有针对性地搜索网站或应用程序的内容或产品目录。

十多年来,谷歌一直在以极快的速度提供超相关的 as-you-type 网站搜索建议 (也称为查询建议)。我们对这种功能已经习以为常,甚至不再注意到它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在另一个不同的使用案例中,亚马逊彻底改变了我们的购物方式。为了提供对他们庞大目录的访问,他们建立了一个快速自动建议下拉菜单和强大的动态细化。

我们在这里关注的正是这种类型的搜索:它将人们与产品、内容和关键的结构化数据联系起来。它快速、可靠,可在多个平台上工作,并提供高度相关的结果。

在 Algolia,我们通常称之为“搜索”,并有一个单独的基于爬虫的解决方案,称为站点搜索。人们也称之为站内搜索、内部站点搜索、自定义内部搜索、网站搜索,但为了清楚起见,我们将使用最常用和众所周知的术语:“站点搜索”。

伟大站点搜索的要素

“伟大”对网站搜索意味着什么?

您可以为用户提供最精致的站点搜索体验,但是这种体验昂贵且难以构建,更难维护、优化和分析。

另一方面,您可以应用一个开箱即用的搜索工具,它非常容易实现、使用和修改,但是会使用户体验变得暗淡,或者更糟,变得不相关。

优秀的网站搜索应该对最终用户来说是相关的、丰富的和吸引人的,但对企业来说也是易用的、敏捷的和高效的。

以下是优秀网站搜索的关键要素

对用户而言:

  1. 相关性:只显示最相关的结果
  2. **速度:**现代用户不等待;他们反弹
  3. 大 UX/UI: 让它丰富、美丽、迷人
  4. **发现功能:**用户可以从中获得阅读或购买的灵感
  5. **全渠道可用性:**用户可以在任何设备上找到他们需要的东西
  6. **个性化:**让用户感到被了解、被理解和高效

对于企业而言:

  1. **分析:**这样你就可以最大化业务成果
  2. **销售/促销能力:**这样你就可以控制你的产品
  3. 对开发者和非技术用户的易用性

站点搜索相关性

出色的数字体验与高搜索相关性最直接相关。无论你提供的是产品、新闻、课程还是食谱,你越善于确定用户的意图并为他们提供相关的结果,用户体验就越好。人工智能在现代关联策略中起着关键作用。

语篇关联性

产品的名称、品牌、描述中的关键词——我们称之为属性——构成了文本相关性。以下是一些与文本相关的元素:

允许输入错误:即使用户拼错了一个单词或使用了停用词(the、and、at、with…),也能正确理解用户的意图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同义词:向用户提供一个同义词结果(例如,当他们输入“夹克”时,一件皮大衣)。这包括前缀搜索(如果您的用户搜索裤子,那么搜索“p”、“pa”、“pan”应该显示“pants”和“pants”的结果)。

复数:确保复数被考虑在内(搜索“暖脚器”会显示暖脚器)。

业务相关性

为了创造良好的用户体验,为用户提供他们最有可能采取行动的内容或产品是非常重要的。您可以使用季节性、受欢迎程度或点击率等业务指标来调整相关性,还可以使用站点搜索来推广和过滤项目。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

定期调整和优化

定期评估调整相关性的机会非常重要。转到搜索分析查看以下内容的结果:

1)您最常用的搜索

2)具有高点击位置的搜索(例如,最受欢迎的项目在位置 6 而不是 1)

3)没有结果的最受欢迎的搜索

通过这种方式,您可以识别没有为用户提供正确结果的搜索,然后调整您的相关性。定期调整搜索很重要,因为用户的需求和搜索模式会随着时间而变化。当你的网站内容或产品目录有较大变化时,做 18 也很重要。

伟大的 UX/UI

在一个理想的世界里,你的大多数客户会在第一次尝试时找到他们想要的东西,并且它会出现在前三个搜索结果中。但是如果他们被迫继续寻找,不满将会抬头(随之而来的是,跳出率和网站废弃率的增加)。

让您的用户能够找到他们想要的东西,并以直观的方式进行提炼,这是充分利用您的搜索的关键。以下是方法。

显示第一次击键的结果

就像在真实的对话中一样,让最终用户感觉到 UI 对他们的意图和查询做出了反应是很重要的。不要等到第二次或第三次击键才返回结果!

即打即搜的体验鼓励用户输入两倍的搜索词,这反过来会产生更多相关的搜索结果。

【T2外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示并突出显示可搜索的属性

假设你的顾客正在搜索你的目录寻找舒适的家居服,并寻找用氨纶制成的物品。如果你只是简单地显示含有氨纶的衣服的结果,但是用户不明白为什么这些结果会出现,他们可能会认为他们遇到了搜索错误,并失望地放弃你的网站。这就是为什么显示和突出显示可搜索的属性总是最佳实践,在这种情况下,在结果中突出显示“spandex”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用联合搜索

联合搜索让你可以向用户展示你创建的所有优秀内容。用户的查询可以显示您的数字财产上任何产品或内容目录的结果。看看 PubNub 如何让他们的用户从不同的内容来源发现相关的结果:电子书、博客、文档、解决方案。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
https://www . algolia . com/doc/guides/solutions/gallery/federated-search/

T7 T9 个性化

考虑一下这个:

像亚马逊和网飞这样的在线巨头已经把个性化的搜索和发现体验变成了必须。但是在开始个性化之路之前,了解你的用户、他们的需求和信号是至关重要的。

  • 定义你的产品或内容的哪些属性对个性化最重要:品牌、颜色、产品类型、尺寸、作者、它们的组合……有时重要的是你的客户的购买历史,有时是他们的品牌亲和力。

  • 决定什么样的用户操作对个性化最重要:点击“添加到购物车”比用户打开产品页面更有意义吗?

  • 使用 A/B 测试评估您的个性化策略对您的搜索指标的影响。假设您想要基于两个视图(例如,用户是否看到了产品页面或登录页面)和点击(用户点击了什么)来个性化搜索结果。A/B 测试这一策略,看看它是否会对您的搜索指标产生积极影响。然后,作为下一个测试,您可能会测试基于转换数据的个性化结果,比如当用户向购物车添加商品或购买商品、观看视频或阅读文章等。

  • **迭代!**无论你实施什么策略来改善用户体验,一定要做好测试、调整和迭代的计划。第一次几乎不可能把所有事情都做对,所以迭代对于从搜索中获得实际的商业结果是必不可少的。

    了解迪卡侬如何通过个性化搜索将转化率提高 50%

全渠道搜索

客户之旅从搜索开始。随着全球超过 38 亿互联网用户在网上搜索任何东西,伟大的搜索不仅必须以即时的方式满足用户的意图,而且必须在用户发现自己的任何地方:无论是在他们的手机、平板电脑还是笔记本电脑上。

移动搜索

打造卓越的全渠道搜索始于移动。用户在移动中,时间更紧迫,容易被通知分散注意力,所以他们在你的应用上的体验必须尽可能完美和无摩擦。

然而,移动带来了独特的挑战,从更小的屏幕到连接挑战。这里有一些克服它们的建议——你可以在这本电子书中找到更多。

  • 让你的搜索栏突出且位置恰当:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 除了 1-2 个“丰富”的搜索结果(有几个属性和一张图片),一个很好的选择是显示查询建议:用户可能已经想到的完整查询。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

充分利用设备功能。

尽可能使用:

  • 钱包/Apple Pay/Google Pay,而不是要求用户输入信用卡号码
  • GPS 来预填地址
  • 生物传感器,而不是询问密码
  • 用于输入的语音、语音转文本和图像

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所有这些都减少了摩擦,提供了更好的用户体验。

了解 Lacoste 如何利用网站搜索将移动转化率提高 62%

语音搜索

直到最近,消费者不得不在键盘或屏幕前与品牌建立关系并做出购买决定。起点总是一个搜索框。

但今天,对话式搜索——用户与技术互动,并以自然对话的形式获得回应——成为上下文相关和个性化互动的渠道,包括搜索和发现。

语音搜索影响到每个拥有网站、手机或语音应用的人。

这为人类如何与品牌和企业互动开辟了一个新的可能性世界。然而,与传统的文本搜索相比,成功的语音搜索更具挑战性:

  • 语音查询比基于关键字的搜索更复杂;用户通过自然语言使用更丰富的词汇。
  • 对于纯语音界面,您只能向用户返回一个结果,这需要更高的相关性。
  • 结果必须以消费者看来的思维速度交付,模仿自然语言对话的速度和风格。

现代搜索和发现技术必须应对这些挑战,以确保每种终端用户体验不仅实用,而且令人愉快。

了解 WW(前 Weight Watchers)如何使用语音搜索来增强用户的数字体验。

搜索,可以,但是发现呢?

用户通常会访问您的网站或其他数字资产,以便:

  1. 搜索,努力找到他们想要的东西…某一品牌、颜色和尺寸的一条牛仔裤),或者
  2. 浏览,可能想要得到某样东西,但不确定是什么(例如,一套商务休闲装,可能包括一条牛仔裤)。

您应该允许用户从搜索或导航开始,然后通过利用其他策略进一步细化他们的结果,例如在用户执行搜索后提供方面,或者使方面可搜索:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

换句话说,你应该为他们提供统一的搜索和发现体验。

搜索分析

应该对网站搜索进行衡量,并将其作为发展业务的杠杆。定义 KPI,然后分析你的搜索,这是从你的网站搜索中获取价值的关键的第一步。输入搜索分析。

搜索分析应该让你能够跟踪用户的每一次搜索:他们得到的结果,没有结果,“空”的结果,等等。通过将用户的搜索分解成流行搜索、点击位置、“无结果”数量和过滤器使用等指标,它可以帮助您对用户的行为进行建模。

【T2外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

搜索分析将让你更客观地思考如何构建你的产品数据,以及如何配置你的排名和相关性。

您将看到您的产品是否得到了正确的描述或表示,正确的产品是否出现在您的搜索结果中,以及根据搜索结果,您是否有太多的一种产品而没有足够的另一种产品。

推销你的产品,推广你的内容

您的业务团队可以使您的搜索结果策略与您的目录、收入目标、促销活动和营销策略保持一致。例如,您可以:

  1. 运行季节性活动:
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  2. 从搜索结果中隐藏项目: 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  3. Pin 项目:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方便开发者和企业用户使用

在每一次出色的用户搜索体验背后,都有忙碌的团队:开发或实施、维护搜索技术的开发人员,以及拥有搜索数据并希望深入了解这些数据的业务团队(产品经理、业务员、电子商务营销人员和全渠道策略师)。

  • 开发人员希望解决方案能够跨平台和设备轻松实现和维护,同时保持对微调、发展和创新的控制。
  • 业务利益相关者希望了解并调整用户体验,而不必了解背后的技术,也不需要依赖 IT/开发人员来做出改变。

伟大的网站搜索意味着平衡两者的需求。

想充分利用你的网站搜索吗?

让您的业务团队(数字战略家、产品经理、业务员、营销人员和内容编辑)能够管理和优化您的搜索。首先,他们是为你的产品或内容定义增长策略的人。其次,他们最直接负责投资回报和改善业务成果。最后但并非最不重要的一点是,这将释放宝贵的 IT/开发团队时间,用于改善用户体验。

总之…

虽然一开始考虑网站搜索的所有这些方面可能会让人不知所措,但请记住,它们可以按照对您的业务和带宽有意义的顺序分阶段解决。把它看作一个容易的成功路线图:每一次迭代都将有助于更快乐的用户和更好的业务结果。它的美妙之处在于,通过网站搜索,一个可以直接转化为另一个。

如果你想知道你的网站搜索在所有这些元素中处于什么位置,我们有一个简单、免费的自助式搜索评分器。

5 分钟给自己的搜索打分!

请不要犹豫给我们这个帖子的反馈和建议:hey@algolia.com。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值