
com.shijingsh.ai.evaluate.ranking.DiversityEvaluator Maven / Gradle / Ivy
The newest version!
package com.shijingsh.ai.evaluate.ranking;
import com.shijingsh.ai.evaluate.RankingEvaluator;
import com.shijingsh.ai.math.structure.matrix.SymmetryMatrix;
import com.shijingsh.ai.evaluate.RankingEvaluator;
import com.shijingsh.ai.math.structure.matrix.SymmetryMatrix;
import it.unimi.dsi.fastutil.ints.IntList;
import it.unimi.dsi.fastutil.ints.IntSet;
/**
* 多样性评估器
*
* @author Birdy
*/
public class DiversityEvaluator extends RankingEvaluator {
private SymmetryMatrix similarityMatrix;
public DiversityEvaluator(int size, SymmetryMatrix similarityMatrix) {
super(size);
this.similarityMatrix = similarityMatrix;
}
@Override
protected float measure(IntSet checkCollection, IntList rankList) {
if (rankList.size() > size) {
rankList = rankList.subList(0, size);
}
float diversity = 0F;
int size = rankList.size();
for (int indexOut = 0; indexOut < size; indexOut++) {
for (int indexIn = indexOut + 1; indexIn < size; indexIn++) {
int itemOut = rankList.get(indexOut);
int itemIn = rankList.get(indexIn);
diversity += 1F - similarityMatrix.getValue(itemOut, itemIn);
diversity += 1F - similarityMatrix.getValue(itemIn, itemOut);
}
}
return diversity / (size * (size - 1));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy