Lab 04 - Entropy¶
Goal: calculate uncertainty and apply a routing policy.
Info: Entropy as safety valve
High entropy signals diffuse confidence. Red flag for auto-routing. Pair entropy thresholds with probability thresholds.
In [ ]:
Copied!
import math
def entropy_bits(probabilities):
return -sum(p * math.log2(p) for p in probabilities if p > 0)
peaked = [0.92, 0.05, 0.03]
flat = [0.45, 0.33, 0.22]
print("Entropy peaked:", round(entropy_bits(peaked), 4))
print("Entropy flat:", round(entropy_bits(flat), 4))
import math
def entropy_bits(probabilities):
return -sum(p * math.log2(p) for p in probabilities if p > 0)
peaked = [0.92, 0.05, 0.03]
flat = [0.45, 0.33, 0.22]
print("Entropy peaked:", round(entropy_bits(peaked), 4))
print("Entropy flat:", round(entropy_bits(flat), 4))
In [ ]:
Copied!
def normalized_entropy(probabilities):
n = len(probabilities)
return entropy_bits(probabilities) / math.log2(n)
for dist in [peaked, flat]:
print([round(p, 2) for p in dist], "->", round(normalized_entropy(dist), 4))
def normalized_entropy(probabilities):
n = len(probabilities)
return entropy_bits(probabilities) / math.log2(n)
for dist in [peaked, flat]:
print([round(p, 2) for p in dist], "->", round(normalized_entropy(dist), 4))
In [ ]:
Copied!
def route_ticket(probabilities, p_threshold=0.80, h_threshold=0.45):
top_p = max(probabilities)
h_norm = normalized_entropy(probabilities)
return "auto-route" if (top_p >= p_threshold and h_norm <= h_threshold) else "human-triage"
print("Peaked policy:", route_ticket(peaked))
print("Flat policy:", route_ticket(flat))
def route_ticket(probabilities, p_threshold=0.80, h_threshold=0.45):
top_p = max(probabilities)
h_norm = normalized_entropy(probabilities)
return "auto-route" if (top_p >= p_threshold and h_norm <= h_threshold) else "human-triage"
print("Peaked policy:", route_ticket(peaked))
print("Flat policy:", route_ticket(flat))