BIDMach.models

FM

class FM extends RegressionModel

Factorization Machine Model. This class computes a factorization machine model a la

Steffen Rendle (2012): Factorization Machines with libFM, in ACM Trans. Intell. Syst. Technol., 3(3), May.

We depart slightly from the original FM formulation by including both positive definite and negative definite factors. While the positive definite factor can approximate any matrix in the limit, using both positive and negative definite factors should give better performance for a fixed number of factors. This is what we observed on several datasets. With both positive definite and negative definite factors, there should also be no need to remove diagonal terms, since the positive and negative factorizations already form a conventional eigendecomposition (a best least-squares fit for a given number of factors) of the matrix of second-order interactions.

The types of model are given by the values of opts.links (IMat) and are the same as for GLM models. They are:

Options are:

Inherited from Regression Model:

Some convenience functions for training:

val (mm, opts) = FM.learner(a, d)     // On an input matrix a including targets (set opts.targets to specify them),
                                      // learns an FM model of type d.
                                      // returns the model (nn) and the options class (opts).
val (mm, opts) = FM.learner(a, c, d)  // On an input matrix a and target matrix c, learns an FM model of type d.
                                      // returns the model (nn) and the options class (opts).
val (nn, nopts) = FM.predictor(model, ta, pc, d) // constructs a prediction learner from an existing model. returns the learner and options.
                                      // pc should be the same dims as the test label matrix, and will contain results after nn.predict
val (mm, mopts, nn, nopts) = FM.learner(a, c, ta, pc, d) // a = training data, c = training labels, ta = test data, pc = prediction matrix, d = type.
                                      // returns a training learner mm, with options mopts. Also returns a prediction model nn with its own options.
                                      // typically set options, then do mm.train; nn.predict with results in pc.
val (mm, opts) = learner(ds)          // Build a learner for a general datasource ds (e.g. a files data source).
Linear Supertypes
RegressionModel, Model, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. FM
  2. RegressionModel
  3. Model
  4. AnyRef
  5. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new FM(opts: Opts)

Value Members

  1. final def !=(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  4. var _modelmats: Array[Mat]

    Definition Classes
    Model
  5. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  6. def bind(ds: DataSource): Unit

    Definition Classes
    Model
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. def copyMats(from: Array[Mat], to: Array[Mat]): Unit

    Definition Classes
    Model
  9. def copyTo(mod: Model): Unit

    Definition Classes
    FMRegressionModelModel
  10. var datasource: DataSource

    Definition Classes
    Model
  11. def doblock(gmats: Array[Mat], ipass: Int, i: Long): Unit

    Definition Classes
    RegressionModelModel
  12. def doblockg(amats: Array[Mat], ipass: Int, here: Long): Unit

    Definition Classes
    Model
  13. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  14. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  15. def evalblock(mats: Array[Mat], ipass: Int, here: Long): FMat

    Definition Classes
    RegressionModelModel
  16. def evalblockg(amats: Array[Mat], ipass: Int, here: Long): FMat

    Definition Classes
    Model
  17. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  18. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  19. var gmats: Array[Mat]

    Definition Classes
    Model
  20. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  21. def init(): Unit

    Definition Classes
    FMRegressionModelModel
  22. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  23. var iweight: Mat

  24. val linkArray: Array[GLMlink]

  25. var llim: Mat

  26. var mask: Mat

    Definition Classes
    RegressionModel
  27. var mats: Array[Mat]

    Definition Classes
    Model
  28. def meval(in: Mat): FMat

    Definition Classes
    FMRegressionModel
  29. def meval2(in: Mat, targ: Mat): FMat

    Definition Classes
    FMRegressionModel
  30. def meval3(in: Mat, targ: Mat, dweights: Mat): FMat

  31. def meval4(in: Mat, targ: Mat, dweights: Mat): FMat

  32. var mm1: Mat

  33. var mm2: Mat

  34. def modelmats: Array[Mat]

    Definition Classes
    Model
  35. def mupdate(in: Mat): Unit

    Definition Classes
    FMRegressionModel
  36. def mupdate2(in: Mat, targ: Mat): Unit

    Definition Classes
    FMRegressionModel
  37. def mupdate3(in: Mat, targ: Mat, dweights: Mat): Any

  38. def mupdate4(in: Mat, targ: Mat, dweights: Mat): Any

  39. var mv: Mat

  40. var mylinks: Mat

  41. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  42. final def notify(): Unit

    Definition Classes
    AnyRef
  43. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  44. val opts: Opts

    Definition Classes
    RegressionModelModel
  45. var parent_model: Model

    Definition Classes
    Model
  46. var putBack: Int

    Definition Classes
    Model
  47. var refresh: Boolean

    Definition Classes
    Model
  48. def setmodelmats(a: Array[Mat]): Unit

    Definition Classes
    Model
  49. var sp: Mat

    Definition Classes
    RegressionModel
  50. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  51. var targets: Mat

    Definition Classes
    RegressionModel
  52. var targmap: Mat

    Definition Classes
    RegressionModel
  53. def toString(): String

    Definition Classes
    AnyRef → Any
  54. var totflops: Long

  55. var ulim: Mat

  56. var um1: Mat

  57. var um2: Mat

  58. def updatePass(ipass: Int): Unit

    Definition Classes
    Model
  59. var updatemats: Array[Mat]

    Definition Classes
    Model
  60. var useDouble: Boolean

    Definition Classes
    Model
  61. var useGPU: Boolean

    Definition Classes
    Model
  62. var uv: Mat

  63. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  64. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  65. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  66. var xs: Mat

Inherited from RegressionModel

Inherited from Model

Inherited from AnyRef

Inherited from Any

Ungrouped