This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

Reverse Maximum Inner Product Search: How to efficiently find users who would like to buy my item?

Daichi Amagata Osaka University, JST PRESTOJapan amagata.daichi@ist.osaka-u.ac.jp  and  Takahiro Hara Osaka UniversityJapan hara@ist.osaka-u.ac.jp
(2021)
Abstract.

The MIPS (maximum inner product search), which finds the item with the highest inner product with a given query user, is an essential problem in the recommendation field. It is usual that e-commerce companies face situations where they want to promote and sell new or discounted items. In these situations, we have to consider a question: who are interested in the items and how to find them? This paper answers this question by addressing a new problem called reverse maximum inner product search (reverse MIPS). Given a query vector and two sets of vectors (user vectors and item vectors), the problem of reverse MIPS finds a set of user vectors whose inner product with the query vector is the maximum among the query and item vectors. Although the importance of this problem is clear, its straightforward implementation incurs a computationally expensive cost.

We therefore propose Simpfer, a simple, fast, and exact algorithm for reverse MIPS. In an offline phase, Simpfer builds a simple index that maintains a lower-bound of the maximum inner product. By exploiting this index, Simpfer judges whether the query vector can have the maximum inner product or not, for a given user vector, in a constant time. Besides, our index enables filtering user vectors, which cannot have the maximum inner product with the query vector, in a batch. We theoretically demonstrate that Simpfer outperforms baselines employing state-of-the-art MIPS techniques. Furthermore, our extensive experiments on real datasets show that Simpfer is at least two orders magnitude faster than the baselines.

journalyear: 2021copyright: acmcopyrightconference: ; ; price: 15.00doi: 10.1145/3460231.3474229isbn: 978-1-4503-8458-2/21/09copyright: none

1. Introduction

The MIPS (maximum inner product search) problem, or kk-MIPS problem, is an essential tool in the recommendation field. Given a query (user) vector, this problem finds the kk item vectors with the highest inner product with the query vector among a set of item vectors. The search result, i.e., kk item vectors, can be used as recommendation for the user, and the user and item vectors are obtained via Matrix Factorization, which is well employed in recommender systems (Cremonesi et al., 2010; Van den Oord et al., 2013; Chen et al., 2020; Fraccaro et al., 2016). Although some learned similarities via MLP (i.e., neural networks) have also been devised, e.g., in (Zamani and Croft, 2020; Zhao et al., 2020), (Rendle et al., 2020) has actually demonstrated that inner product-based (i.e., Matrix Factorization-based) recommendations show better performances than learned similarities. We hence focus on inner product between dd-dimensional vectors that are obtained via Matrix Factorization.

1.1. Motivation

The kk-MIPS problem is effective for the case where a user wants to know items that s/he prefers (i.e., user-driven cases), but e-commerce companies usually face situations where they want to advertise an item, which may be new or discounted one, to users, which corresponds to item-driven cases. Trivially, an effective advertisement is to recommend such an item to users who would be interested in this item.

In the context of the kk-MIPS problem, if this item is included in the top-k item set for a user, we should make an advertisement of the item to this user. That is, we should find a set of such users. This paper addresses this new problem, called reverse kk-MIPS problem. To ease of presentation, this section assumes that k=1k=1 (the general case is defined in Section 2). Given a query vector 𝐪\mathbf{q} (the vector of a target item) and two sets of dd-dimensional vectors 𝐐\mathbf{Q} (set of user vectors) and 𝐏\mathbf{P} (set of item vectors), the reverse MIPS problem finds all user vectors 𝐮𝐐\mathbf{u}\in\mathbf{Q} such that 𝐪=\mathbf{q}= arg max𝐩𝐩𝐏{𝐪}𝐮{}_{\mathbf{p}\in\mathbf{P}\,\cup\,\{\mathbf{q}\}}\mathbf{p}\cdot\mathbf{u}.

Example 1.

Table 1 illustrates 𝐐\mathbf{Q}, 𝐏\mathbf{P}, and the MIPS result, i.e., 𝐩=\mathbf{p^{*}}= arg max𝐮𝐩𝐏𝐩{}_{\mathbf{p}\in\mathbf{P}}\,\mathbf{u}\cdot\mathbf{p}, of each vector in 𝐐\mathbf{Q}. Let 𝐪=𝐩𝟓\mathbf{q}=\mathbf{p_{5}}, and the result of reverse MIPS is {𝐮𝟑,𝐮𝟒}\{\mathbf{u_{3}},\mathbf{u_{4}}\} because 𝐩𝟓\mathbf{p_{5}} is the top-1 item for 𝐮𝟑\mathbf{u_{3}} and 𝐮𝟒\mathbf{u_{4}}. When 𝐪=𝐩𝟏\mathbf{q}=\mathbf{p_{1}}, we have no result, because 𝐩𝟏\mathbf{p_{1}} is not the top-1 item 𝐮𝐐\forall\mathbf{u}\in\mathbf{Q}. Similarly, when 𝐪=𝐩𝟐\mathbf{q}=\mathbf{p_{2}}, the result is {𝐮𝟐}\{\mathbf{u_{2}}\}.

From this example, we see that, if an e-commerce service wants to promote the item corresponding to 𝐩𝟓\mathbf{p_{5}}, this service can obtain the users who would prefer this item through the reverse MIPS, and sends them a notification about this item.

The reverse kk-MIPS problem is an effective tool not only for item-driven recommendations but also market analysis. Assume that we are given a vector of a new item, 𝐪\mathbf{q}. It is necessary to design an effective sales strategy to gain a profit. Understanding the features of users that may prefer the item is important for the strategy. Solving the reverse kk-MIPS of the query vector 𝐪\mathbf{q} supports this understanding.

Table 1. Example of reverse MIPS where 𝐪=𝐩𝟓\mathbf{q}=\mathbf{p_{5}}. The rows at right illustrate the result of MIPS on 𝐏\mathbf{P} for each 𝐮𝐐\mathbf{u}\in\mathbf{Q}.
𝐐\mathbf{Q} 𝐏\mathbf{P} 𝐩\mathbf{p^{*}} (MIPS result)
𝐮𝟏\mathbf{u_{1}} 3.1,0.1\langle 3.1,0.1\rangle 𝐩𝟏\mathbf{p_{1}} 2.8,0.6\langle 2.8,0.6\rangle 𝐮𝟏\mathbf{u_{1}} 𝐩𝟑\mathbf{p_{3}}
𝐮𝟐\mathbf{u_{2}} 2.5,2.0\langle 2.5,2.0\rangle 𝐩𝟐\mathbf{p_{2}} 2.5,1.8\langle 2.5,1.8\rangle 𝐮𝟐\mathbf{u_{2}} 𝐩𝟐\mathbf{p_{2}}
𝐮𝟑\mathbf{u_{3}} 1.5,2.2\langle 1.5,2.2\rangle 𝐩𝟑\mathbf{p_{3}} 3.2,1.0\langle 3.2,1.0\rangle 𝐮𝟑\mathbf{u_{3}} 𝐩𝟓\mathbf{p_{5}}
𝐮𝟒\mathbf{u_{4}} 1.8,3.2\langle 1.8,3.2\rangle 𝐩𝟒\mathbf{p_{4}} 1.4,2.6\langle 1.4,2.6\rangle 𝐮𝟒\mathbf{u_{4}} 𝐩𝟓\mathbf{p_{5}}
𝐩𝟓\mathbf{p_{5}} 0.5,3.4\langle 0.5,3.4\rangle

1.2. Challenge

The above practical situations clarify the importance of reverse MIPS. Because e-commerce services have large number of users and items, |𝐐||\mathbf{Q}| and |𝐏||\mathbf{P}| are large. In addition, a query vector is not pre-known and is specified on-demand fashion. The reverse kk-MIPS is therefore conducted online and is computationally-intensive task. Now the question is how to efficiently obtain the reverse MIPS result for a given query.

