HOFMClassifier¶
Higher-Order Factorization Machine for binary classification.
The model equation is defined as:
For more efficiency, this model automatically one-hot encodes strings features considering them as categorical variables.
Parameters¶
-
degree – defaults to
3Polynomial degree or model order.
-
n_factors – defaults to
10Dimensionality of the factorization or number of latent factors.
-
weight_optimizer (optim.base.Optimizer) – defaults to
NoneThe sequential optimizer used for updating the feature weights. Note that the intercept is handled separately.
-
latent_optimizer (optim.base.Optimizer) – defaults to
NoneThe sequential optimizer used for updating the latent factors.
-
loss (optim.losses.BinaryLoss) – defaults to
NoneThe loss function to optimize for.
-
sample_normalization – defaults to
FalseWhether to divide each element of
xbyx's L2-norm. -
l1_weight – defaults to
0.0Amount of L1 regularization used to push weights towards 0.
-
l2_weight – defaults to
0.0Amount of L2 regularization used to push weights towards 0.
-
l1_latent – defaults to
0.0Amount of L1 regularization used to push latent weights towards 0.
-
l2_latent – defaults to
0.0Amount of L2 regularization used to push latent weights towards 0.
-
intercept – defaults to
0.0Initial intercept value.
-
intercept_lr (Union[optim.base.Scheduler, float]) – defaults to
0.01Learning rate scheduler used for updating the intercept. An instance of
optim.schedulers.Constantis used if afloatis passed. No intercept will be used if this is set to 0. -
weight_initializer (optim.base.Initializer) – defaults to
NoneWeights initialization scheme. Defaults to
optim.initializers.Zeros(). -
latent_initializer (optim.base.Initializer) – defaults to
NoneLatent factors initialization scheme. Defaults to
optim.initializers.Normal(mu=.0, sigma=.1, random_state=self.random_state). -
clip_gradient – defaults to
1000000000000.0Clips the absolute value of each gradient value.
-
seed (int) – defaults to
NoneRandomization seed used for reproducibility.
Attributes¶
-
weights
The current weights assigned to the features.
-
latents
The current latent weights assigned to the features.
Examples¶
>>> from river import facto
>>> dataset = (
... ({'user': 'Alice', 'item': 'Superman', 'time': .12}, True),
... ({'user': 'Alice', 'item': 'Terminator', 'time': .13}, True),
... ({'user': 'Alice', 'item': 'Star Wars', 'time': .14}, True),
... ({'user': 'Alice', 'item': 'Notting Hill', 'time': .15}, False),
... ({'user': 'Alice', 'item': 'Harry Potter ', 'time': .16}, True),
... ({'user': 'Bob', 'item': 'Superman', 'time': .13}, True),
... ({'user': 'Bob', 'item': 'Terminator', 'time': .12}, True),
... ({'user': 'Bob', 'item': 'Star Wars', 'time': .16}, True),
... ({'user': 'Bob', 'item': 'Notting Hill', 'time': .10}, False)
... )
>>> model = facto.HOFMClassifier(
... degree=3,
... n_factors=10,
... intercept=.5,
... seed=42,
... )
>>> for x, y in dataset:
... _ = model.learn_one(x, y)
>>> model.predict_one({'user': 'Bob', 'item': 'Harry Potter', 'time': .14})
True
Methods¶
debug_one
Debugs the output of the FM regressor.
Parameters
- x (dict)
- decimals (int) – defaults to
5
Returns
str: A table which explains the output.
learn_one
Update the model with a set of features x and a label y.
Parameters
- x (dict)
- y (Union[bool, str, int])
- sample_weight – defaults to
1.0
Returns
Classifier: self
predict_one
Predict the label of a set of features x.
Parameters
- x (dict)
- kwargs
Returns
typing.Union[bool, str, int, NoneType]: The predicted label.
predict_proba_one
Predict the probability of each label for a dictionary of features x.
Parameters
- x
Returns
A dictionary that associates a probability which each label.