RANSOC (Real-time Adaptive Normalization for the Satisfaction of Curiosity) is a novel algorithm designed to balance relevance and exploration in search results. It achieves this by dynamically adjusting the weights of results based on user interactions, ensuring a broader exploration of the search space while maintaining result relevance. This approach is particularly beneficial in virtual environments, where users might otherwise limit their exploration to a subset of available options.
Users often interact with systems that offer a wide range of potential outcomes, such as virtual characters with diverse facial expressions. However, they frequently explore only a limited subset of these possibilities, hindering their understanding of the system's full capabilities. RANSOC addresses this challenge by employing real-time adaptive normalization of search result weights, promoting the discovery of less prominent outcomes without sacrificing relevance to the user's query.
We model the search space as a set of $n$ planets, $P = {p_1, p_2, ..., p_n}$, each located in a $d$-dimensional space. A query is represented by a star $s$, also situated in this $d$-dimensional space. The objective is to rank planets based on their relevance to the star, while encouraging exploration by dynamically elevating the rank of previously overlooked planets.
The relevance of planet $p_i$ to star $s$ is quantified using the Euclidean distance: $d(p_i, s) = | p_i - s |2 = \sqrt{ \sum{j=1}^{d} (p_{ij} - s_j)^2 }$
The initial weight of planet $p_i$ with respect to star $s$ is inversely proportional to the distance: $w(p_i, s) = \frac{1}{d(p_i, s)}$
RANSOC introduces novelty by dynamically adapting planet masses over time, based on user interactions. This adjustment ensures that previously lower-ranked planets gain visibility.
The planet with the highest weight is designated as the "hit" planet: $p_{\text{hit}} = \arg\max_{p_i \in P} w(p_i, s)$
After each hit, the planet masses are updated as follows:
The updated weight of planet $p_i$ is computed using the modified mass and the distance: $w_{\text{new}}(p_i, s) = \frac{m_i}{d(p_i, s)}$
The RANSOC algorithm operates as follows:
def RANSOC(planets, star, alpha):
"""
Real-time Adaptive Normalization for the Satisfaction of Curiosity.
Args:
planets: A list of planets, each represented as a d-dimensional vector.
star: The query star, represented as a d-dimensional vector.
alpha: The learning rate (0 < alpha < 1).
Returns:
The planet with the highest weight (the "hit" planet).
"""
n = len(planets)
masses = [1] * n # Initialize masses to 1
weights = [masses[i] / distance(planets[i], star) for i in range(n)]
hit_index = weights.index(max(weights))
masses[hit_index] *= (1 - alpha)
for i in range(n):
if i != hit_index:
masses[i] *= (1 + alpha / (n - 1))
return planets[hit_index]
RANSOC effectively balances relevance and novelty in search results by dynamically adapting weights based on user interactions. This encourages broader exploration of the search space, ensuring that even less relevant items gain visibility over time, thereby satisfying user curiosity.
Future research will focus on integrating reinforcement learning techniques to further optimize user satisfaction by learning from user preferences over time.