---
# System prepended metadata

title: '[2017SSTD] Towards Spatially- and Category-Wise k-Diverse Nearest Neighbors Queries'

---

# [2017SSTD] Towards Spatially- and Category-Wise k-Diverse Nearest Neighbors Queries

## 摘要

k-nearest neighbor (k-NN) queries 被廣泛使用。在原始的定義中，k-NN queries 只關注靠近性 (closeness) ，與答案集的多樣性 (diversity) 無關。然而有些情景下，我們會希望答案集與搜尋條件距離相近，並且多樣性要盡可能高，例如: User 正在附近尋找餐館，則返回距離較近且不同類型的餐館。

本論文提出兩種利用 linear skyline 、尋找空間方面和類別方面的 k-NN，並且可以根據任何 2 個競爭標準 (靠近性與多樣性) 的線性組合，找出最優解。本篇論文的實驗（通過更改許多參數）表明，我們的方法比單純的方法快若干個數量級。

## 引言

k-NN 查詢被廣泛使用在許多領域包括 database 和 data mining 等，然而 k-NN 有一個潛在的缺點: k-NN 僅針對搜索條件求出最短距離的解，卻完全不考慮這些解彼此之間的關係，這造成 k-NN 輸出的解同質性很高，缺乏全局的資訊。

舉個場景: 假設要排序文檔，並回傳 k 個跟查詢條件相關的文檔，若這 k 個文檔的內容差異越大則讀者蒐集到的資訊就越多。

由此促使一些研究將多樣性納入搜索，即盡可能尋找接近的元素，同時又盡可能讓 k 個元素多樣化。在本篇論文，我們加入**空間多樣性**和**類別的多樣性**來探討 k-NN queries ，稱之為 **k-Diverse NNs** (kDNNs)。

- **空間多樣性**
兩個 data point 的空間多樣性取決於它們之間的距離。舉例: 有些遊客想要探索離他不遠的景點，但同時希望所有景點在這座城市的不同區域，這樣才能多探索一點，不會只在同一區逛。
- **類別多樣性**
類別多樣性是通過 data point 的類別 (或 label) 之間的差異來建模的。舉例: User 尋找附近的餐館，這樣最好回傳各式不同國家、料理風格的餐館讓 User 有較多選擇，而不是選來選去都是類似的料理。

以前的研究在同時處理 k-NN 和多樣性時主要有兩個缺點，本論文中提出的方法克服了以下缺點:
(1) 依賴 User 提供的線性組合來判別多樣性的程度
(2) 因為這項議題是 NP-hard，以往的論文並沒有提供最佳解決方案