A straightforward approach is to run a state-of-the-art exact MIPS algorithm for every vector in 𝐐\mathbf{Q} and check whether or not 𝐪=\mathbf{q}= arg max𝐮𝐩𝐏{𝐪}𝐩{}_{\mathbf{p}\in\mathbf{P}\,\cup\,\{\mathbf{q}\}}\,\mathbf{u}\cdot\mathbf{p}. This approach obtains the exact result, but it incurs unnecessary computation. The poor performance of this approach is derived from the following observations. First, we do not need the MIPS result of 𝐮\mathbf{u} when 𝐪\mathbf{q} does not have the maximum inner product with 𝐮\mathbf{u}. Second, this approach certainly accesses all user vectors in 𝐐\mathbf{Q}, although many of them do not contribute to the reverse MIPS result. However, it is not trivial to skip evaluations of some user vectors without losing correctness. Last, its theoretical cost is the same as the brute-force case, i.e., O(nmd)O(nmd) time, where n=|𝐐|n=|\mathbf{Q}| and m=|𝐏|m=|\mathbf{P}|, which is not appropriate for online computations. These concerns pose challenges for solving the reverse MIPS problem efficiently.

1.3. Contribution

To address the above issues, we propose Simpfer, a simple, fast, and exact algorithm for reverse MIPS. The general idea of Simpfer is to efficiently solve the decision version of the MIPS problem. Because the reverse MIPS of a query 𝐪\mathbf{q} requires a yes/no decision for each vector 𝐮𝐐\mathbf{u}\in\mathbf{Q}, it is sufficient to know whether or not 𝐪\mathbf{q} can have the maximum inner product for 𝐮\mathbf{u}. Simpfer achieves this in O(1)O(1) time in many cases by exploiting its index built in an offline phase. This index furthermore supports a constant time filtering that prunes vectors in a batch if their answers are no. We theoretically demonstrate that the time complexity of Simpfer is lower than O(nmd)O(nmd).

The summary of our contributions is as follows:

  • We address the problem of reverse kk-MIPS. To our knowledge, this is the first work to study this problem.

  • We propose Simpfer as an exact solution to the reverse MIPS problem. Simpfer solves the decision version of the MIPS problem at both the group-level and the vector-level efficiently. Simpfer is surprisingly simple, but our analysis demonstrates that Simpfer theoretically outperforms a solution that employs a state-of-the-art exact MIPS algorithm.

  • We conduct extensive experiments on four real datasets, MovieLens, Netflix, Amazon, and Yahoo!. The results show that Simpfer is at least two orders magnitude faster than baselines.

  • Simpfer is easy to deploy: if recommender systems have user and item vector sets that are designed in the inner product space, they are ready to use Simpfer via our open source implementation111https://github.com/amgt-d1/Simpfer. This is because Simpfer is unsupervised and has only a single parameter (the maximum value of kk) that is easy to tune and has no effect on the running time of online processing.

This paper is an error-corrected version of (Amagata and Hara, 2021). We fixed some writing errors and minor bugs in our implementation, but our result is consistent with (Amagata and Hara, 2021).

Organization. The rest of this paper is organized as follows. We formally define our problem in Section 2. We review related work in Section 3. Our proposed algorithm is presented in Section 4, and the experimental results are reported in Section 5. Last, we conclude this paper in Section 6.

2. Problem Definition

Let 𝐏\mathbf{P} be a set of dd-dimensional real-valued item vectors, and we assume that dd is high (Liu et al., 2019; Shrivastava and Li, 2014). Given a query vector, the maximum inner product search (MIPS) problem finds

𝐩=argmax𝐩𝐏𝐩𝐪.\mathbf{p^{*}}=\mathop{\rm arg\,max}\limits_{\mathbf{p}\in\mathbf{P}}\,\mathbf{p}\cdot\mathbf{q}.

The general version of the MIPS problem, i.e., the kk-MIPS problem, is defined as follows:

Definition 1 (kk-MIPS problem).

Given a set of vectors 𝐏\mathbf{P}, a query vector 𝐪\mathbf{q}, and kk, the kk-MIPS problem finds kk vectors in 𝐏\mathbf{P} that have the highest inner products with 𝐪\mathbf{q}.

For a user (i.e., query), the kk-MIPS problem can retrieve kk items (e.g., vectors in 𝐏\mathbf{P}) that the user would prefer. Different from this, the reverse kk-MIPS problem can retrieve a set of users who would prefer a given item. That is, in the reverse kk-MIPS problem, a query can be an item, and this problem finds users attracted by the query item. Therefore, the reverse kk-MIPS is effective for advertisement and market analysis, as described in Section 1. We formally define this problem222Actually, the reverse top-k query (and its variant), a similar concept to the reverse kk-MIPS problem, has been proposed in (Vlachou et al., 2010, 2011; Zhang et al., 2014). It is important to note that these works do not suit recent recommender systems. First, they assume that dd is low (dd is around 5), which is not probable in Matrix Factorization. Second, they consider the Euclidean space, whereas inner product is a non-metric space. Because the reverse top-k query processing algorithms are optimized for these assumptions, they cannot be employed in Matrix Factorization-based recommender systems and cannot solve (or be extended for) the reverse kk-MIPS problem..

Definition 2 (Reverse kk-MIPS problem).

Given a query (item) vector 𝐪\mathbf{q}, kk, and two sets of vectors 𝐐\mathbf{Q} (set of user vectors) and 𝐏\mathbf{P} (set of item vectors), the reverse kk-MIPS problem finds all vectors 𝐮𝐐\mathbf{u}\in\mathbf{Q} such that 𝐪\mathbf{q} is included in the kk-MIPS result of 𝐮\mathbf{u} among 𝐏{𝐪}\mathbf{P}\cup\{\mathbf{q}\}.

Note that 𝐪\mathbf{q} can be 𝐪𝐏\mathbf{q}\in\mathbf{P}, as described in Example 1. We use nn and mm to denote |𝐐||\mathbf{Q}| and |𝐏||\mathbf{P}|, respectively.

Our only assumption is that there is a maximum kk that can be specified, denoted by kmaxk_{max}. This is practical, because kk should be small, e.g., k=5k=5 (Jiang et al., 2020) or k=10k=10 (Bachrach et al., 2014), to make applications effective. (We explain how to deal with the case of k>kmaxk>k_{max} in Section 4.1.) This paper develops an exact solution to the new problem in Definition 2.

3. Related Work

Exact kk-MIPS Algorithm. The reverse kk-MIPS problem can be solved exactly by conducting an exact kk-MIPS algorithm for each user vector in 𝐐\mathbf{Q}. The first line of solution to the kk-MIPS problem is a tree-index approach (Koenigstein et al., 2012; Ram and Gray, 2012; Curtin et al., 2013). For example, (Ram and Gray, 2012) proposed a tree-based algorithm that processes kk-MIPS not only for a single user vector but also for some user vectors in a batch. Unfortunately, the performances of the tree-index algorithms degrade for large dd because of the curse of dimensionality.

LEMP (Teflioudi et al., 2015; Teflioudi and Gemulla, 2016) avoids this issue and significantly outperforms the tree-based algorithms. LEMP uses several search algorithms according to the norm of each vector. In addition, LEMP devises an early stop scheme of inner product computation. During the computation of 𝐮𝐪\mathbf{u}\cdot\mathbf{q}, LEMP computes an upper-bound of 𝐮𝐪\mathbf{u}\cdot\mathbf{q}. If this bound is lower than an intermediate kk-th maximum inner product, qq cannot be in the final result, thus the inner product computation can be stopped. LEMP is actually designed for the top-k inner product join problem: for each 𝐮𝐐\mathbf{u}\in\mathbf{Q}, it finds the kk-MIPS result of 𝐮\mathbf{u}. Therefore, LEMP can solve the reverse kk-MIPS problem, but it is not efficient as demonstrated in Section 5.

FEXIPRO (Li et al., 2017) further improves the early stop of inner product computation of LEMP. Specifically, FEXIPRO exploits singular value decomposition, integer approximation, and a transformation to positive values. These techniques aim at obtaining a tighter upper-bound of 𝐮𝐪\mathbf{u}\cdot\mathbf{q} as early as possible. (Li et al., 2017) reports that state-of-the-art tree-index algorithm (Ram and Gray, 2012) is completely outperformed by FEXIPRO. Maximus (Abuzaid et al., 2019) takes hardware optimization into account. It is, however, limited to specific CPUs, so we do not consider Maximus. Note that LEMP and FEXIPRO are heuristic algorithms, and O(nmd)O(nmd) time is required for the reverse kk-MIPS problem.

