Elicitation¶
pypbl.elicitation¶
Core module for preference based learning.

class
pypbl.elicitation.
BayesPreference
(data)¶ Class for preference based learning using Bayesian inference
Parameters: data (object) – Pandas DataFrame with columns as features and index as item names 
add_indifferent_preference
(a, b)¶ Adds a preference based on a == b
Parameters:  a (str) – name of item a that has equal preference to item b
 b (str) – name of item b
Raises: ValueError

add_strict_preference
(a, b)¶ Adds a preference based on a > b
Parameters:  a (str) – name of item a that is preferred over item b
 b (str) – name of item b
Raises: ValueError

compute_entropy
(x)¶ Compute entropy of a new preference
Parameters: x (list) – pair of items Returns: Entropy for the pair of items

indifferent_log_probability
(preference, weights)¶ Computes the log probability for an indifferent preference
Parameters:  preference (tuple) – indifference preference relationship (a == b)
 weights (Numpy Array) – weights for each feature
Returns: Log probability of indifferent preference given weights

infer_weights
(method='MAP', iterations=100)¶ Infer weights for each attribute based on preferences. method=’MAP’ uses gradient based optimisation to compute the maximum a posteriori, method=’mean’ uses sampling to compute a better estimate of the weights when using nonnormal priors
Parameters:  method (str) – method used for inference
 iterations (int) – number of iterations to use when method=’mean’
Returns: Estimated weights using Bayesian inference
Raises: AttributeError
ValueError

log_probability
(weights)¶ Computes the log posterior probability based on the sum of each strict and indifferent preference probability
Parameters: weights (Numpy Array) – weights for each feature Returns: Log posterior probability given preference data and weights

rank
()¶ Rank items based on the inferred weights
Returns: Pandas DataFrame of ordered items and utility values

remove_last_strict_preference
()¶ Removed the most recently added strict preference

set_priors
(priors)¶ Set priors
Parameters: priors (list) – List of priors Raises: AttributeError

strict_log_probability
(preference, weights)¶ Computes the log probability for a strict preference
Parameters:  preference (tuple) – strict preference relationship (a > b)
 weights (Numpy Array) – weights for each feature
Returns: Log probability of strict preference given weights

suggest
(method='random')¶ Suggest a new item to compare with the most preferred item method=’random’ chooses a new pair that includes the top ranked item at random, method=’max_variance’ chooses a pair that includes the top ranked item and the item with greatest uncertainty, method=’min_entropy’ chooses a pair that includes the top ranked item and minimises expected entropy
Parameters: method (str) – suggestion method one of ‘random’, ‘max_variance’ or ‘min_entropy’ Returns: Pair of items that includes the top ranked item and another item based on the selected method Raises: ValueError

suggest_new_pair
(method='random')¶ Suggest a new pair of items with minimum entropy method=’random’ chooses a new pair at random, method=’min_entropy’ chooses a new pair that minimises expected entropy
Parameters: method (str) – suggestion method one of ‘random’ or ‘min_entropy’ Returns: Pair of items that based on the selected method Raises: ValueError