為了在靠近性與多樣性這兩個條件之間找出最佳的答案集，我們使用 「[linear skyline queries](https://ieeexplore.ieee.org/document/7113306)」。 傳統 [skyline quries](http://dblab.csie.ncku.edu.tw/home/intro/ldb/index.html) 將靠近性與多樣性各視為一個維度，將資料點 (元素) 散落在這個平面上，其中若 A 點的較 B 點靠近 query q 且 A 點的多樣性較 B 點高，則稱 「A dominate B」。 kDNN 的結果集不會包含任何被其他元素 domiate 的元素，linear skyline quries 幫助我們過濾較差的解，並直觀呈現。

linear skyline 有兩個特點:
(1) 回傳較傳統 skyline 更小的集合
(2) 集合套用任何靠近性與多樣性的線性組合都是最佳解

>![](https://i.imgur.com/OA8Ftf6.png)
**Fig. 1.** 傳統天際線與線性天際線的圖解。其中連接起來的點表示未被任何其他點 dominate 的資料點

本文主要貢獻是提出 2 種利用 skyline 求 kDNN quries 最佳解的演算法。在我們的演算法中，候選集合是依據與查詢條件的靠近度遞減排序，也就是順序越後面的集合距離查詢條件越遠。這有利於檢查候選點是否在 skyline 上，因為每個更後面的子集合必須比先前的子集有更高的多樣性，否則會被 dominate。

本論文的其餘章節如下: 在第 2 節中，我們將簡要介紹相關研究；在第 3 節中正式定義 kDNN quries； 在第 4 節中進行實驗與評估演算法；第 5 節討論實驗的結果；第 6 節總結我們的發現和對於未來研究方向的建議。

## 相關研究

要求靠近性同時保持多樣性的想法源自於信息檢索，在 Maximal Marginal Relevance (MMR) 是最早針對這種需求發明的演算法，MMR 在每個 step 都會產生比前一個 step 靠近性與多樣性更高 (高邊際相關性) 的解。

在另一篇論文中，Vieira 等人考察了若干種方法，由於他們聲稱他們提出的 Greedy Marginal Contribution (GMC) 和 Greedy Randomized with Neighborhood Expansion (GNE) 效果最好，我們針對這兩種方法討論，GMC 與 MMR 相似，會依據邊際相關性排序解。 GNE 則會先設定結果集的數量，在每次迭代中隨機選擇排名最高的元素，並將其和當前結果集中的元素交換，以求得更佳結果集。在後文會拿我們提出的方法與 GNE 比較，因為它是精度最高的解法。

*很雜，暫時沒翻譯後面*

## 定義問題

k-Diverse NN (kDNN) 將多樣性納入 k-NN 問題中，目的是為了找到一組有 k 個元素的解，這組解的元素必須盡可能靠近 query $q$ 且這組解的元素盡可能多樣化。

令數據點的集合 $P= \{p_1,p_2, ... ,p_n\}$ ，本論文將數據點 $p_i \in P$ 與 $q$ 的歐幾里得距離定義為 $d(p_i,q)$，$d(p_i,q)$ 越小則 $p_i$ 與 $q$ 越靠近。沿用上述定義，令子集合 $S \subseteq P$，$S$ 與 $q$ 的距離定義為 $q$ 到 $S$ 中任一元素的最大距離，即 $\displaystyle d(q,S) = \max_{s_i \in S}\{d(q,s_i)\}$。

本論文將多樣性分為兩類: 空間多樣性與種類多樣性。前者由兩個資料點的距離決定，令 $p_i,p_j \in P$，空間多樣性 $div(p_i,p_j) = d(p_i, p_j)$ ，如此定義是為了找到在空間中分佈良好並覆蓋不同區域的資料點。關於類別多樣性，假設 $G = \{g_1,g_2,...,g_{|G|}\}$ 為所有種類的集合，對於 $p_i \in P$ 所屬的種類標示為 $g(p_i) \in G$ ，注意不同的資料點可以屬於同一個種類。

接下來我們針對每個種類間的差異表示為矩陣 $M_{|G|×|G|}=(m_{p,q})$ ，為了簡單起見讓 $0≤m_{p,q}≤1$ ，當 $p = q$ 時 $m_{p,q} = 0$ 代表完全沒有差異。更進一步說明，我們將種類 $g_p$ 與種類 $g_q$ 的差異表示為 $m_{p,q}$ ；將資料點 $p_i$ 與資料點 $p_j$ 的種類的差異表示為 $m_{g(p_i),g(p_j)}$。

最後，集合 $S \in P$ 的空間多樣性定義為集合 $S$ 中任兩個資料點的最短距離，即 $\displaystyle div(S)=\min_{(p_i,p_j ) \in S \wedge (p_i \neq p_j)}\{div(p_i,p_j)\}$。

接下來定義 skyline 與 linear skyline 的 domination:

**Definition 1.**

令子集合 $R$、$T$ 為大小為 $k$ 的集合且 $R,T \subseteq P$，當

$$\begin{align*}
&d(q, R) < d(q, T) \ \ and \ \ div(R) \geq div(T) \ \ or \\
&d(q, R) \leq d(q, T) \ \ and \ \ div(R) > div(T)
\end{align*}$$

此時稱 $R \ dominates \ T$ ，記為 $R \prec T$，意義是 R 更靠近 query $q$ 並且多樣性不小於 $T$，或 $R$ 具有較高的多樣性並且與 $q$ 的距離不大於 $T$ 與 $q$ 的距離。

對於傳統 skyline，在天際線上的點全是 non-dominated，定義為:

$$\{S \subseteq P \ s.t. \ \nexists R \subseteq P: R ≺ S, |S|=|R|=k\}$$

在本論文提出的解法中，我們會先找出傳統的 skyline 然後從中找出 linear skyline。

**Definition 2.**

令 $SK$ 為一傳統 skyline、$w$ 是二維的權重向量、向量 $r$ ($t$) 表示元素 $R$ ($T$) 的靠近性與多樣性，當

$$\forall w \in {\rm I\!R^2} \ \ \exists R \in SK' : w^Tr > w^Tt $$

此時稱 $SK' \subseteq SK \ lineary \ dominates \ T \in SK$ ，記為 $SK' \prec_{lin} T$。所有元素皆為 linearly non-dominated 的最大集合稱為 linear skyline。

請注意，與傳統 skyline 的 domination 方式相比，尋找一組 linear skyline 的 domination 需要與其他一個以上的集合進行比較。由此我們定義本論文要探討的問題:

**Problem Definition.**

給定 query $q$、正整數 $k$、資料點的集合 $P$，k-Diverse NN (kDNN) 查找所有 $k$ 個元素的 linearly non-dominated 集合 $S \subseteq P$。

## 解決方法

我們提出了兩種使用 linear skyline 的 kDNN 的演算法，這兩種演算法都是先找出傳統的 skyline，再求取 linear skyline。首先依照 $d(q,S)$ 的升序排序候選集合，同時，因為這些候選集合都是 non-dominated，意味著越後面的集合多樣性越高。排序較前面的候選集合可以建立多樣性的 lower bound，表示為 $minDiv$。本論文提出的兩種解決方案都使用上述方法來過濾子集。

第一種解法稱為 **Recursive Range Filtering (RRF)**，RRF 使用遞迴在每個回合從候選集合 $C$ 挑選一個元素加進 partial solution $S'$ ，使得 $S'$ 的多樣性高於 $minDiv$。第二種解法稱為 **Pair Graph (PG)**，其原理為排除包含元素對 $(p_i,p_j) \subseteq P$ 且 $div(p_i,p_j)<minDiv$ 的集合，以確保剩餘的候選集有足夠多樣性。

在介紹 RRF 和 PG 之前，我們先為比較基準建立一個暴力演算法 **brute-force (BF)**，BF 會生成所有大小為 $k$ 的集合 $S \subseteq P$，若 $S$ 未被任何任何其他集合 dominate，就將 $S$ 加入 skyline。

RRF 和 PG 既適用於類別多樣性又適用於空間多樣性，但注意對於類別多樣性時，只需要找出每個類別中距離 query $q$ 最近的點，就能找到整個 skyline ，換句話說，只要找到這些點演算就可以停止。

RRF 和 PG 均基於下面介紹的演算法 1，只有其中的 $findSetMaxDiv$ 有各自的實作方式，而 $findSetMaxDiv$ 用以求得一樣靠近性下擁有最大多樣性的集合。

![](https://i.imgur.com/p9uJ3UD.png)

我們解釋一下演算法 1: 以 query 點 $q$、答案集的大小 $k$、資料點的集合 $P$ 作為 input。
第 1 行的 $S$ 代表最靠近 $q$ 的集合，擁有最小的 $d(q,S)$
第 2 行將 $s_i \in S$ 從 $P$ 中移除，也就是將天際線 $P$ 中移除
第 3 行將 $S$ 加入用以檢驗的集合 $P'$
第 4 行將 $S$ 加入集合 $skyline$
第 5 行將初始的最小多樣性 $minDiv$ 設為 $div(S)$，也就是 $S$ 中任兩元素的最短距離
接 6 來進入迴圈，執行直到 $P$ 裡沒有元素
第 7 行找出距離 query $q$ 最近的元素 $p_d$
第 8 行將 $p_d$ 從 $P$ 移除
第 9 行 $C \subseteq P'$ 是一個候選集合，裡面每個元素與 $p_d$ 的多樣性都大於 $minDiv$
第 10 行 $findSetMaxDiv$ 尋找擁有最大多性 $div(S)$ 的集合 $S$ ，並且 $div(S) > minDiv$、$p_d \in S$、$S \subseteq C$，RRF 和 PG 對此有不同實作
第 11 行到第 14 行會將 $skyline$ 與 $S$ 聯集，然後更新 $minDiv$ 為 $div(S)$
第 15 行將 $p_d$ 加入檢驗集合 $P'$

因為每次迴圈中 $p_d$ 必定是集合 $S$ 裡距離 $q$ 最遠的資料點，所以 $d(q,S)=d(q,p_d)$，由此知道 $findSetMaxDiv$ 檢查的所有集合與 $q$ 的距離都相同，因為這些集合必定包含 $p_d$。

*下面驗證演算法的正確性先不翻譯*

### 4.1 Recursive Range Filtering (RRF)

接下來說明 RRF 的 $findSetMaxDiv$ 實作

![](https://i.imgur.com/gOXjsJe.png)

首先宣告 RRF 所需的變數: 
- 一個集合 $S'$，初始元素只有 $p_d$
- $C$ 為演算法 1 第 9 行求得的集合，稍後會用來與 $S$ 進行運算
- $n$ 為要加入 $S'$ 的元素個數使得 $S'$ 能湊齊 $k$ 個元素
- $setMaxDiv$ 為擁有最大多樣性的集合，初始為空集合
- $minDiv$ 即之前提過的多樣性的 lower bound

第 1~8 行，若只需要加入一個元素到 $S'$，則只需要一個個將 $c_i \in C$ 加入 $S'$ 計算多樣性，然後將多樣性最大的集合設為 $SetMaxDiv$ ，$n=1$ 可以視為 RRF 遞迴演算法的中止條件
第 10~19 行 for 迴圈從 $C$ 中抽取出元素 $c_i$ 與目前的 $S'$ 聯集，將 $S'$ 和 $n-1$ 傳入 $findSetMaxDiv$ 求擁有最大多樣性的集合。

*下面舉例不翻譯*

### 4.2 Pair Graph Solution (PG)

PG 的想法是將元素兩兩配對，使得 $div(p_i,p_j) > minDiv$ 以構造一 non-dominated 集合。兩個元素對如果有共同元素便可以組合成集合，例如: $div(p_i,p_j) > minDiv$ 且 $div(p_j,p_l) > minDiv$ 時，可以得到 $S_3=\{p_i,p_j,p_l\}$；同樣的，$S_3$ 可以與 $div(p_l,p_m)>minDiv$ 結合變成 $S_4=\{p_i,p_j,p_l,p_m\}$。注意，不保證 $div(S_4) > minDiv$，除非 $div(p_i,p_l),div(p_i,p_m),div(p_j,p_m) > minDiv$。

>![](https://i.imgur.com/aEJ1Yyv.png)
**Fig. 3.** 範例圖

圖 3 展示 PG 的步驟，假設 $p_d=p_6$、$k=4$、$minDiv=1$，按照先前的定義，所有 non-dominated 集合都必須包含 $p_d$ ，所以我們將 $p_6$ 設為起始點，並且以行經 4 點的路徑代表集合，分別為 $PT_1=(p_6,p_1,p_3,p_5), \ PT_2=(p_6,p_3,p_4,p_5), \ PT_3=(p_6,p_1,p_3,p_4)$。計算每個路徑各自的多樣性，$PT_1$ 的多樣性為 $1.12$，因為這是 $PT_1$ 中任兩點最小的多樣性，因為 $1.14 > minDiv$ 所以 $PT_1$ 是加入 skyline 的候選集合；再來 $PT_2$ 的多樣性為 $1.35$，所以 $PT_2$ 是更佳的候選集合；再來 $PT_3$ 無法成為候選集合，因為 $p_1,\ p_4$ 沒有邊相連，因此 $div(p_1,p_4) < minDiv$。最後得到 $PT_2$ 為多樣性最高的集合。

下面解釋演算法

![](https://i.imgur.com/tMWcTeC.png)

使用 Dijkstra’s 演算法
第 1、2 行 $\mathcal{P}$ 代表 $p_d$ 與候選集合 $C$ 中的元素對，以及 $C$ 中多樣性大於 $minDiv$ 的元素對
第 3 行 $G(V,E)$ 是根據 $\mathcal{P}$ 建立的圖
第 4~7 行先將每個邊 (行經兩個點的路徑) 都加入 $queue$ 中，$queue$ 會依照每個 $PT$ 中的邊的最大多樣性來降序排列
第 8 行當 $queue$ 非空時執行迴圈
第 9 行從 $queue$ 中取出擁有最高多樣性的邊的路徑命名為 $PT$
第 10、11 行若 $PT$ 包含 $k$ 個點則回傳
第 13 行將 $v$ 設為 $PT$ 的最後一個點
第 14~18 行一一取出與 $v$ 之間有邊的點，若 $ub(PT \cup u) > minDiv$ 即 $PT$ 的邊的最大多樣性大於 $minDiv$ 時，把 $PT \cup u$ 加入 $queue$ 中，這呼應前面提到的:有共同元素可以組合成新的集合

*Theorem 不翻譯*

### 4.3 From Conventional Skylines to Linear Skylines

為了從傳統 skyline 擷取 linear skyline，我們參考另一篇論文，該論文提出 bi-criteria road network。假設 $SK$ 是傳統 skyline、$D,R,T \in SK$，他們可以用二維的 cost vector 來表示，分別為 $d,r,t$，令 $n$ 為 $R$ 與 $T$ 之間的一個向量的法向量，若 $n^Tr=n^Tt>n^Td$ ，則稱 $R,T$ linearly dominate $D$，即 $\{r,t\} \prec_{lin} d$。

擷取 linear skyline 的流程為以上述方式不斷從傳統 skyline 淘汰在任兩個向量之下的向量。假設 $LS$ 是儲存 skyline 的列表，目前有 $i$ 個元素，當要插入新元素 $S^{i+1}$ 時，依序由列表的尾端到首端檢查是否滿足 $\{s^{i-1},s^{i+1}\} \prec_{lin} s^{i}$，若滿足此條件則將 $S^i$ 從 $LS$ 移除，然後檢查 $\{s^{i-2},s^{i+1}\} \prec_{lin} s^{i-1} \ ...$，直到檢查完 $LS$ 的首個元素或是確定 $S^{i+1}$ 為 linear non-dominated。

## 5 實驗

首先觀察 RRF, PG, BF 的效能，再來說明為何 PG、RRF 比另一篇論文的 GNE 好。我們的程式以 java 實作，運行在 4 個 linux vCPU 與 8 GB 記憶體上。輸入的資料點數量介於 $100$ 至 $1000$ 之間，為常態分布、高斯分布或叢集，$k$ 介於 $3$ 到 $10$ 之間。實驗結果 (1) 用對數當作圖表刻度，(2) 如果 $10$ 分鐘內還沒執行結束則終止程式並計作執行 $10$ 分鐘

### 5.1 空間多樣性

首先評估 BF, RRF, PG 在考慮空間多樣性時的特性，兩點的空間多樣性由歐氏距離決定。

>![](https://i.imgur.com/PQ076qw.png)
**Fig. 4.** 考慮空間多樣性的執行時間

- **$k$ 的影響**
由 Fig. 4a 可以發現當 $k > 3$，BF 無法在 10 分鐘內給出答案。在 $k=3$ 時 RRF 約莫比 PG 快 30%，但是當 $k$ 更大時 PG 比 RRF 更快，分析其中原因是 RRF 在每一層遞迴都必須針對所有 $c_i$ 計算多樣性而浪費時間，並且每個候選集合都會被考慮到。而 PG 則會優先考慮多樣性 upper bound 較高的集合，當找到一個大小為 $k$ 的集合就停止計算，所以當 $k$ 較大時 PG 速度會比 RRF 快，對於 $k=3$，PG 的 upper bound 計算和 queue 操作的成本相對較 RRF 的演算法高。
- **資料點數量的影響**
與前面分析的結果類似，BF 在任何數量下效果都很差、RRF 在數量少時執行時間較短、PG 在數量多時執行時間較短
- **資料點分布的影響**
因為 BF 是暴力法，資料分布不會有任何影響、...

### 5.2 種類多樣性

### 5.4 效能

## 總結

本篇論文解決了 kDNN 查詢，即 k-NN 查詢的一種變體，這個問題包括找到盡可能靠近查詢點的元素，同時又要盡可能地多樣化。我們已經考慮了兩種不同的多樣性概念，即空間多樣性和分類多樣性。過去研究提出的解決方案都很類似，並且要求用戶為每種類型的多樣性定義權重，我們的方法基於 linear skyline 可以找到所有在 $任意$ 線性組合下 $最佳$ 的結果。

RRF 利用遞迴不斷減少集合的候選點同時找出多樣性夠大的解，PG 透過修剪多樣性小的元素組來過濾多樣性小的集合。實驗表明 (1) RRF和PG都比簡單的解決方案快幾個數量級 (2) 對於更高的 $k$ 值和更多的點，PG 的性能優於 RRF，反之 RRF 優於 PG。

在未來的研究中，我們希望調查道路網絡中的kDNN查詢，實際數據集的使用，並進一步探索其他領域（例如文本檢索）中的多樣性概念。
