myfm.VariationalFMClassifier

class myfm.VariationalFMClassifier(rank: int, init_stdev: float = 0.1, random_seed: int = 42, alpha_0: float = 1.0, beta_0: float = 1.0, gamma_0: float = 1.0, mu_0: float = 0.0, reg_0: float = 1.0, fit_w0: bool = True, fit_linear: bool = True)[source]

Bases: myfm.base.ClassifierMixin[myfm._myfm.VariationalFM, myfm._myfm.VariationalFMHyperParameters], myfm.variational.MyFMVariationalBase

Variational Inference for Classification Task.

__init__(rank: int, init_stdev: float = 0.1, random_seed: int = 42, alpha_0: float = 1.0, beta_0: float = 1.0, gamma_0: float = 1.0, mu_0: float = 0.0, reg_0: float = 1.0, fit_w0: bool = True, fit_linear: bool = True)

Setup the configuration.

Parameters
  • rank (int) – The number of factors.

  • init_stdev (float, optional (defalult = 0.1)) – The standard deviation for initialization. The factorization machine weights are randomely sampled from Normal(0, init_stdev ** 2).

  • random_seed (integer, optional (default = 0.1)) – The random seed used inside the whole learning process.

  • alpha_0 (float, optional (default = 1.0)) – The half of alpha parameter for the gamma-distribution prior for alpha, lambda_w and lambda_V. Together with beta_0, the priors for these parameters are alpha, lambda_w, lambda_v ~ Gamma(alpha_0 / 2, beta_0 / 2)

  • beta_0 (float, optional (default = 1.0)) – See the explanation for alpha_0 .

  • gamma_0 (float, optional (default = 1.0)) – Inverse variance of the prior for mu_w, mu_v. Together with mu_0, the priors for these parameters are mu_w, mu_v ~ Normal(mu_0, 1 / gamma_0)

  • mu_0 (float, optional (default = 0.0)) – See the explanation for gamma_0.

  • reg_0 (float, optional (default = 0.0)) – Inverse variance of the prior for w0. w0 ~ Normal(0, 1 / reg_0)

  • fit_w0 (bool, optional (default = True)) – whether to fit w0, by default True.

  • fit_linear (bool, optional (default = True)) – whether to fit linear coefficients, by default True.

Methods

__init__(rank[, init_stdev, random_seed, ...])

Setup the configuration.

fit(X, y[, X_rel, X_test, y_test, ...])

Performs batch variational inference fit the data.

predict(X[, X_rel])

Based on the class probability, return binary classified outcome based on threshold = 0.5.

predict_proba(X[, X_rel])

Compute the probability that the outcome will be 1 based on variational mean.

Attributes

V_mean

Mean of variational posterior distribution of factorized quadratic coefficnent V.

V_var

Variance of variational posterior distribution of factorized quadratic coefficnent V.

w0_mean

Mean of variational posterior distribution of global bias w0.

w0_var

Variance of variational posterior distribution of global bias w0.

w_mean

Mean of variational posterior distribution of linear coefficnent w.

w_var

Variance of variational posterior distribution of linear coefficnent w.

property V_mean: Optional[numpy.ndarray]

Mean of variational posterior distribution of factorized quadratic coefficnent V. If the model is not fit yet, returns None.

Returns:

Mean of variational posterior distribution of factorized quadratic coefficient V.

property V_var: Optional[numpy.ndarray]

Variance of variational posterior distribution of factorized quadratic coefficnent V. If the model is not fit yet, returns None.

Returns:

Variance of variational posterior distribution of factorized quadratic coefficient V.

fit(X: Union[numpy.ndarray, scipy.sparse.csr.csr_matrix], y: numpy.ndarray, X_rel: List[myfm._myfm.RelationBlock] = [], X_test: Optional[Union[numpy.ndarray, scipy.sparse.csr.csr_matrix]] = None, y_test: Optional[numpy.ndarray] = None, X_rel_test: List[myfm._myfm.RelationBlock] = [], n_iter: int = 100, grouping: Optional[List[int]] = None, group_shapes: Optional[List[int]] = None, callback: Optional[Callable[[int, myfm._myfm.VariationalFM, myfm._myfm.VariationalFMHyperParameters, myfm._myfm.VariationalLearningHistory], Tuple[bool, Optional[str]]]] = None, config_builder: Optional[myfm._myfm.ConfigBuilder] = None) myfm.variational.VariationalFMClassifier[source]

Performs batch variational inference fit the data.

Parameters
  • X (Optional[ArrayLike].) – Main table. When None, treated as a matrix without columns.

  • y (1D array-like.) – Target variable.

  • X_rel (list of RelationBlock, optional (default=[])) – Relation blocks which supplements X.

  • n_iter (int, optional (default = 100)) – Iterations to perform.

  • grouping (Integer List, optional (default = None)) – If not None, this specifies which column of X belongs to which group. That is, if grouping[i] is g, then, \(w_i\) and \(V_{i, r}\) will be distributed according to \(\mathcal{N}(\mu_w[g], \lambda_w[g])\) and \(\mathcal{N}(\mu_V[g, r], \lambda_V[g,r])\), respectively. If None, all the columns of X are assumed to belong to a single group, 0.

  • group_shapes (Integer array, optional (default = None)) – If not None, this specifies each variable group’s size. Ignored if grouping is not None. For example, if group_shapes = [n_1, n_2], this is equivalent to grouping = [0] * n_1 + [1] * n_2

  • callback (function(int, fm, hyper) -> bool, optional(default = None)) – Called at the every end of each Gibbs iteration.

predict(X: Optional[Union[numpy.ndarray, scipy.sparse.csr.csr_matrix]], X_rel: List[myfm._myfm.RelationBlock] = []) numpy.ndarray[source]

Based on the class probability, return binary classified outcome based on threshold = 0.5. If you want class probability instead, use predict_proba method.

Parameters
  • X (Optional[ArrayLike]) – Main Table. When None, treated as a matrix without columns.

  • X_rel (List[RelationBlock], optional) – Relations, by default []

Returns

0/1 predictions based on the probability.

Return type

np.ndarray

predict_proba(X: Optional[Union[numpy.ndarray, scipy.sparse.csr.csr_matrix]], X_rel: List[myfm._myfm.RelationBlock] = []) numpy.ndarray[source]

Compute the probability that the outcome will be 1 based on variational mean.

Parameters
  • X (Optional[ArrayLike]) – Main Table. When None, treated as a matrix without columns.

  • X_rel (List[RelationBlock], optional) – Relations, by default []

Returns

the probability.

Return type

np.ndarray

property w0_mean: Optional[float]

Mean of variational posterior distribution of global bias w0. If the model is not fit yet, returns None.

Returns:

Mean of variational posterior distribution of global bias w0.

property w0_var: Optional[float]

Variance of variational posterior distribution of global bias w0. If the model is not fit yet, returns None.

Returns:

Variance of variational posterior distribution of global bias w0.

property w_mean: Optional[numpy.ndarray]

Mean of variational posterior distribution of linear coefficnent w. If the model is not fit yet, returns None.

Returns:

Mean of variational posterior distribution of linear coefficnent w.

property w_var: Optional[numpy.ndarray]

Variance of variational posterior distribution of linear coefficnent w. If the model is not fit yet, returns None.

Returns:

Variance of variational posterior distribution of linear coefficnent w.