Skew-OPT framework is a ranking optimization criterion by utilizing the characteristics of skew normal distribution on personalized recommendation task, and this framework is published in UAI 2020.
In specific, without giving the restriction while generating the embedding distribution, the Skew-OPT framework provides an alternative optimization criterion on constraining the learned embedding distribution by leverages the characteristics of the skew normal distribution. Moreover, the learned embedding distribution under the Skew-OPT framework is proven to be beneficial to personalized recommendation task, whereas the further justification and theoretical analysis are provided in our paperwork.
- g++ > 4.9 (In macOS, it needs OpenMP-enabled compilers. or try installing lateast version of gcc)
$ git clone https://github.com/cnclabs/codes.skewness.rec.git
$ cd codes.skewness.rec
$ make
Given a network input net.txt:
userA itemA 3
userA itemC 5
userB itemA 1
userB itemB 5
userC itemA 4
The model learns the representations of each vertex:
6 5
userA 0.0815412 0.0205459 0.288714 0.296497 0.394043
itemA -0.207083 -0.258583 0.233185 0.0959801 0.258183
itemC 0.0185886 0.138003 0.213609 0.276383 0.45732
userB -0.0137994 -0.227462 0.103224 -0.456051 0.389858
itemB -0.317921 -0.163652 0.103891 -0.449869 0.318225
userC -0.156576 -0.3505 0.213454 0.10476 0.259673
Directly call the execution file to see the usage like:
./cli/SkewOPT # for Skew-OPT
then you will see the options description like:
[SkewOPT] command nerank interface for [SMORe](https://github.com/cnclabs/smore)
Options Description:
-train <string>
Train the Network data.
-save <string>
Save the representation data.
-dimensions <int>
Dimension of vertex representation; default is 64.
-sample_times <int>
Number of training samples *Million; default is 10.
-threads <int>
Number of training threads; default is 1.
-alpha <float>
Init learning rate; default is 0.025.
-reg <float>
Regularization term; default is 0.01.
-xi <float>
Location parameter \xi for Skew-OPT; default is 10.0 .
-omega <float>
Scale parameter \omega for Skew-OPT; default is 3.0 .
-eta <int>
Power parameter for Skew-OPT; this parameter must be an odd integer and default is 3.
Usage:
[SkewOPT]
./SkewOPT -train net.txt -save rep/skew.rep -sample_times 10 -threads 4 -dimensions 64 -omega 11 -xi 3 -eta 3
We here suggest users to follow the tuning strategy under the following instruction:
- Large
-xi
is suggest to be with larger-omega
. ( E.g.-xi
= 11 with-omega
= 3 ) - Small
-xi
is suggest to be with smaller-omega
. ( E.g.-xi
= 7 with-omega
= 2 ) - Large
-eta
requires smaller-reg
on training progress.