# Fast Matrix Factorization with Non-Uniform Missing Data
This is our official implementation for the paper [[url](https://arxiv.org/abs/1811.04411)]:
> Xiangnan He, Jinhui Tang, Xiaoyu Du, Richang Hong, Tongwei Ren and Tat-Seng Chua, Fast Matrix Factorization with Non-Uniform Weights on Missing Data, TNNLS.
It is an extended work of the SIGIR'16 paper "Fast Matrix Factorization for Online Recommendation with Implicit Feedback".
If you use the codes, please cite our paper . Thanks!
## Models
The core model is `src/algorithms/MF_extALS.java`.
A contrast model based on sparse SVD is `svd.py`.
## Dataset
We exhibit a small dataset `data/yelp.rating`, in which the columns indicate the `user_id`, `item_id`, `rating score` and `rating time`, respectively.
## Quick Start
Run the main function in `src/main/main_MF.java`.
## Results
The outputs with default settings are as below:
```
HoldOne out splitting.
Sort items for each user.[00:00:00.470]
Generate rating matrices.[00:00:01.056]
Data data/yelp.rating
#Users 25677
#Items 25815
#Ratings 672765 (train), 25677(test)
extALS: showProgress=false, factors=64, maxIter=500, reg=0.010000, w0=10.00, alpha=0.75
====================================================
Popularity <hr, ndcg, prec>: 0.0705 0.0176 0.0062 [00:00:02.233]
training size: 662851755
user: 25677, item: 25815
relates: 1
Iter=0 [00:00:06.892] [-]loss: 261836.1007 [00:00:00.338]
Iter=1 [00:00:04.821] [-]loss: 96839.4645 [00:00:00.496]
Iter=2 [00:00:04.554] [-]loss: 67288.0789 [00:00:00.242]
Iter=3 [00:00:04.531] [-]loss: 54636.3216 [00:00:00.225]
Iter=4 [00:00:04.514] [-]loss: 47446.8384 [00:00:00.224]
Iter=5 [00:00:04.506] [-]loss: 42775.1669 [00:00:00.222]
Iter=6 [00:00:04.485] [-]loss: 39475.7438 [00:00:00.227]
Iter=7 [00:00:04.505] [-]loss: 37002.0581 [00:00:00.226]
Iter=8 [00:00:04.591] [-]loss: 35060.2324 [00:00:00.229]
Iter=9 [00:00:04.546] [-]loss: 33479.9425 [00:00:00.229]
Iter=10 [00:00:04.559] [-]loss: 32157.4193 [00:00:00.228]
Iter=11 [00:00:04.613] [-]loss: 31027.1596 [00:00:00.231]
Iter=12 [00:00:04.572] [-]loss: 30046.2365 [00:00:00.233]
Iter=13 [00:00:04.538] [-]loss: 29185.1848 [00:00:00.224]
Iter=14 [00:00:04.557] [-]loss: 28422.7083 [00:00:00.237]
Iter=15 [00:00:04.564] [-]loss: 27742.7244 [00:00:00.225]
Iter=16 [00:00:04.547] [-]loss: 27132.6735 [00:00:00.226]
Iter=17 [00:00:04.588] [-]loss: 26582.4973 [00:00:00.228]
Iter=18 [00:00:04.566] [-]loss: 26083.9762 [00:00:00.225]
Iter=19 [00:00:04.550] [-]loss: 25630.2859 [00:00:00.228]
Iter=20 [00:00:04.574] [-]loss: 25215.7115 [00:00:00.224]
Iter=21 [00:00:04.535] [-]loss: 24835.4411 [00:00:00.227]
Iter=22 [00:00:04.506] [-]loss: 24485.4029 [00:00:00.225]
Iter=23 [00:00:04.510] [-]loss: 24162.1307 [00:00:00.223]
Iter=24 [00:00:04.523] [-]loss: 23862.6545 [00:00:00.226]
Iter=25 [00:00:04.503] [-]loss: 23584.4155 [00:00:00.228]
Iter=26 [00:00:04.514] [-]loss: 23325.1992 [00:00:00.229]
Iter=27 [00:00:04.566] [-]loss: 23083.0798 [00:00:00.227]
Iter=28 [00:00:04.603] [-]loss: 22856.3758 [00:00:00.225]
Iter=29 [00:00:04.632] [-]loss: 22643.6149 [00:00:00.226]
Iter=30 [00:00:04.524] [-]loss: 22443.5050 [00:00:00.225]
Iter=31 [00:00:04.663] [-]loss: 22254.9070 [00:00:00.227]
Iter=32 [00:00:04.623] [-]loss: 22076.8149 [00:00:00.229]
Iter=33 [00:00:04.663] [-]loss: 21908.3398 [00:00:00.225]
Iter=34 [00:00:04.580] [-]loss: 21748.6950 [00:00:00.224]
Iter=35 [00:00:04.528] [-]loss: 21597.1818 [00:00:00.227]
Iter=36 [00:00:04.535] [-]loss: 21453.1786 [00:00:00.224]
Iter=37 [00:00:04.541] [-]loss: 21316.1297 [00:00:00.223]
Iter=38 [00:00:04.523] [-]loss: 21185.5367 [00:00:00.225]
Iter=39 [00:00:04.525] [-]loss: 21060.9505 [00:00:00.227]
Iter=40 [00:00:04.523] [-]loss: 20941.9652 [00:00:00.226]
Iter=41 [00:00:05.074] [-]loss: 20828.2120 [00:00:00.334]
Iter=42 [00:00:04.910] [-]loss: 20719.3558 [00:00:00.237]
Iter=43 [00:00:04.868] [-]loss: 20615.0902 [00:00:00.225]
Iter=44 [00:00:04.525] [-]loss: 20515.1353 [00:00:00.224]
Iter=45 [00:00:04.791] [-]loss: 20419.2337 [00:00:00.238]
Iter=46 [00:00:04.867] [-]loss: 20327.1489 [00:00:00.417]
Iter=47 [00:00:04.936] [-]loss: 20238.6622 [00:00:00.239]
Iter=48 [00:00:04.645] [-]loss: 20153.5715 [00:00:00.225]
Iter=49 [00:00:04.534] [-]loss: 20071.6890 [00:00:00.222]
Iter=50 [00:00:04.689] [-]loss: 19992.8403 [00:00:00.250]
Iter=51 [00:00:04.882] [-]loss: 19916.8628 [00:00:00.322]
Iter=52 [00:00:04.776] [-]loss: 19843.6050 [00:00:00.244]
Iter=53 [00:00:04.818] [-]loss: 19772.9253 [00:00:00.240]
Iter=54 [00:00:04.820] [-]loss: 19704.6913 [00:00:00.225]
Iter=55 [00:00:04.790] [-]loss: 19638.7789 [00:00:00.227]
Iter=56 [00:00:04.571] [-]loss: 19575.0719 [00:00:00.253]
Iter=57 [00:00:04.769] [-]loss: 19513.4613 [00:00:00.314]
Iter=58 [00:00:04.753] [-]loss: 19453.8449 [00:00:00.238]
Iter=59 [00:00:04.912] [-]loss: 19396.1266 [00:00:00.232]
Iter=60 [00:00:05.110] [-]loss: 19340.2162 [00:00:00.246]
Iter=61 [00:00:04.720] [-]loss: 19286.0290 [00:00:00.226]
Iter=62 [00:00:04.732] [-]loss: 19233.4853 [00:00:00.231]
Iter=63 [00:00:04.784] [-]loss: 19182.5101 [00:00:00.228]
Iter=64 [00:00:04.760] [-]loss: 19133.0329 [00:00:00.234]
Iter=65 [00:00:04.780] [-]loss: 19084.9873 [00:00:00.227]
Iter=66 [00:00:04.754] [-]loss: 19038.3105 [00:00:00.235]
Iter=67 [00:00:04.734] [-]loss: 18992.9438 [00:00:00.276]
Iter=68 [00:00:04.690] [-]loss: 18948.8313 [00:00:00.243]
Iter=69 [00:00:04.632] [-]loss: 18905.9206 [00:00:00.238]
Iter=70 [00:00:04.610] [-]loss: 18864.1622 [00:00:00.230]
Iter=71 [00:00:04.743] [-]loss: 18823.5089 [00:00:00.258]
Iter=72 [00:00:04.758] [-]loss: 18783.9166 [00:00:00.223]
Iter=73 [00:00:04.707] [-]loss: 18745.3430 [00:00:00.300]
Iter=74 [00:00:04.808] [-]loss: 18707.7481 [00:00:00.223]
Iter=75 [00:00:04.831] [-]loss: 18671.0940 [00:00:00.230]
Iter=76 [00:00:04.913] [-]loss: 18635.3447 [00:00:00.331]
Iter=77 [00:00:05.078] [-]loss: 18600.4658 [00:00:00.241]
Iter=78 [00:00:04.781] [-]loss: 18566.4247 [00:00:00.225]
Iter=79 [00:00:04.822] [-]loss: 18533.1906 [00:00:00.236]
Iter=80 [00:00:04.659] [-]loss: 18500.7338 [00:00:00.226]
Iter=81 [00:00:04.599] [-]loss: 18469.0264 [00:00:00.225]
Iter=82 [00:00:04.580] [-]loss: 18438.0416 [00:00:00.228]
Iter=83 [00:00:04.541] [-]loss: 18407.7543 [00:00:00.225]
Iter=84 [00:00:04.760] [-]loss: 18378.1401 [00:00:00.226]
Iter=85 [00:00:04.693] [-]loss: 18349.1762 [00:00:00.282]
Iter=86 [00:00:05.050] [-]loss: 18320.8408 [00:00:00.308]
Iter=87 [00:00:04.885] [-]loss: 18293.1130 [00:00:00.232]
Iter=88 [00:00:04.696] [-]loss: 18265.9733 [00:00:00.226]
Iter=89 [00:00:04.664] [-]loss: 18239.4026 [00:00:00.247]
Iter=90 [00:00:04.505] [-]loss: 18213.3829 [00:00:00.226]
Iter=91 [00:00:04.505] [-]loss: 18187.8971 [00:00:00.225]
Iter=92 [00:00:04.520] [-]loss: 18162.9285 [00:00:00.226]
Iter=93 [00:00:04.557] [-]loss: 18138.4613 [00:00:00.223]
Iter=94 [00:00:04.946] [-]loss: 18114.4802 [00:00:00.225]
Iter=95 [00:00:04.745] [-]loss: 18090.9703 [00:00:00.285]
Iter=96 [00:00:04.725] [-]loss: 18067.9176 [00:00:00.259]
Iter=97 [00:00:04.788] [-]loss: 18045.3084 [00:00:00.228]
Iter=98 [00:00:04.874] [-]loss: 18023.1294 [00:00:00.234]
Iter=99 [00:00:04.574] [-]loss: 18001.3682 [00:00:00.225]
Iter=100 [00:00:04.542] [-]loss: 17980.0124 [00:00:00.225]
Iter=101 [00:00:04.664] [-]loss: 17959.0506 [00:00:00.270]
Iter=102 [00:00:04.820] [-]loss: 17938.4716 [00:00:00.226]
Iter=103 [00:00:04.527] [-]loss: 17918.2647 [00:00:00.225]
Iter=104 [00:00:04.591] [-]loss: 17898.4195 [00:00:00.240]
Iter=105 [00:00:04.884] [-]loss: 17878.9264 [00:00:00.263]
Iter=106 [00:00:04.626] [-]loss: 17859.7758 [00:00:00.227]
Iter=107 [00:00:04.872] [-]loss: 17840.9588 [00:00:00.227]
Iter=108 [00:00:04.615] [
没有合适的资源?快使用搜索试试~ 我知道了~
论文“具有非均匀缺失数据的快速矩阵分解”的实验代码。.zip
共29个文件
java:21个
ds_store:3个
ipynb:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 119 浏览量
2023-03-28
13:22:10
上传
评论
收藏 4.71MB ZIP 举报
温馨提示
论文“具有非均匀缺失数据的快速矩阵分解”的实验代码。.zip
资源推荐
资源详情
资源评论
收起资源包目录
论文“具有非均匀缺失数据的快速矩阵分解”的实验代码。.zip (29个子文件)
ext-als-master
src
.DS_Store 6KB
algorithms
.DS_Store 6KB
MF_extALS.java 40KB
MF_eALS_bigW.java 7KB
MF_eALS.java 7KB
ItemPopularity.java 854B
TopKRecommender.java 9KB
utils
SortMapExample.java 747B
LatentFactorUtil.java 1KB
CommonUtils.java 4KB
TopKPriorityQueue.java 3KB
Printer.java 2KB
StopwordsFilter.java 1KB
DatasetUtil.java 52KB
main
.DS_Store 6KB
main_MF.java 3KB
main.java 18KB
data_structure
DataMap.java 3KB
DenseMatrix.java 17KB
DenseVector.java 6KB
Rating.java 733B
Pair.java 701B
SparseMatrix.java 30KB
SparseVector.java 18KB
data
yelp.rating 17.9MB
.ipynb_checkpoints
Efficiency-checkpoint.ipynb 23KB
Effect-checkpoint.ipynb 35KB
svd.py 85KB
README.md 32KB
共 29 条
- 1
资源评论
快撑死的鱼
- 粉丝: 1w+
- 资源: 9153
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功