关于连贯性,sagemaker AFAIK 中没有默认实现。
您可以像这样实现自己的指标:
from itertools import combinations
from sklearn.metrics.pairwise import cosine_similarity
def calculate_coherence(topic_vectors):
similarity_sum = 0.0
num_combinations = 0
for pair in combinations(topic_vectors, 2):
similarity = cosine_similarity([pair[0]], [pair[1]])
similarity_sum = similarity_sum + similarity
num_combinations = num_combinations + 1
return float(similarity_sum / num_combinations)
并获得真实模型的连贯性,例如:
print(calculate_coherence(beta.asnumpy()))
一些直观的连贯性测试如下:
predictions = [[0.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 1.0],
[1.0, 0.0, 0.0]]
assert calculate_coherence(predictions) == 0.0, "Expected incoherent"
predictions = [[0.0, 1.0, 1.0],
[0.0, 1.0, 1.0],
[0.0, 1.0, 1.0],
[0.0, 1.0, 1.0]]
assert calculate_coherence(predictions) == 1.0, "Expected coherent"
predictions = [[0.0, 0.0, 1.0],
[0.0, 0.0, 1.0],
[1.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 1.0, 0.0]]
assert calculate_coherence(predictions) == 0.2, "Expected partially coherent"
延伸阅读: