Instance Constructors
-
new
FM(opts: Opts)
Value Members
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: Any): Boolean
-
var
_modelmats: Array[Mat]
-
final
def
asInstanceOf[T0]: T0
-
-
def
clone(): AnyRef
-
def
copyMats(from: Array[Mat], to: Array[Mat]): Unit
-
def
copyTo(mod: Model): Unit
-
-
def
doblock(gmats: Array[Mat], ipass: Int, i: Long): Unit
-
def
doblockg(amats: Array[Mat], ipass: Int, here: Long): Unit
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
evalblock(mats: Array[Mat], ipass: Int, here: Long): FMat
-
def
evalblockg(amats: Array[Mat], ipass: Int, here: Long): FMat
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
var
gmats: Array[Mat]
-
def
hashCode(): Int
-
def
init(): Unit
-
final
def
isInstanceOf[T0]: Boolean
-
var
iweight: Mat
-
val
linkArray: Array[GLMlink]
-
var
llim: Mat
-
var
mask: Mat
-
var
mats: Array[Mat]
-
def
meval(in: Mat): FMat
-
def
meval2(in: Mat, targ: Mat): FMat
-
def
meval3(in: Mat, targ: Mat, dweights: Mat): FMat
-
def
meval4(in: Mat, targ: Mat, dweights: Mat): FMat
-
var
mm1: Mat
-
var
mm2: Mat
-
def
modelmats: Array[Mat]
-
def
mupdate(in: Mat): Unit
-
def
mupdate2(in: Mat, targ: Mat): Unit
-
def
mupdate3(in: Mat, targ: Mat, dweights: Mat): Any
-
def
mupdate4(in: Mat, targ: Mat, dweights: Mat): Any
-
var
mv: Mat
-
var
mylinks: Mat
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
val
opts: Opts
-
var
parent_model: Model
-
var
putBack: Int
-
var
refresh: Boolean
-
def
setmodelmats(a: Array[Mat]): Unit
-
var
sp: Mat
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
var
targets: Mat
-
var
targmap: Mat
-
def
toString(): String
-
var
totflops: Long
-
var
ulim: Mat
-
var
um1: Mat
-
var
um2: Mat
-
def
updatePass(ipass: Int): Unit
-
var
updatemats: Array[Mat]
-
var
useDouble: Boolean
-
var
useGPU: Boolean
-
var
uv: Mat
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
-
var
xs: Mat
Inherited from AnyRef
Inherited from Any
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: