java itemcf_大规模电商推荐数据分析-基于ItemCF的召回

这篇文章算是对这一个月以来天池比赛《CIKM 2019 EComm AI:用户行为预测》的一个总结,我们队伍第一次打这种“海量数据”的比赛,最终成绩能保留在第一页就已经很满意了。

这次比赛的要求是根据用户历史行为预测未来行为,对于特定的用户, 为其推荐最多50个TA未来3天可能会点击的商品,也就是根据用户的历史交互行为、用户基本属性、物品基本属性,来预测测试集内的用户可能点击50个商品,也就是我们一般做推荐系统中,需要得到的那个推荐池。比赛用的数据集非常庞大,交互数据集有23G,大概6亿多条交互数据,用户有400多万,物品有一千多万。

刚开始处理这批数据的时候我的内心是崩溃的,一起不管在处理线上数据,还是我们私下训练各种推荐排序模型的时候,基本数据都没有到达过上亿的级别。这就意味着,可能这次比赛,召回层的作用会尤为重要。(推荐一般分为三个阶段,召回、排序和重排序,对于海量数据来说,召回意味着筛选,将物料池从百万级别降到百级别,这个工作听起来就很吓人了)同时,组委会还给了提示:

GNN这个东西以我们的软硬件实力,十有八九是用不起来了,所以,我们尝试了一下简单的思路,也就是本文的主题,ItemCF算法,而且我们没有优化它,甚至连参数都没有调整,只做了一些效率优化的工作。

我们采用pyspark完成整个数据的处理工作,首先,加载环境:

from pyspark import SparkContext

from pyspark import SparkConf

from pyspark.ml.feature import MinHashLSH

from pyspark.ml.linalg import Vectors

import pyspark.sql.functions as psf

from pyspark.sql import SparkSession

from pyspark.sql.types import FloatType

from pyspark.sql.types import StructType

from pyspark.sql.types import StringType

from pyspark.sql.types import StructField

from pyspark.sql.types import IntegerType

import math

import argparse

import time

import os

Path = "hdfs:///ECommAI/round2/train/"

spark = SparkSession \

.builder \

.appName("I

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值