【数据挖掘实战】之天猫移动推荐比赛

前言:去年曾经参加过天猫移动推荐比赛。但是当时报名之后实验室安排了其他的新任务,导致这个比赛只是在最后几天粗略的做了一下,然后也只提交了一次结果。没能好好地做这个比赛也是我的一个遗憾。现在回过头来再尝试去做这个比赛,就当练练手了。

一.基本思路

题目的训练数据包含了抽样出来的一定量用户在一个月时间(11.18~12.18)之内的移动端行为数据(D),评分数据是这些用户在这个一个月之后的一天(12.19)对商品子集(P)的购买数据。参赛者要使用训练数据建立推荐模型,并输出用户在接下来一天对商品子集购买行为的预测结果。

拿到题目,首先是读取数据和初步观察数据是否有缺失值等等。我还是使用Pandas库来读取数据,但是在读取数据的时候遇到了memory error的错误。
这里写图片描述
上网查了一些资料,出现这个错误的原因是我的python是32位的,能访问的内存有限,而训练数据又比较大。所以不得已重装了64位python,然后又装了一片那一大堆的库

先读取部分数据,把重心放在后续的数据处理上。

首先是做数据预处理,观察数据的缺失值情况:
这里写图片描述
这里写图片描述

可知公布的数据应该是经过阿里官方清洗的,除了地理位置那一栏之外并不存在缺失数据的情况。而且主要的数据也不需要再转换成数值型数据的。这样一来,接下来就可以进入特征工程阶段。

训练集是11.18-12.16 用户与商品的交互记录,训练集的标签是12.17用户有木有购买相应的商品。我的方案是先针对有交互记录的数据进行处理。

正样本:12.17当天有购买,而且17号之前有互动记录的用户-商品对
负样本:12.17当天没有购买,而且17号之前有互动记录的用户-商品对

我习惯于先制作几个基本的特征,预留好接口。先把整个特征提取和模型训练的过程给跑通了,之后再去往里面加新的特征。所以初步设计了一些很简单的特征:

用户特征:点击(收藏或者加入购物车)转换成购买的比例
商品特征:点击(收藏或者加入购物车)转换成购买的比例
用户-商品对特征:测试日期前几天点击,收藏,加入购物车,购买的次数

由于对pandas的使用还不怎么熟练,花了一些时间才完成这些特征提取工作,当前的程序如下:


import numpy as np  
import pandas as pd  
import random as rd  
import re  
from sklearn import tree  
from sklearn import preprocessing  
from sklearn import cross_validation  
from sklearn.ensemble import RandomForestClassifier
def sp_count(df,num):
    return sum(df['behavior_type']==num)

def load_off_data():
    global train_df,label_df,item_df,user_feature_dic,item_feature_dic,ui_feature_dic,label_dic
    df = pd.read_csv('tianchi_mobile_recommend_train_user.csv')
    user_feature_dic={};item_feature_dic={};ui_feature_dic={};label_dic={}
    train_df = df[(df['time'].values>='2014-11-18 00') & (df['time'].values<'2014-12-17 00')]
    label_df = df[(df['time'].values>='2014-12-17 00') & (df['time'].values<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值