Approximation kk-MIPS Algorithm. To solve the kk-MIPS problem in sub-linear time by sacrificing correctness, many works proposed approximation kk-MIPS algorithms. There are several approaches to the approximation kk-MIPS problem: sampling-based (Cohen and Lewis, 1999; Liu et al., 2019; Yu et al., 2017), LSH-based (Huang et al., 2018; Neyshabur and Srebro, 2015; Shrivastava and Li, 2014; Yan et al., 2018), graph-based (Liu et al., 2020; Morozov and Babenko, 2018; Zhou et al., 2019), and quantization approaches (Dai et al., 2020; Guo et al., 2020). They have both strong and weak points. For example, LSH-based algorithms enjoy a theoretical accuracy guarantee. However, they are empirically slower than graph-based algorithms that have no theoretical performance guarantee. Literature (Bachrach et al., 2014) shows that the MIPS problem can be transformed into the Euclidean nearest neighbor search problem, but it still cannot provide the correct answer. Besides, existing works that address the (reverse) nearest neighbor search problem assume low-dimensional data (Yang et al., 2015) or consider approximation algorithms (Li et al., 2020).

Since this paper focuses on the exact result, these approximation kk-MIPS algorithms cannot be utilized. In addition, approximate answers may lose effectiveness of the reverse kk-MIPS problem. If applications cannot contain users, who are the answer of the kk-MIPS problem, these users may lose chances of knowing the target item, which would reduce profits. On the other hand, if applications contain users, who are not the answer of the kk-MIPS problem, as an approximate answer, they advertise the target item to users who are not interested in the item. This also may lose future profits, because such users may stop receiving advertisements if they get those of non-interesting items.

4. Proposed Algorithm

To efficiently solve the reverse MIPS problem, we propose Simpfer. Its general idea is to efficiently solve the decision version of the kk-MIPS problem.

Definition 3 (kk-MIPS decision problem).

Given a query 𝐪\mathbf{q}, kk, a user vector 𝐮\mathbf{u}, and 𝐏\mathbf{P}, this problem returns yes (no) if 𝐪\mathbf{q} is (not) included in the kk-MIPS result of 𝐮\mathbf{u}.

Notice that this problem does not require the complete kk-MIPS result. We can terminate the kk-MIPS of 𝐮\mathbf{u} whenever it is guaranteed that 𝐪\mathbf{q} is (not) included in the kk-MIPS result.

To achieve this early termination efficiently, it is necessary to obtain a lower-bound and an upper-bound of the kk-th highest inner product of 𝐮\mathbf{u}. Let ϕ\phi and μ\mu respectively be a lower-bound and an upper-bound of the kk-th highest inner product of 𝐮\mathbf{u} on 𝐏\mathbf{P}. If ϕ𝐮𝐪\phi\geq\mathbf{u}\cdot\mathbf{q}, it is guaranteed that 𝐪\mathbf{q} does not have the kk highest inner product with 𝐮\mathbf{u}. Similarly, if μ𝐮𝐪\mu\leq\mathbf{u}\cdot\mathbf{q}, it is guaranteed that 𝐪\mathbf{q} has the kk highest inner product with 𝐮\mathbf{u}. This observation implies that we need to efficiently obtain ϕ\phi and μ\mu. Simpfer does pre-processing to enable it in an offline phase. Besides, since n=|𝐐|n=|\mathbf{Q}| is often large, accessing all user vectors is also time-consuming. This requires a filtering technique that enables the pruning of user vectors that are not included in the reverse kk-MIPS result in a batch. During the pre-processing, Simpfer arranges 𝐐\mathbf{Q} so that batch filtering is enabled. Simpfer exploits the data structures built in the pre-processing phase to quickly solve the kk-MIPS decision problem.

4.1. Pre-processing

The objective of this pre-processing phase is to build data structures that support efficient computation of a lower-bound and an upper-bound of the kk-th highest inner product for each 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q}, for arbitrary queries. We utilize Cauchy–Schwarz inequality for upper-bounding. Hence we need the Euclidean norm 𝐮𝐢\|\mathbf{u_{i}}\| for each 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q}. To obtain a lower-bound of the kk-th highest inner product, we need to access at least kk item vectors in 𝐏\mathbf{P}. The norm computation and lower-bound computation are independent of queries (as long as kkmaxk\leq k_{max}), so they can be pre-computed. In this phase, Simpfer builds the following array for each 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q}.

Definition 4 (Lower-bound array).

The lower-bound array LiL_{i} of a user vector 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q} is an array whose jj-th element, LijL_{i}^{j}, maintains a lower-bound of the jj-th inner product of 𝐮𝐢\mathbf{u_{i}} on 𝐏\mathbf{P}, and |Li|=kmax|L_{i}|=k_{max}.

Furthermore, to enable batch filtering, Simpfer builds a block, which is defined below.

Definition 5 (Block).

A block 𝐁\mathbf{B} is a subset of 𝐐\mathbf{Q}. The set of vectors belonging to 𝐁\mathbf{B} is represented by 𝐐(𝐁)\mathbf{Q}(\mathbf{B}). Besides, we use L(𝐁)L(\mathbf{B}) to represent the lower-bound array of this block, and

(1) Lj(𝐁)=min𝐮𝐢𝐐(𝐁)LijL^{j}(\mathbf{B})=\min_{\mathbf{u_{i}}\in\mathbf{Q}(\mathbf{B})}L_{i}^{j}

The block size |𝐐(𝐁)||\mathbf{Q}(\mathbf{B})| can be arbitrarily determined, and we set |𝐐(𝐁)|=O(logn)|\mathbf{Q}(\mathbf{B})|=O(\log n) to avoid system parameter setting.

Input: 𝐐\mathbf{Q}, 𝐏\mathbf{P}, and kmaxk_{max}
1
2for each 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q} do
3       Compute 𝐮𝐢\|\mathbf{u_{i}}\|
4for each 𝐩𝐣𝐏\mathbf{p_{j}}\in\mathbf{P} do
5       Compute 𝐩𝐣\|\mathbf{p_{j}}\|
6Sort 𝐐\mathbf{Q} and 𝐏\mathbf{P} in descending order of norm size
7 𝐏\mathbf{P^{\prime}}\leftarrow the first O(kmax)O(k_{max}) vectors in 𝐏\mathbf{P}
8 for each 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q} do
9       𝐑kmax\mathbf{R}\leftarrow k_{max} vectors 𝐩𝐏\mathbf{p}\in\mathbf{P^{\prime}} that maximize 𝐮𝐢𝐩\mathbf{u_{i}}\cdot\mathbf{p}
10       for j=1j=1 to kmaxk_{max} do
11             Lij𝐮𝐢𝐩L_{i}^{j}\leftarrow\mathbf{u_{i}}\cdot\mathbf{p}, where 𝐩\mathbf{p} provides the jj-th highest inner product with 𝐮𝐢\mathbf{u_{i}} in 𝐑\mathbf{R}
12      
13\mathcal{B}\leftarrow\varnothing, 𝐁\mathbf{B}\leftarrow a new block
14 for each 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q} do
15       𝐐(𝐁)𝐐(𝐁){𝐮𝐢}\mathbf{Q}(\mathbf{B})\leftarrow\mathbf{Q}(\mathbf{B})\cup\{\mathbf{u_{i}}\}
16       for j=1j=1 to kmaxk_{max} do
17             Lj(𝐁)min{Lj(𝐁),Lij}L^{j}(\mathbf{B})\leftarrow\min\{L^{j}(\mathbf{B}),L_{i}^{j}\}
18      if |𝐐(𝐁)|=O(logn)|\mathbf{Q}(\mathbf{B})|=O(\log n) then
19             {𝐁}\mathcal{B}\leftarrow\mathcal{B}\cup\{\mathbf{B}\}
20             𝐁\mathbf{B}\leftarrow a new block
21      
Algorithm 1 Pre-Processing of Simpfer

Pre-processing algorithm. Algorithm 1 describes the pre-processing algorithm of Simpfer.

