This function executes the Agglomerative weighted rank aggregation method of Chatterjee et al., 2018. The method is implemented in accordance to the following paper:

  • S. Chatterjee, A. Mukhopadhyay, M. Bhattacharyya, "A weighted rank aggregation approach towards crowd opinion analysis", Knowledge-Based Systems, vol. 149, pp. 47-60, 2018.

The Agglomerative Aggregation algorithm belongs to the weighted rank aggregation methods. It employs exploratory analysis to automatically identify the expert voters in an unsupervised fashion. Then, it assigns higher weights to the voters who were identified as experts, thus boosting the scores of their submitted elements.

This method works very similarly to the well-established agglomerative clustering algorithm. Specifically, it repeatedly merges the two most similar input lists into a temporary aggregate list. During list merging, it modifies the weights of the respective voters, thus affecting the future merges.

Function Definitions

void Agglomerative(const char inf[], const char relf[], const int evpts,
     const char ranstr[], const char out[], const float c1, const float c2)

and

__declspec(dllexport) void __cdecl Agglomerative(const char inf[], const char relf[], const int evpts,
     const char ranstr[], const char out[], const float c1, const float c2)

Implementation Files

Input arguments

  • const char inf[]: The path of the input file that stores the preference lists to be aggregated.
  • const char relf[]: The path of the input file that stores the element relevance judgments.
  • const int evpts: the elements in the aggregate list on which the evaluation measures (i.e. Precision, and nDCG) will be computed.
  • const char ranstr[]: A string that is embedded in the names of the output files. Used when FLAGR is compiled as a shared library.
  • const char out[]: The file system location where the output file with the aggregate list will be stored.
  • const float c1: The \(c_1\) hyper-parameter.
  • const float c2: The \(c_2\) hyper-parameter.

Description
The input parameters are parsed and stored in a special C structure called UserParams that is defined in src/InputParams.h. Then, UserParams is passed to the execution driver and the rank aggregation process starts.