PropertyDamage.FailureIntelligence.Similarity (PropertyDamage v0.2.0)
View SourceComputes similarity scores between failure fingerprints.
Uses multiple metrics to determine how similar two failures are, enabling pattern detection and clustering.
Summary
Functions
Performs a detailed comparison between two fingerprints.
Finds the most similar fingerprint from a list.
Finds all fingerprints similar to the target.
Computes the similarity score between two fingerprints.
Checks if two fingerprints are similar based on the threshold.
Checks if two fingerprints are similar using a custom threshold.
Computes a similarity matrix for a list of fingerprints.
Types
@type score() :: float()
Functions
@spec compare( PropertyDamage.FailureIntelligence.Fingerprint.t(), PropertyDamage.FailureIntelligence.Fingerprint.t() ) :: comparison()
Performs a detailed comparison between two fingerprints.
Returns the overall score, per-component breakdown, and similarity determination.
@spec find_most_similar(PropertyDamage.FailureIntelligence.Fingerprint.t(), [ PropertyDamage.FailureIntelligence.Fingerprint.t() ]) :: {PropertyDamage.FailureIntelligence.Fingerprint.t(), score()} | nil
Finds the most similar fingerprint from a list.
Returns {fingerprint, score} or nil if no fingerprints are provided.
@spec find_similar( PropertyDamage.FailureIntelligence.Fingerprint.t(), [PropertyDamage.FailureIntelligence.Fingerprint.t()], keyword() ) :: [{PropertyDamage.FailureIntelligence.Fingerprint.t(), score()}]
Finds all fingerprints similar to the target.
Returns a list of {fingerprint, score} pairs, sorted by score descending.
@spec score( PropertyDamage.FailureIntelligence.Fingerprint.t(), PropertyDamage.FailureIntelligence.Fingerprint.t() ) :: score()
Computes the similarity score between two fingerprints.
Returns a score between 0.0 (completely different) and 1.0 (identical).
@spec similar?( PropertyDamage.FailureIntelligence.Fingerprint.t(), PropertyDamage.FailureIntelligence.Fingerprint.t() ) :: boolean()
Checks if two fingerprints are similar based on the threshold.
@spec similar?( PropertyDamage.FailureIntelligence.Fingerprint.t(), PropertyDamage.FailureIntelligence.Fingerprint.t(), float() ) :: boolean()
Checks if two fingerprints are similar using a custom threshold.
@spec similarity_matrix([PropertyDamage.FailureIntelligence.Fingerprint.t()]) :: %{ required({non_neg_integer(), non_neg_integer()}) => score() }
Computes a similarity matrix for a list of fingerprints.
Returns a map where keys are {index1, index2} and values are scores.
Only computes upper triangle (i < j) since similarity is symmetric.