(1) Norm computation: First, for each 𝐮𝐐\mathbf{u}\in\mathbf{Q} and 𝐩𝐏\mathbf{p}\in\mathbf{P}, its norm is computed. Then, 𝐐\mathbf{Q} and 𝐏\mathbf{P} are sorted in descending order of norm.

(2) Lower-bound array building: Let 𝐏\mathbf{P^{\prime}} be the set of the first O(kmax)O(k_{max}) vectors in 𝐏\mathbf{P}. For each 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q}, LiL_{i} is built by using 𝐏\mathbf{P^{\prime}}. That is, Lij=𝐮𝐢𝐩L_{i}^{j}=\mathbf{u_{i}}\cdot\mathbf{p}, where 𝐩𝐏\mathbf{p}\in\mathbf{P^{\prime}} yields the jj-th highest inner product for 𝐮𝐏\mathbf{u}\in\mathbf{P^{\prime}}. The behind idea of using the first O(kmax)O(k_{max}) item vectors in 𝐏\mathbf{P} is that vectors with large norms tend to provide large inner products (Liu et al., 2020). This means that we can obtain a tight lower-bound at a lightweight cost.

(3) Block building: After that, blocks are built, so that user vectors in a block keep the order and each block is disjoint. Given a new block 𝐁\mathbf{B}, we insert user vectors 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q} into 𝐐(𝐁)\mathbf{Q}(\mathbf{B}) in sequence while updating Lj(𝐁)L^{j}(\mathbf{B}), until we have |𝐐(𝐁)|=O(logn)|\mathbf{Q}(\mathbf{B})|=O(\log n). When |𝐐(𝐁)|=O(logn)|\mathbf{Q}(\mathbf{B})|=O(\log n), we insert 𝐁\mathbf{B} into a set of blocks \mathcal{B}, and make a new block.

Example 2.

Figure 1 illustrates an example of block building. For ease of presentation, we use bb as a block size and n=3bn=3b. For example, 𝐐(𝐁𝟏)={𝐮𝟏,,𝐮𝐛}\mathbf{Q}(\mathbf{B_{1}})=\{\mathbf{u_{1}},...,\mathbf{u_{b}}\}, and 𝐮𝟏𝐮𝐛\|\mathbf{u_{1}}\|\geq...\geq\|\mathbf{u_{b}}\|.

Refer to caption
Figure 1. Example of block building.
\Description

[Block structure]Our block structure for a set 𝐐\mathbf{Q} of user vectors, where they are sorted in descending order of norm. Every block is disjoint, and each user vector is assigned to a unique block.

Generally, this pre-processing is done only once. An exception is the case where a query with k>kmaxk>k_{max} is specified. In this case, Simpfer re-builds the data structures then processes the query. This is actually much faster than the baselines, as shown in Section 5.7.

Analysis. We here prove that the time complexity of this pre-processing is reasonable. Without loss of generality, we assume nmn\geq m, because this is a usual case for many real datasets, as the ones we use in Section 5.

Theorem 1.

Algorithm 1 requires O(n(d+logn))O(n(d+\log n)) time.

Proof. The norm computation requires O((n+m)d)=O(nd)O((n+m)d)=O(nd) time, and sorting requires O(nlogn)O(n\log n) time. The building of lower-bound arrays needs O(n×kmax)O(n\times k_{max}) time, since O(|𝐏|)=O(kmax)O(|\mathbf{P^{\prime}}|)=O(k_{max}). Because kmax=O(1)k_{max}=O(1), O(n×kmax)=O(n)O(n\times k_{max})=O(n). The block building also requires O(n×kmax)=O(n)O(n\times k_{max})=O(n) time. In total, this pre-processing requires O(n(d+logn))O(n(d+\log n)) time. \square

The space complexity of Simpfer is also reasonable.

Theorem 2.

The space complexity of the index is O(n)O(n).

Proof. The space of the lower-bound arrays of user vectors is O(n|Li|)=O(n)O(\sum_{n}|L_{i}|)=O(n), since O(|Li|)=O(1)O(|L_{i}|)=O(1). Blocks are disjoint, and the space of the lower-bound array of a block is also O(1)O(1). We hence have O(nlogn)O(\frac{n}{\log n}) lower-bound arrays of blocks. Now this theorem is clear. \square

4.2. Upper- and Lower-bounding for the kk-MIPS Decision Problem

Before we present the details of Simpfer, we introduce our techniques that can quickly answer the kk-MIPS decision problem for a given query 𝐪\mathbf{q}. Recall that 𝐐\mathbf{Q} and 𝐏\mathbf{P} are sorted in descending order of norm. Without loss of generality, we assume that 𝐮𝐢𝐮𝐢+𝟏\|\mathbf{u_{i}}\|\geq\|\mathbf{u_{i+1}}\| for each i[1,n1]i\in[1,n-1] and 𝐩𝐣𝐩𝐣+𝟏\|\mathbf{p_{j}}\|\geq\|\mathbf{p_{j+1}}\| for each j[1,m1]j\in[1,m-1], for ease of presentation.

Given a query 𝐪\mathbf{q} and a user vector 𝐮𝐢𝐐\mathbf{u_{i}}\in\mathbf{Q}, we have 𝐮𝐢𝐪\mathbf{u_{i}}\cdot\mathbf{q}. Although our data structures are simple, they provide effective and “light-weight” filters. Specifically, we can quickly answer the kk-MIPS decision problem on 𝐪\mathbf{q} through the following observations333Existing algorithms for top-k retrieval, e.g., (Ding and Suel, 2011; Fontoura et al., 2011), use similar (but different) bounding techniques. They use a bound (e.g., obtained by a block) to early stop linear scans. On the other hand, our bounding is designed to avoid linear scans and to filer multiple user vectors in a batch..

Lemma 1.

If 𝐮𝐢𝐪Lik\mathbf{u_{i}}\cdot\mathbf{q}\leq L_{i}^{k}, it is guaranteed that 𝐪\mathbf{q} is not included in the kk-MIPS result of 𝐮𝐢\mathbf{u_{i}}.

Proof. Let 𝐩\mathbf{p} be the vector in 𝐏\mathbf{P} such that 𝐮𝐢𝐩\mathbf{u_{i}}\cdot\mathbf{p} is the kk-th highest inner product in 𝐏\mathbf{P}. The fact that Lik𝐮𝐢𝐩L_{i}^{k}\leq\mathbf{u_{i}}\cdot\mathbf{p} immediately derives this lemma. \square

It is important to see that the above lemma provides “no” as the answer to the kk-MIPS decision problem on 𝐪\mathbf{q} in O(1)O(1) time (after computing 𝐮𝐢𝐪\mathbf{u_{i}}\cdot\mathbf{q}). The next lemma deals with the “yes” case in O(1)O(1) time.

Lemma 2.

If 𝐮𝐢𝐪𝐮𝐢𝐩𝐤\mathbf{u_{i}}\cdot\mathbf{q}\geq\|\mathbf{u_{i}}\|\|\mathbf{p_{k}}\|, it is guaranteed that 𝐪\mathbf{q} is included in the kk-MIPS result of 𝐮𝐢\mathbf{u_{i}}.

Proof. From Cauchy–Schwarz inequality, we have 𝐮𝐢𝐩𝐣𝐮𝐢𝐩𝐣\mathbf{u_{i}}\cdot\mathbf{p_{j}}\leq\|\mathbf{u_{i}}\|\|\mathbf{p_{j}}\|. Since 𝐩𝐤\|\mathbf{p_{k}}\| is the kk-th highest norm in 𝐏\mathbf{P}, 𝐮𝐢𝐩𝐮𝐢𝐩𝐤\mathbf{u_{i}}\cdot\mathbf{p}\leq\|\mathbf{u_{i}}\|\|\mathbf{p_{k}}\|, where 𝐩\mathbf{p} is defined in the proof of Lemma 1. That is, 𝐮𝐢𝐩𝐤\|\mathbf{u_{i}}\|\|\mathbf{p_{k}}\| is an upper-bound of 𝐮𝐢𝐩\mathbf{u_{i}}\cdot\mathbf{p}. Now it is clear that 𝐪\mathbf{q} has 𝐮𝐢𝐪𝐮𝐢𝐩\mathbf{u_{i}}\cdot\mathbf{q}\geq\mathbf{u_{i}}\cdot\mathbf{p} if 𝐮𝐢𝐪𝐮𝐢𝐩𝐤\mathbf{u_{i}}\cdot\mathbf{q}\geq\|\mathbf{u_{i}}\|\|\mathbf{p_{k}}\|. \square

We next introduce a technique that yields “no” as the answer for all user vectors in a block 𝐁\mathbf{B} in O(1)O(1) time.

Lemma 3.

Given a block 𝐁\mathbf{B}, let 𝐮𝐢\mathbf{u_{i}} be the first vector in 𝐐(𝐁)\mathbf{Q}(\mathbf{B}). If 𝐮𝐢𝐪Lk(𝐁)\|\mathbf{u_{i}}\|\|\mathbf{q}\|\leq L^{k}(\mathbf{B}), for all 𝐮𝐣𝐐(𝐁)\mathbf{u_{j}}\in\mathbf{Q}(\mathbf{B}), it is guaranteed that 𝐪\mathbf{q} is not included in the kk-MIPS result of 𝐮𝐣\mathbf{u_{j}}.

Proof. From Cauchy–Schwarz inequality, 𝐮𝐢𝐪\|\mathbf{u_{i}}\|\|\mathbf{q}\| is an upper-bound of 𝐮𝐣𝐪\mathbf{u_{j}}\cdot\mathbf{q} for all 𝐮𝐣𝐐(𝐁)\mathbf{u_{j}}\in\mathbf{Q}(\mathbf{B}), since 𝐐(𝐁)={𝐮𝐢,𝐮𝐢+𝟏,}\mathbf{Q}(\mathbf{B})=\{\mathbf{u_{i}},\mathbf{u_{i+1}},...\}. We have Lk(𝐁)LjkL^{k}(\mathbf{B})\leq L_{j}^{k} for all 𝐮𝐣𝐐(𝐁)\mathbf{u_{j}}\in\mathbf{Q}(\mathbf{B}), from Equation (1). Therefore, if 𝐮𝐢𝐪Lk(𝐁)\|\mathbf{u_{i}}\|\|\mathbf{q}\|\leq L^{k}(\mathbf{B}), 𝐮𝐣𝐪\mathbf{u_{j}}\cdot\mathbf{q} cannot be the kk highest inner product. \square

If a user vector 𝐮𝐢\mathbf{u_{i}} cannot obtain a yes/no answer from Lemmas 13, Simpfer uses a linear scan of 𝐏\mathbf{P} to obtain the answer. Let τ\tau be a threshold, i.e., an intermediate kk-th highest inner product for 𝐮\mathbf{u} during the linear scan. By using the following corollaries, Simpfer can obtain the correct answer and early terminate the linear scan.

Corollary 1.

Assume that 𝐪\mathbf{q} is included in an intermediate result of the kk-MIPS of 𝐮𝐢\mathbf{u_{i}} and we now evaluate 𝐩𝐣𝐏\mathbf{p_{j}}\in\mathbf{P}. If 𝐮𝐢𝐪𝐮𝐢𝐩𝐣\mathbf{u_{i}}\cdot\mathbf{q}\geq\|\mathbf{u_{i}}\|\|\mathbf{p_{j}}\|, it is guaranteed that 𝐪\mathbf{q} is included in the final result of the kk-MIPS of 𝐮𝐢\mathbf{u_{i}}.

Proof. Trivially, we have jkj\geq k. Besides, 𝐮𝐢𝐩𝐣𝐮𝐢𝐩𝐥\|\mathbf{u_{i}}\|\|\mathbf{p_{j}}\|\geq\mathbf{u_{i}}\cdot\mathbf{p_{l}} for all klmk\leq l\leq m, because 𝐏\mathbf{P} is sorted. This corollary is hence true. \square

From this corollary, we also have:

Corollary 2.

When we have τ>𝐮𝐢𝐪\tau>\mathbf{u_{i}}\cdot\mathbf{q}, it is guaranteed that 𝐪\mathbf{q} is not included in the final result of the kk-MIPS of 𝐮𝐢\mathbf{u_{i}}.

Algorithm 2 summarizes the linear scan that incorporates Corollaries 12.

4.3. The Algorithm

Now we are ready to present Simpfer. Algorithm 3 details it. To start with, Simpfer computes 𝐪\|\mathbf{q}\|. Given a block 𝐁\mathbf{B}\in\mathcal{B}, Simpfer tests Lemma 3 (line 3). If the user vectors in 𝐐(𝐁)\mathbf{Q}(\mathbf{B}) may have yes as an answer, for each 𝐮𝐢𝐐(𝐁)\mathbf{u_{i}}\in\mathbf{Q}(\mathbf{B}), Simpfer does the following. (Otherwise, all user vectors in 𝐐(𝐁)\mathbf{Q}(\mathbf{B}) are ignored.) First, it computes 𝐮𝐢𝐪\mathbf{u_{i}}\cdot\mathbf{q}, then tests Lemma 1 (line 3). If 𝐮𝐢\mathbf{u_{i}} cannot have the answer from this lemma, Simpfer tests Lemma 2. Simpfer inserts 𝐮𝐢\mathbf{u_{i}} into the result set 𝐐𝐫\mathbf{Q_{r}} if 𝐮𝐢𝐪𝐮𝐢𝐩𝐤\mathbf{u_{i}}\cdot\mathbf{q}\geq\|\mathbf{u_{i}}\|\|\mathbf{p_{k}}\|. Otherwise, Simpfer conducts Linear-scan(𝐮𝐢)(\mathbf{u_{i}}) (Algorithm 2). If Linear-scan(𝐮𝐢)(\mathbf{u_{i}}) returns 1 (yes), 𝐮𝐢\mathbf{u_{i}} is inserted into 𝐐𝐫\mathbf{Q_{r}}. The above operations are repeated for each 𝐁\mathbf{B}\in\mathcal{B}. Finally, Simpfer returns the result set 𝐐𝐫\mathbf{Q_{r}}.

The correctness of Simpfer is obvious, because it conducts Linear-scan()(\cdot) for all vectors that cannot have yes/no answers from Lemmas 13. Besides, Simpfer accesses blocks sequentially, so it is easy to parallelize by using multicore. Simpfer hence further accelerates the processing of reverse kk-MIPS, see Section 5.6.

Input: 𝐮𝐐\mathbf{u}\in\mathbf{Q}, 𝐏\mathbf{P}, 𝐪\mathbf{q}, and kk
1
2I{𝐮𝐪}I\leftarrow\{\mathbf{u}\cdot\mathbf{q}\}, τ0\tau\leftarrow 0
3 for each 𝐩𝐢𝐏\mathbf{p_{i}}\in\mathbf{P} do
4       if 𝐮𝐪𝐮𝐩𝐢\mathbf{u}\cdot\mathbf{q}\geq\|\mathbf{u}\|\|\mathbf{p_{i}}\| then
5             return 1 (yes)
6      γ𝐮𝐩𝐢\gamma\leftarrow\mathbf{u}\cdot\mathbf{p_{i}}
7       if γ>τ\gamma>\tau then
8             II{γ}I\leftarrow I\cup\{\gamma\}
9             if |I|>k|I|>k then
10                   Delete the (k+1)(k+1)-th inner product from II
11                   τ\tau\leftarrow the kk-th inner product in II
12            if τ>𝐮𝐪\tau>\mathbf{u}\cdot\mathbf{q} then
13                   return 0 (no)
14            
15      
Algorithm 2 Linear-scan(u)(u)
Input: 𝐐\mathbf{Q}, 𝐏\mathbf{P}, 𝐪\mathbf{q}, kk, and \mathcal{B}
1 𝐐𝐫\mathbf{Q_{r}}\leftarrow\varnothing, Compute 𝐪\|\mathbf{q}\|
2 for each 𝐁\mathbf{B}\in\mathcal{B} do
3       𝐮\mathbf{u}\leftarrow the first user vector in 𝐐(𝐁)\mathbf{Q}(\mathbf{B})
4       if 𝐮𝐪>Lk(𝐁)\|\mathbf{u}\|\|\mathbf{q}\|>L^{k}(\mathbf{B}) then
5             for each 𝐮𝐢𝐐(𝐁)\mathbf{u_{i}}\in\mathbf{Q}(\mathbf{B}) do
6                   γ𝐮𝐢𝐪\gamma\leftarrow\mathbf{u_{i}}\cdot\mathbf{q}
7                   if γ>Lik\gamma>L_{i}^{k} then
8                         if 𝐮𝐢𝐩𝐤>γ\|\mathbf{u_{i}}\|\|\mathbf{p_{k}}\|>\gamma then
9                               ff\leftarrow Linear-Scan(𝐮𝐢)(\mathbf{u_{i}})
10                               if f=1f=1 then
11                                     𝐐𝐫𝐐𝐫{𝐮𝐢}\mathbf{Q_{r}}\leftarrow\mathbf{Q_{r}}\cup\{\mathbf{u_{i}}\}
12                              
13                        else
14                               𝐐𝐫𝐐𝐫{𝐮𝐢}\mathbf{Q_{r}}\leftarrow\mathbf{Q_{r}}\cup\{\mathbf{u_{i}}\}
15                        
16                  
17            
18      
return 𝐐𝐫\mathbf{Q_{r}}
Algorithm 3 Simpfer

4.4. Complexity Analysis

We theoretically demonstrate the efficiency of Simpfer. Specifically, we have:

Theorem 3.

Let α\alpha be the pruning ratio (0α10\leq\alpha\leq 1) of blocks in \mathcal{B}. Furthermore, let mm^{\prime} be the average number of item vectors accessed in Linear-scan()(\cdot). The time complexity of Simpfer is O((1α)nmd)O((1-\alpha)nm^{\prime}d).

Proof. Simpfer accesses all blocks in \mathcal{B}, and ||=O(nlogn)|\mathcal{B}|=O(\frac{n}{\log n}). Assume that a block 𝐁\mathbf{B}\in\mathcal{B} is not pruned by Lemma 3. Simpfer accesses all user vectors in 𝐐(𝐁)\mathbf{Q}(\mathbf{B}), so the total number of such user vectors is (1α)×O(nlogn)×O(logn)=O((1α)n)(1-\alpha)\times O(\frac{n}{\log n})\times O(\log n)=O((1-\alpha)n). For these vectors, Simpfer computes inner products with 𝐪\mathbf{q}. The evaluation cost of Lemmas 1 and 2 for these user vectors is thus O((1α)nd)O((1-\alpha)nd). The worst cost of Linear-scan()(\cdot) for vectors that cannot obtain the answer from these lemmas is O((1α)nmd)O((1-\alpha)nm^{\prime}d). Now the time complexity of Simpfer is

(2) O(nlogn+(1α)nd+(1α)nmd)\displaystyle O(\frac{n}{\log n}+(1-\alpha)nd+(1-\alpha)nm^{\prime}d) =O(nlogn+(1α)nmd)\displaystyle=O(\frac{n}{\log n}+(1-\alpha)nm^{\prime}d)
=O((1α)nmd)\displaystyle=O((1-\alpha)nm^{\prime}d)

Consequently, this theorem holds. \square

Remark. There are two main observations in Theorem 3. First, because we practically have m<mm^{\prime}<m and α>0\alpha>0, Simpfer outperforms a kk-MIPS-based solution that incurs O(nmd)O(nmd) time. (Our experimental results show that m=O(k)m^{\prime}=O(k) in practice.) The second observation is obtained from Equation (2), which implies the effectiveness of blocks. If Simpfer does not build blocks, we have to evaluate Lemma 1 for all 𝐮𝐐\mathbf{u}\in\mathbf{Q}. Equation (2) suggests that the blocks theoretically avoids this.

5. Experiment

This section reports our experimental results. All experiments were conducted on a Ubuntu 18.04 LTS machine with a 12-core 3.0GHz Intel Xeon E5-2687w v4 processor and 512GB RAM.

5.1. Setting

Datasets. We used four popular real datasets: MovieLens444https://grouplens.org/datasets/movielens/, Netflix, Amazon555https://jmcauley.ucsd.edu/data/amazon/, and Yahoo!666https://webscope.sandbox.yahoo.com/. The user and item vectors of these datasets were obtained by the Matrix Factorization in (Chin et al., 2016). These are 50-dimensional vectors (the dimensionality setting is the same as (Li et al., 2017; Teflioudi et al., 2015)777As our theoretical analysis shows, the time of Simpfer is trivially proportional to dd, thus its empirical impact is omitted.). The other statistics is shown in Table 2. We randomly chose 1,000 vectors as query vectors from 𝐏\mathbf{P}.

Table 2. Dataset statistics
\Description

[Cardinality of user and item vector sets]Cardinality of user and item vector sets for MovieLens, Netflix, Amazon, and Yahoo!. MovieLens Netflix Amazon Yahoo! |𝐐||\mathbf{Q}| 138,493 480,189 1,948,882 2,088,620 |𝐏||\mathbf{P}| 26,744 17,770 98,211 200,941

Evaluated algorithms. We evaluated the following three algorithms.

  • LEMP (Teflioudi et al., 2015): the state-of-the-art all-kk-MIPS algorithm. LEMP originally does kk-MIPS for all user vectors in 𝐐\mathbf{Q}.

  • FEXIPRO (Li et al., 2017): the state-of-the-art kk-MIPS algorithm. We simply ran FEXIPRO for each 𝐮𝐐\mathbf{u}\in\mathbf{Q}.

  • Simpfer: the algorithm proposed in this paper. We set kmax=25k_{max}=25.

These algorithms were implemented in C++ and compiled by g++ 7.5.0 with -O3 flag. We used OpenMP for multicore processing. These algorithms return the exact result, so we measured their running time.

Note that (Li et al., 2017; Teflioudi et al., 2015) have demonstrated that the other exact MIPS algorithms are outperformed by LEMP and FEXIPRO, so we did not use them as competitors. (Recall that this paper focuses on the exact answer, thus approximation algorithms are not appropriate for competitors, see Section 3.) In addition, LEMP and FEXIPRO also have a pre-processing (offline) phase. We did not include the offline time as the running time.

5.2. Result 1: Effectiveness of blocks

We first clarify the effectiveness of blocks employed in Simpfer. To show this, we compare Simpfer with Simpfer without blocks (which does not evaluate line 3 of Algorithm 3). We set k=10k=10.

On MovieLens, Netflix, Amazon, and Yahoo!, Simpfer (Simpfer without blocks) takes 10.3 (22.0), 58.6 (100.8), 117.6 (446.2), and 1481.2 (1586.2) [msec], respectively. This result demonstrates that, although the speed-up ratio is affected by data distributions, blocks surely yield speed-up.

5.3. Result 2: Impact of kk

We investigate how kk affects the computational performance of each algorithm by using a single core. Figure 2 depicts the experimental results.

We first observe that, as kk increases, the running time of each algorithm increases, as shown in Figures 2(a)2(d). This is reasonable, because the cost of (decision version of) kk-MIPS increases. As a proof, Figures 2(e)2(h) show that the number of inner product (ip) computations increases as kk increases. The running time of Simpfer is (sub-)linear to kk (the plots are log-scale). This suggests that m=O(k)m^{\prime}=O(k).

Second, Simpfer significantly outperforms LEMP and FEXIPRO. This result is derived from our idea of quickly solving the kk-MIPS decision problem. The techniques introduced in Section 4.2 can deal with both yes and no answer cases efficiently. Therefore, our approach functions quite well in practice.

Last, an interesting observation is the performance differences between FEXIPRO and Simpfer. Let us compare them with regard to running time. Simpfer is at least two orders of magnitude faster than FEXIPRO. On the other hand, with regard to the number of inner product computations, that of Simpfer is one order of magnitude lower than that of FEXIPRO. This result suggests that the filtering cost of Simpfer is light, whereas that of FEXIPRO is heavy. Recall that Lemmas 13 need only O(1)O(1) time, and Corollaries 12 need O(k)O(k) time in practice. On the other hand, for each user vector in QQ, FEXIPRO incurs Ω(k)\Omega(k) time, and its filtering cost is O(d)O(d^{\prime}), where d<dd^{\prime}<d. For high-dimensional vectors, the difference between O(1)O(1) and O(d)O(d^{\prime}) is large. From this point of view, we can see the efficiency of Simpfer.

Refer to caption
(a) MovieLens (Running time)
Refer to caption
(b) Netflix (Running time)
Refer to caption
(c) Amazon (Running time)
Refer to caption
(d) Yahoo! (Running time)
Refer to caption
(e) MovieLens (#ip computations)
Refer to caption
(f) Netflix (#ip computations)
Refer to caption
(g) Amazon (#ip computations)
Refer to caption
(h) Yahoo! (#ip computations)
Figure 2. Impact of kk: Running time (top) and #ip computations (bottom). “×\times” shows LEMP, “\circ” shows FEXIPRO, and “\triangle” shows Simpfer.
\Description

[Running time of each algorithm increases as kk increases]Running time of each algorithm increases as kk increases on MovieLens, Netflix, Amazon, and Yahoo!.

Refer to caption
(a) MovieLens (Running time)
Refer to caption
(b) Netflix (Running time)
Refer to caption
(c) Amazon (Running time)
Refer to caption
(d) Yahoo! (Running time)
Refer to caption
(e) MovieLens (#ip computations)
Refer to caption
(f) Netflix (#ip computations)
Refer to caption
(g) Amazon (#ip computations)
Refer to caption
(h) Yahoo! (#ip computations)
Figure 3. Impact of |𝐐||\mathbf{Q}|: Running time (top) and #ip computations (bottom). “×\times” shows LEMP, “\circ” shows FEXIPRO, and “\triangle” shows Simpfer.
\Description

[Running time of each algorithm increases as the cardinality of user vector set increases]Running time of each algorithm increases as the cardinality of user vector set increases on MovieLens, Netflix, Amazon, and Yahoo!.

5.4. Result 3: Impact of Cardinality of 𝐐\mathbf{Q}

We next study the scalability to n=|𝐐|n=|\mathbf{Q}| by using a single core. To this end, we randomly sampled s×ns\times n user vectors in 𝐐\mathbf{Q}, and this sampling rate ss has s[0.2,1.0]s\in[0.2,1.0]. We set k=10k=10. Figure 3(h) shows the experimental result.

In a nutshell, we have a similar result to that in Figure 2. As nn increases, the running time of Simpfer linearly increases. This result is consistent with Theorem 3. Notice that the tendency of the running time of Simpfer follows that of the number of inner product computations. This phenomenon is also supported by Theorem 3, because the main bottleneck of Simpfer is Linear-scan()(\cdot).

Refer to caption
(a) MovieLens (Running time)
Refer to caption
(b) Netflix (Running time)
Refer to caption
(c) Amazon (Running time)
Refer to caption
(d) Yahoo! (Running time)
Refer to caption
(e) MovieLens (#ip computations)
Refer to caption
(f) Netflix (#ip computations)
Refer to caption
(g) Amazon (#ip computations)
Refer to caption
(h) Yahoo! (#ip computations)
Figure 4. Impact of |𝐏||\mathbf{P}|: Running time (top) and #ip computations (bottom). “×\times” shows LEMP, “\circ” shows FEXIPRO, and “\triangle” shows Simpfer.
\Description

[Running time of Simpfer does not increases as the cardinality of item vector set increases]Running time of Simpfer does not increases as the cardinality of item vector set increases on MovieLens, Netflix, Amazon, and Yahoo!.

5.5. Result 4: Impact of Cardinality of 𝐏\mathbf{P}

The scalability to m=|𝐏|m=|\mathbf{P}| by using a single core is also investigated. We randomly sampled s×ms\times m user vectors in 𝐏\mathbf{P}, as with the previous section. Figure 4 shows the experimental result where k=10k=10. Interestingly, we see that the result is different from that in Figure 3(h). The running time of Simpfer is almost stable for different mm. In this experiment, nn and kk were fixed, and recall that m=O(k)m^{\prime}=O(k). From this observation, the stable performance is theoretically obtained. This scalability of Simpfer is an advantage over the other algorithms, since their running time increases as mm increases.

5.6. Result 5: Impact of Number of CPU Cores

We study the gain of multicore processing of Simpfer by setting k=10k=10. We depict the speedup ratios compared with the single-core case in Table 3.

Table 3. Speedup ratios of Simpfer
\Description

[Multi-threading improves the efficiency of Simpfer]Multi-threading improves the efficiency of Simpfer on MovieLens, Netflix, Amazon, and Yahoo!. #cores MovieLens Netflix Amazon Yahoo! 4 3.23 2.99 3.41 2.22 8 4.80 4.27 6.61 2.83 12 5.84 5.40 7.76 2.88

We see that Simpfer receives the benefit of multicore processing, and its running time decreases as the number of available cores increases. We here explain why Simpfer cannot obtain speedup ratio cc, where cc is the number of available cores. Each core deals with different blocks, and the processing cost of a given block 𝐁\mathbf{B} is different from those of the others. This is because it is unknown whether 𝐁\mathbf{B} can be pruned by Lemma 3. Even if we magically know the cost, it is NP-hard to assign blocks so that each core has the same processing cost (Amagata and Hara, 2019; Korf, 2009). Therefore, perfect load-balancing is impossible in practice. The Yahoo! case in particular represents this phenomenon. Because many user vectors in Yahoo! have large norms, blocks often cannot be filtered by Lemma 3. This can be seen from the observation in Figure 3(h): the number of inner product computations on Yahoo! is larger than those on the other datasets. The costs of Corollaries 12 are data-dependent (i.e., they are not pre-known), rendering a fact that Yahoo! is a hard case for obtaining a high speedup ratio.

Table 4. Pre-processing time of Simpfer [sec]
\Description

[Pre-processing time of Simpfer is reasonable]Pre-processing time of Simpfer is reasonable on MovieLens, Netflix, Amazon, and Yahoo!. MovieLens Netflix Amazon Yahoo! 1.02 4.08 15.10 15.55

5.7. Result 6: Pre-processing Time

Last, we report the pre-processing time of Simpfer. Table 4 shows the results. As Theorem 1 demonstrates, the pre-processing time increases as nn increases. We see that the pre-processing time is reasonable and much faster than the online (running) time of the baselines. For example, the running time of FEXIPRO on Amazon with k=25k=25 is 1206 [sec]. When k=25k=25 (i.e., k=kmaxk=k_{max}), the total time of pre-processing and online processing of Simpfer is 15.10+0.16=15.2615.10+0.16=15.26 [sec]. Therefore, even if k>kmaxk>k_{max} is specified, re-building blocks then processing the query by Simpfer is much faster.

6. Conclusion

This paper introduced a new problem, reverse maximum inner product search (reverse MIPS). The reverse MIPS problem supports many applications, such as recommendation, advertisement, and market analysis. Because even state-of-the-art algorithms for MIPS cannot solve the reverse MIPS problem efficiently, we proposed Simpfer as an exact and efficient solution. Simpfer exploits several techniques to efficiently answer the decision version of the MIPS problem. Our theoretical analysis has demonstrated that Simpfer is always better than a solution that employs a state-of-the-art algorithm of MIPS. Besides, our experimental results on four real datasets show that Simpfer is at least two orders of magnitude faster than the MIPS-based solutions.

Acknowledgements.
This research is partially supported by JST PRESTO Grant Number JPMJPR1931, JSPS Grant-in-Aid for Scientific Research (A) Grant Number 18H04095, and JST CREST Grant Number JPMJCR21F2.

References

  • (1)
  • Abuzaid et al. (2019) Firas Abuzaid, Geet Sethi, Peter Bailis, and Matei Zaharia. 2019. To Index or Not to Index: Optimizing Exact Maximum Inner Product Search. In ICDE. 1250–1261.
  • Amagata and Hara (2019) Daichi Amagata and Takahiro Hara. 2019. Identifying the Most Interactive Object in Spatial Databases. In ICDE. 1286–1297.
  • Amagata and Hara (2021) Daichi Amagata and Takahiro Hara. 2021. Reverse Maximum Inner Product Search: How to efficiently find users who would like to buy my item?. In RecSys. 273–281.
  • Bachrach et al. (2014) Yoram Bachrach, Yehuda Finkelstein, Ran Gilad-Bachrach, Liran Katzir, Noam Koenigstein, Nir Nice, and Ulrich Paquet. 2014. Speeding up the xbox recommender system using a euclidean transformation for inner-product spaces. In RecSys. 257–264.
  • Chen et al. (2020) Chong Chen, Min Zhang, Yongfeng Zhang, Weizhi Ma, Yiqun Liu, and Shaoping Ma. 2020. Efficient Heterogeneous Collaborative Filtering without Negative Sampling for Recommendation. In AAAI. 19–26.
  • Chin et al. (2016) Wei-Sheng Chin, Bo-Wen Yuan, Meng-Yuan Yang, Yong Zhuang, Yu-Chin Juan, and Chih-Jen Lin. 2016. LIBMF: a library for parallel matrix factorization in shared-memory systems. The Journal of Machine Learning Research 17, 1 (2016), 2971–2975.
  • Cohen and Lewis (1999) Edith Cohen and David D Lewis. 1999. Approximating matrix multiplication for pattern recognition tasks. Journal of Algorithms 30, 2 (1999), 211–252.
  • Cremonesi et al. (2010) Paolo Cremonesi, Yehuda Koren, and Roberto Turrin. 2010. Performance of recommender algorithms on top-n recommendation tasks. In RecSys. 39–46.
  • Curtin et al. (2013) Ryan R Curtin, Parikshit Ram, and Alexander G Gray. 2013. Fast exact max-kernel search. In SDM. 1–9.
  • Dai et al. (2020) Xinyan Dai, Xiao Yan, Kelvin KW Ng, Jiu Liu, and James Cheng. 2020. Norm-Explicit Quantization: Improving Vector Quantization for Maximum Inner Product Search. In AAAI. 51–58.
  • Ding and Suel (2011) Shuai Ding and Torsten Suel. 2011. Faster top-k document retrieval using block-max indexes. In SIGIR. 993–1002.
  • Fontoura et al. (2011) Marcus Fontoura, Vanja Josifovski, Jinhui Liu, Srihari Venkatesan, Xiangfei Zhu, and Jason Zien. 2011. Evaluation strategies for top-k queries over memory-resident inverted indexes. PVLDB 4, 12 (2011), 1213–1224.
  • Fraccaro et al. (2016) Marco Fraccaro, Ulrich Paquet, and Ole Winther. 2016. Indexable probabilistic matrix factorization for maximum inner product search. In AAAI. 1554–1560.
  • Guo et al. (2020) Ruiqi Guo, Philip Sun, Erik Lindgren, Quan Geng, David Simcha, Felix Chern, and Sanjiv Kumar. 2020. Accelerating large-scale inference with anisotropic vector quantization. In ICML. 3887–3896.
  • Huang et al. (2018) Qiang Huang, Guihong Ma, Jianlin Feng, Qiong Fang, and Anthony KH Tung. 2018. Accurate and fast asymmetric locality-sensitive hashing scheme for maximum inner product search. In KDD. 1561–1570.
  • Jiang et al. (2020) Jyun-Yu Jiang, Patrick H Chen, Cho-Jui Hsieh, and Wei Wang. 2020. Clustering and Constructing User Coresets to Accelerate Large-scale Top-K Recommender Systems. In The Web Conference. 2177–2187.
  • Koenigstein et al. (2012) Noam Koenigstein, Parikshit Ram, and Yuval Shavitt. 2012. Efficient retrieval of recommendations in a matrix factorization framework. In CIKM. 535–544.
  • Korf (2009) Richard E Korf. 2009. Multi-Way Number Partitioning.. In IJCAI. 538–543.
  • Li et al. (2017) Hui Li, Tsz Nam Chan, Man Lung Yiu, and Nikos Mamoulis. 2017. FEXIPRO: fast and exact inner product retrieval in recommender systems. In SIGMOD. 835–850.
  • Li et al. (2020) Wen Li, Ying Zhang, Yifang Sun, Wei Wang, Mingjie Li, Wenjie Zhang, and Xuemin Lin. 2020. Approximate nearest neighbor search on high dimensional data—experiments, analyses, and improvement. IEEE Transactions on Knowledge and Data Engineering 32, 8 (2020), 1475–1488.
  • Liu et al. (2020) Jie Liu, Xiao Yan, Xinyan Dai, Zhirong Li, James Cheng, and Ming-Chang Yang. 2020. Understanding and Improving Proximity Graph Based Maximum Inner Product Search. In AAAI. 139–146.
  • Liu et al. (2019) Rui Liu, Tianyi Wu, and Barzan Mozafari. 2019. A Bandit Approach to Maximum Inner Product Search. In AAAI. 4376–4383.
  • Morozov and Babenko (2018) Stanislav Morozov and Artem Babenko. 2018. Non-metric similarity graphs for maximum inner product search. In NeurIPS. 4721–4730.
  • Neyshabur and Srebro (2015) Behnam Neyshabur and Nathan Srebro. 2015. On Symmetric and Asymmetric LSHs for Inner Product Search. In ICML. 1926–1934.
  • Ram and Gray (2012) Parikshit Ram and Alexander G Gray. 2012. Maximum inner-product search using cone trees. In KDD. 931–939.
  • Rendle et al. (2020) Steffen Rendle, Walid Krichene, Li Zhang, and John Anderson. 2020. Neural Collaborative Filtering vs. Matrix Factorization Revisited. In RecSys. 240–248.
  • Shrivastava and Li (2014) Anshumali Shrivastava and Ping Li. 2014. Asymmetric LSH (ALSH) for sublinear time maximum inner product search (MIPS). In NIPS. 2321–2329.
  • Teflioudi and Gemulla (2016) Christina Teflioudi and Rainer Gemulla. 2016. Exact and approximate maximum inner product search with lemp. ACM Transactions on Database Systems 42, 1 (2016), 1–49.
  • Teflioudi et al. (2015) Christina Teflioudi, Rainer Gemulla, and Olga Mykytiuk. 2015. Lemp: Fast retrieval of large entries in a matrix product. In SIGMOD. 107–122.
  • Van den Oord et al. (2013) Aaron Van den Oord, Sander Dieleman, and Benjamin Schrauwen. 2013. Deep content-based music recommendation. In NIPS. 2643–2651.
  • Vlachou et al. (2010) Akrivi Vlachou, Christos Doulkeridis, Yannis Kotidis, and Kjetil Nørvåg. 2010. Reverse top-k queries. In ICDE. 365–376.
  • Vlachou et al. (2011) Akrivi Vlachou, Christos Doulkeridis, Yannis Kotidis, and Kjetil Norvag. 2011. Monochromatic and bichromatic reverse top-k queries. IEEE Transactions on Knowledge and Data Engineering 23, 8 (2011), 1215–1229.
  • Yan et al. (2018) Xiao Yan, Jinfeng Li, Xinyan Dai, Hongzhi Chen, and James Cheng. 2018. Norm-ranging lsh for maximum inner product search. In NeurIPS. 2952–2961.
  • Yang et al. (2015) Shiyu Yang, Muhammad Aamir Cheema, Xuemin Lin, and Wei Wang. 2015. Reverse k nearest neighbors query processing: experiments and analysis. PVLDB 8, 5 (2015), 605–616.
  • Yu et al. (2017) Hsiang-Fu Yu, Cho-Jui Hsieh, Qi Lei, and Inderjit S Dhillon. 2017. A greedy approach for budgeted maximum inner product search. In NIPS. 5453–5462.
  • Zamani and Croft (2020) Hamed Zamani and W Bruce Croft. 2020. Learning a Joint Search and Recommendation Model from User-Item Interactions. In WSDM. 717–725.
  • Zhang et al. (2014) Zhao Zhang, Cheqing Jin, and Qiangqiang Kang. 2014. Reverse k-ranks query. PVLDB 7, 10 (2014), 785–796.
  • Zhao et al. (2020) Xing Zhao, Ziwei Zhu, Yin Zhang, and James Caverlee. 2020. Improving the Estimation of Tail Ratings in Recommender System with Multi-Latent Representations. In WSDM. 762–770.
  • Zhou et al. (2019) Zhixin Zhou, Shulong Tan, Zhaozhuo Xu, and Ping Li. 2019. Möbius Transformation for Fast Inner Product Search on Graph. In NeurIPS. 8216–8227.