2014.4.24
修改Logistic的特征为16个,即近3天的四个行为、近一周的四个行为、近半月的四个行为、近一月的两个行为,近两月的两个行为
2014.4.25
尝试使用ODPS平台,学习SQL,完成预处理的程序,尝试XLab的LR。交了demo,成绩是0.91%,排名是143.
2014.4.26
利用XLab收集LR的特征、样本,完成了预测,并提交了一发,成绩是3.56%,排名43。
2014.4.27
提取了最后几段时间的购买数。提取最后一周的购买行为,与26号所做的LR的数据取并集,成绩是3.79%,排名63。
2014.4.28
领悟:能用程序完成的就不要去手动操作、LR的特征(自变量)间是独立的且与因变量是单向关系
技巧:计算Precison和Recall时为每个结果集添加ID=1的列,然后Join起来合并到一张表,实现了四则运算。
重新设计了LR的14个特征,改成倒1~3,4~10,11~25,26~40,41~60的特征,样本仍然一样,如果成绩不理想,将特征改成倒1~7,8~14,15~21,22~28,29~60。
成绩是3.91%,排名64。
计划:考虑有行为的天数作为特征,倒1~7、8~14、15~21天的点击天数、最后一个月的购买天数,倒数第二个月的购买天数。这样的特征和之前的完全不同性质,之前是考虑行为数量,现在是有行为天数,还能考虑什么特征呢?用户的购买力、商品的畅销程度?如果考虑后两者的话,恐怕就要考虑将各个特征的值归一化一下,不然会感觉会有莫名的影响?有什么影响呢?
2014.4.29
很好的一篇分析Logistic的文章:Here
迭代次数、是否逐步回归对结果都存在影响,但影响如何呢?参数收敛后迭代次数无影响,逐步回归似乎能使参数更加合理。因此,每次训练都应该进行对照逐步回归与否的参数,依照经验判断哪个更为合理。将有行为的天数作为一个特征加入到LR中,并融合两个规则(c8r5以及c5),推荐数量几乎是昨天的2倍,达到35010247,成绩4.16%,排名52.
c写了first mr。q进驻lab,工作three h。说好了:成绩破5是一个里程碑,到时候要去找一些乐子。
2014.4.30
明天将所有SQL代码写到一个脚本文件里,哈哈,又长又臭的代码,但解放了双手,也更加高效。
XLab中的sql返回unicoe类型,然后用python就可以进行一些有用的操作,比如统计正样本数量。
存在一个地方可以改进:
1、利用前3个月做特征,第4个月做标签,接着后3个月做特征,进行预测;
2、还有最后3天的热销产品也需要考虑,那如何进行推荐呢?(需要志鹏分析);
3、关于天数的特征,可以这样改进,点击的天数,购买的天数,点击的周数,购买的周数;是否需要倒数第二个月的特征?影响大吗?(可以做个实验,就这些特征试试看);
4、尝试将特征分类,一类是局部特征,一类是全局特征
结论:负样本比例较大时,推荐个数会变少。成绩4.05,排名64(从52),因为负样本增加了正样本的3倍,推荐比之前少了70万,但有40万在融合的规则中,30万中只Hit了1万,说明29预测的有一部分在融合的规则中。
信条:先将LR搞到极致,出现天花板之后再来研究其他模型。
疑问:两个特征的值范围相差很多,对结果影响大吗?理解透公式或许会得到答案。哑变量。
c写ICF失败,未能提交;q 4hour,提醒T-shirt用淘宝号
2014.5.1
order by 后面必须limit 行数如 order by click_num limit 1000。limit后面可以写个很大的数,省去计算表的行数,但效率下降。
通过直觉和实验设计有业务含义的特征体系。
清楚异常数据(点击很大无购买的爬虫、刷信誉)(爬虫:点击量超过10000,购买量少于6,点击的品牌多于150)
(571885341-(4551226)>547811231-(2720995)>547361310-(爬虫)>545805374
发现有趣现象:点击量很多但没有购买的大部分是几乎每天都有一部分点击量的,并且点击的品牌都是很多的
复杂现象:爬虫用户有时也购物;那么多爬虫是同一个商家的水军吗?
结论:归一化的准确度可能比标准化高,但推荐的少,召回率低;7天特征推荐的数量高于3天的,但准确率可能略低于3天的;负样本比例高时,推荐的少些,但准确度高些(线上线下都测试过)
伟文交了ItemCf结果,成绩0.82%,排名320,最优排名78。zp还是没有实质性成果。
2014.5.2
如果改成前3月样本,第4月标签,后3月训练,这样样本集和训练集都变大了,推荐的个数会变多,召回率会变高,成绩会比4.16%好。
测试时,按照5.1的结论,只需测样本比例6.5,归一化的准确和召回率就可以知道整个特征体系的成绩。
爬虫清理:点击很多,但不购买,且针对的品牌比较少,这是爬虫吗?是,用户对品牌数的平均点击数超过50(click_num >= click_brand*50),click_num多于1000,且不购买的即是爬虫(合计点击量8365880)。或者,日点击平均超过50的(click_num >= click_days * 50)且点击数在1000以上(合计点击量13260239),但是都不购买的即是爬虫。以上合计14383066。它们之间交集如此大,更说明它们是爬虫。(一共清洗1135个用户,53个品牌)
待分析:
1、最近购买时间、爆款、抢购、用户的点击转化购买率;
2、06-09~06-15内购买量和点击量大的是抢购还是热销产品;
3、用户的平均点击量、购买量;
4、ItemCF利用最后的购买情况进行计算推荐系数;
5、3天内的购买量是否适合作为特征?(需要,这样会提高准确率,模型会自动为它的系数赋上负数,表示购买量越高,就不太可能买,不仅考虑什么情况下会买,还要考虑什么情况不会买,双向思考)
6、最后一周有点击日平均点击数>=3.0的有1916053
结论:最后3天的四个特征做预测准确率最高;2个月内点击的周数准确率要比2个月内购买的周数低,且二者结合准确率也不如购买周数高;局部特征靠点击、收藏夹、购物车,全局特征靠购买。
提交:最后半个月点击量超过8排名前5,F1:3.21,当天排名154,总排名84
2014.5.3
待分析:
1、已经求得所有用户的点击购买转化率,如何利用到特征中呢?转化率是指用户总的还是用户针对某个品牌的?
2、需要分出最后三天已点击但还没购买的点击数吗?可以折中下,用点击数减去购买数。
3、前几个月的点击量怎么利用?直接作为特征还是分为(转化为购买的,未转化的)作为特征?
目前比较好的特征:1、2个月内购买的周数 2、2个月内购买的天数 3、半个月内的点击数 4、3天内4个特征
结论:以上的7个特征组合具有非常高的准确率(14.7%),今天交的推荐数过少,R低,如果推荐数增加,R高,成绩就会变好。
交了一发7个特征(3天的4个行为,15天点击,3个月内购买天数、月数)的LR,成绩1.71%,当天排名251,全部排名88。
需要设计一个比价好的全局特征,然后使得样本数据增多,就有办法提高成绩。
zq没来实验室
2014.5.4
尝试将转化率与点击量相乘作为特征、将最近购买、点击时间作为特征。
待分析:
1、拿八月的预测前面的,8月买了的,前面无交互的作为正样本,八月买了的,前面有交互的作为负样本
2、新老用户是否对结果有影响?是,新用户倾向于购买热门产品,因为对网站不熟悉,老用户则会考虑冷门产品。
3、是否需要最近购买时间?
结论:最近点击、最近购买时间、2个月点击权重(U_tran*C_cnt+B_Tran*C_cnt)是很好的特征。
伟文提交了一发,因为把列名brand写成brand_id所以没有成绩,总排名102.
2014.5.5
近期要研究几篇外国的论文,找找思路。
1、An Exploration of Improving CollaborativeRecommender Systems via User-Item Subgroups
2、KDD CUP类文章
尝试利用聚类算法来寻找隐特征。
算者的提示2所思:
1、所选的特征应是一个覆盖面广,能够互补的体系,这样容易优化、鲁棒性强。
2、优化时应该是粒度小、贡献小的合并为粒度大、贡献大的特征。
3、不同的算法需要不同的特征体系,正如图中的正方形就适合用矩形切分,三角形就要用矩形切分,但是算法和正方形、三角形有毛线关系啊?
zp开始看各种博客、论文、PPT,开始进入状态,但还没实质性的作为。
提交了一发LR加几个规则,F1 4.52%(P 4.57 R 4.45 Hit 12598),当天排名44,总排名64.把负样本比例调高,准确率更高,成绩可能更好。
2014.5.6
决定拜读大量KDDCUP的论文。
考虑将点击相关的3个特征合并,作为点击权重,但是效果并不理想。
待分析:
结论:目前同样的特征,SVM效果不如LR1、按照算者的提示,特征往大粒度融合效果更好,为什么我的特征融合效果不理想?提示解读的问题?融合的问题?
2、缺失值简单填0是否过于简单?
3、分析下新用户的特征,也就是在哪段内时间内出现的算新用户?新用户有多少?
4、分析热销产品和爆款的特征,爆款有多少?对结果会有什么直观的影响?
伟文提交了一发,ICF,F1 2.08%,当天排名276,总排名72。
2014.5.7
通过提高准确度的方式,观察LR的参数变化,或许可以洞悉特征对结果的影响。
待分析:
1、之前一直考虑购买,现在考虑不购买,两个方向。
2、负样本取行为比较多的。凭推断,这会导致准确率高,但召回率变低,因为能更好的识别行为比较多的该不该购买。
3、尝试将第一季的必杀技Value当成一个feature。
4、归一化后加上1。或者将值分等级。分级不科学(结果),因为有长尾的出现。或者将长尾直接截断,效果不错(结果)。
5、用户加上活跃度特征(购买商品数、天数?)、商品加上流行度特征(购买用户数、天数?)。
6、慎重考虑生命周期、趋势。
结论:第一季的必杀技并不适合添加进我当前的LR特征体系;LR参数训练需迭代1200次才能收敛
反思:不要再交经过融合的结果,那样并不能验证某些结论,对比赛的帮助不大。
提交了一发,F1 4.49 当天排名56,总排名80.
2014.5.8
计划:1、测试截断长尾效果 。2、LR结果当特征,Values当另一个特征,跑一次LR。3、做生命周期分析。
结论:长尾截断之后预测的数量变多,R提高,P也不会降很多,F1有所提高;Values粒度太大不适合我的特征体系;正样本复制多倍,并不能改善效果。
待分析:
1、不使用负样本随机采样的方式,用正样本复制的方式采样,试试效果。
2、人的购买力有限,设置Top12或者Top15提交(实际上很少有用户购买超过15甚至12)。
实验室讨论:1、特征共享 2、观察结果 3、涛搞随机森林
提交了纯LR,F1 4.54%,当天排名52,总排名81.
2014.5.9
看内部赛选手的帖子:一个新手SOLOADD大赛(内部赛)的心得,学习到如下:1、按照:问题分析-特征抽取-特征处理-样本选-建模-调参-测试-提交进行开发 2、特征处理可以用归一化和分箱的操作,Xlab的PERCENT_RANK函数可以考虑使用 3、充分利用XLab。
计划:1、先将昨天的特征和参数在线下跑跑看看线上线下相差多大。 2、按照测试文档的逆序测几个模型,看是否和之前的测试结果成正比。 3、 重新测试Values特征、点击权重特征、二次LR
结论:
1、30天内收藏但未购买的特征效果不够好;
2、线下的准确度有%6.3,提交时的预测数明显多于线下测试时的预测数,所以线上的准确度是明显偏低了,如果控制线上的准确度到%6这样,成绩能比现在好很多。或者将线下的准确率像召回率靠拢,看F1是多少,这和线上的F1就是误差,但此时的R应该用Hit数除以线上的283万而非线下的254万,最后,线下仍比线上好上0.5左右.
3、LRde pre hen gao,cishi r bijiao di ,dan hui daozhi F1 ye gen zhe di,suo yi wei le tigao F1,zhineng zengjia yuceshu ,ranhou P jiju xiajiang,R zengjia yidiandian.zhe shiji shang zai wurong LR.buyinggai yi xisheng P weidaijia tigao F1,er yinggai xiangzhe tigao R,ye jiushi shuo zai P baochi bubian de qingkuang xia tongguo tigao yuceshu lai tigao R.
4、LR大部分的Hit数在7.16~8.01,这部分Hit数占了7/10。
5、是什么导致了提交的预测数多了90左右万(点击权重、最近时间、周数、天数90天)。
6、7倍正样本总能带来些许F1的提升。
惊天大Bug:原来我在计算最后一个月的购买集时将'-'写成了'_',导致只包括了8月份的数字,结果整整10天以来的成绩都是2点多,都是错误的答案,真是坑爹坑大了。然后发现我的队友也一直错了,他始终认为数据集的日期是05-01到08-31。神坑队伍。这样,从开始到现在做的特征选取工作都变得不靠谱,尤其是一些我觉得是非常好的特征,在这之前的几天内被证实效果一般,当时给我造成相当大的打击,现在突然又有了希望,但恐怕都得重新测试,痛并快乐着。
提交了一发只利用最后两个月的情况,成绩是4.50,当天排名51,总排名85
2014.5.10
规定:每种特征组合都必须先测6.5倍正样本,5倍正样本,以及预测数接近250万的倍数,大可不必去测其他的倍数,因为如果没有根据前3个判断特征组合优劣能力的话,那还参加毛比赛。
待分析:
1、最后30天收藏但未买作为特征到底怎么样?
2、洪涛提出一种很有意思的想法:从四个月的行为记录中取特征,拿第四个月的购买行为判定样本,然后将训练得到的参数用于之前的特征,即可获得推荐列表。这样的逻辑是:行为没有时序性、第四个月是第四第五个月的子集、四个月的行为特征与第四个月的关系也就是四个月的行为特征与第五个月的关系。遇到的问题:正负样本怎么判定?肯定是第四个月购买是正,不购买是负。这样就是结果去预测结果。这样的尝试其实是做无用功,咳。反思自己的做法,先用LR取得前3个月的行为特征与最后1个月购买与否的关系,然后用后3个月的行为特征去预测8.16到9.15之间的购买行为。背后的逻辑是:第4个月购买与前3个月的行为特征之间的关系是不变的。
3、考虑最近一周的人均访问时间、收藏指数、点击转换率、购买趋势结合起来的权重
计划:
1、修改提交模块的代码,使得其和测试模块的代码完全分开
2、尝试添加用户豪爽度和品牌热度特征
3、尝试用户活跃度和品牌流行度特征
结论:
1、用户豪爽度、品牌热度适合我的特征体系,能够改善预测效果。为什么?
2、用户活跃度、品牌流行度并不适合我的特征体系。为什么?
提交一发,成绩4.30%,当日排名80,总排名89
2014.5.11
待分析:
1、线下的成绩为什么比线上高那么多?因为我拿第4个月的数据做验证集,但我的how_tuhao、how_hot特征是把4个月的行为数据都放进去计算。
2、品牌的特征是否适合加进LR的特征体系?
3、之前简单地将特征塞进特征体系,然后通过结果判断效果,是否可行?难道不需要单独测下该特征的效果吗?
4、3天3个行为应该设怎么样的权重?买了再买的可能性大吗?不大。收藏了再买的可能性大吗?比买了再买的可能性大。1:2:2。可以利用LR确认下。
目前取得最优成绩的一组特征:3天内的4个行为+15天未购买点击量*好爽度+2个月购买天数、周数+最近购买时间+最近点击时间+2个月点击权重。尝试3天3个行为作为一个特征+所有点击一个特征+2个月购买天数+最近购买时间+最近点击时间=5个特征。
结论:
提交一发,成绩4.34%,当日排名88,总排名891、当负样本比例较小,Intercept却很大时,通常成绩是比较好的。
2、有最近购买时间的效果略好于无时,5倍和预测实际购买接近时效果都好,但没有相差很多。无加上15天的点击量,效果就得到很大提升,恐怕又是过拟合。
2014.5.13
问题分析:给出4.15~8.15的行为数据,预测哪些用户在8.16~9.15会购买,购买什么物品?实质上是购买预测问题,而不是推荐问题。而这可以从以下三个方面进行分析:
一、用户角度
1、点击转换率高的用户有一定量的点击行为就可能购买。转换率的确切定义?点击且购买的品牌数/点击的品牌数。一定量是指?
2、收藏和购物车转换率
3、新注册用户(无法分析)
4、用户购买力,购买越多,购买力越强,要么是高富帅,要么是购物狂
5、重复购买品牌率
二、品牌角度
1、品牌热度,被购买的人数越多,越热门。利用单独的一个模型来向用户推荐最后一周热门的产品,思路是找出最后一段时间才开始热门的产品,然后找出那段时间购买过这些品牌的用户,接着找出和这些用户相似的用户,向其推荐这些品牌。经过实验证明,7.09~7.15的热门品牌在7.16~8.15的购买数据中占了16/25,是很值得挖掘的部分。
2、购买该品牌的用户平均购买数,结合特定用户对该品牌的购买次数以及特定用户的购买力就是一个很好的特征。
3、被用户重复购买率
三、用户品牌对角度
1、关键:用户周期性购买的产品一般会再购买?周期是指月还是周还是天呢?目前测试过周,但没有单独和天、月进行单独的效果比较。
2、关键:用户最近点击、收藏、加进购物车的品牌,购买的可能性非常大。最近是指最近1周还是最近3天还是最近1天?点击和收藏、购物车应该区分开来,点击的时效性更强些。近期仅保留点击特征。
3、用户最近点击的时间越近,购买的可能性就越大?但最近购买的时间如何处理?最近点击但未购买的时间或许是个很好的指标,用最近购买时间减去最近点击时间作为指标,这只是相对关系,和最近点击时间结合起来才靠谱。近期保留最近点击时间特征。
4、如何利用历史购买行为呢?历史购买说明什么?说明用户喜欢这个品牌。可以得出品牌的平均被购买次数、用户的平均购买品牌次数、用户的重复购买率、品牌的重复购买率、用户对品牌的已买个数,然后得出用户再购买的概率。
特征抽取:3天点击、7天购买、15天点击、60天点击、最近点击时间、购买周数、购买天数、重复购买概率
特征处理:将远大于一般值的数值归于一个比一般值略大的值,并进行归一化。
样本选择:前2个月有行为第3个月有购买的作为正样本,第3个月无购买的作为负样本。
建模:使用Xlab的LR
调参:可以调的有正负样本比例、手动设置预测P的阈值来控制推荐数量
测试-提交-干杯
待分析:
1、有些品牌收藏量巨大,且月间收藏量相差甚多,购买非常少,被定义为搞活动的品牌。可以用不靠谱指数来排除这类用户,先算出每个品牌两个月收藏量差值的平方,设个阈值,如果平方大于这个阈值,且有某个月收藏量很大,不靠谱指数加1,如果不靠谱指数大等于2,就被认为不靠谱。推广开来,到底天猫哪些活动会导致异常数据?
2014.5.14
计划:
1、抽取如下这组特征进行测试:最近点击购买时间差、最近3天(或者7天)点击未购买量(或乘以转换率)、最近2个月点击权重、购买周数(或购买天数)、最近1个月收藏未购买量
2、添加重复购买概率特征
结论:
1、大部分有购买的用户在2个月购买的天数小等于4,剩下来一小部分不均分布在(5,60]天内,这样的话效果可能不如周数。
2、大部分用户平均每个月购买1件,60万左右的用户每个月购买1.5~4件。
3、没有最近3天的收藏、购物车量,对结果的影响也不是很大,因此可以去除这两个特征。去除最近购买时间,这个特征对结果影响也不是很大。
4、对购买与否影响甚微的特征应该剔除,这些特征可能起负面作用,剔除可以避免过拟合,提高程序效率。
提交了一发,成绩F1 4.62%,当天排名51,总排名83.
2014.5.15
计划:
1、找出昨天计划里的特征的最佳组合。
2、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1) ,ave_brand_ubuy是品牌平均每个月被单个用户购买的数量,user_repeat是用户历史重复购买率,ave_user_buy是用户每个月的平均单个品牌的购买数,user_have_buy是用户已经购买品牌的数量。如果最后取个阈值0.5,则预测数/Hit数/R:1946147/58581/2.98%,与购买天数超过2的交集size是202803,Hit数/P是16941/8.35%,差集size是1740000,Hit数/P是41640/2.39%。如果阈值1,则预测数/Hit数/R:1249862/38219/3.06%。如果阈值2,则预测数/Hit数/R:622844/20720/3.33%。
3、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) 。取两个月的话,如果最后取个阈值0.5,则预测数/Hit数/R:2249053/68432/3.04%,与购买天数超过2的交集size是198312,Hit数/P是17480/8.81%。如果阈值1,则预测数/Hit数/R:2037755/63807/3.131%。如果阈值2,则预测数/Hit数/R:1494019/50315/3.37%。取3个月的话,如果最后取个阈值0.5,则预测数/Hit数/R:3577465/87524/2.45%,阈值1,则预测数/Hit数/R:3183465/80797/2.54%,阈值2,则预测数/Hit数/R:2246277/62117/2.77%,阈值3,则预测数/Hit数/R:1585170/47180/2.98%
4、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值0.3,则预测数/Hit数/R:950891/35272/3.70%,阈值0.5,则预测数/Hit数/R:607315/24042/3.95%,阈值1,则预测数/Hit数/R:206493/9401/4.55%。
5、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值0.05,则预测数/Hit数/R:1322171/47757/3.61%,取阈值0.3,则预测数/Hit数/R:1249759/46002/3.68%,阈值0.5,则预测数/Hit数/R:1075977/41707/3.88%,阈值1,则预测数/Hit数/R:666371/29798/4.472%,阈值2,则预测数/Hit数/R:294733/16261/5.52%。
6、添加重复购买概率特征,公式:100*( ave_brand_ubuy + 1) * user_repeat * brand_repeat*(1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:1734816/56724/3.27%,取阈值2,则预测数/Hit数/R:1229788/46002/3.74%
7、添加重复购买概率特征,公式:100*( ave_brand_ubuy + 1) * user_repeat * brand_repeat*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:3623152/89494/2.47%,取阈值4.7,则预测数/Hit数/R:1210217/46085/3.81%
8、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * brand_repeat*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:3014189/74090/2.45%,取阈值1.7,则预测数/Hit数/R:1089693/33421/3.07%
9、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * brand_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值0.5,则预测数/Hit数/R:2909224/64979/2.45%
6、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * (1+user_repeat) *(1+ brand_repeat)*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值580,则预测数/Hit数/R:2949316/80871/2.74%,取阈值600,则预测数/Hit数/R:2068732/65083/3.15%,取阈值650,则预测数/Hit数/R:1180325/45229/3.83%
结论:
提交了一发,成绩F1 4.73%,当天排名45,最优排名67。离F1 5的目标又近了一步。1、重复购买概率是个适合我的特征体系,能带来效果提升的特征。
2014.5.16
提交了一发,成绩 F1 4.72%,当天名次 47,总排名67.
2014.5.17
待分析:
1、重复购买率是否会和周期性相抵消?因为周期性购买行为会导致重复购买率公式中的分母变大,导致值变小,负相关。对结果有什么大的影响吗?进一步思考这几个购买行为之间存在怎么样的相关影响作用?周期性强的也可能重复购买率高,而且这部分被重复购买的概率非常大。
2、重复购买率需和点击量结合吗?
结论:
1、购买周数比购买天数更有效的描述周期性购买行为,但推荐的数量往往较少。
判断各种特征组合的性能好不好,就看推荐同样个数的(u,b)对时他们F1值如何,推荐250万和200万看性能。
提交了一发,成绩 F1 4.71%,当天名次 50,总排名68.
2014.5.18
待分析:
1、公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),如何改进?加入品牌的被重复购买率brand_repeat,以及是否考虑融入时间?ave_brand_ubuy似乎应该使用天数而非数量作为衡量的指标。
2、是否可以通过subs_buy_repeat来进一步查看公式的效果?可以
3、怎么评估用户的购买周期以及品牌的被购买周期。筛选出购买周数超过2的(u,b)对,然后再聚集到u表和b表。
4、用准确度很高的LR融合重复购买率规则,效果如何呢?如果LR中有重复购买率规则的话,效果就不好。
计划:用3天时间改进重复购买率特征。
结论:
提交了一发,成绩F1 3.02%,当天排名258,总排名70。1、使用天数而非数量作为重复购买率中平均数的指标既能提高召回率也能提高转确率。
2、规则也有可取之处,因为可以用到全部的信息。
2014.5.19
计划:
1、用没有重复购买率的特征体系搞LR,然后融合重复购买率规则,试试效果。
2、调整点击的权重公式,试试效果。
3、好好观察样本,作一些分析
4、删除f_7_buy试试
5、试试f_3_c_nob、2个月点击权重、购买周数、p_brepeat、f_rclick_days。
待分析:
1、为什么有些f_bweeks为0,但它的p_brepeat不为0.因为这个用户有购买过其他品牌,且该品牌有被其他用户购买,所以会出现这样的情况。
结论:
1、融合效果不好,因为规则的大部分已经在LR的预测集中
2、删除f_7_buy不管在准确率还是召回率上效果都变差了。
提交了一发,成绩 F1 4.67 当天成绩65,最好成绩76.
2014.5.20
在数据如此多的情况下,尽量多观察,多思考,少跑程序!!需要适当调参,但多思考特征体系能带来更好的效果提升!!
待分析:
1、昨天的提交参数表中与p_brepeat相关的系数是负数,是因为式子?还是与特征体系不匹配?因为利用之前的式子得到的值相差的范围太广。
2、如何评价一个特征好坏?0)是否符合业务逻辑 1)粒度 2)预测100w、200w、300w时的准确率、Hit个数 3)观察正负样本,看是否符合预期的判断 4)LR训练出的参数
3、重复购买是否更多取决于品牌?是的。
4、click_sumweight的day/X的X对结果是否有影响,是的。
结论:
提交了一发,成绩 F1 4.78,当天排名54,最优成绩71。离5还差0.22。1、将式子改的大小波动小一些能够去除负数,但直观判断效果并不好,而且用规则来判断效果也不好。
2、如果重复购买率中的user_brepeat删除,那么各方面性能都下降。
2014.5.21
待分析:
1、去除4~15至6.15之间爆款的影响,效果是否能改善?是的,可以改善。
2、将最后半个月出现的用户找出来,单独使用一个模型向他们做推荐。没必要这样做,因为这些用户在下个月的购买行为非常少。
3、清除爆款行为必须注意:1)使用随机采样而非全部删除 2)最后一个月的数据必须保留 3)最后一个月出现的(u,b)如果在前面3个月出现就必须保留 4)那些购买对应的点击行为也必须处理。
第一次清理,手动清理,清理前:531422169,清理:18081(4600)+986(3600)+11313(27216)+25851(1300)+10391(1967)+13382(160)
+14244(2800)+14679(1000)+23250(8000)+5159(900)+8041(3500)=56031 ,清理后:531366138。清理前所有4.15~7.15的交互(u,b)对在八月份的Hit数是:454063,清理后是:454063
第二次清理,清理4.15~6.15的购买量超过6.16~8.15的购买量两倍的品牌,其中在6~8月出现的(u,b)对不清理,4.15~6.15进行随机采样至购买数量和6~8月差不多(原来是3:1),清理前:531366138,清理后:508118399。清理前Hit数是:454063,清理后Hit数是:447858。
第三次清理,清理4.15~8.08内所有摆设品牌(只点击未购买)的行为。清理前:508118399,清理后:507710289。清理前Hit数是:447858,清理后Hit数是:447858。
第四次清理,对6.16~7.15内爆款的行为采1/10的样(只在这个月出现的点击、购买行为),对7.16~7.31的爆款行为采1/10的样(只在这2周出现的点击、购买行为)。清理前:507710289,清理后:502032515,共清理5677774。
4、7.15~8.15的促销行为是否可以缩减?可以单独拿这部分作为推荐的源数据。
结论:
1、计算60天的click_sumweight,X=30效果不如X=15。
今天终于拍了T-shirt,选了黑绿色,颜色搭配很炫,前面设计得很好,就是后背的字会显得奇怪。
2014.5.22
待分析:
结论:1、点击相关的特征是否需要重新思考该如何取?点击未购买,改为购买后点击行为,15天时相差228万。
2、用户特征靠谱吗?
3、LR的结果拿去跑svd结果如何?Lr的结果中brand数很大
4、是否可以对没有购买行为的品牌的行为进行采样?如果最后半个月内有点击行为的(u,b)对Hit数多,就不能,不然就可以,今天就测试这个。如果点击行为是长期进行的,就不应该简单清除。
1、很多购买行为都是当天点击当天购买
2、用P大R小的LR推荐结果与P大R小的RF推荐结果取并集,能够提升成绩
3、将摆设品牌在最后15天有过点击行为的(u,b)对推荐之,Hit数极少,p只有0.35%,可以清除4.15~8.08的摆设品牌。
是否要放弃未交互行为?之所以有这个考虑,是因为交互行为都没做好。如果放弃的话,伟文就可以搞朴素贝叶斯或者随机森林,志鹏的工作不变。
只有努力远远不够,还必须运用智慧做到行事直达要害。
提交了一发,史上最吊成绩,F1 0.02%,当天排名425,最优排名85。
2014.5.23
待分析:
1、7月份的爆款要如何清洗?会有哪些影响?1)前两个月点击、购买,现在购买,用于形成样本标签。 2)现在点击、购买,后两个月购买。如果6.13、14有点击行为,然后6.16、17有购买行为,清洗会破坏这种因果关系吗?清洗至少应该保留在6.15之前以及7.15之后有的(u,b)对。试试这些爆款(u,b)对的Hit数。
2、品牌分类,算权重。
3、某些品牌一次性购买很多,是否可以随机采样?目前对我没有影响,因为关于购买的特征都是以天数而非次数为指标。
4、去掉购买力小(购买天数<=1)的用户搞LR。推荐数大幅度缩小,准确率没有提高很多。
5、为什么去除了那么多爆款,效果却没怎么提升?24交不融合的结果,就知道对结果是否有影响。
6、购买后的点击量效果不如未购买的点击量。
结论:
1、清洗不应该破坏点击-购买、购买-再购买的因果关系
提交了一发,成绩F1 5.07%,当天排名43,最优排名55。
终于突破了5,第一个月完美收官!
2014.5.24
计划:
1、毋须重新训练、预测,通过设个概率阈值来控制推荐个数,高效的做法!
2、用李阿姨的账号提交以下结果:7月份的爆款对应的不存在于4.15~6.15、7.16~8.15的行为,总的行为数5384439,(u,b)对2793001。
待分析:
1、点击权重公式要怎么调整?
1)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)) ,r=0.1,X=20,click_afterbuy,F1 = 4.463
2)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)) ,r=0.1,X=40,click_afterbuy,F1 = 4.26
3)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=40,click_afterbuy,F1 = 4.46
4)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=20,click_afterbuy,F1 = 4.483 (R:90749/2552557,P:3.47%)
5)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=30,click_afterbuy,R:87391/2524426,P:3.46%
6)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=15,click_afterbuy,R:92329/2546413,P:3.63%
7)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=10,click_afterbuy,R:93860/2553019,P:3.68%
8)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=5,click_afterbuy,R:92329/2508360,P:3.68%
9)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=9,click_afterbuy,R:93326/2510848,P:3.72%
10)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=9,click_afterbuy,Y:7.4,R:93286/2507133,P:3.72%
2、最近点击时间改成最近行为时间。或者改成最近未购买点击的时间。
3、去掉最近15天未购买点击量特征。
结论:
1、利用规则测试单特征,利用模型测试特征体系
2、在一定范围内,时间衰减的越厉害,预测效果越好,但权重会越来越小。2个月时最好的衰减函数是e^(-d/9)。
3、最近行为时间优于最近点击时间。
4、清除掉4.15~6.15的爆款以及摆设点击能带来0.1的成绩提升。
5、7月份的爆款对9月份的影响甚微。
再平凡的人,只要时时留意,也能找到机会做出一番成就。
这个比赛,就四个字--“剩者为王"!
提交了一发,成绩 F4.76%,当天排名72,最优排名58。
2014.5.25
计划:
1、用3~4天时间将6.15~7.15、7.15~8.01的爆款消除,首先需要判断7.15~8.01的爆款行为是否可以简单消除?是否可以去除与前后无因果关系的行为?
2、线上测试3个月时X=10,X=15,X=20,X=30的效果。
待分析:
1、目前最优特征组合式:r3d_Click_nob+click_sumweight+p_brepeat+rbehavior_days+bweeks,将r3d_Click_nob替换成r3d_Click_afterb效果是否更好?
2、最优的衰减系数应该要和其他点击量结合。
结论:
1、distinct一般比group by 要快一些。
2、最近3天购买后点击量与点击权重特征结合效果并不好。
3、没有最近3天点击特征,预测效果会变差。
李阿姨号提交了一发,7月份爆款中购买天数超过2的2478,购买次数超过3的4657取并集,进行推荐,准确率1.37%,Hit 82,说明7月份爆款对应的行为Hit了4000多是非常分散的,因此可以进行清洗,利大于弊。
自己的号提交了一发,将subt_sumweight错写成subs_sumweight,成绩只有4.27,当天排名130,总排名60。
2014.5.26
计划:
1、将字符串的日期改为离4-14的天数,5.01、09、13、15对应17、25、29、31,6月对应48、56、60、62,7月对应78、86、90、92,8月对应109、117、121、123。
待分析:
1、前两个月的爆款行为(只在这段时间出现的u,b)有270w左右,6.16~7.15的爆款行为(只在这段时间出现的u,b)有270w左右,这些都是刚出现,买完或点击完之后就消失无影,这部分该怎么界定?考虑1)用户活动时间 2)品牌热门时间 3)(u,b)行为时间长(结束 - 开始)
2、几百个特征是怎么来的?特征含义上说,应该是按照天或者周或者3天为单位所取得特征。实现上,肯定要用循环来完成。
结论:
1、最后15天日点击量加现在的特征,效果能够得到提升。
2、大清理后效果也能提升。
正确提交一发,成绩4.81,当天排名73,最优排名61。
2014.5.27
计划:
2、将字符串的日期改为离4-14的天数,5.01、09、13、15对应17、25、29、31,6月对应48、56、60、62,7月对应78、86、90、92,8月对应109、117、121、123。
待分析:
1、将特征分开跑LR,然后再融合,结果如何?融合是结果取并集还是概率相加,取概率大者?分开跑LR后再将得到的结果用于LR,结果如何?
2、重新测试Value特征,用rule测单特征效果,再用LR测单特征效果,再用LR测特征体系。
1)W = [1,10,5,5],取阈值110,Hit数/预测数:95053/2414406,P=3.94
2)W = [1,10,4,4],取阈值109,Hit数/预测数:94257/2385575,P=3.95
3)W = [1,10,2,2],取阈值108,Hit数/预测数:95876/2402052,P=3.99
4)W = [1,10,1,1],取阈值107,Hit数/预测数:95580/2385359,P=4.01
结论:
1、单特征分开跑,然后取并集,效果并不理想。
2、大清理后效果也能提升。
3、各个特征单独跑LR,再将概率作为LR的输入进行LR,效果可以提升。
2014.5.28
待分析:
1、用LR跑r3d_Click+r60d_Click+r_behavior、r3d_Click、r60d_Click、repeat、week、values、,然后再作为LR的输入。
2、把被购买量或者被购买用户数最多的当作爆款热销日,并把它离预测集开始那天的时间数作为品牌的一个特征,可以吗?对于全局热门品牌恐怕不行。
结论:
1、单个特征跑LR,p_repeat的效果不如r60d_click_sumweight,这个公式应该改进。
2、使用两次LR,可以改善效果。
3、如果出现预测数很少,可能是哪里写错了,比如样本中有截断长尾,但预测集中没有,导致预测集的数据归一化之后值偏小,从而导致最终预测数变少。
又发生错误了,处理特征值时,样本和预测集的不一样
2014.5.29
待分析:
结论:1、未购买的点击和购买后点击权重应当不同?
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=18,click_afterbuy,R:96428/2607381,P:3.70%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=10,click_afterbuy,R:95837/2584588,P:3.71%
2、购买后点击是否应该再细分?比如只是购买后来确认收货、评价
将购买后再点击的(u,b)直接推荐,Hit数/推荐数:51292/1698440,P=3.02%,推荐点击数超过4的,Hit数/推荐数:25047/526721,P=4.8%
将购买2天后再点击的(u,b)直接推荐,Hit数/推荐数:40567/1217937,P=3.33%,购买3天,Hit数/推荐数:36237/1018841,P=3.66%
3、是否真需要60天的点击权重?试试30天的
将购买后再点击的(u,b)直接推荐,Hit数/推荐数:24828/571205,P=3.02%
将过去90天购买2天后且在最近1个月再点击的(u,b)直接推荐,Hit数/推荐数:42422/1007673,P=4.21%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,10,X=18,click_afterbuy,R:99019/2675340,P:3.70%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,8,10,X=18,click_afterbuy,R:93893/2619451,P: 3.58%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,10,X=18,click_afterbuy,R:98260/2554041,P:3.85%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,>=10,X=18,click_afterbuy,R:97727/2516505,P:3.89%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(2+a_b)*(2+a_u)) ,r=1,5,>=10,X=18,click_afterbuy,R:97575/2516505,P:3.88%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b)) ,r=1,5,>=10,X=18,click_afterbuy,R:97494/2516505,P:3.87%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b) *f_cdays,r=1,5,>=10,X=18,click_afterbuy,R:98595/2516505,P:3.92%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b)(1+a_u) *f_cdays,r=1,5,>=10,X=18,click_afterbuy,R:99596/2516505,P:3.96%
1、将点击分为未购买过的点击、购买前的点击、购买后的点击
2014.5.31
计划:
从两个方面入手,一方面是最后1个月点击过的(u,b),这部分Hit了31万,占了总的有行为购买量的3/4,另一方面是最后3个月已经购买过的(u,b),Hit了12w,占总的有行为购买量的1/4,简单地说,一方面是从点击入手,一方面是从购买入手。先搞第一方面,等伟文有点感觉让他搞第二方面。
待分析:
1、试试将月平均购买量减去最后半个月的购买量作为特征(未尝试)
2、试试将购买后的点击量作为特征
3、试试将购买周数加进sum_weight中
4、repeat_nom有预测数/Hit数/P:2068732/65083/3.15,但实际上推荐购买次数超过2次的推荐有推荐数/Hit数/P:1708288/57867/3.39%(P),效果差不多,这说明我一直认为是关键特征的只是个普通特征,T_T。
5、试试购买周数和repeat_nom作为特征
6、训练集取2个月,预测集是否可以取3个月?可以,只要3个月时的每个特征的最大值与2个月时想等就行,也就说说要Cut。取成3个月后成绩比较理想。
7、试试r3d_click_nob+r30d_click_nob+r30d_click_sumweight。最后1个月的点击可以分成几类?
1)本月购买前的点击
2)本月购买后的点击,是查看卖家是否发货还是回味下品牌?
3)未购买过的点击
4)前几个月购买后的点击。之前的点击/购买数可以结合起来考虑吗?逻辑上可以,数据上是否也如此?
重要性与序号成正比。
8、如何挖掘不热门的点击行为(点击次数<5,46578046,Hit:183236)?先要了解这部分数据。1)大部分点击小于5次,天数就1天。2)和前2个月的交互行为多吗?不多。46578046-42459047=4118999,Hit:47300,P:1.15%。
结论:
1、没有r3d_nob特征不行(在5个特征的情况下)。
2、将购买周数加进sum_weight中能使效果提升。
3、购买再购买方面挖掘的太少了。
4、利用sumweight得到的推荐(u,b)对有9/10都是点击天数超过2的,其实都算是热门对,7/10是点击排前5点击超过8。大概有1.1万是点击天数为1的。
5、单click_sum的效果要比添加进其他特征的效果要好。
2014.6.1
待分析:
1、每次都测试下Hit的(u,b)是在测试集的前半个月,还是后半个月。click_sum的预测集中在前半个月。
2、只取7.16~8.01的作为样本数据,结果如何?如果有全局性特征的话,效果差一点,和取全部样本结果不会差很多。
3、我取负样本的方式也不对吧?是对的。
结论:
1、Click_sum和repeat_nom的预测集交集只有43万(各252万),Hit的交集只有3万(10万,7万),说明交集不是很大,但repeat_nom不是个好特征。
2、Click_sum的Hit主要集中在前半个月。
3、前3个月的购买周数超过2的(u,b)(280810)中的b在8.01~8.15的被购买对数(1270727)是1183886,(u,b)对的被购买对数是11602;前3个月的购买周数超过2的(u,b)(280810)中的b(11300)在热门品牌(1857)中Hit是1850,(u,b)对的Hit是231814。说明热门品牌一般都会被反复购买。
4、那些很热门的品牌,即使是很早以前有过行为,后来没行为(最近一个月不点击),也可能购买。所以爆款清理并不恰当,它会导致线下成绩变好,但线上成绩变差。换个角度看,很久之前点击或者购买了的(u,b)对,几乎都是热门的品牌(2000个)。
5、最后一个月购买再购买的几乎都是热门品牌(品牌被购买cnt>=1000,64804(交集)/76314(最后一月购买)推荐1958766个,cnt>=3000,54049/76314,推荐1535821个)。repeat_nom与最后一个月购买的交集大概有6万,占了3/4。
6、click_sum的预测数中有3万(3/10)是最后半个月点击少于5的。
2014.6.2
计划:
1、爆款行为要重新清理,必须倒档。利用聚类分出爆款。
清理((45+56)>(67+78)*5 or 45 > 5678 or 56 >4678 or 67 > 4578),随机采样前3个月行为,并保证购买周数>2的行为不被删除。
清理前:531422169 清理后:524019070 清理7403090
2、最后一个月购买再购买的占7万,之前2个月购买再购买的占6万,这6万几乎都是热门品牌,具体性质如何,应该结合聚类和之前的品牌每月购买情况分析。让伟文改进repeat_nom,将ave_user_cnt,ave_brand_cnt等添加到Hit的(u,b)集合中,看是否合理。
待分析:
1、尝试特征:
1)最后一个月购买是否大等于2
2)购买天数而非购买周数
3)1个月的点击天数是否大等于4
4)2个月的点击天数是否大等于5
5)2个月的点击次数是否大等于25且排名前10
6)购买次数是否大等于3且排名前5
2、尝试特征:最后3天点击、最后15天点击、r30d_sumweight、最近点击时间、点击天数、是否点击次数>=1&<=4&rclick<=10、用户是否土豪、品牌是否热门、用户的从众系数
结论:
1、29360在8月份的购买数是18675(441129,P=4.23),811是8830(1263449)。利用LR跑出来的29360Hit4527,811Hit1548。可以在模型融合的时候加进很优质的品牌对应的(u,b)对。
2、how_tuhao并不科学,因为用户可能会为了买一个品牌,而看很多其他的品牌,我们不能认为这就不够豪爽,而看多少其他的品牌则要取决于品牌,是否点击小于5并在最近20天内?
3、从众系数和品牌热门结合起来并不能优化sum_weight
4、点击未购买的量作为特征还不如点击量,准确率不如点击且购买量
5、最近30天点击天数可以结合之前的5个特征进行预测。比如取最后1个月点击是否大等于4,最后2个月点击是否大等于5,最后3个月点击是否大等于6。还可以添加,诸如点击是否在用户的排名前5中。
6、对于冷门(u,b),最近点击时间是比较好的特征。
7、最后2个月的repeat_nom效果比最后3个月的repeat_nom的效果好。
8、没有购买过品牌的用户购买一个品牌通常点击都非常多(b=0,c>=5,24016/1532581,P=1.57%,b=0,c<=4,44972/19920591,P=0.2%)。
9、利用5个特征得到的热门推荐结果Hit数/推荐数/P:103199/2547324/4.05%,与最后一个月c_cnt>=5的交集是9.4w,与前3个月有购买行为的交集是66525,与前2个月购买行为的交集是20807。
10、60天的sumweight的Hit数是98832(2547324),30天的sumweight的Hit数是98580,差不多,前者会稍微好一点。
11、对于热门样本,负样本应该取正样本的15~200倍,最合适的是?
2014.6.3
待分析:
1、前2个月购买后第4个月购买的有什么特征?比如是否多分布在56月?几乎都是热门品牌,那么用户有什么特征呢?是否从众率都很高?
2、是否将前2个月的Hit的9万也加加进冷门数据中,然后分析和热门样本Hit的交集多大?
结论:
1、对于热门样本,预测中的都是最后一个月13万中的,而前2个月中的9万却只中几千。现在的模型适用于挖掘最近的热门行为。
2、r30d_sumweight(Hit96635)的效果比r60d_sumweight(Hit98832)差了2000多,F差了0.087。
3、可以将前2个月的Hit的9万加加进冷门数据中,和热门样本Hit的交集非常小,预测中的基本上还是最后一个月的行为。
2014.6.4
待分析:
1、将购买次数乘进repeat_nom结果如何?
2、Value加进冷门样本的特征中进行测试。
结论:
1、LR将所有特征统一处理,随机森林则是取若干个特征进行训练,然后投票,相当于多个取特征子集的模型的融合。前者倾向于热门行为,后者则会平均。因此,LR应该用于描述局部或者全局中的一类,而非混合,后者则既可以混合也可以考虑全局。
2、Value能够提升LR对冷门样本的预测效果。
3、将b_weeks加进repeat能提升repeat的效果。
提交了一发,成绩5.23%,当天排名47,总排名58。
2014.6.5
小总结下:
1、用2个月做训练集,3个月做预测集,效果比2:2要好。
2、对于热门数据,负样本比例在[5,20]范围内升高,效果能够提升
3、gbrt模型的效果比其他的都好,只是运行时间很慢
4、将bweeks加进p_repeat,单特征效果能够提高,如何和有bweeks的特征体系放在一起,则效果提升甚微。单特征时,r60d_repeat效果比r90d_repeat好,作为lr输入时r90d_repeat效果好。
5、清洗那些只点击不被购买的品牌能带来成绩的提升。
6、目前可以只用全部样本搞LR,测特征,然后最后将得到的特征体系去跑一次冷门样本的LR,进行融合。
7、不同模型,同一个特征体系,得到的预测结果基本上都是同一分布。LR、RF、GBRT模型跑出来的几乎都是最后一个月热门(u,b)对占9w,然后最后3个月的购买占6~7w,前2个月的购买占2w左右。
待分析:
1、测试下到底是所有样本一起搞LR效果好,还是分成2部分再分别搞LR效果好(一起搞时F1:4.563,一部分:87271/150w/5.81%,另一部分:28963/104w/2.78%(P);分开时F1:4.53,一部分:2.5w/70w/3.58%P,一部分:9.2w/190w/4.89%P)。还是在一起搞的好,简单高效效果好。
是否可以将一起搞的LR融合冷门的LR?效果比较好。
2、rf和gbrt是否越多特征越好?有7个特征时,rf的效果比lr效果好0.3。增加一个点击天数特征,rf的效果提高0.05,但再增加4~11天以及12~30天的特征,效果就下降0.07。证明,特征不是越多越好,而要看是否是一个好的特征体系。
3、特征分段、离散化、等频离散化。
4、训练集和测试集的范围不一样,对结果有影响吗?
2014.6.6
先熟悉随机森林,分析预测结果,然后继续分析数据,进行特征工程。
目标:10天内到5.6。
待分析:
1、RF的各个参数是什么含义?对结果有怎么样的影响?负样本是正样本5倍左右,8、9个特征个选5个建30棵这样的效果几乎是最好的。
2014.6.7
待分析:
1、repeat_xweek和repeat_r30c结合做为rf的输入会如何?当repeat_r30c中只有最后一个月的点击才有值时又当如何?
2、为什么前3个月有购买行为的ub对repeat_xweek为空?因为repeat_xweek中的week表是之前经过错误清洗的t_lr_big_data所产生的,需要重新生成。
3、是否需要添加前2个月购买再购买的公式?
结论:
1、将最后30天内的点击量指数加进train_repeat_week后成train_repeat_week_r30c,Hit 8.4w,其中有7.2w是最后一个月购买的(总的7.8w),几乎全中。如果没加,Hit8w左右,最后一个月Hit 5.7w,前2个月Hit2.2w。这样的话,这其实就是两个不同的特征了,前者和之前的特征体系结合非常适合挖掘最后一个月的热门ub对,后者适用于挖掘冷门样本的ub对。现在subs_repeat比train_repeat多Hit2000,而分布和之前train_repeat_week_r30c的分布相同。
2、repeat_xweek和repeat_r30c结合做为rf的特征体系,结果和只有repeat_xweek的相差无几。单repeat_r30c结果比repeat_xweek差。
3、现在rf得到的结果和Golden Rule(29360,购买天数>=2)结合能提高0.1。
2014.6.8
最痛苦的事是写了很久的代码,既然有致命的错误,导致几天的功夫全废;最快乐的事也是写了错误的代码,因为被你排除的想法突然又变成了希望。
待分析:
1、多加一些用户、品牌的特征,效果会如何?
2、加排名特征、前2个月的购买再购买趋势,效果如何?
3、是否可以统计前几个月用户的月平均购买数、天数,然后减去最近半个月的作为特征?
4、
结论:
1、加排名特征、前2个月的购买再购买趋势,效果相差不多。
2、加一些用户、品牌的特征,诸如最后半个月的点击、购买,最后2个月的总购买等能带来效果的提升,主要是预测中了冷门的点击对。
3、在RF中sum_weight似乎很经常拿来当作根,是说明这个特征权重很大吗?是的。
2014.6.9
能否利用现有的模型训练得到用户对某个品牌的再购买概率,然后把这作为用户对品牌的偏好矩阵,这样可以用到非常多的信息,但可行吗?再购买概率是根据前4个月的行为得到的在8.16~9.15的再购买概率,而偏好矩阵是前4个月用户对品牌的喜好程度,输入是一样的,输出不太一样,前者会受时间影响,特别是最后一个月行为的影响,后者则是全局性的,但是对某个品牌的喜好不也会随着时间推移吗?不一定,如果会推移,则可行,如果不会推移,则不可行。
待分析:
1、是否可以添加用户对品牌的厌恶度?是不是对品牌的喜好程度不高,厌恶度就高?不一定吧。
2、应该把用点击转换率加进特征体系中吗?
3、给最后半个月刚出现的用户最近热门品牌,会怎么样?预测3000w,才中1.2w。如果是点击的就推荐,预测171w,中1.1w。
4、GBRT中当学习速率变小时,树的数量是不是要多一些?
结论:
提交了一发,19个特征,GBRT线下5.361,线上会是多少呢?1、解决gbrt过拟合倒是可以用增加样本数量的方法。(导致过拟合的原因:树太高、样本太少,冗余的特征太多?)
2014.4.24
修改Logistic的特征为16个,即近3天的四个行为、近一周的四个行为、近半月的四个行为、近一月的两个行为,近两月的两个行为
2014.4.25
尝试使用ODPS平台,学习SQL,完成预处理的程序,尝试XLab的LR。交了demo,成绩是0.91%,排名是143.
2014.4.26
利用XLab收集LR的特征、样本,完成了预测,并提交了一发,成绩是3.56%,排名43。
2014.4.27
提取了最后几段时间的购买数。提取最后一周的购买行为,与26号所做的LR的数据取并集,成绩是3.79%,排名63。
2014.4.28
领悟:能用程序完成的就不要去手动操作、LR的特征(自变量)间是独立的且与因变量是单向关系
技巧:计算Precison和Recall时为每个结果集添加ID=1的列,然后Join起来合并到一张表,实现了四则运算。
重新设计了LR的14个特征,改成倒1~3,4~10,11~25,26~40,41~60的特征,样本仍然一样,如果成绩不理想,将特征改成倒1~7,8~14,15~21,22~28,29~60。
成绩是3.91%,排名64。
计划:考虑有行为的天数作为特征,倒1~7、8~14、15~21天的点击天数、最后一个月的购买天数,倒数第二个月的购买天数。这样的特征和之前的完全不同性质,之前是考虑行为数量,现在是有行为天数,还能考虑什么特征呢?用户的购买力、商品的畅销程度?如果考虑后两者的话,恐怕就要考虑将各个特征的值归一化一下,不然会感觉会有莫名的影响?有什么影响呢?
2014.4.29
很好的一篇分析Logistic的文章:Here
迭代次数、是否逐步回归对结果都存在影响,但影响如何呢?参数收敛后迭代次数无影响,逐步回归似乎能使参数更加合理。因此,每次训练都应该进行对照逐步回归与否的参数,依照经验判断哪个更为合理。将有行为的天数作为一个特征加入到LR中,并融合两个规则(c8r5以及c5),推荐数量几乎是昨天的2倍,达到35010247,成绩4.16%,排名52.
c写了first mr。q进驻lab,工作three h。说好了:成绩破5是一个里程碑,到时候要去找一些乐子。
2014.4.30
明天将所有SQL代码写到一个脚本文件里,哈哈,又长又臭的代码,但解放了双手,也更加高效。
XLab中的sql返回unicoe类型,然后用python就可以进行一些有用的操作,比如统计正样本数量。
存在一个地方可以改进:
1、利用前3个月做特征,第4个月做标签,接着后3个月做特征,进行预测;
2、还有最后3天的热销产品也需要考虑,那如何进行推荐呢?(需要志鹏分析);
3、关于天数的特征,可以这样改进,点击的天数,购买的天数,点击的周数,购买的周数;是否需要倒数第二个月的特征?影响大吗?(可以做个实验,就这些特征试试看);
4、尝试将特征分类,一类是局部特征,一类是全局特征
结论:负样本比例较大时,推荐个数会变少。成绩4.05,排名64(从52),因为负样本增加了正样本的3倍,推荐比之前少了70万,但有40万在融合的规则中,30万中只Hit了1万,说明29预测的有一部分在融合的规则中。
信条:先将LR搞到极致,出现天花板之后再来研究其他模型。
疑问:两个特征的值范围相差很多,对结果影响大吗?理解透公式或许会得到答案。哑变量。
c写ICF失败,未能提交;q 4hour,提醒T-shirt用淘宝号
2014.5.1
order by 后面必须limit 行数如 order by click_num limit 1000。limit后面可以写个很大的数,省去计算表的行数,但效率下降。
通过直觉和实验设计有业务含义的特征体系。
清楚异常数据(点击很大无购买的爬虫、刷信誉)(爬虫:点击量超过10000,购买量少于6,点击的品牌多于150)
(571885341-(4551226)>547811231-(2720995)>547361310-(爬虫)>545805374
发现有趣现象:点击量很多但没有购买的大部分是几乎每天都有一部分点击量的,并且点击的品牌都是很多的
复杂现象:爬虫用户有时也购物;那么多爬虫是同一个商家的水军吗?
结论:归一化的准确度可能比标准化高,但推荐的少,召回率低;7天特征推荐的数量高于3天的,但准确率可能略低于3天的;负样本比例高时,推荐的少些,但准确度高些(线上线下都测试过)
伟文交了ItemCf结果,成绩0.82%,排名320,最优排名78。zp还是没有实质性成果。
2014.5.2
如果改成前3月样本,第4月标签,后3月训练,这样样本集和训练集都变大了,推荐的个数会变多,召回率会变高,成绩会比4.16%好。
测试时,按照5.1的结论,只需测样本比例6.5,归一化的准确和召回率就可以知道整个特征体系的成绩。
爬虫清理:点击很多,但不购买,且针对的品牌比较少,这是爬虫吗?是,用户对品牌数的平均点击数超过50(click_num >= click_brand*50),click_num多于1000,且不购买的即是爬虫(合计点击量8365880)。或者,日点击平均超过50的(click_num >= click_days * 50)且点击数在1000以上(合计点击量13260239),但是都不购买的即是爬虫。以上合计14383066。它们之间交集如此大,更说明它们是爬虫。(一共清洗1135个用户,53个品牌)
待分析:
1、最近购买时间、爆款、抢购、用户的点击转化购买率;
2、06-09~06-15内购买量和点击量大的是抢购还是热销产品;
3、用户的平均点击量、购买量;
4、ItemCF利用最后的购买情况进行计算推荐系数;
5、3天内的购买量是否适合作为特征?(需要,这样会提高准确率,模型会自动为它的系数赋上负数,表示购买量越高,就不太可能买,不仅考虑什么情况下会买,还要考虑什么情况不会买,双向思考)
6、最后一周有点击日平均点击数>=3.0的有1916053
结论:最后3天的四个特征做预测准确率最高;2个月内点击的周数准确率要比2个月内购买的周数低,且二者结合准确率也不如购买周数高;局部特征靠点击、收藏夹、购物车,全局特征靠购买。
提交:最后半个月点击量超过8排名前5,F1:3.21,当天排名154,总排名84
2014.5.3
待分析:
1、已经求得所有用户的点击购买转化率,如何利用到特征中呢?转化率是指用户总的还是用户针对某个品牌的?
2、需要分出最后三天已点击但还没购买的点击数吗?可以折中下,用点击数减去购买数。
3、前几个月的点击量怎么利用?直接作为特征还是分为(转化为购买的,未转化的)作为特征?
目前比较好的特征:1、2个月内购买的周数 2、2个月内购买的天数 3、半个月内的点击数 4、3天内4个特征
结论:以上的7个特征组合具有非常高的准确率(14.7%),今天交的推荐数过少,R低,如果推荐数增加,R高,成绩就会变好。
交了一发7个特征(3天的4个行为,15天点击,3个月内购买天数、月数)的LR,成绩1.71%,当天排名251,全部排名88。
需要设计一个比价好的全局特征,然后使得样本数据增多,就有办法提高成绩。
zq没来实验室
2014.5.4
尝试将转化率与点击量相乘作为特征、将最近购买、点击时间作为特征。
待分析:
1、拿八月的预测前面的,8月买了的,前面无交互的作为正样本,八月买了的,前面有交互的作为负样本
2、新老用户是否对结果有影响?是,新用户倾向于购买热门产品,因为对网站不熟悉,老用户则会考虑冷门产品。
3、是否需要最近购买时间?
结论:最近点击、最近购买时间、2个月点击权重(U_tran*C_cnt+B_Tran*C_cnt)是很好的特征。
伟文提交了一发,因为把列名brand写成brand_id所以没有成绩,总排名102.
2014.5.5
近期要研究几篇外国的论文,找找思路。
1、An Exploration of Improving CollaborativeRecommender Systems via User-Item Subgroups
2、KDD CUP类文章
尝试利用聚类算法来寻找隐特征。
算者的提示2所思:
1、所选的特征应是一个覆盖面广,能够互补的体系,这样容易优化、鲁棒性强。
2、优化时应该是粒度小、贡献小的合并为粒度大、贡献大的特征。
3、不同的算法需要不同的特征体系,正如图中的正方形就适合用矩形切分,三角形就要用矩形切分,但是算法和正方形、三角形有毛线关系啊?
zp开始看各种博客、论文、PPT,开始进入状态,但还没实质性的作为。
提交了一发LR加几个规则,F1 4.52%(P 4.57 R 4.45 Hit 12598),当天排名44,总排名64.把负样本比例调高,准确率更高,成绩可能更好。
2014.5.6
决定拜读大量KDDCUP的论文。
考虑将点击相关的3个特征合并,作为点击权重,但是效果并不理想。
待分析:
结论:目前同样的特征,SVM效果不如LR1、按照算者的提示,特征往大粒度融合效果更好,为什么我的特征融合效果不理想?提示解读的问题?融合的问题?
2、缺失值简单填0是否过于简单?
3、分析下新用户的特征,也就是在哪段内时间内出现的算新用户?新用户有多少?
4、分析热销产品和爆款的特征,爆款有多少?对结果会有什么直观的影响?
伟文提交了一发,ICF,F1 2.08%,当天排名276,总排名72。
2014.5.7
通过提高准确度的方式,观察LR的参数变化,或许可以洞悉特征对结果的影响。
待分析:
1、之前一直考虑购买,现在考虑不购买,两个方向。
2、负样本取行为比较多的。凭推断,这会导致准确率高,但召回率变低,因为能更好的识别行为比较多的该不该购买。
3、尝试将第一季的必杀技Value当成一个feature。
4、归一化后加上1。或者将值分等级。分级不科学(结果),因为有长尾的出现。或者将长尾直接截断,效果不错(结果)。
5、用户加上活跃度特征(购买商品数、天数?)、商品加上流行度特征(购买用户数、天数?)。
6、慎重考虑生命周期、趋势。
结论:第一季的必杀技并不适合添加进我当前的LR特征体系;LR参数训练需迭代1200次才能收敛
反思:不要再交经过融合的结果,那样并不能验证某些结论,对比赛的帮助不大。
提交了一发,F1 4.49 当天排名56,总排名80.
2014.5.8
计划:1、测试截断长尾效果 。2、LR结果当特征,Values当另一个特征,跑一次LR。3、做生命周期分析。
结论:长尾截断之后预测的数量变多,R提高,P也不会降很多,F1有所提高;Values粒度太大不适合我的特征体系;正样本复制多倍,并不能改善效果。
待分析:
1、不使用负样本随机采样的方式,用正样本复制的方式采样,试试效果。
2、人的购买力有限,设置Top12或者Top15提交(实际上很少有用户购买超过15甚至12)。
实验室讨论:1、特征共享 2、观察结果 3、涛搞随机森林
提交了纯LR,F1 4.54%,当天排名52,总排名81.
2014.5.9
看内部赛选手的帖子:一个新手SOLOADD大赛(内部赛)的心得,学习到如下:1、按照:问题分析-特征抽取-特征处理-样本选-建模-调参-测试-提交进行开发 2、特征处理可以用归一化和分箱的操作,Xlab的PERCENT_RANK函数可以考虑使用 3、充分利用XLab。
计划:1、先将昨天的特征和参数在线下跑跑看看线上线下相差多大。 2、按照测试文档的逆序测几个模型,看是否和之前的测试结果成正比。 3、 重新测试Values特征、点击权重特征、二次LR
结论:
1、30天内收藏但未购买的特征效果不够好;
2、线下的准确度有%6.3,提交时的预测数明显多于线下测试时的预测数,所以线上的准确度是明显偏低了,如果控制线上的准确度到%6这样,成绩能比现在好很多。或者将线下的准确率像召回率靠拢,看F1是多少,这和线上的F1就是误差,但此时的R应该用Hit数除以线上的283万而非线下的254万,最后,线下仍比线上好上0.5左右.
3、LRde pre hen gao,cishi r bijiao di ,dan hui daozhi F1 ye gen zhe di,suo yi wei le tigao F1,zhineng zengjia yuceshu ,ranhou P jiju xiajiang,R zengjia yidiandian.zhe shiji shang zai wurong LR.buyinggai yi xisheng P weidaijia tigao F1,er yinggai xiangzhe tigao R,ye jiushi shuo zai P baochi bubian de qingkuang xia tongguo tigao yuceshu lai tigao R.
4、LR大部分的Hit数在7.16~8.01,这部分Hit数占了7/10。
5、是什么导致了提交的预测数多了90左右万(点击权重、最近时间、周数、天数90天)。
6、7倍正样本总能带来些许F1的提升。
惊天大Bug:原来我在计算最后一个月的购买集时将'-'写成了'_',导致只包括了8月份的数字,结果整整10天以来的成绩都是2点多,都是错误的答案,真是坑爹坑大了。然后发现我的队友也一直错了,他始终认为数据集的日期是05-01到08-31。神坑队伍。这样,从开始到现在做的特征选取工作都变得不靠谱,尤其是一些我觉得是非常好的特征,在这之前的几天内被证实效果一般,当时给我造成相当大的打击,现在突然又有了希望,但恐怕都得重新测试,痛并快乐着。
提交了一发只利用最后两个月的情况,成绩是4.50,当天排名51,总排名85
2014.5.10
规定:每种特征组合都必须先测6.5倍正样本,5倍正样本,以及预测数接近250万的倍数,大可不必去测其他的倍数,因为如果没有根据前3个判断特征组合优劣能力的话,那还参加毛比赛。
待分析:
1、最后30天收藏但未买作为特征到底怎么样?
2、洪涛提出一种很有意思的想法:从四个月的行为记录中取特征,拿第四个月的购买行为判定样本,然后将训练得到的参数用于之前的特征,即可获得推荐列表。这样的逻辑是:行为没有时序性、第四个月是第四第五个月的子集、四个月的行为特征与第四个月的关系也就是四个月的行为特征与第五个月的关系。遇到的问题:正负样本怎么判定?肯定是第四个月购买是正,不购买是负。这样就是结果去预测结果。这样的尝试其实是做无用功,咳。反思自己的做法,先用LR取得前3个月的行为特征与最后1个月购买与否的关系,然后用后3个月的行为特征去预测8.16到9.15之间的购买行为。背后的逻辑是:第4个月购买与前3个月的行为特征之间的关系是不变的。
3、考虑最近一周的人均访问时间、收藏指数、点击转换率、购买趋势结合起来的权重
计划:
1、修改提交模块的代码,使得其和测试模块的代码完全分开
2、尝试添加用户豪爽度和品牌热度特征
3、尝试用户活跃度和品牌流行度特征
结论:
1、用户豪爽度、品牌热度适合我的特征体系,能够改善预测效果。为什么?
2、用户活跃度、品牌流行度并不适合我的特征体系。为什么?
提交一发,成绩4.30%,当日排名80,总排名89
2014.5.11
待分析:
1、线下的成绩为什么比线上高那么多?因为我拿第4个月的数据做验证集,但我的how_tuhao、how_hot特征是把4个月的行为数据都放进去计算。
2、品牌的特征是否适合加进LR的特征体系?
3、之前简单地将特征塞进特征体系,然后通过结果判断效果,是否可行?难道不需要单独测下该特征的效果吗?
4、3天3个行为应该设怎么样的权重?买了再买的可能性大吗?不大。收藏了再买的可能性大吗?比买了再买的可能性大。1:2:2。可以利用LR确认下。
目前取得最优成绩的一组特征:3天内的4个行为+15天未购买点击量*好爽度+2个月购买天数、周数+最近购买时间+最近点击时间+2个月点击权重。尝试3天3个行为作为一个特征+所有点击一个特征+2个月购买天数+最近购买时间+最近点击时间=5个特征。
结论:
提交一发,成绩4.34%,当日排名88,总排名891、当负样本比例较小,Intercept却很大时,通常成绩是比较好的。
2、有最近购买时间的效果略好于无时,5倍和预测实际购买接近时效果都好,但没有相差很多。无加上15天的点击量,效果就得到很大提升,恐怕又是过拟合。
2014.5.13
问题分析:给出4.15~8.15的行为数据,预测哪些用户在8.16~9.15会购买,购买什么物品?实质上是购买预测问题,而不是推荐问题。而这可以从以下三个方面进行分析:
一、用户角度
1、点击转换率高的用户有一定量的点击行为就可能购买。转换率的确切定义?点击且购买的品牌数/点击的品牌数。一定量是指?
2、收藏和购物车转换率
3、新注册用户(无法分析)
4、用户购买力,购买越多,购买力越强,要么是高富帅,要么是购物狂
5、重复购买品牌率
二、品牌角度
1、品牌热度,被购买的人数越多,越热门。利用单独的一个模型来向用户推荐最后一周热门的产品,思路是找出最后一段时间才开始热门的产品,然后找出那段时间购买过这些品牌的用户,接着找出和这些用户相似的用户,向其推荐这些品牌。经过实验证明,7.09~7.15的热门品牌在7.16~8.15的购买数据中占了16/25,是很值得挖掘的部分。
2、购买该品牌的用户平均购买数,结合特定用户对该品牌的购买次数以及特定用户的购买力就是一个很好的特征。
3、被用户重复购买率
三、用户品牌对角度
1、关键:用户周期性购买的产品一般会再购买?周期是指月还是周还是天呢?目前测试过周,但没有单独和天、月进行单独的效果比较。
2、关键:用户最近点击、收藏、加进购物车的品牌,购买的可能性非常大。最近是指最近1周还是最近3天还是最近1天?点击和收藏、购物车应该区分开来,点击的时效性更强些。近期仅保留点击特征。
3、用户最近点击的时间越近,购买的可能性就越大?但最近购买的时间如何处理?最近点击但未购买的时间或许是个很好的指标,用最近购买时间减去最近点击时间作为指标,这只是相对关系,和最近点击时间结合起来才靠谱。近期保留最近点击时间特征。
4、如何利用历史购买行为呢?历史购买说明什么?说明用户喜欢这个品牌。可以得出品牌的平均被购买次数、用户的平均购买品牌次数、用户的重复购买率、品牌的重复购买率、用户对品牌的已买个数,然后得出用户再购买的概率。
特征抽取:3天点击、7天购买、15天点击、60天点击、最近点击时间、购买周数、购买天数、重复购买概率
特征处理:将远大于一般值的数值归于一个比一般值略大的值,并进行归一化。
样本选择:前2个月有行为第3个月有购买的作为正样本,第3个月无购买的作为负样本。
建模:使用Xlab的LR
调参:可以调的有正负样本比例、手动设置预测P的阈值来控制推荐数量
测试-提交-干杯
待分析:
1、有些品牌收藏量巨大,且月间收藏量相差甚多,购买非常少,被定义为搞活动的品牌。可以用不靠谱指数来排除这类用户,先算出每个品牌两个月收藏量差值的平方,设个阈值,如果平方大于这个阈值,且有某个月收藏量很大,不靠谱指数加1,如果不靠谱指数大等于2,就被认为不靠谱。推广开来,到底天猫哪些活动会导致异常数据?
2014.5.14
计划:
1、抽取如下这组特征进行测试:最近点击购买时间差、最近3天(或者7天)点击未购买量(或乘以转换率)、最近2个月点击权重、购买周数(或购买天数)、最近1个月收藏未购买量
2、添加重复购买概率特征
结论:
1、大部分有购买的用户在2个月购买的天数小等于4,剩下来一小部分不均分布在(5,60]天内,这样的话效果可能不如周数。
2、大部分用户平均每个月购买1件,60万左右的用户每个月购买1.5~4件。
3、没有最近3天的收藏、购物车量,对结果的影响也不是很大,因此可以去除这两个特征。去除最近购买时间,这个特征对结果影响也不是很大。
4、对购买与否影响甚微的特征应该剔除,这些特征可能起负面作用,剔除可以避免过拟合,提高程序效率。
提交了一发,成绩F1 4.62%,当天排名51,总排名83.
2014.5.15
计划:
1、找出昨天计划里的特征的最佳组合。
2、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1) ,ave_brand_ubuy是品牌平均每个月被单个用户购买的数量,user_repeat是用户历史重复购买率,ave_user_buy是用户每个月的平均单个品牌的购买数,user_have_buy是用户已经购买品牌的数量。如果最后取个阈值0.5,则预测数/Hit数/R:1946147/58581/2.98%,与购买天数超过2的交集size是202803,Hit数/P是16941/8.35%,差集size是1740000,Hit数/P是41640/2.39%。如果阈值1,则预测数/Hit数/R:1249862/38219/3.06%。如果阈值2,则预测数/Hit数/R:622844/20720/3.33%。
3、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) 。取两个月的话,如果最后取个阈值0.5,则预测数/Hit数/R:2249053/68432/3.04%,与购买天数超过2的交集size是198312,Hit数/P是17480/8.81%。如果阈值1,则预测数/Hit数/R:2037755/63807/3.131%。如果阈值2,则预测数/Hit数/R:1494019/50315/3.37%。取3个月的话,如果最后取个阈值0.5,则预测数/Hit数/R:3577465/87524/2.45%,阈值1,则预测数/Hit数/R:3183465/80797/2.54%,阈值2,则预测数/Hit数/R:2246277/62117/2.77%,阈值3,则预测数/Hit数/R:1585170/47180/2.98%
4、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值0.3,则预测数/Hit数/R:950891/35272/3.70%,阈值0.5,则预测数/Hit数/R:607315/24042/3.95%,阈值1,则预测数/Hit数/R:206493/9401/4.55%。
5、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值0.05,则预测数/Hit数/R:1322171/47757/3.61%,取阈值0.3,则预测数/Hit数/R:1249759/46002/3.68%,阈值0.5,则预测数/Hit数/R:1075977/41707/3.88%,阈值1,则预测数/Hit数/R:666371/29798/4.472%,阈值2,则预测数/Hit数/R:294733/16261/5.52%。
6、添加重复购买概率特征,公式:100*( ave_brand_ubuy + 1) * user_repeat * brand_repeat*(1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:1734816/56724/3.27%,取阈值2,则预测数/Hit数/R:1229788/46002/3.74%
7、添加重复购买概率特征,公式:100*( ave_brand_ubuy + 1) * user_repeat * brand_repeat*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:3623152/89494/2.47%,取阈值4.7,则预测数/Hit数/R:1210217/46085/3.81%
8、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * brand_repeat*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:3014189/74090/2.45%,取阈值1.7,则预测数/Hit数/R:1089693/33421/3.07%
9、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * brand_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值0.5,则预测数/Hit数/R:2909224/64979/2.45%
6、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * (1+user_repeat) *(1+ brand_repeat)*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值580,则预测数/Hit数/R:2949316/80871/2.74%,取阈值600,则预测数/Hit数/R:2068732/65083/3.15%,取阈值650,则预测数/Hit数/R:1180325/45229/3.83%
结论:
提交了一发,成绩F1 4.73%,当天排名45,最优排名67。离F1 5的目标又近了一步。1、重复购买概率是个适合我的特征体系,能带来效果提升的特征。
2014.5.16
提交了一发,成绩 F1 4.72%,当天名次 47,总排名67.
2014.5.17
待分析:
1、重复购买率是否会和周期性相抵消?因为周期性购买行为会导致重复购买率公式中的分母变大,导致值变小,负相关。对结果有什么大的影响吗?进一步思考这几个购买行为之间存在怎么样的相关影响作用?周期性强的也可能重复购买率高,而且这部分被重复购买的概率非常大。
2、重复购买率需和点击量结合吗?
结论:
1、购买周数比购买天数更有效的描述周期性购买行为,但推荐的数量往往较少。
判断各种特征组合的性能好不好,就看推荐同样个数的(u,b)对时他们F1值如何,推荐250万和200万看性能。
提交了一发,成绩 F1 4.71%,当天名次 50,总排名68.
2014.5.18
待分析:
1、公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),如何改进?加入品牌的被重复购买率brand_repeat,以及是否考虑融入时间?ave_brand_ubuy似乎应该使用天数而非数量作为衡量的指标。
2、是否可以通过subs_buy_repeat来进一步查看公式的效果?可以
3、怎么评估用户的购买周期以及品牌的被购买周期。筛选出购买周数超过2的(u,b)对,然后再聚集到u表和b表。
4、用准确度很高的LR融合重复购买率规则,效果如何呢?如果LR中有重复购买率规则的话,效果就不好。
计划:用3天时间改进重复购买率特征。
结论:
提交了一发,成绩F1 3.02%,当天排名258,总排名70。1、使用天数而非数量作为重复购买率中平均数的指标既能提高召回率也能提高转确率。
2、规则也有可取之处,因为可以用到全部的信息。
2014.5.19
计划:
1、用没有重复购买率的特征体系搞LR,然后融合重复购买率规则,试试效果。
2、调整点击的权重公式,试试效果。
3、好好观察样本,作一些分析
4、删除f_7_buy试试
5、试试f_3_c_nob、2个月点击权重、购买周数、p_brepeat、f_rclick_days。
待分析:
1、为什么有些f_bweeks为0,但它的p_brepeat不为0.因为这个用户有购买过其他品牌,且该品牌有被其他用户购买,所以会出现这样的情况。
结论:
1、融合效果不好,因为规则的大部分已经在LR的预测集中
2、删除f_7_buy不管在准确率还是召回率上效果都变差了。
提交了一发,成绩 F1 4.67 当天成绩65,最好成绩76.
2014.5.20
在数据如此多的情况下,尽量多观察,多思考,少跑程序!!需要适当调参,但多思考特征体系能带来更好的效果提升!!
待分析:
1、昨天的提交参数表中与p_brepeat相关的系数是负数,是因为式子?还是与特征体系不匹配?因为利用之前的式子得到的值相差的范围太广。
2、如何评价一个特征好坏?0)是否符合业务逻辑 1)粒度 2)预测100w、200w、300w时的准确率、Hit个数 3)观察正负样本,看是否符合预期的判断 4)LR训练出的参数
3、重复购买是否更多取决于品牌?是的。
4、click_sumweight的day/X的X对结果是否有影响,是的。
结论:
提交了一发,成绩 F1 4.78,当天排名54,最优成绩71。离5还差0.22。1、将式子改的大小波动小一些能够去除负数,但直观判断效果并不好,而且用规则来判断效果也不好。
2、如果重复购买率中的user_brepeat删除,那么各方面性能都下降。
2014.5.21
待分析:
1、去除4~15至6.15之间爆款的影响,效果是否能改善?是的,可以改善。
2、将最后半个月出现的用户找出来,单独使用一个模型向他们做推荐。没必要这样做,因为这些用户在下个月的购买行为非常少。
3、清除爆款行为必须注意:1)使用随机采样而非全部删除 2)最后一个月的数据必须保留 3)最后一个月出现的(u,b)如果在前面3个月出现就必须保留 4)那些购买对应的点击行为也必须处理。
第一次清理,手动清理,清理前:531422169,清理:18081(4600)+986(3600)+11313(27216)+25851(1300)+10391(1967)+13382(160)
+14244(2800)+14679(1000)+23250(8000)+5159(900)+8041(3500)=56031 ,清理后:531366138。清理前所有4.15~7.15的交互(u,b)对在八月份的Hit数是:454063,清理后是:454063
第二次清理,清理4.15~6.15的购买量超过6.16~8.15的购买量两倍的品牌,其中在6~8月出现的(u,b)对不清理,4.15~6.15进行随机采样至购买数量和6~8月差不多(原来是3:1),清理前:531366138,清理后:508118399。清理前Hit数是:454063,清理后Hit数是:447858。
第三次清理,清理4.15~8.08内所有摆设品牌(只点击未购买)的行为。清理前:508118399,清理后:507710289。清理前Hit数是:447858,清理后Hit数是:447858。
第四次清理,对6.16~7.15内爆款的行为采1/10的样(只在这个月出现的点击、购买行为),对7.16~7.31的爆款行为采1/10的样(只在这2周出现的点击、购买行为)。清理前:507710289,清理后:502032515,共清理5677774。
4、7.15~8.15的促销行为是否可以缩减?可以单独拿这部分作为推荐的源数据。
结论:
1、计算60天的click_sumweight,X=30效果不如X=15。
今天终于拍了T-shirt,选了黑绿色,颜色搭配很炫,前面设计得很好,就是后背的字会显得奇怪。
2014.5.22
待分析:
结论:1、点击相关的特征是否需要重新思考该如何取?点击未购买,改为购买后点击行为,15天时相差228万。
2、用户特征靠谱吗?
3、LR的结果拿去跑svd结果如何?Lr的结果中brand数很大
4、是否可以对没有购买行为的品牌的行为进行采样?如果最后半个月内有点击行为的(u,b)对Hit数多,就不能,不然就可以,今天就测试这个。如果点击行为是长期进行的,就不应该简单清除。
1、很多购买行为都是当天点击当天购买
2、用P大R小的LR推荐结果与P大R小的RF推荐结果取并集,能够提升成绩
3、将摆设品牌在最后15天有过点击行为的(u,b)对推荐之,Hit数极少,p只有0.35%,可以清除4.15~8.08的摆设品牌。
是否要放弃未交互行为?之所以有这个考虑,是因为交互行为都没做好。如果放弃的话,伟文就可以搞朴素贝叶斯或者随机森林,志鹏的工作不变。
只有努力远远不够,还必须运用智慧做到行事直达要害。
提交了一发,史上最吊成绩,F1 0.02%,当天排名425,最优排名85。
2014.5.23
待分析:
1、7月份的爆款要如何清洗?会有哪些影响?1)前两个月点击、购买,现在购买,用于形成样本标签。 2)现在点击、购买,后两个月购买。如果6.13、14有点击行为,然后6.16、17有购买行为,清洗会破坏这种因果关系吗?清洗至少应该保留在6.15之前以及7.15之后有的(u,b)对。试试这些爆款(u,b)对的Hit数。
2、品牌分类,算权重。
3、某些品牌一次性购买很多,是否可以随机采样?目前对我没有影响,因为关于购买的特征都是以天数而非次数为指标。
4、去掉购买力小(购买天数<=1)的用户搞LR。推荐数大幅度缩小,准确率没有提高很多。
5、为什么去除了那么多爆款,效果却没怎么提升?24交不融合的结果,就知道对结果是否有影响。
6、购买后的点击量效果不如未购买的点击量。
结论:
1、清洗不应该破坏点击-购买、购买-再购买的因果关系
提交了一发,成绩F1 5.07%,当天排名43,最优排名55。
终于突破了5,第一个月完美收官!
2014.5.24
计划:
1、毋须重新训练、预测,通过设个概率阈值来控制推荐个数,高效的做法!
2、用李阿姨的账号提交以下结果:7月份的爆款对应的不存在于4.15~6.15、7.16~8.15的行为,总的行为数5384439,(u,b)对2793001。
待分析:
1、点击权重公式要怎么调整?
1)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)) ,r=0.1,X=20,click_afterbuy,F1 = 4.463
2)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)) ,r=0.1,X=40,click_afterbuy,F1 = 4.26
3)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=40,click_afterbuy,F1 = 4.46
4)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=20,click_afterbuy,F1 = 4.483 (R:90749/2552557,P:3.47%)
5)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=30,click_afterbuy,R:87391/2524426,P:3.46%
6)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=15,click_afterbuy,R:92329/2546413,P:3.63%
7)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=10,click_afterbuy,R:93860/2553019,P:3.68%
8)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=5,click_afterbuy,R:92329/2508360,P:3.68%
9)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=9,click_afterbuy,R:93326/2510848,P:3.72%
10)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=9,click_afterbuy,Y:7.4,R:93286/2507133,P:3.72%
2、最近点击时间改成最近行为时间。或者改成最近未购买点击的时间。
3、去掉最近15天未购买点击量特征。
结论:
1、利用规则测试单特征,利用模型测试特征体系
2、在一定范围内,时间衰减的越厉害,预测效果越好,但权重会越来越小。2个月时最好的衰减函数是e^(-d/9)。
3、最近行为时间优于最近点击时间。
4、清除掉4.15~6.15的爆款以及摆设点击能带来0.1的成绩提升。
5、7月份的爆款对9月份的影响甚微。
再平凡的人,只要时时留意,也能找到机会做出一番成就。
这个比赛,就四个字--“剩者为王"!
提交了一发,成绩 F4.76%,当天排名72,最优排名58。
2014.5.25
计划:
1、用3~4天时间将6.15~7.15、7.15~8.01的爆款消除,首先需要判断7.15~8.01的爆款行为是否可以简单消除?是否可以去除与前后无因果关系的行为?
2、线上测试3个月时X=10,X=15,X=20,X=30的效果。
待分析:
1、目前最优特征组合式:r3d_Click_nob+click_sumweight+p_brepeat+rbehavior_days+bweeks,将r3d_Click_nob替换成r3d_Click_afterb效果是否更好?
2、最优的衰减系数应该要和其他点击量结合。
结论:
1、distinct一般比group by 要快一些。
2、最近3天购买后点击量与点击权重特征结合效果并不好。
3、没有最近3天点击特征,预测效果会变差。
李阿姨号提交了一发,7月份爆款中购买天数超过2的2478,购买次数超过3的4657取并集,进行推荐,准确率1.37%,Hit 82,说明7月份爆款对应的行为Hit了4000多是非常分散的,因此可以进行清洗,利大于弊。
自己的号提交了一发,将subt_sumweight错写成subs_sumweight,成绩只有4.27,当天排名130,总排名60。
2014.5.26
计划:
1、将字符串的日期改为离4-14的天数,5.01、09、13、15对应17、25、29、31,6月对应48、56、60、62,7月对应78、86、90、92,8月对应109、117、121、123。
待分析:
1、前两个月的爆款行为(只在这段时间出现的u,b)有270w左右,6.16~7.15的爆款行为(只在这段时间出现的u,b)有270w左右,这些都是刚出现,买完或点击完之后就消失无影,这部分该怎么界定?考虑1)用户活动时间 2)品牌热门时间 3)(u,b)行为时间长(结束 - 开始)
2、几百个特征是怎么来的?特征含义上说,应该是按照天或者周或者3天为单位所取得特征。实现上,肯定要用循环来完成。
结论:
1、最后15天日点击量加现在的特征,效果能够得到提升。
2、大清理后效果也能提升。
正确提交一发,成绩4.81,当天排名73,最优排名61。
2014.5.27
计划:
2、将字符串的日期改为离4-14的天数,5.01、09、13、15对应17、25、29、31,6月对应48、56、60、62,7月对应78、86、90、92,8月对应109、117、121、123。
待分析:
1、将特征分开跑LR,然后再融合,结果如何?融合是结果取并集还是概率相加,取概率大者?分开跑LR后再将得到的结果用于LR,结果如何?
2、重新测试Value特征,用rule测单特征效果,再用LR测单特征效果,再用LR测特征体系。
1)W = [1,10,5,5],取阈值110,Hit数/预测数:95053/2414406,P=3.94
2)W = [1,10,4,4],取阈值109,Hit数/预测数:94257/2385575,P=3.95
3)W = [1,10,2,2],取阈值108,Hit数/预测数:95876/2402052,P=3.99
4)W = [1,10,1,1],取阈值107,Hit数/预测数:95580/2385359,P=4.01
结论:
1、单特征分开跑,然后取并集,效果并不理想。
2、大清理后效果也能提升。
3、各个特征单独跑LR,再将概率作为LR的输入进行LR,效果可以提升。
2014.5.28
待分析:
1、用LR跑r3d_Click+r60d_Click+r_behavior、r3d_Click、r60d_Click、repeat、week、values、,然后再作为LR的输入。
2、把被购买量或者被购买用户数最多的当作爆款热销日,并把它离预测集开始那天的时间数作为品牌的一个特征,可以吗?对于全局热门品牌恐怕不行。
结论:
1、单个特征跑LR,p_repeat的效果不如r60d_click_sumweight,这个公式应该改进。
2、使用两次LR,可以改善效果。
3、如果出现预测数很少,可能是哪里写错了,比如样本中有截断长尾,但预测集中没有,导致预测集的数据归一化之后值偏小,从而导致最终预测数变少。
又发生错误了,处理特征值时,样本和预测集的不一样
2014.5.29
待分析:
结论:1、未购买的点击和购买后点击权重应当不同?
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=18,click_afterbuy,R:96428/2607381,P:3.70%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=10,click_afterbuy,R:95837/2584588,P:3.71%
2、购买后点击是否应该再细分?比如只是购买后来确认收货、评价
将购买后再点击的(u,b)直接推荐,Hit数/推荐数:51292/1698440,P=3.02%,推荐点击数超过4的,Hit数/推荐数:25047/526721,P=4.8%
将购买2天后再点击的(u,b)直接推荐,Hit数/推荐数:40567/1217937,P=3.33%,购买3天,Hit数/推荐数:36237/1018841,P=3.66%
3、是否真需要60天的点击权重?试试30天的
将购买后再点击的(u,b)直接推荐,Hit数/推荐数:24828/571205,P=3.02%
将过去90天购买2天后且在最近1个月再点击的(u,b)直接推荐,Hit数/推荐数:42422/1007673,P=4.21%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,10,X=18,click_afterbuy,R:99019/2675340,P:3.70%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,8,10,X=18,click_afterbuy,R:93893/2619451,P: 3.58%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,10,X=18,click_afterbuy,R:98260/2554041,P:3.85%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,>=10,X=18,click_afterbuy,R:97727/2516505,P:3.89%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(2+a_b)*(2+a_u)) ,r=1,5,>=10,X=18,click_afterbuy,R:97575/2516505,P:3.88%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b)) ,r=1,5,>=10,X=18,click_afterbuy,R:97494/2516505,P:3.87%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b) *f_cdays,r=1,5,>=10,X=18,click_afterbuy,R:98595/2516505,P:3.92%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b)(1+a_u) *f_cdays,r=1,5,>=10,X=18,click_afterbuy,R:99596/2516505,P:3.96%
1、将点击分为未购买过的点击、购买前的点击、购买后的点击
2014.5.31
计划:
从两个方面入手,一方面是最后1个月点击过的(u,b),这部分Hit了31万,占了总的有行为购买量的3/4,另一方面是最后3个月已经购买过的(u,b),Hit了12w,占总的有行为购买量的1/4,简单地说,一方面是从点击入手,一方面是从购买入手。先搞第一方面,等伟文有点感觉让他搞第二方面。
待分析:
1、试试将月平均购买量减去最后半个月的购买量作为特征(未尝试)
2、试试将购买后的点击量作为特征
3、试试将购买周数加进sum_weight中
4、repeat_nom有预测数/Hit数/P:2068732/65083/3.15,但实际上推荐购买次数超过2次的推荐有推荐数/Hit数/P:1708288/57867/3.39%(P),效果差不多,这说明我一直认为是关键特征的只是个普通特征,T_T。
5、试试购买周数和repeat_nom作为特征
6、训练集取2个月,预测集是否可以取3个月?可以,只要3个月时的每个特征的最大值与2个月时想等就行,也就说说要Cut。取成3个月后成绩比较理想。
7、试试r3d_click_nob+r30d_click_nob+r30d_click_sumweight。最后1个月的点击可以分成几类?
1)本月购买前的点击
2)本月购买后的点击,是查看卖家是否发货还是回味下品牌?
3)未购买过的点击
4)前几个月购买后的点击。之前的点击/购买数可以结合起来考虑吗?逻辑上可以,数据上是否也如此?
重要性与序号成正比。
8、如何挖掘不热门的点击行为(点击次数<5,46578046,Hit:183236)?先要了解这部分数据。1)大部分点击小于5次,天数就1天。2)和前2个月的交互行为多吗?不多。46578046-42459047=4118999,Hit:47300,P:1.15%。
结论:
1、没有r3d_nob特征不行(在5个特征的情况下)。
2、将购买周数加进sum_weight中能使效果提升。
3、购买再购买方面挖掘的太少了。
4、利用sumweight得到的推荐(u,b)对有9/10都是点击天数超过2的,其实都算是热门对,7/10是点击排前5点击超过8。大概有1.1万是点击天数为1的。
5、单click_sum的效果要比添加进其他特征的效果要好。
2014.6.1
待分析:
1、每次都测试下Hit的(u,b)是在测试集的前半个月,还是后半个月。click_sum的预测集中在前半个月。
2、只取7.16~8.01的作为样本数据,结果如何?如果有全局性特征的话,效果差一点,和取全部样本结果不会差很多。
3、我取负样本的方式也不对吧?是对的。
结论:
1、Click_sum和repeat_nom的预测集交集只有43万(各252万),Hit的交集只有3万(10万,7万),说明交集不是很大,但repeat_nom不是个好特征。
2、Click_sum的Hit主要集中在前半个月。
3、前3个月的购买周数超过2的(u,b)(280810)中的b在8.01~8.15的被购买对数(1270727)是1183886,(u,b)对的被购买对数是11602;前3个月的购买周数超过2的(u,b)(280810)中的b(11300)在热门品牌(1857)中Hit是1850,(u,b)对的Hit是231814。说明热门品牌一般都会被反复购买。
4、那些很热门的品牌,即使是很早以前有过行为,后来没行为(最近一个月不点击),也可能购买。所以爆款清理并不恰当,它会导致线下成绩变好,但线上成绩变差。换个角度看,很久之前点击或者购买了的(u,b)对,几乎都是热门的品牌(2000个)。
5、最后一个月购买再购买的几乎都是热门品牌(品牌被购买cnt>=1000,64804(交集)/76314(最后一月购买)推荐1958766个,cnt>=3000,54049/76314,推荐1535821个)。repeat_nom与最后一个月购买的交集大概有6万,占了3/4。
6、click_sum的预测数中有3万(3/10)是最后半个月点击少于5的。
2014.6.2
计划:
1、爆款行为要重新清理,必须倒档。利用聚类分出爆款。
清理((45+56)>(67+78)*5 or 45 > 5678 or 56 >4678 or 67 > 4578),随机采样前3个月行为,并保证购买周数>2的行为不被删除。
清理前:531422169 清理后:524019070 清理7403090
2、最后一个月购买再购买的占7万,之前2个月购买再购买的占6万,这6万几乎都是热门品牌,具体性质如何,应该结合聚类和之前的品牌每月购买情况分析。让伟文改进repeat_nom,将ave_user_cnt,ave_brand_cnt等添加到Hit的(u,b)集合中,看是否合理。
待分析:
1、尝试特征:
1)最后一个月购买是否大等于2
2)购买天数而非购买周数
3)1个月的点击天数是否大等于4
4)2个月的点击天数是否大等于5
5)2个月的点击次数是否大等于25且排名前10
6)购买次数是否大等于3且排名前5
2、尝试特征:最后3天点击、最后15天点击、r30d_sumweight、最近点击时间、点击天数、是否点击次数>=1&<=4&rclick<=10、用户是否土豪、品牌是否热门、用户的从众系数
结论:
1、29360在8月份的购买数是18675(441129,P=4.23),811是8830(1263449)。利用LR跑出来的29360Hit4527,811Hit1548。可以在模型融合的时候加进很优质的品牌对应的(u,b)对。
2、how_tuhao并不科学,因为用户可能会为了买一个品牌,而看很多其他的品牌,我们不能认为这就不够豪爽,而看多少其他的品牌则要取决于品牌,是否点击小于5并在最近20天内?
3、从众系数和品牌热门结合起来并不能优化sum_weight
4、点击未购买的量作为特征还不如点击量,准确率不如点击且购买量
5、最近30天点击天数可以结合之前的5个特征进行预测。比如取最后1个月点击是否大等于4,最后2个月点击是否大等于5,最后3个月点击是否大等于6。还可以添加,诸如点击是否在用户的排名前5中。
6、对于冷门(u,b),最近点击时间是比较好的特征。
7、最后2个月的repeat_nom效果比最后3个月的repeat_nom的效果好。
8、没有购买过品牌的用户购买一个品牌通常点击都非常多(b=0,c>=5,24016/1532581,P=1.57%,b=0,c<=4,44972/19920591,P=0.2%)。
9、利用5个特征得到的热门推荐结果Hit数/推荐数/P:103199/2547324/4.05%,与最后一个月c_cnt>=5的交集是9.4w,与前3个月有购买行为的交集是66525,与前2个月购买行为的交集是20807。
10、60天的sumweight的Hit数是98832(2547324),30天的sumweight的Hit数是98580,差不多,前者会稍微好一点。
11、对于热门样本,负样本应该取正样本的15~200倍,最合适的是?
2014.6.3
待分析:
1、前2个月购买后第4个月购买的有什么特征?比如是否多分布在56月?几乎都是热门品牌,那么用户有什么特征呢?是否从众率都很高?
2、是否将前2个月的Hit的9万也加加进冷门数据中,然后分析和热门样本Hit的交集多大?
结论:
1、对于热门样本,预测中的都是最后一个月13万中的,而前2个月中的9万却只中几千。现在的模型适用于挖掘最近的热门行为。
2、r30d_sumweight(Hit96635)的效果比r60d_sumweight(Hit98832)差了2000多,F差了0.087。
3、可以将前2个月的Hit的9万加加进冷门数据中,和热门样本Hit的交集非常小,预测中的基本上还是最后一个月的行为。
2014.6.4
待分析:
1、将购买次数乘进repeat_nom结果如何?
2、Value加进冷门样本的特征中进行测试。
结论:
1、LR将所有特征统一处理,随机森林则是取若干个特征进行训练,然后投票,相当于多个取特征子集的模型的融合。前者倾向于热门行为,后者则会平均。因此,LR应该用于描述局部或者全局中的一类,而非混合,后者则既可以混合也可以考虑全局。
2、Value能够提升LR对冷门样本的预测效果。
3、将b_weeks加进repeat能提升repeat的效果。
提交了一发,成绩5.23%,当天排名47,总排名58。
2014.6.5
小总结下:
1、用2个月做训练集,3个月做预测集,效果比2:2要好。
2、对于热门数据,负样本比例在[5,20]范围内升高,效果能够提升
3、gbrt模型的效果比其他的都好,只是运行时间很慢
4、将bweeks加进p_repeat,单特征效果能够提高,如何和有bweeks的特征体系放在一起,则效果提升甚微。单特征时,r60d_repeat效果比r90d_repeat好,作为lr输入时r90d_repeat效果好。
5、清洗那些只点击不被购买的品牌能带来成绩的提升。
6、目前可以只用全部样本搞LR,测特征,然后最后将得到的特征体系去跑一次冷门样本的LR,进行融合。
7、不同模型,同一个特征体系,得到的预测结果基本上都是同一分布。LR、RF、GBRT模型跑出来的几乎都是最后一个月热门(u,b)对占9w,然后最后3个月的购买占6~7w,前2个月的购买占2w左右。
待分析:
1、测试下到底是所有样本一起搞LR效果好,还是分成2部分再分别搞LR效果好(一起搞时F1:4.563,一部分:87271/150w/5.81%,另一部分:28963/104w/2.78%(P);分开时F1:4.53,一部分:2.5w/70w/3.58%P,一部分:9.2w/190w/4.89%P)。还是在一起搞的好,简单高效效果好。
是否可以将一起搞的LR融合冷门的LR?效果比较好。
2、rf和gbrt是否越多特征越好?有7个特征时,rf的效果比lr效果好0.3。增加一个点击天数特征,rf的效果提高0.05,但再增加4~11天以及12~30天的特征,效果就下降0.07。证明,特征不是越多越好,而要看是否是一个好的特征体系。
3、特征分段、离散化、等频离散化。
4、训练集和测试集的范围不一样,对结果有影响吗?
2014.6.6
先熟悉随机森林,分析预测结果,然后继续分析数据,进行特征工程。
目标:10天内到5.6。
待分析:
1、RF的各个参数是什么含义?对结果有怎么样的影响?负样本是正样本5倍左右,8、9个特征个选5个建30棵这样的效果几乎是最好的。
2014.6.7
待分析:
1、repeat_xweek和repeat_r30c结合做为rf的输入会如何?当repeat_r30c中只有最后一个月的点击才有值时又当如何?
2、为什么前3个月有购买行为的ub对repeat_xweek为空?因为repeat_xweek中的week表是之前经过错误清洗的t_lr_big_data所产生的,需要重新生成。
3、是否需要添加前2个月购买再购买的公式?
结论:
1、将最后30天内的点击量指数加进train_repeat_week后成train_repeat_week_r30c,Hit 8.4w,其中有7.2w是最后一个月购买的(总的7.8w),几乎全中。如果没加,Hit8w左右,最后一个月Hit 5.7w,前2个月Hit2.2w。这样的话,这其实就是两个不同的特征了,前者和之前的特征体系结合非常适合挖掘最后一个月的热门ub对,后者适用于挖掘冷门样本的ub对。现在subs_repeat比train_repeat多Hit2000,而分布和之前train_repeat_week_r30c的分布相同。
2、repeat_xweek和repeat_r30c结合做为rf的特征体系,结果和只有repeat_xweek的相差无几。单repeat_r30c结果比repeat_xweek差。
3、现在rf得到的结果和Golden Rule(29360,购买天数>=2)结合能提高0.1。
2014.6.8
最痛苦的事是写了很久的代码,既然有致命的错误,导致几天的功夫全废;最快乐的事也是写了错误的代码,因为被你排除的想法突然又变成了希望。
待分析:
1、多加一些用户、品牌的特征,效果会如何?
2、加排名特征、前2个月的购买再购买趋势,效果如何?
3、是否可以统计前几个月用户的月平均购买数、天数,然后减去最近半个月的作为特征?
结论:
1、加排名特征、前2个月的购买再购买趋势,效果相差不多。
2、加一些用户、品牌的特征,诸如最后半个月的点击、购买,最后2个月的总购买等能带来效果的提升,主要是预测中了冷门的点击对。
3、在RF中sum_weight似乎很经常拿来当作根,是说明这个特征权重很大吗?是的。
2014.6.9
能否利用现有的模型训练得到用户对某个品牌的再购买概率,然后把这作为用户对品牌的偏好矩阵,这样可以用到非常多的信息,但可行吗?再购买概率是根据前4个月的行为得到的在8.16~9.15的再购买概率,而偏好矩阵是前4个月用户对品牌的喜好程度,输入是一样的,输出不太一样,前者会受时间影响,特别是最后一个月行为的影响,后者则是全局性的,但是对某个品牌的喜好不也会随着时间推移吗?不一定,如果会推移,则可行,如果不会推移,则不可行。
待分析:
1、是否可以添加用户对品牌的厌恶度?是不是对品牌的喜好程度不高,厌恶度就高?不一定吧。
2、应该把用点击转换率加进特征体系中吗?
3、给最后半个月刚出现的用户最近热门品牌,会怎么样?预测3000w,才中1.2w。如果是点击的就推荐,预测171w,中1.1w。
4、GBRT中当学习速率变小时,树的数量是不是要多一些?是。
结论:
提交了一发,19个特征,GBRT线下5.361,线上会是多少呢?5.658,当天排名20,总排名27。1、解决gbrt过拟合倒是可以用增加样本数量的方法。(导致过拟合的原因:树太高、样本太少,冗余的特征太多?)
2、点击转换率加进特征体系效果会变好。
结论:1、是否可以增加品牌日购买超过日平均购买的最近天数特征?后者效果好很多。2、将品牌或者用户的行为压缩成Values是否可行?3、是否可以添加最近30天ub的收藏、购物车量4、是否可以用repeat_r30c_only来融合gbrt的结果?r30c_only几乎可以全中最后一个月有购买的。
2014.6.111、品牌或者用户的Values不太科学。2、截断长尾仍非常有必要,19个特征,repeat有无截断,差了0.07。3、添加最近行为数超过平均日行为数的时间,效果差不多,单独用户的最近行为时间效果还不错。4、加了收藏、购物车,效果反而不好。5、和repeat_r30c_only融合后,效果不好。
结论:1、是否可以添加用户首次行为时间?
2、负样本有没质量之说?3、是否可以添加最近3天用户、品牌的未购买点击量?4、是否可以添加品牌购买3天后的点击量?5、是否可以添加用户、品牌的再购买概率?6、特征特数越多,样本应该越多,树的数量也应该越多吗?7、最后7天点击量减去平均第一次购买前点击次数作为特征,如何?点击量减去品牌的(点击总数/购买总数),又当如何?都可以用来优化Click_Sum。
2014.6.121、添加用户首次行为时间,可以提高效果。2、应该是有,至少现在样本采集时,负样本大部分是最后一个月出现过的。3、可以添加最近3天用户、品牌的未购买点击量。4、最后一次购买后的点击量并不好,和其他很多特征冗余,尤其是最后3天未购买的点击量。5、应该要添加品牌购买3天的点击量6、到目前为止是这样的7、前者2.7w/62w,P:4.35。8、最近30天用户对品牌的购买量特征并不好。9、根据RF的效果来判断特征体系的效果,然后再拿去GBRT跑,验证下。
待分析:
1、负样本中,通常最后一个月热门的ub对很少,占最后一个月ub对的1/10,第一个月的购买行为很少,占前一个月行为的1/20,这可能是导致我所Hit的都是热门ub对的原因。改进负样本采集方式,热门ub对50w,冷门ub对采集150w,第一月购买行为采集20w,第一个月行为总数100w,合计300w,试试效果。
2、将以上预测的热门ub对数量增加到普通采样的预测数,效果如何?将普通样本与特殊采集的样本的预测热门ub对进行推荐,效果如何?
3、是否可以添加用户的购买天数?
4、用户重复购买概率P_urepeat*f_30_ubuy作为用户的一个特征,效果如何?
结论:
1、热门点击对Hit数少了2w,准确率提到到7.3%,购买再购买的准确率也都提高到7%左右,冷门点击的准确率则很低,3.4%这样。
2、前者效果是差不多的。那样融合后,预测多了1000。
3、直观上,在sample_1中大于2的有5k(1w),sample_0的只有3k,大于1的有7k,sample_0的只有5k。
2014.6.12
待分析:
1、是否可以根据第3个月购买次数(或者天数)改变特征中的y值。
2、是否可以添加用户有购买的周数,比购买天数更精准一点
3、是否可以添加用户对某个品牌购买3天后的点击量
4、用户的最后一次操作时间是否会对结果造成影响?
5、品牌的最近3天购买后点击量是否可以改成有权重的:以前购买过的权重为3,没购买过的权重为1?
6、用户对品牌最后一个月购买后点击作为特征如何?
7、second_buy*f_brepeat作为特征如何?
结论:
2014.6.291、试着按公式1+x/10来得到Y值,但效果不好,少了0.1。
2、效果不好。
3、因为没有区分好购买后的点击还是从未购买的点击,所以结果不好。这两个特征添加了效果都不好。
4、效果不好
5、效果不好
6、效果不好
7、效果不好
9、将GBRT的结果和rf的结果用作LR的特征,效果并不理想。
10、改点击排名到sumweight排名效果不好。
问题分析:给出4.15~8.15的用户对品牌的行为数据,预测哪些用户在8.16~9.15会购买,购买什么物品?实质上是购买预测问题,而不是推荐问题。而这可以从以下三个方面进行分析:
一、用户角度
1、点击转换率高的用户有一定量的点击行为就可能购买。转换率的确切定义?点击且购买的品牌数/点击的品牌数。一定量是指?
2、收藏和购物车转换率
3、新注册用户,第一次行为时间。
4、用户购买力,购买越多,购买力越强,要么是高富帅,要么是购物狂
5、重复购买品牌率
二、品牌角度
1、品牌热度,被购买的人数越多,越热门。热门的物品被购买的可能性高。
2、最近15天被点击的量和被购买的量。量越大,越热门,被购买的可能性越大。或者将最后1个月拆分成3,7,15。
3、被用户重复购买率。
4、趋势特征,品牌最近3天平均热度减去最近15天平均热度。
5、那些只有点击但未购买的品牌可以直接去除。
三、用户品牌对角度
1、关键:用户周期性购买的产品一般会再购买?周期是指月还是周还是天呢?目前测试过周,但没有单独和天、月进行单独的效果比较。
2、关键:用户最近点击、收藏、加进购物车的品牌,购买的可能性非常大。最近是指最近1周还是最近3天还是最近1天?点击和收藏、购物车应该区分开来,点击的时效性更强些。近期仅保留点击特征。
3、用户最近点击的时间越近,购买的可能性就越大?但最近购买的时间如何处理?最近点击但未购买的时间或许是个很好的指标,用最近购买时间减去最近点击时间作为指标,这只是相对关系,和最近点击时间结合起来才靠谱。近期保留最近点击时间特征。
4、关键:如何利用历史购买行为呢?历史购买说明什么?说明用户喜欢这个品牌。可以得出品牌的平均被购买次数、用户的平均购买品牌次数、用户的重复购买率、品牌的重复购买率、用户对品牌的已买个数,然后得出用户再购买的概率。
5、用户对某个品牌的点击量和购买量在用户所有点击或者购买中的排名。也可以是用户对某个品牌最后半个月的点击排名。
6、用户对品牌点击天数,点击天数越多,表示对这个品牌越兴趣。
特征抽取:3天点击、7天购买、15天点击、60天点击、最近点击时间、购买周数、购买天数、重复购买概率
特征处理:将远大于一般值的数值归于一个比一般值略大的值,排名时点击量最少的排第1,。
样本选择:前2个月有行为第3个月有购买的作为正样本,第3个月无购买的作为负样本,负样本固定为正样本的9倍。
建模:使用Xlab的GBRT。
调参:树深、学习速率。
测试-提交-干杯
2014.7.1
待分析:
1、将30天点击量分成3,7,7,7等来搞gbrt会不会更好一些?直观上,gbrt的树是决策树,这样决策的时候不但会将数量关系考虑进去,也会将趋势考虑进去。
2、改进click_w、click_day和一些已有的特征。没用,效果不好。
3、添加点击中心时间、购买中心时间。能够提升0.023。
4、添加用户购买超过3,4,5的品牌数,品牌被购买次数超过3,4,5的用户数
5、重跑r30d_afterb。这样25个特征里多一个这货不知道能跑到什么成绩。
结论:
1、用户是主动的,有偏好型,品牌是不会思考的,只有属性
2、有空写一篇关于BUG的趣文:预测集的那个惊天大BUG,各个join的纠结,日期,过拟合,sum写成count
2014.4.24
修改Logistic的特征为16个,即近3天的四个行为、近一周的四个行为、近半月的四个行为、近一月的两个行为,近两月的两个行为
2014.4.25
尝试使用ODPS平台,学习SQL,完成预处理的程序,尝试XLab的LR。交了demo,成绩是0.91%,排名是143.
2014.4.26
利用XLab收集LR的特征、样本,完成了预测,并提交了一发,成绩是3.56%,排名43。
2014.4.27
提取了最后几段时间的购买数。提取最后一周的购买行为,与26号所做的LR的数据取并集,成绩是3.79%,排名63。
2014.4.28
领悟:能用程序完成的就不要去手动操作、LR的特征(自变量)间是独立的且与因变量是单向关系
技巧:计算Precison和Recall时为每个结果集添加ID=1的列,然后Join起来合并到一张表,实现了四则运算。
重新设计了LR的14个特征,改成倒1~3,4~10,11~25,26~40,41~60的特征,样本仍然一样,如果成绩不理想,将特征改成倒1~7,8~14,15~21,22~28,29~60。
成绩是3.91%,排名64。
计划:考虑有行为的天数作为特征,倒1~7、8~14、15~21天的点击天数、最后一个月的购买天数,倒数第二个月的购买天数。这样的特征和之前的完全不同性质,之前是考虑行为数量,现在是有行为天数,还能考虑什么特征呢?用户的购买力、商品的畅销程度?如果考虑后两者的话,恐怕就要考虑将各个特征的值归一化一下,不然会感觉会有莫名的影响?有什么影响呢?
2014.4.29
很好的一篇分析Logistic的文章:Here
迭代次数、是否逐步回归对结果都存在影响,但影响如何呢?参数收敛后迭代次数无影响,逐步回归似乎能使参数更加合理。因此,每次训练都应该进行对照逐步回归与否的参数,依照经验判断哪个更为合理。将有行为的天数作为一个特征加入到LR中,并融合两个规则(c8r5以及c5),推荐数量几乎是昨天的2倍,达到35010247,成绩4.16%,排名52.
c写了first mr。q进驻lab,工作three h。说好了:成绩破5是一个里程碑,到时候要去找一些乐子。
2014.4.30
明天将所有SQL代码写到一个脚本文件里,哈哈,又长又臭的代码,但解放了双手,也更加高效。
XLab中的sql返回unicoe类型,然后用python就可以进行一些有用的操作,比如统计正样本数量。
存在一个地方可以改进:
1、利用前3个月做特征,第4个月做标签,接着后3个月做特征,进行预测;
2、还有最后3天的热销产品也需要考虑,那如何进行推荐呢?(需要志鹏分析);
3、关于天数的特征,可以这样改进,点击的天数,购买的天数,点击的周数,购买的周数;是否需要倒数第二个月的特征?影响大吗?(可以做个实验,就这些特征试试看);
4、尝试将特征分类,一类是局部特征,一类是全局特征
结论:负样本比例较大时,推荐个数会变少。成绩4.05,排名64(从52),因为负样本增加了正样本的3倍,推荐比之前少了70万,但有40万在融合的规则中,30万中只Hit了1万,说明29预测的有一部分在融合的规则中。
信条:先将LR搞到极致,出现天花板之后再来研究其他模型。
疑问:两个特征的值范围相差很多,对结果影响大吗?理解透公式或许会得到答案。哑变量。
c写ICF失败,未能提交;q 4hour,提醒T-shirt用淘宝号
2014.5.1
order by 后面必须limit 行数如 order by click_num limit 1000。limit后面可以写个很大的数,省去计算表的行数,但效率下降。
通过直觉和实验设计有业务含义的特征体系。
清楚异常数据(点击很大无购买的爬虫、刷信誉)(爬虫:点击量超过10000,购买量少于6,点击的品牌多于150)
(571885341-(4551226)>547811231-(2720995)>547361310-(爬虫)>545805374
发现有趣现象:点击量很多但没有购买的大部分是几乎每天都有一部分点击量的,并且点击的品牌都是很多的
复杂现象:爬虫用户有时也购物;那么多爬虫是同一个商家的水军吗?
结论:归一化的准确度可能比标准化高,但推荐的少,召回率低;7天特征推荐的数量高于3天的,但准确率可能略低于3天的;负样本比例高时,推荐的少些,但准确度高些(线上线下都测试过)
伟文交了ItemCf结果,成绩0.82%,排名320,最优排名78。zp还是没有实质性成果。
2014.5.2
如果改成前3月样本,第4月标签,后3月训练,这样样本集和训练集都变大了,推荐的个数会变多,召回率会变高,成绩会比4.16%好。
测试时,按照5.1的结论,只需测样本比例6.5,归一化的准确和召回率就可以知道整个特征体系的成绩。
爬虫清理:点击很多,但不购买,且针对的品牌比较少,这是爬虫吗?是,用户对品牌数的平均点击数超过50(click_num >= click_brand*50),click_num多于1000,且不购买的即是爬虫(合计点击量8365880)。或者,日点击平均超过50的(click_num >= click_days * 50)且点击数在1000以上(合计点击量13260239),但是都不购买的即是爬虫。以上合计14383066。它们之间交集如此大,更说明它们是爬虫。(一共清洗1135个用户,53个品牌)
待分析:
1、最近购买时间、爆款、抢购、用户的点击转化购买率;
2、06-09~06-15内购买量和点击量大的是抢购还是热销产品;
3、用户的平均点击量、购买量;
4、ItemCF利用最后的购买情况进行计算推荐系数;
5、3天内的购买量是否适合作为特征?(需要,这样会提高准确率,模型会自动为它的系数赋上负数,表示购买量越高,就不太可能买,不仅考虑什么情况下会买,还要考虑什么情况不会买,双向思考)
6、最后一周有点击日平均点击数>=3.0的有1916053
结论:最后3天的四个特征做预测准确率最高;2个月内点击的周数准确率要比2个月内购买的周数低,且二者结合准确率也不如购买周数高;局部特征靠点击、收藏夹、购物车,全局特征靠购买。
提交:最后半个月点击量超过8排名前5,F1:3.21,当天排名154,总排名84
2014.5.3
待分析:
1、已经求得所有用户的点击购买转化率,如何利用到特征中呢?转化率是指用户总的还是用户针对某个品牌的?
2、需要分出最后三天已点击但还没购买的点击数吗?可以折中下,用点击数减去购买数。
3、前几个月的点击量怎么利用?直接作为特征还是分为(转化为购买的,未转化的)作为特征?
目前比较好的特征:1、2个月内购买的周数 2、2个月内购买的天数 3、半个月内的点击数 4、3天内4个特征
结论:以上的7个特征组合具有非常高的准确率(14.7%),今天交的推荐数过少,R低,如果推荐数增加,R高,成绩就会变好。
交了一发7个特征(3天的4个行为,15天点击,3个月内购买天数、月数)的LR,成绩1.71%,当天排名251,全部排名88。
需要设计一个比价好的全局特征,然后使得样本数据增多,就有办法提高成绩。
zq没来实验室
2014.5.4
尝试将转化率与点击量相乘作为特征、将最近购买、点击时间作为特征。
待分析:
1、拿八月的预测前面的,8月买了的,前面无交互的作为正样本,八月买了的,前面有交互的作为负样本
2、新老用户是否对结果有影响?是,新用户倾向于购买热门产品,因为对网站不熟悉,老用户则会考虑冷门产品。
3、是否需要最近购买时间?
结论:最近点击、最近购买时间、2个月点击权重(U_tran*C_cnt+B_Tran*C_cnt)是很好的特征。
伟文提交了一发,因为把列名brand写成brand_id所以没有成绩,总排名102.
2014.5.5
近期要研究几篇外国的论文,找找思路。
1、An Exploration of Improving CollaborativeRecommender Systems via User-Item Subgroups
2、KDD CUP类文章
尝试利用聚类算法来寻找隐特征。
算者的提示2所思:
1、所选的特征应是一个覆盖面广,能够互补的体系,这样容易优化、鲁棒性强。
2、优化时应该是粒度小、贡献小的合并为粒度大、贡献大的特征。
3、不同的算法需要不同的特征体系,正如图中的正方形就适合用矩形切分,三角形就要用矩形切分,但是算法和正方形、三角形有毛线关系啊?
zp开始看各种博客、论文、PPT,开始进入状态,但还没实质性的作为。
提交了一发LR加几个规则,F1 4.52%(P 4.57 R 4.45 Hit 12598),当天排名44,总排名64.把负样本比例调高,准确率更高,成绩可能更好。
2014.5.6
决定拜读大量KDDCUP的论文。
考虑将点击相关的3个特征合并,作为点击权重,但是效果并不理想。
待分析:
结论:目前同样的特征,SVM效果不如LR1、按照算者的提示,特征往大粒度融合效果更好,为什么我的特征融合效果不理想?提示解读的问题?融合的问题?
2、缺失值简单填0是否过于简单?
3、分析下新用户的特征,也就是在哪段内时间内出现的算新用户?新用户有多少?
4、分析热销产品和爆款的特征,爆款有多少?对结果会有什么直观的影响?
伟文提交了一发,ICF,F1 2.08%,当天排名276,总排名72。
2014.5.7
通过提高准确度的方式,观察LR的参数变化,或许可以洞悉特征对结果的影响。
待分析:
1、之前一直考虑购买,现在考虑不购买,两个方向。
2、负样本取行为比较多的。凭推断,这会导致准确率高,但召回率变低,因为能更好的识别行为比较多的该不该购买。
3、尝试将第一季的必杀技Value当成一个feature。
4、归一化后加上1。或者将值分等级。分级不科学(结果),因为有长尾的出现。或者将长尾直接截断,效果不错(结果)。
5、用户加上活跃度特征(购买商品数、天数?)、商品加上流行度特征(购买用户数、天数?)。
6、慎重考虑生命周期、趋势。
结论:第一季的必杀技并不适合添加进我当前的LR特征体系;LR参数训练需迭代1200次才能收敛
反思:不要再交经过融合的结果,那样并不能验证某些结论,对比赛的帮助不大。
提交了一发,F1 4.49 当天排名56,总排名80.
2014.5.8
计划:1、测试截断长尾效果 。2、LR结果当特征,Values当另一个特征,跑一次LR。3、做生命周期分析。
结论:长尾截断之后预测的数量变多,R提高,P也不会降很多,F1有所提高;Values粒度太大不适合我的特征体系;正样本复制多倍,并不能改善效果。
待分析:
1、不使用负样本随机采样的方式,用正样本复制的方式采样,试试效果。
2、人的购买力有限,设置Top12或者Top15提交(实际上很少有用户购买超过15甚至12)。
实验室讨论:1、特征共享 2、观察结果 3、涛搞随机森林
提交了纯LR,F1 4.54%,当天排名52,总排名81.
2014.5.9
看内部赛选手的帖子:一个新手SOLOADD大赛(内部赛)的心得,学习到如下:1、按照:问题分析-特征抽取-特征处理-样本选-建模-调参-测试-提交进行开发 2、特征处理可以用归一化和分箱的操作,Xlab的PERCENT_RANK函数可以考虑使用 3、充分利用XLab。
计划:1、先将昨天的特征和参数在线下跑跑看看线上线下相差多大。 2、按照测试文档的逆序测几个模型,看是否和之前的测试结果成正比。 3、 重新测试Values特征、点击权重特征、二次LR
结论:
1、30天内收藏但未购买的特征效果不够好;
2、线下的准确度有%6.3,提交时的预测数明显多于线下测试时的预测数,所以线上的准确度是明显偏低了,如果控制线上的准确度到%6这样,成绩能比现在好很多。或者将线下的准确率像召回率靠拢,看F1是多少,这和线上的F1就是误差,但此时的R应该用Hit数除以线上的283万而非线下的254万,最后,线下仍比线上好上0.5左右.
3、LRde pre hen gao,cishi r bijiao di ,dan hui daozhi F1 ye gen zhe di,suo yi wei le tigao F1,zhineng zengjia yuceshu ,ranhou P jiju xiajiang,R zengjia yidiandian.zhe shiji shang zai wurong LR.buyinggai yi xisheng P weidaijia tigao F1,er yinggai xiangzhe tigao R,ye jiushi shuo zai P baochi bubian de qingkuang xia tongguo tigao yuceshu lai tigao R.
4、LR大部分的Hit数在7.16~8.01,这部分Hit数占了7/10。
5、是什么导致了提交的预测数多了90左右万(点击权重、最近时间、周数、天数90天)。
6、7倍正样本总能带来些许F1的提升。
惊天大Bug:原来我在计算最后一个月的购买集时将'-'写成了'_',导致只包括了8月份的数字,结果整整10天以来的成绩都是2点多,都是错误的答案,真是坑爹坑大了。然后发现我的队友也一直错了,他始终认为数据集的日期是05-01到08-31。神坑队伍。这样,从开始到现在做的特征选取工作都变得不靠谱,尤其是一些我觉得是非常好的特征,在这之前的几天内被证实效果一般,当时给我造成相当大的打击,现在突然又有了希望,但恐怕都得重新测试,痛并快乐着。
提交了一发只利用最后两个月的情况,成绩是4.50,当天排名51,总排名85
2014.5.10
规定:每种特征组合都必须先测6.5倍正样本,5倍正样本,以及预测数接近250万的倍数,大可不必去测其他的倍数,因为如果没有根据前3个判断特征组合优劣能力的话,那还参加毛比赛。
待分析:
1、最后30天收藏但未买作为特征到底怎么样?
2、洪涛提出一种很有意思的想法:从四个月的行为记录中取特征,拿第四个月的购买行为判定样本,然后将训练得到的参数用于之前的特征,即可获得推荐列表。这样的逻辑是:行为没有时序性、第四个月是第四第五个月的子集、四个月的行为特征与第四个月的关系也就是四个月的行为特征与第五个月的关系。遇到的问题:正负样本怎么判定?肯定是第四个月购买是正,不购买是负。这样就是结果去预测结果。这样的尝试其实是做无用功,咳。反思自己的做法,先用LR取得前3个月的行为特征与最后1个月购买与否的关系,然后用后3个月的行为特征去预测8.16到9.15之间的购买行为。背后的逻辑是:第4个月购买与前3个月的行为特征之间的关系是不变的。
3、考虑最近一周的人均访问时间、收藏指数、点击转换率、购买趋势结合起来的权重
计划:
1、修改提交模块的代码,使得其和测试模块的代码完全分开
2、尝试添加用户豪爽度和品牌热度特征
3、尝试用户活跃度和品牌流行度特征
结论:
1、用户豪爽度、品牌热度适合我的特征体系,能够改善预测效果。为什么?
2、用户活跃度、品牌流行度并不适合我的特征体系。为什么?
提交一发,成绩4.30%,当日排名80,总排名89
2014.5.11
待分析:
1、线下的成绩为什么比线上高那么多?因为我拿第4个月的数据做验证集,但我的how_tuhao、how_hot特征是把4个月的行为数据都放进去计算。
2、品牌的特征是否适合加进LR的特征体系?
3、之前简单地将特征塞进特征体系,然后通过结果判断效果,是否可行?难道不需要单独测下该特征的效果吗?
4、3天3个行为应该设怎么样的权重?买了再买的可能性大吗?不大。收藏了再买的可能性大吗?比买了再买的可能性大。1:2:2。可以利用LR确认下。
目前取得最优成绩的一组特征:3天内的4个行为+15天未购买点击量*好爽度+2个月购买天数、周数+最近购买时间+最近点击时间+2个月点击权重。尝试3天3个行为作为一个特征+所有点击一个特征+2个月购买天数+最近购买时间+最近点击时间=5个特征。
结论:
提交一发,成绩4.34%,当日排名88,总排名891、当负样本比例较小,Intercept却很大时,通常成绩是比较好的。
2、有最近购买时间的效果略好于无时,5倍和预测实际购买接近时效果都好,但没有相差很多。无加上15天的点击量,效果就得到很大提升,恐怕又是过拟合。
2014.5.13
问题分析:给出4.15~8.15的行为数据,预测哪些用户在8.16~9.15会购买,购买什么物品?实质上是购买预测问题,而不是推荐问题。而这可以从以下三个方面进行分析:
一、用户角度
1、点击转换率高的用户有一定量的点击行为就可能购买。转换率的确切定义?点击且购买的品牌数/点击的品牌数。一定量是指?
2、收藏和购物车转换率
3、新注册用户(无法分析)
4、用户购买力,购买越多,购买力越强,要么是高富帅,要么是购物狂
5、重复购买品牌率
二、品牌角度
1、品牌热度,被购买的人数越多,越热门。利用单独的一个模型来向用户推荐最后一周热门的产品,思路是找出最后一段时间才开始热门的产品,然后找出那段时间购买过这些品牌的用户,接着找出和这些用户相似的用户,向其推荐这些品牌。经过实验证明,7.09~7.15的热门品牌在7.16~8.15的购买数据中占了16/25,是很值得挖掘的部分。
2、购买该品牌的用户平均购买数,结合特定用户对该品牌的购买次数以及特定用户的购买力就是一个很好的特征。
3、被用户重复购买率
三、用户品牌对角度
1、关键:用户周期性购买的产品一般会再购买?周期是指月还是周还是天呢?目前测试过周,但没有单独和天、月进行单独的效果比较。
2、关键:用户最近点击、收藏、加进购物车的品牌,购买的可能性非常大。最近是指最近1周还是最近3天还是最近1天?点击和收藏、购物车应该区分开来,点击的时效性更强些。近期仅保留点击特征。
3、用户最近点击的时间越近,购买的可能性就越大?但最近购买的时间如何处理?最近点击但未购买的时间或许是个很好的指标,用最近购买时间减去最近点击时间作为指标,这只是相对关系,和最近点击时间结合起来才靠谱。近期保留最近点击时间特征。
4、如何利用历史购买行为呢?历史购买说明什么?说明用户喜欢这个品牌。可以得出品牌的平均被购买次数、用户的平均购买品牌次数、用户的重复购买率、品牌的重复购买率、用户对品牌的已买个数,然后得出用户再购买的概率。
特征抽取:3天点击、7天购买、15天点击、60天点击、最近点击时间、购买周数、购买天数、重复购买概率
特征处理:将远大于一般值的数值归于一个比一般值略大的值,并进行归一化。
样本选择:前2个月有行为第3个月有购买的作为正样本,第3个月无购买的作为负样本。
建模:使用Xlab的LR
调参:可以调的有正负样本比例、手动设置预测P的阈值来控制推荐数量
测试-提交-干杯
待分析:
1、有些品牌收藏量巨大,且月间收藏量相差甚多,购买非常少,被定义为搞活动的品牌。可以用不靠谱指数来排除这类用户,先算出每个品牌两个月收藏量差值的平方,设个阈值,如果平方大于这个阈值,且有某个月收藏量很大,不靠谱指数加1,如果不靠谱指数大等于2,就被认为不靠谱。推广开来,到底天猫哪些活动会导致异常数据?
2014.5.14
计划:
1、抽取如下这组特征进行测试:最近点击购买时间差、最近3天(或者7天)点击未购买量(或乘以转换率)、最近2个月点击权重、购买周数(或购买天数)、最近1个月收藏未购买量
2、添加重复购买概率特征
结论:
1、大部分有购买的用户在2个月购买的天数小等于4,剩下来一小部分不均分布在(5,60]天内,这样的话效果可能不如周数。
2、大部分用户平均每个月购买1件,60万左右的用户每个月购买1.5~4件。
3、没有最近3天的收藏、购物车量,对结果的影响也不是很大,因此可以去除这两个特征。去除最近购买时间,这个特征对结果影响也不是很大。
4、对购买与否影响甚微的特征应该剔除,这些特征可能起负面作用,剔除可以避免过拟合,提高程序效率。
提交了一发,成绩F1 4.62%,当天排名51,总排名83.
2014.5.15
计划:
1、找出昨天计划里的特征的最佳组合。
2、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1) ,ave_brand_ubuy是品牌平均每个月被单个用户购买的数量,user_repeat是用户历史重复购买率,ave_user_buy是用户每个月的平均单个品牌的购买数,user_have_buy是用户已经购买品牌的数量。如果最后取个阈值0.5,则预测数/Hit数/R:1946147/58581/2.98%,与购买天数超过2的交集size是202803,Hit数/P是16941/8.35%,差集size是1740000,Hit数/P是41640/2.39%。如果阈值1,则预测数/Hit数/R:1249862/38219/3.06%。如果阈值2,则预测数/Hit数/R:622844/20720/3.33%。
3、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) 。取两个月的话,如果最后取个阈值0.5,则预测数/Hit数/R:2249053/68432/3.04%,与购买天数超过2的交集size是198312,Hit数/P是17480/8.81%。如果阈值1,则预测数/Hit数/R:2037755/63807/3.131%。如果阈值2,则预测数/Hit数/R:1494019/50315/3.37%。取3个月的话,如果最后取个阈值0.5,则预测数/Hit数/R:3577465/87524/2.45%,阈值1,则预测数/Hit数/R:3183465/80797/2.54%,阈值2,则预测数/Hit数/R:2246277/62117/2.77%,阈值3,则预测数/Hit数/R:1585170/47180/2.98%
4、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值0.3,则预测数/Hit数/R:950891/35272/3.70%,阈值0.5,则预测数/Hit数/R:607315/24042/3.95%,阈值1,则预测数/Hit数/R:206493/9401/4.55%。
5、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值0.05,则预测数/Hit数/R:1322171/47757/3.61%,取阈值0.3,则预测数/Hit数/R:1249759/46002/3.68%,阈值0.5,则预测数/Hit数/R:1075977/41707/3.88%,阈值1,则预测数/Hit数/R:666371/29798/4.472%,阈值2,则预测数/Hit数/R:294733/16261/5.52%。
6、添加重复购买概率特征,公式:100*( ave_brand_ubuy + 1) * user_repeat * brand_repeat*(1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:1734816/56724/3.27%,取阈值2,则预测数/Hit数/R:1229788/46002/3.74%
7、添加重复购买概率特征,公式:100*( ave_brand_ubuy + 1) * user_repeat * brand_repeat*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:3623152/89494/2.47%,取阈值4.7,则预测数/Hit数/R:1210217/46085/3.81%
8、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * brand_repeat*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:3014189/74090/2.45%,取阈值1.7,则预测数/Hit数/R:1089693/33421/3.07%
9、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * brand_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值0.5,则预测数/Hit数/R:2909224/64979/2.45%
6、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * (1+user_repeat) *(1+ brand_repeat)*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值580,则预测数/Hit数/R:2949316/80871/2.74%,取阈值600,则预测数/Hit数/R:2068732/65083/3.15%,取阈值650,则预测数/Hit数/R:1180325/45229/3.83%
结论:
提交了一发,成绩F1 4.73%,当天排名45,最优排名67。离F1 5的目标又近了一步。1、重复购买概率是个适合我的特征体系,能带来效果提升的特征。
2014.5.16
提交了一发,成绩 F1 4.72%,当天名次 47,总排名67.
2014.5.17
待分析:
1、重复购买率是否会和周期性相抵消?因为周期性购买行为会导致重复购买率公式中的分母变大,导致值变小,负相关。对结果有什么大的影响吗?进一步思考这几个购买行为之间存在怎么样的相关影响作用?周期性强的也可能重复购买率高,而且这部分被重复购买的概率非常大。
2、重复购买率需和点击量结合吗?
结论:
1、购买周数比购买天数更有效的描述周期性购买行为,但推荐的数量往往较少。
判断各种特征组合的性能好不好,就看推荐同样个数的(u,b)对时他们F1值如何,推荐250万和200万看性能。
提交了一发,成绩 F1 4.71%,当天名次 50,总排名68.
2014.5.18
待分析:
1、公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),如何改进?加入品牌的被重复购买率brand_repeat,以及是否考虑融入时间?ave_brand_ubuy似乎应该使用天数而非数量作为衡量的指标。
2、是否可以通过subs_buy_repeat来进一步查看公式的效果?可以
3、怎么评估用户的购买周期以及品牌的被购买周期。筛选出购买周数超过2的(u,b)对,然后再聚集到u表和b表。
4、用准确度很高的LR融合重复购买率规则,效果如何呢?如果LR中有重复购买率规则的话,效果就不好。
计划:用3天时间改进重复购买率特征。
结论:
提交了一发,成绩F1 3.02%,当天排名258,总排名70。1、使用天数而非数量作为重复购买率中平均数的指标既能提高召回率也能提高转确率。
2、规则也有可取之处,因为可以用到全部的信息。
2014.5.19
计划:
1、用没有重复购买率的特征体系搞LR,然后融合重复购买率规则,试试效果。
2、调整点击的权重公式,试试效果。
3、好好观察样本,作一些分析
4、删除f_7_buy试试
5、试试f_3_c_nob、2个月点击权重、购买周数、p_brepeat、f_rclick_days。
待分析:
1、为什么有些f_bweeks为0,但它的p_brepeat不为0.因为这个用户有购买过其他品牌,且该品牌有被其他用户购买,所以会出现这样的情况。
结论:
1、融合效果不好,因为规则的大部分已经在LR的预测集中
2、删除f_7_buy不管在准确率还是召回率上效果都变差了。
提交了一发,成绩 F1 4.67 当天成绩65,最好成绩76.
2014.5.20
在数据如此多的情况下,尽量多观察,多思考,少跑程序!!需要适当调参,但多思考特征体系能带来更好的效果提升!!
待分析:
1、昨天的提交参数表中与p_brepeat相关的系数是负数,是因为式子?还是与特征体系不匹配?因为利用之前的式子得到的值相差的范围太广。
2、如何评价一个特征好坏?0)是否符合业务逻辑 1)粒度 2)预测100w、200w、300w时的准确率、Hit个数 3)观察正负样本,看是否符合预期的判断 4)LR训练出的参数
3、重复购买是否更多取决于品牌?是的。
4、click_sumweight的day/X的X对结果是否有影响,是的。
结论:
提交了一发,成绩 F1 4.78,当天排名54,最优成绩71。离5还差0.22。1、将式子改的大小波动小一些能够去除负数,但直观判断效果并不好,而且用规则来判断效果也不好。
2、如果重复购买率中的user_brepeat删除,那么各方面性能都下降。
2014.5.21
待分析:
1、去除4~15至6.15之间爆款的影响,效果是否能改善?是的,可以改善。
2、将最后半个月出现的用户找出来,单独使用一个模型向他们做推荐。没必要这样做,因为这些用户在下个月的购买行为非常少。
3、清除爆款行为必须注意:1)使用随机采样而非全部删除 2)最后一个月的数据必须保留 3)最后一个月出现的(u,b)如果在前面3个月出现就必须保留 4)那些购买对应的点击行为也必须处理。
第一次清理,手动清理,清理前:531422169,清理:18081(4600)+986(3600)+11313(27216)+25851(1300)+10391(1967)+13382(160)
+14244(2800)+14679(1000)+23250(8000)+5159(900)+8041(3500)=56031 ,清理后:531366138。清理前所有4.15~7.15的交互(u,b)对在八月份的Hit数是:454063,清理后是:454063
第二次清理,清理4.15~6.15的购买量超过6.16~8.15的购买量两倍的品牌,其中在6~8月出现的(u,b)对不清理,4.15~6.15进行随机采样至购买数量和6~8月差不多(原来是3:1),清理前:531366138,清理后:508118399。清理前Hit数是:454063,清理后Hit数是:447858。
第三次清理,清理4.15~8.08内所有摆设品牌(只点击未购买)的行为。清理前:508118399,清理后:507710289。清理前Hit数是:447858,清理后Hit数是:447858。
第四次清理,对6.16~7.15内爆款的行为采1/10的样(只在这个月出现的点击、购买行为),对7.16~7.31的爆款行为采1/10的样(只在这2周出现的点击、购买行为)。清理前:507710289,清理后:502032515,共清理5677774。
4、7.15~8.15的促销行为是否可以缩减?可以单独拿这部分作为推荐的源数据。
结论:
1、计算60天的click_sumweight,X=30效果不如X=15。
今天终于拍了T-shirt,选了黑绿色,颜色搭配很炫,前面设计得很好,就是后背的字会显得奇怪。
2014.5.22
待分析:
结论:1、点击相关的特征是否需要重新思考该如何取?点击未购买,改为购买后点击行为,15天时相差228万。
2、用户特征靠谱吗?
3、LR的结果拿去跑svd结果如何?Lr的结果中brand数很大
4、是否可以对没有购买行为的品牌的行为进行采样?如果最后半个月内有点击行为的(u,b)对Hit数多,就不能,不然就可以,今天就测试这个。如果点击行为是长期进行的,就不应该简单清除。
1、很多购买行为都是当天点击当天购买
2、用P大R小的LR推荐结果与P大R小的RF推荐结果取并集,能够提升成绩
3、将摆设品牌在最后15天有过点击行为的(u,b)对推荐之,Hit数极少,p只有0.35%,可以清除4.15~8.08的摆设品牌。
是否要放弃未交互行为?之所以有这个考虑,是因为交互行为都没做好。如果放弃的话,伟文就可以搞朴素贝叶斯或者随机森林,志鹏的工作不变。
只有努力远远不够,还必须运用智慧做到行事直达要害。
提交了一发,史上最吊成绩,F1 0.02%,当天排名425,最优排名85。
2014.5.23
待分析:
1、7月份的爆款要如何清洗?会有哪些影响?1)前两个月点击、购买,现在购买,用于形成样本标签。 2)现在点击、购买,后两个月购买。如果6.13、14有点击行为,然后6.16、17有购买行为,清洗会破坏这种因果关系吗?清洗至少应该保留在6.15之前以及7.15之后有的(u,b)对。试试这些爆款(u,b)对的Hit数。
2、品牌分类,算权重。
3、某些品牌一次性购买很多,是否可以随机采样?目前对我没有影响,因为关于购买的特征都是以天数而非次数为指标。
4、去掉购买力小(购买天数<=1)的用户搞LR。推荐数大幅度缩小,准确率没有提高很多。
5、为什么去除了那么多爆款,效果却没怎么提升?24交不融合的结果,就知道对结果是否有影响。
6、购买后的点击量效果不如未购买的点击量。
结论:
1、清洗不应该破坏点击-购买、购买-再购买的因果关系
提交了一发,成绩F1 5.07%,当天排名43,最优排名55。
终于突破了5,第一个月完美收官!
2014.5.24
计划:
1、毋须重新训练、预测,通过设个概率阈值来控制推荐个数,高效的做法!
2、用李阿姨的账号提交以下结果:7月份的爆款对应的不存在于4.15~6.15、7.16~8.15的行为,总的行为数5384439,(u,b)对2793001。
待分析:
1、点击权重公式要怎么调整?
1)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)) ,r=0.1,X=20,click_afterbuy,F1 = 4.463
2)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)) ,r=0.1,X=40,click_afterbuy,F1 = 4.26
3)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=40,click_afterbuy,F1 = 4.46
4)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=20,click_afterbuy,F1 = 4.483 (R:90749/2552557,P:3.47%)
5)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=30,click_afterbuy,R:87391/2524426,P:3.46%
6)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=15,click_afterbuy,R:92329/2546413,P:3.63%
7)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=10,click_afterbuy,R:93860/2553019,P:3.68%
8)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=5,click_afterbuy,R:92329/2508360,P:3.68%
9)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=9,click_afterbuy,R:93326/2510848,P:3.72%
10)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=9,click_afterbuy,Y:7.4,R:93286/2507133,P:3.72%
2、最近点击时间改成最近行为时间。或者改成最近未购买点击的时间。
3、去掉最近15天未购买点击量特征。
结论:
1、利用规则测试单特征,利用模型测试特征体系
2、在一定范围内,时间衰减的越厉害,预测效果越好,但权重会越来越小。2个月时最好的衰减函数是e^(-d/9)。
3、最近行为时间优于最近点击时间。
4、清除掉4.15~6.15的爆款以及摆设点击能带来0.1的成绩提升。
5、7月份的爆款对9月份的影响甚微。
再平凡的人,只要时时留意,也能找到机会做出一番成就。
这个比赛,就四个字--“剩者为王"!
提交了一发,成绩 F4.76%,当天排名72,最优排名58。
2014.5.25
计划:
1、用3~4天时间将6.15~7.15、7.15~8.01的爆款消除,首先需要判断7.15~8.01的爆款行为是否可以简单消除?是否可以去除与前后无因果关系的行为?
2、线上测试3个月时X=10,X=15,X=20,X=30的效果。
待分析:
1、目前最优特征组合式:r3d_Click_nob+click_sumweight+p_brepeat+rbehavior_days+bweeks,将r3d_Click_nob替换成r3d_Click_afterb效果是否更好?
2、最优的衰减系数应该要和其他点击量结合。
结论:
1、distinct一般比group by 要快一些。
2、最近3天购买后点击量与点击权重特征结合效果并不好。
3、没有最近3天点击特征,预测效果会变差。
李阿姨号提交了一发,7月份爆款中购买天数超过2的2478,购买次数超过3的4657取并集,进行推荐,准确率1.37%,Hit 82,说明7月份爆款对应的行为Hit了4000多是非常分散的,因此可以进行清洗,利大于弊。
自己的号提交了一发,将subt_sumweight错写成subs_sumweight,成绩只有4.27,当天排名130,总排名60。
2014.5.26
计划:
1、将字符串的日期改为离4-14的天数,5.01、09、13、15对应17、25、29、31,6月对应48、56、60、62,7月对应78、86、90、92,8月对应109、117、121、123。
待分析:
1、前两个月的爆款行为(只在这段时间出现的u,b)有270w左右,6.16~7.15的爆款行为(只在这段时间出现的u,b)有270w左右,这些都是刚出现,买完或点击完之后就消失无影,这部分该怎么界定?考虑1)用户活动时间 2)品牌热门时间 3)(u,b)行为时间长(结束 - 开始)
2、几百个特征是怎么来的?特征含义上说,应该是按照天或者周或者3天为单位所取得特征。实现上,肯定要用循环来完成。
结论:
1、最后15天日点击量加现在的特征,效果能够得到提升。
2、大清理后效果也能提升。
正确提交一发,成绩4.81,当天排名73,最优排名61。
2014.5.27
计划:
2、将字符串的日期改为离4-14的天数,5.01、09、13、15对应17、25、29、31,6月对应48、56、60、62,7月对应78、86、90、92,8月对应109、117、121、123。
待分析:
1、将特征分开跑LR,然后再融合,结果如何?融合是结果取并集还是概率相加,取概率大者?分开跑LR后再将得到的结果用于LR,结果如何?
2、重新测试Value特征,用rule测单特征效果,再用LR测单特征效果,再用LR测特征体系。
1)W = [1,10,5,5],取阈值110,Hit数/预测数:95053/2414406,P=3.94
2)W = [1,10,4,4],取阈值109,Hit数/预测数:94257/2385575,P=3.95
3)W = [1,10,2,2],取阈值108,Hit数/预测数:95876/2402052,P=3.99
4)W = [1,10,1,1],取阈值107,Hit数/预测数:95580/2385359,P=4.01
结论:
1、单特征分开跑,然后取并集,效果并不理想。
2、大清理后效果也能提升。
3、各个特征单独跑LR,再将概率作为LR的输入进行LR,效果可以提升。
2014.5.28
待分析:
1、用LR跑r3d_Click+r60d_Click+r_behavior、r3d_Click、r60d_Click、repeat、week、values、,然后再作为LR的输入。
2、把被购买量或者被购买用户数最多的当作爆款热销日,并把它离预测集开始那天的时间数作为品牌的一个特征,可以吗?对于全局热门品牌恐怕不行。
结论:
1、单个特征跑LR,p_repeat的效果不如r60d_click_sumweight,这个公式应该改进。
2、使用两次LR,可以改善效果。
3、如果出现预测数很少,可能是哪里写错了,比如样本中有截断长尾,但预测集中没有,导致预测集的数据归一化之后值偏小,从而导致最终预测数变少。
又发生错误了,处理特征值时,样本和预测集的不一样
2014.5.29
待分析:
结论:1、未购买的点击和购买后点击权重应当不同?
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=18,click_afterbuy,R:96428/2607381,P:3.70%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=10,click_afterbuy,R:95837/2584588,P:3.71%
2、购买后点击是否应该再细分?比如只是购买后来确认收货、评价
将购买后再点击的(u,b)直接推荐,Hit数/推荐数:51292/1698440,P=3.02%,推荐点击数超过4的,Hit数/推荐数:25047/526721,P=4.8%
将购买2天后再点击的(u,b)直接推荐,Hit数/推荐数:40567/1217937,P=3.33%,购买3天,Hit数/推荐数:36237/1018841,P=3.66%
3、是否真需要60天的点击权重?试试30天的
将购买后再点击的(u,b)直接推荐,Hit数/推荐数:24828/571205,P=3.02%
将过去90天购买2天后且在最近1个月再点击的(u,b)直接推荐,Hit数/推荐数:42422/1007673,P=4.21%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,10,X=18,click_afterbuy,R:99019/2675340,P:3.70%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,8,10,X=18,click_afterbuy,R:93893/2619451,P: 3.58%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,10,X=18,click_afterbuy,R:98260/2554041,P:3.85%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,>=10,X=18,click_afterbuy,R:97727/2516505,P:3.89%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(2+a_b)*(2+a_u)) ,r=1,5,>=10,X=18,click_afterbuy,R:97575/2516505,P:3.88%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b)) ,r=1,5,>=10,X=18,click_afterbuy,R:97494/2516505,P:3.87%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b) *f_cdays,r=1,5,>=10,X=18,click_afterbuy,R:98595/2516505,P:3.92%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b)(1+a_u) *f_cdays,r=1,5,>=10,X=18,click_afterbuy,R:99596/2516505,P:3.96%
1、将点击分为未购买过的点击、购买前的点击、购买后的点击
2014.5.31
计划:
从两个方面入手,一方面是最后1个月点击过的(u,b),这部分Hit了31万,占了总的有行为购买量的3/4,另一方面是最后3个月已经购买过的(u,b),Hit了12w,占总的有行为购买量的1/4,简单地说,一方面是从点击入手,一方面是从购买入手。先搞第一方面,等伟文有点感觉让他搞第二方面。
待分析:
1、试试将月平均购买量减去最后半个月的购买量作为特征(未尝试)
2、试试将购买后的点击量作为特征
3、试试将购买周数加进sum_weight中
4、repeat_nom有预测数/Hit数/P:2068732/65083/3.15,但实际上推荐购买次数超过2次的推荐有推荐数/Hit数/P:1708288/57867/3.39%(P),效果差不多,这说明我一直认为是关键特征的只是个普通特征,T_T。
5、试试购买周数和repeat_nom作为特征
6、训练集取2个月,预测集是否可以取3个月?可以,只要3个月时的每个特征的最大值与2个月时想等就行,也就说说要Cut。取成3个月后成绩比较理想。
7、试试r3d_click_nob+r30d_click_nob+r30d_click_sumweight。最后1个月的点击可以分成几类?
1)本月购买前的点击
2)本月购买后的点击,是查看卖家是否发货还是回味下品牌?
3)未购买过的点击
4)前几个月购买后的点击。之前的点击/购买数可以结合起来考虑吗?逻辑上可以,数据上是否也如此?
重要性与序号成正比。
8、如何挖掘不热门的点击行为(点击次数<5,46578046,Hit:183236)?先要了解这部分数据。1)大部分点击小于5次,天数就1天。2)和前2个月的交互行为多吗?不多。46578046-42459047=4118999,Hit:47300,P:1.15%。
结论:
1、没有r3d_nob特征不行(在5个特征的情况下)。
2、将购买周数加进sum_weight中能使效果提升。
3、购买再购买方面挖掘的太少了。
4、利用sumweight得到的推荐(u,b)对有9/10都是点击天数超过2的,其实都算是热门对,7/10是点击排前5点击超过8。大概有1.1万是点击天数为1的。
5、单click_sum的效果要比添加进其他特征的效果要好。
2014.6.1
待分析:
1、每次都测试下Hit的(u,b)是在测试集的前半个月,还是后半个月。click_sum的预测集中在前半个月。
2、只取7.16~8.01的作为样本数据,结果如何?如果有全局性特征的话,效果差一点,和取全部样本结果不会差很多。
3、我取负样本的方式也不对吧?是对的。
结论:
1、Click_sum和repeat_nom的预测集交集只有43万(各252万),Hit的交集只有3万(10万,7万),说明交集不是很大,但repeat_nom不是个好特征。
2、Click_sum的Hit主要集中在前半个月。
3、前3个月的购买周数超过2的(u,b)(280810)中的b在8.01~8.15的被购买对数(1270727)是1183886,(u,b)对的被购买对数是11602;前3个月的购买周数超过2的(u,b)(280810)中的b(11300)在热门品牌(1857)中Hit是1850,(u,b)对的Hit是231814。说明热门品牌一般都会被反复购买。
4、那些很热门的品牌,即使是很早以前有过行为,后来没行为(最近一个月不点击),也可能购买。所以爆款清理并不恰当,它会导致线下成绩变好,但线上成绩变差。换个角度看,很久之前点击或者购买了的(u,b)对,几乎都是热门的品牌(2000个)。
5、最后一个月购买再购买的几乎都是热门品牌(品牌被购买cnt>=1000,64804(交集)/76314(最后一月购买)推荐1958766个,cnt>=3000,54049/76314,推荐1535821个)。repeat_nom与最后一个月购买的交集大概有6万,占了3/4。
6、click_sum的预测数中有3万(3/10)是最后半个月点击少于5的。
2014.6.2
计划:
1、爆款行为要重新清理,必须倒档。利用聚类分出爆款。
清理((45+56)>(67+78)*5 or 45 > 5678 or 56 >4678 or 67 > 4578),随机采样前3个月行为,并保证购买周数>2的行为不被删除。
清理前:531422169 清理后:524019070 清理7403090
2、最后一个月购买再购买的占7万,之前2个月购买再购买的占6万,这6万几乎都是热门品牌,具体性质如何,应该结合聚类和之前的品牌每月购买情况分析。让伟文改进repeat_nom,将ave_user_cnt,ave_brand_cnt等添加到Hit的(u,b)集合中,看是否合理。
待分析:
1、尝试特征:
1)最后一个月购买是否大等于2
2)购买天数而非购买周数
3)1个月的点击天数是否大等于4
4)2个月的点击天数是否大等于5
5)2个月的点击次数是否大等于25且排名前10
6)购买次数是否大等于3且排名前5
2、尝试特征:最后3天点击、最后15天点击、r30d_sumweight、最近点击时间、点击天数、是否点击次数>=1&<=4&rclick<=10、用户是否土豪、品牌是否热门、用户的从众系数
结论:
1、29360在8月份的购买数是18675(441129,P=4.23),811是8830(1263449)。利用LR跑出来的29360Hit4527,811Hit1548。可以在模型融合的时候加进很优质的品牌对应的(u,b)对。
2、how_tuhao并不科学,因为用户可能会为了买一个品牌,而看很多其他的品牌,我们不能认为这就不够豪爽,而看多少其他的品牌则要取决于品牌,是否点击小于5并在最近20天内?
3、从众系数和品牌热门结合起来并不能优化sum_weight
4、点击未购买的量作为特征还不如点击量,准确率不如点击且购买量
5、最近30天点击天数可以结合之前的5个特征进行预测。比如取最后1个月点击是否大等于4,最后2个月点击是否大等于5,最后3个月点击是否大等于6。还可以添加,诸如点击是否在用户的排名前5中。
6、对于冷门(u,b),最近点击时间是比较好的特征。
7、最后2个月的repeat_nom效果比最后3个月的repeat_nom的效果好。
8、没有购买过品牌的用户购买一个品牌通常点击都非常多(b=0,c>=5,24016/1532581,P=1.57%,b=0,c<=4,44972/19920591,P=0.2%)。
9、利用5个特征得到的热门推荐结果Hit数/推荐数/P:103199/2547324/4.05%,与最后一个月c_cnt>=5的交集是9.4w,与前3个月有购买行为的交集是66525,与前2个月购买行为的交集是20807。
10、60天的sumweight的Hit数是98832(2547324),30天的sumweight的Hit数是98580,差不多,前者会稍微好一点。
11、对于热门样本,负样本应该取正样本的15~200倍,最合适的是?
2014.6.3
待分析:
1、前2个月购买后第4个月购买的有什么特征?比如是否多分布在56月?几乎都是热门品牌,那么用户有什么特征呢?是否从众率都很高?
2、是否将前2个月的Hit的9万也加加进冷门数据中,然后分析和热门样本Hit的交集多大?
结论:
1、对于热门样本,预测中的都是最后一个月13万中的,而前2个月中的9万却只中几千。现在的模型适用于挖掘最近的热门行为。
2、r30d_sumweight(Hit96635)的效果比r60d_sumweight(Hit98832)差了2000多,F差了0.087。
3、可以将前2个月的Hit的9万加加进冷门数据中,和热门样本Hit的交集非常小,预测中的基本上还是最后一个月的行为。
2014.6.4
待分析:
1、将购买次数乘进repeat_nom结果如何?
2、Value加进冷门样本的特征中进行测试。
结论:
1、LR将所有特征统一处理,随机森林则是取若干个特征进行训练,然后投票,相当于多个取特征子集的模型的融合。前者倾向于热门行为,后者则会平均。因此,LR应该用于描述局部或者全局中的一类,而非混合,后者则既可以混合也可以考虑全局。
2、Value能够提升LR对冷门样本的预测效果。
3、将b_weeks加进repeat能提升repeat的效果。
提交了一发,成绩5.23%,当天排名47,总排名58。
2014.6.5
小总结下:
1、用2个月做训练集,3个月做预测集,效果比2:2要好。
2、对于热门数据,负样本比例在[5,20]范围内升高,效果能够提升
3、gbrt模型的效果比其他的都好,只是运行时间很慢
4、将bweeks加进p_repeat,单特征效果能够提高,如何和有bweeks的特征体系放在一起,则效果提升甚微。单特征时,r60d_repeat效果比r90d_repeat好,作为lr输入时r90d_repeat效果好。
5、清洗那些只点击不被购买的品牌能带来成绩的提升。
6、目前可以只用全部样本搞LR,测特征,然后最后将得到的特征体系去跑一次冷门样本的LR,进行融合。
7、不同模型,同一个特征体系,得到的预测结果基本上都是同一分布。LR、RF、GBRT模型跑出来的几乎都是最后一个月热门(u,b)对占9w,然后最后3个月的购买占6~7w,前2个月的购买占2w左右。
待分析:
1、测试下到底是所有样本一起搞LR效果好,还是分成2部分再分别搞LR效果好(一起搞时F1:4.563,一部分:87271/150w/5.81%,另一部分:28963/104w/2.78%(P);分开时F1:4.53,一部分:2.5w/70w/3.58%P,一部分:9.2w/190w/4.89%P)。还是在一起搞的好,简单高效效果好。
是否可以将一起搞的LR融合冷门的LR?效果比较好。
2、rf和gbrt是否越多特征越好?有7个特征时,rf的效果比lr效果好0.3。增加一个点击天数特征,rf的效果提高0.05,但再增加4~11天以及12~30天的特征,效果就下降0.07。证明,特征不是越多越好,而要看是否是一个好的特征体系。
3、特征分段、离散化、等频离散化。
4、训练集和测试集的范围不一样,对结果有影响吗?
2014.6.6
先熟悉随机森林,分析预测结果,然后继续分析数据,进行特征工程。
目标:10天内到5.6。
待分析:
1、RF的各个参数是什么含义?对结果有怎么样的影响?负样本是正样本5倍左右,8、9个特征个选5个建30棵这样的效果几乎是最好的。
2014.6.7
待分析:
1、repeat_xweek和repeat_r30c结合做为rf的输入会如何?当repeat_r30c中只有最后一个月的点击才有值时又当如何?
2、为什么前3个月有购买行为的ub对repeat_xweek为空?因为repeat_xweek中的week表是之前经过错误清洗的t_lr_big_data所产生的,需要重新生成。
3、是否需要添加前2个月购买再购买的公式?
结论:
1、将最后30天内的点击量指数加进train_repeat_week后成train_repeat_week_r30c,Hit 8.4w,其中有7.2w是最后一个月购买的(总的7.8w),几乎全中。如果没加,Hit8w左右,最后一个月Hit 5.7w,前2个月Hit2.2w。这样的话,这其实就是两个不同的特征了,前者和之前的特征体系结合非常适合挖掘最后一个月的热门ub对,后者适用于挖掘冷门样本的ub对。现在subs_repeat比train_repeat多Hit2000,而分布和之前train_repeat_week_r30c的分布相同。
2、repeat_xweek和repeat_r30c结合做为rf的特征体系,结果和只有repeat_xweek的相差无几。单repeat_r30c结果比repeat_xweek差。
3、现在rf得到的结果和Golden Rule(29360,购买天数>=2)结合能提高0.1。
2014.6.8
最痛苦的事是写了很久的代码,既然有致命的错误,导致几天的功夫全废;最快乐的事也是写了错误的代码,因为被你排除的想法突然又变成了希望。
待分析:
1、多加一些用户、品牌的特征,效果会如何?
2、加排名特征、前2个月的购买再购买趋势,效果如何?
3、是否可以统计前几个月用户的月平均购买数、天数,然后减去最近半个月的作为特征?
4、
结论:
1、加排名特征、前2个月的购买再购买趋势,效果相差不多。
2、加一些用户、品牌的特征,诸如最后半个月的点击、购买,最后2个月的总购买等能带来效果的提升,主要是预测中了冷门的点击对。
3、在RF中sum_weight似乎很经常拿来当作根,是说明这个特征权重很大吗?是的。
2014.6.9
能否利用现有的模型训练得到用户对某个品牌的再购买概率,然后把这作为用户对品牌的偏好矩阵,这样可以用到非常多的信息,但可行吗?再购买概率是根据前4个月的行为得到的在8.16~9.15的再购买概率,而偏好矩阵是前4个月用户对品牌的喜好程度,输入是一样的,输出不太一样,前者会受时间影响,特别是最后一个月行为的影响,后者则是全局性的,但是对某个品牌的喜好不也会随着时间推移吗?不一定,如果会推移,则可行,如果不会推移,则不可行。
待分析:
1、是否可以添加用户对品牌的厌恶度?是不是对品牌的喜好程度不高,厌恶度就高?不一定吧。
2、应该把用点击转换率加进特征体系中吗?
3、给最后半个月刚出现的用户最近热门品牌,会怎么样?预测3000w,才中1.2w。如果是点击的就推荐,预测171w,中1.1w。
4、GBRT中当学习速率变小时,树的数量是不是要多一些?
结论:
提交了一发,19个特征,GBRT线下5.361,线上会是多少呢?1、解决gbrt过拟合倒是可以用增加样本数量的方法。(导致过拟合的原因:树太高、样本太少,冗余的特征太多?)
2014.4.24
修改Logistic的特征为16个,即近3天的四个行为、近一周的四个行为、近半月的四个行为、近一月的两个行为,近两月的两个行为
2014.4.25
尝试使用ODPS平台,学习SQL,完成预处理的程序,尝试XLab的LR。交了demo,成绩是0.91%,排名是143.
2014.4.26
利用XLab收集LR的特征、样本,完成了预测,并提交了一发,成绩是3.56%,排名43。
2014.4.27
提取了最后几段时间的购买数。提取最后一周的购买行为,与26号所做的LR的数据取并集,成绩是3.79%,排名63。
2014.4.28
领悟:能用程序完成的就不要去手动操作、LR的特征(自变量)间是独立的且与因变量是单向关系
技巧:计算Precison和Recall时为每个结果集添加ID=1的列,然后Join起来合并到一张表,实现了四则运算。
重新设计了LR的14个特征,改成倒1~3,4~10,11~25,26~40,41~60的特征,样本仍然一样,如果成绩不理想,将特征改成倒1~7,8~14,15~21,22~28,29~60。
成绩是3.91%,排名64。
计划:考虑有行为的天数作为特征,倒1~7、8~14、15~21天的点击天数、最后一个月的购买天数,倒数第二个月的购买天数。这样的特征和之前的完全不同性质,之前是考虑行为数量,现在是有行为天数,还能考虑什么特征呢?用户的购买力、商品的畅销程度?如果考虑后两者的话,恐怕就要考虑将各个特征的值归一化一下,不然会感觉会有莫名的影响?有什么影响呢?
2014.4.29
很好的一篇分析Logistic的文章:Here
迭代次数、是否逐步回归对结果都存在影响,但影响如何呢?参数收敛后迭代次数无影响,逐步回归似乎能使参数更加合理。因此,每次训练都应该进行对照逐步回归与否的参数,依照经验判断哪个更为合理。将有行为的天数作为一个特征加入到LR中,并融合两个规则(c8r5以及c5),推荐数量几乎是昨天的2倍,达到35010247,成绩4.16%,排名52.
c写了first mr。q进驻lab,工作three h。说好了:成绩破5是一个里程碑,到时候要去找一些乐子。
2014.4.30
明天将所有SQL代码写到一个脚本文件里,哈哈,又长又臭的代码,但解放了双手,也更加高效。
XLab中的sql返回unicoe类型,然后用python就可以进行一些有用的操作,比如统计正样本数量。
存在一个地方可以改进:
1、利用前3个月做特征,第4个月做标签,接着后3个月做特征,进行预测;
2、还有最后3天的热销产品也需要考虑,那如何进行推荐呢?(需要志鹏分析);
3、关于天数的特征,可以这样改进,点击的天数,购买的天数,点击的周数,购买的周数;是否需要倒数第二个月的特征?影响大吗?(可以做个实验,就这些特征试试看);
4、尝试将特征分类,一类是局部特征,一类是全局特征
结论:负样本比例较大时,推荐个数会变少。成绩4.05,排名64(从52),因为负样本增加了正样本的3倍,推荐比之前少了70万,但有40万在融合的规则中,30万中只Hit了1万,说明29预测的有一部分在融合的规则中。
信条:先将LR搞到极致,出现天花板之后再来研究其他模型。
疑问:两个特征的值范围相差很多,对结果影响大吗?理解透公式或许会得到答案。哑变量。
c写ICF失败,未能提交;q 4hour,提醒T-shirt用淘宝号
2014.5.1
order by 后面必须limit 行数如 order by click_num limit 1000。limit后面可以写个很大的数,省去计算表的行数,但效率下降。
通过直觉和实验设计有业务含义的特征体系。
清楚异常数据(点击很大无购买的爬虫、刷信誉)(爬虫:点击量超过10000,购买量少于6,点击的品牌多于150)
(571885341-(4551226)>547811231-(2720995)>547361310-(爬虫)>545805374
发现有趣现象:点击量很多但没有购买的大部分是几乎每天都有一部分点击量的,并且点击的品牌都是很多的
复杂现象:爬虫用户有时也购物;那么多爬虫是同一个商家的水军吗?
结论:归一化的准确度可能比标准化高,但推荐的少,召回率低;7天特征推荐的数量高于3天的,但准确率可能略低于3天的;负样本比例高时,推荐的少些,但准确度高些(线上线下都测试过)
伟文交了ItemCf结果,成绩0.82%,排名320,最优排名78。zp还是没有实质性成果。
2014.5.2
如果改成前3月样本,第4月标签,后3月训练,这样样本集和训练集都变大了,推荐的个数会变多,召回率会变高,成绩会比4.16%好。
测试时,按照5.1的结论,只需测样本比例6.5,归一化的准确和召回率就可以知道整个特征体系的成绩。
爬虫清理:点击很多,但不购买,且针对的品牌比较少,这是爬虫吗?是,用户对品牌数的平均点击数超过50(click_num >= click_brand*50),click_num多于1000,且不购买的即是爬虫(合计点击量8365880)。或者,日点击平均超过50的(click_num >= click_days * 50)且点击数在1000以上(合计点击量13260239),但是都不购买的即是爬虫。以上合计14383066。它们之间交集如此大,更说明它们是爬虫。(一共清洗1135个用户,53个品牌)
待分析:
1、最近购买时间、爆款、抢购、用户的点击转化购买率;
2、06-09~06-15内购买量和点击量大的是抢购还是热销产品;
3、用户的平均点击量、购买量;
4、ItemCF利用最后的购买情况进行计算推荐系数;
5、3天内的购买量是否适合作为特征?(需要,这样会提高准确率,模型会自动为它的系数赋上负数,表示购买量越高,就不太可能买,不仅考虑什么情况下会买,还要考虑什么情况不会买,双向思考)
6、最后一周有点击日平均点击数>=3.0的有1916053
结论:最后3天的四个特征做预测准确率最高;2个月内点击的周数准确率要比2个月内购买的周数低,且二者结合准确率也不如购买周数高;局部特征靠点击、收藏夹、购物车,全局特征靠购买。
提交:最后半个月点击量超过8排名前5,F1:3.21,当天排名154,总排名84
2014.5.3
待分析:
1、已经求得所有用户的点击购买转化率,如何利用到特征中呢?转化率是指用户总的还是用户针对某个品牌的?
2、需要分出最后三天已点击但还没购买的点击数吗?可以折中下,用点击数减去购买数。
3、前几个月的点击量怎么利用?直接作为特征还是分为(转化为购买的,未转化的)作为特征?
目前比较好的特征:1、2个月内购买的周数 2、2个月内购买的天数 3、半个月内的点击数 4、3天内4个特征
结论:以上的7个特征组合具有非常高的准确率(14.7%),今天交的推荐数过少,R低,如果推荐数增加,R高,成绩就会变好。
交了一发7个特征(3天的4个行为,15天点击,3个月内购买天数、月数)的LR,成绩1.71%,当天排名251,全部排名88。
需要设计一个比价好的全局特征,然后使得样本数据增多,就有办法提高成绩。
zq没来实验室
2014.5.4
尝试将转化率与点击量相乘作为特征、将最近购买、点击时间作为特征。
待分析:
1、拿八月的预测前面的,8月买了的,前面无交互的作为正样本,八月买了的,前面有交互的作为负样本
2、新老用户是否对结果有影响?是,新用户倾向于购买热门产品,因为对网站不熟悉,老用户则会考虑冷门产品。
3、是否需要最近购买时间?
结论:最近点击、最近购买时间、2个月点击权重(U_tran*C_cnt+B_Tran*C_cnt)是很好的特征。
伟文提交了一发,因为把列名brand写成brand_id所以没有成绩,总排名102.
2014.5.5
近期要研究几篇外国的论文,找找思路。
1、An Exploration of Improving CollaborativeRecommender Systems via User-Item Subgroups
2、KDD CUP类文章
尝试利用聚类算法来寻找隐特征。
算者的提示2所思:
1、所选的特征应是一个覆盖面广,能够互补的体系,这样容易优化、鲁棒性强。
2、优化时应该是粒度小、贡献小的合并为粒度大、贡献大的特征。
3、不同的算法需要不同的特征体系,正如图中的正方形就适合用矩形切分,三角形就要用矩形切分,但是算法和正方形、三角形有毛线关系啊?
zp开始看各种博客、论文、PPT,开始进入状态,但还没实质性的作为。
提交了一发LR加几个规则,F1 4.52%(P 4.57 R 4.45 Hit 12598),当天排名44,总排名64.把负样本比例调高,准确率更高,成绩可能更好。
2014.5.6
决定拜读大量KDDCUP的论文。
考虑将点击相关的3个特征合并,作为点击权重,但是效果并不理想。
待分析:
结论:目前同样的特征,SVM效果不如LR1、按照算者的提示,特征往大粒度融合效果更好,为什么我的特征融合效果不理想?提示解读的问题?融合的问题?
2、缺失值简单填0是否过于简单?
3、分析下新用户的特征,也就是在哪段内时间内出现的算新用户?新用户有多少?
4、分析热销产品和爆款的特征,爆款有多少?对结果会有什么直观的影响?
伟文提交了一发,ICF,F1 2.08%,当天排名276,总排名72。
2014.5.7
通过提高准确度的方式,观察LR的参数变化,或许可以洞悉特征对结果的影响。
待分析:
1、之前一直考虑购买,现在考虑不购买,两个方向。
2、负样本取行为比较多的。凭推断,这会导致准确率高,但召回率变低,因为能更好的识别行为比较多的该不该购买。
3、尝试将第一季的必杀技Value当成一个feature。
4、归一化后加上1。或者将值分等级。分级不科学(结果),因为有长尾的出现。或者将长尾直接截断,效果不错(结果)。
5、用户加上活跃度特征(购买商品数、天数?)、商品加上流行度特征(购买用户数、天数?)。
6、慎重考虑生命周期、趋势。
结论:第一季的必杀技并不适合添加进我当前的LR特征体系;LR参数训练需迭代1200次才能收敛
反思:不要再交经过融合的结果,那样并不能验证某些结论,对比赛的帮助不大。
提交了一发,F1 4.49 当天排名56,总排名80.
2014.5.8
计划:1、测试截断长尾效果 。2、LR结果当特征,Values当另一个特征,跑一次LR。3、做生命周期分析。
结论:长尾截断之后预测的数量变多,R提高,P也不会降很多,F1有所提高;Values粒度太大不适合我的特征体系;正样本复制多倍,并不能改善效果。
待分析:
1、不使用负样本随机采样的方式,用正样本复制的方式采样,试试效果。
2、人的购买力有限,设置Top12或者Top15提交(实际上很少有用户购买超过15甚至12)。
实验室讨论:1、特征共享 2、观察结果 3、涛搞随机森林
提交了纯LR,F1 4.54%,当天排名52,总排名81.
2014.5.9
看内部赛选手的帖子:一个新手SOLOADD大赛(内部赛)的心得,学习到如下:1、按照:问题分析-特征抽取-特征处理-样本选-建模-调参-测试-提交进行开发 2、特征处理可以用归一化和分箱的操作,Xlab的PERCENT_RANK函数可以考虑使用 3、充分利用XLab。
计划:1、先将昨天的特征和参数在线下跑跑看看线上线下相差多大。 2、按照测试文档的逆序测几个模型,看是否和之前的测试结果成正比。 3、 重新测试Values特征、点击权重特征、二次LR
结论:
1、30天内收藏但未购买的特征效果不够好;
2、线下的准确度有%6.3,提交时的预测数明显多于线下测试时的预测数,所以线上的准确度是明显偏低了,如果控制线上的准确度到%6这样,成绩能比现在好很多。或者将线下的准确率像召回率靠拢,看F1是多少,这和线上的F1就是误差,但此时的R应该用Hit数除以线上的283万而非线下的254万,最后,线下仍比线上好上0.5左右.
3、LRde pre hen gao,cishi r bijiao di ,dan hui daozhi F1 ye gen zhe di,suo yi wei le tigao F1,zhineng zengjia yuceshu ,ranhou P jiju xiajiang,R zengjia yidiandian.zhe shiji shang zai wurong LR.buyinggai yi xisheng P weidaijia tigao F1,er yinggai xiangzhe tigao R,ye jiushi shuo zai P baochi bubian de qingkuang xia tongguo tigao yuceshu lai tigao R.
4、LR大部分的Hit数在7.16~8.01,这部分Hit数占了7/10。
5、是什么导致了提交的预测数多了90左右万(点击权重、最近时间、周数、天数90天)。
6、7倍正样本总能带来些许F1的提升。
惊天大Bug:原来我在计算最后一个月的购买集时将'-'写成了'_',导致只包括了8月份的数字,结果整整10天以来的成绩都是2点多,都是错误的答案,真是坑爹坑大了。然后发现我的队友也一直错了,他始终认为数据集的日期是05-01到08-31。神坑队伍。这样,从开始到现在做的特征选取工作都变得不靠谱,尤其是一些我觉得是非常好的特征,在这之前的几天内被证实效果一般,当时给我造成相当大的打击,现在突然又有了希望,但恐怕都得重新测试,痛并快乐着。
提交了一发只利用最后两个月的情况,成绩是4.50,当天排名51,总排名85
2014.5.10
规定:每种特征组合都必须先测6.5倍正样本,5倍正样本,以及预测数接近250万的倍数,大可不必去测其他的倍数,因为如果没有根据前3个判断特征组合优劣能力的话,那还参加毛比赛。
待分析:
1、最后30天收藏但未买作为特征到底怎么样?
2、洪涛提出一种很有意思的想法:从四个月的行为记录中取特征,拿第四个月的购买行为判定样本,然后将训练得到的参数用于之前的特征,即可获得推荐列表。这样的逻辑是:行为没有时序性、第四个月是第四第五个月的子集、四个月的行为特征与第四个月的关系也就是四个月的行为特征与第五个月的关系。遇到的问题:正负样本怎么判定?肯定是第四个月购买是正,不购买是负。这样就是结果去预测结果。这样的尝试其实是做无用功,咳。反思自己的做法,先用LR取得前3个月的行为特征与最后1个月购买与否的关系,然后用后3个月的行为特征去预测8.16到9.15之间的购买行为。背后的逻辑是:第4个月购买与前3个月的行为特征之间的关系是不变的。
3、考虑最近一周的人均访问时间、收藏指数、点击转换率、购买趋势结合起来的权重
计划:
1、修改提交模块的代码,使得其和测试模块的代码完全分开
2、尝试添加用户豪爽度和品牌热度特征
3、尝试用户活跃度和品牌流行度特征
结论:
1、用户豪爽度、品牌热度适合我的特征体系,能够改善预测效果。为什么?
2、用户活跃度、品牌流行度并不适合我的特征体系。为什么?
提交一发,成绩4.30%,当日排名80,总排名89
2014.5.11
待分析:
1、线下的成绩为什么比线上高那么多?因为我拿第4个月的数据做验证集,但我的how_tuhao、how_hot特征是把4个月的行为数据都放进去计算。
2、品牌的特征是否适合加进LR的特征体系?
3、之前简单地将特征塞进特征体系,然后通过结果判断效果,是否可行?难道不需要单独测下该特征的效果吗?
4、3天3个行为应该设怎么样的权重?买了再买的可能性大吗?不大。收藏了再买的可能性大吗?比买了再买的可能性大。1:2:2。可以利用LR确认下。
目前取得最优成绩的一组特征:3天内的4个行为+15天未购买点击量*好爽度+2个月购买天数、周数+最近购买时间+最近点击时间+2个月点击权重。尝试3天3个行为作为一个特征+所有点击一个特征+2个月购买天数+最近购买时间+最近点击时间=5个特征。
结论:
提交一发,成绩4.34%,当日排名88,总排名891、当负样本比例较小,Intercept却很大时,通常成绩是比较好的。
2、有最近购买时间的效果略好于无时,5倍和预测实际购买接近时效果都好,但没有相差很多。无加上15天的点击量,效果就得到很大提升,恐怕又是过拟合。
2014.5.13
问题分析:给出4.15~8.15的行为数据,预测哪些用户在8.16~9.15会购买,购买什么物品?实质上是购买预测问题,而不是推荐问题。而这可以从以下三个方面进行分析:
一、用户角度
1、点击转换率高的用户有一定量的点击行为就可能购买。转换率的确切定义?点击且购买的品牌数/点击的品牌数。一定量是指?
2、收藏和购物车转换率
3、新注册用户(无法分析)
4、用户购买力,购买越多,购买力越强,要么是高富帅,要么是购物狂
5、重复购买品牌率
二、品牌角度
1、品牌热度,被购买的人数越多,越热门。利用单独的一个模型来向用户推荐最后一周热门的产品,思路是找出最后一段时间才开始热门的产品,然后找出那段时间购买过这些品牌的用户,接着找出和这些用户相似的用户,向其推荐这些品牌。经过实验证明,7.09~7.15的热门品牌在7.16~8.15的购买数据中占了16/25,是很值得挖掘的部分。
2、购买该品牌的用户平均购买数,结合特定用户对该品牌的购买次数以及特定用户的购买力就是一个很好的特征。
3、被用户重复购买率
三、用户品牌对角度
1、关键:用户周期性购买的产品一般会再购买?周期是指月还是周还是天呢?目前测试过周,但没有单独和天、月进行单独的效果比较。
2、关键:用户最近点击、收藏、加进购物车的品牌,购买的可能性非常大。最近是指最近1周还是最近3天还是最近1天?点击和收藏、购物车应该区分开来,点击的时效性更强些。近期仅保留点击特征。
3、用户最近点击的时间越近,购买的可能性就越大?但最近购买的时间如何处理?最近点击但未购买的时间或许是个很好的指标,用最近购买时间减去最近点击时间作为指标,这只是相对关系,和最近点击时间结合起来才靠谱。近期保留最近点击时间特征。
4、如何利用历史购买行为呢?历史购买说明什么?说明用户喜欢这个品牌。可以得出品牌的平均被购买次数、用户的平均购买品牌次数、用户的重复购买率、品牌的重复购买率、用户对品牌的已买个数,然后得出用户再购买的概率。
特征抽取:3天点击、7天购买、15天点击、60天点击、最近点击时间、购买周数、购买天数、重复购买概率
特征处理:将远大于一般值的数值归于一个比一般值略大的值,并进行归一化。
样本选择:前2个月有行为第3个月有购买的作为正样本,第3个月无购买的作为负样本。
建模:使用Xlab的LR
调参:可以调的有正负样本比例、手动设置预测P的阈值来控制推荐数量
测试-提交-干杯
待分析:
1、有些品牌收藏量巨大,且月间收藏量相差甚多,购买非常少,被定义为搞活动的品牌。可以用不靠谱指数来排除这类用户,先算出每个品牌两个月收藏量差值的平方,设个阈值,如果平方大于这个阈值,且有某个月收藏量很大,不靠谱指数加1,如果不靠谱指数大等于2,就被认为不靠谱。推广开来,到底天猫哪些活动会导致异常数据?
2014.5.14
计划:
1、抽取如下这组特征进行测试:最近点击购买时间差、最近3天(或者7天)点击未购买量(或乘以转换率)、最近2个月点击权重、购买周数(或购买天数)、最近1个月收藏未购买量
2、添加重复购买概率特征
结论:
1、大部分有购买的用户在2个月购买的天数小等于4,剩下来一小部分不均分布在(5,60]天内,这样的话效果可能不如周数。
2、大部分用户平均每个月购买1件,60万左右的用户每个月购买1.5~4件。
3、没有最近3天的收藏、购物车量,对结果的影响也不是很大,因此可以去除这两个特征。去除最近购买时间,这个特征对结果影响也不是很大。
4、对购买与否影响甚微的特征应该剔除,这些特征可能起负面作用,剔除可以避免过拟合,提高程序效率。
提交了一发,成绩F1 4.62%,当天排名51,总排名83.
2014.5.15
计划:
1、找出昨天计划里的特征的最佳组合。
2、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1) ,ave_brand_ubuy是品牌平均每个月被单个用户购买的数量,user_repeat是用户历史重复购买率,ave_user_buy是用户每个月的平均单个品牌的购买数,user_have_buy是用户已经购买品牌的数量。如果最后取个阈值0.5,则预测数/Hit数/R:1946147/58581/2.98%,与购买天数超过2的交集size是202803,Hit数/P是16941/8.35%,差集size是1740000,Hit数/P是41640/2.39%。如果阈值1,则预测数/Hit数/R:1249862/38219/3.06%。如果阈值2,则预测数/Hit数/R:622844/20720/3.33%。
3、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) 。取两个月的话,如果最后取个阈值0.5,则预测数/Hit数/R:2249053/68432/3.04%,与购买天数超过2的交集size是198312,Hit数/P是17480/8.81%。如果阈值1,则预测数/Hit数/R:2037755/63807/3.131%。如果阈值2,则预测数/Hit数/R:1494019/50315/3.37%。取3个月的话,如果最后取个阈值0.5,则预测数/Hit数/R:3577465/87524/2.45%,阈值1,则预测数/Hit数/R:3183465/80797/2.54%,阈值2,则预测数/Hit数/R:2246277/62117/2.77%,阈值3,则预测数/Hit数/R:1585170/47180/2.98%
4、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值0.3,则预测数/Hit数/R:950891/35272/3.70%,阈值0.5,则预测数/Hit数/R:607315/24042/3.95%,阈值1,则预测数/Hit数/R:206493/9401/4.55%。
5、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值0.05,则预测数/Hit数/R:1322171/47757/3.61%,取阈值0.3,则预测数/Hit数/R:1249759/46002/3.68%,阈值0.5,则预测数/Hit数/R:1075977/41707/3.88%,阈值1,则预测数/Hit数/R:666371/29798/4.472%,阈值2,则预测数/Hit数/R:294733/16261/5.52%。
6、添加重复购买概率特征,公式:100*( ave_brand_ubuy + 1) * user_repeat * brand_repeat*(1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:1734816/56724/3.27%,取阈值2,则预测数/Hit数/R:1229788/46002/3.74%
7、添加重复购买概率特征,公式:100*( ave_brand_ubuy + 1) * user_repeat * brand_repeat*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:3623152/89494/2.47%,取阈值4.7,则预测数/Hit数/R:1210217/46085/3.81%
8、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * brand_repeat*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值1,则预测数/Hit数/R:3014189/74090/2.45%,取阈值1.7,则预测数/Hit数/R:1089693/33421/3.07%
9、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * brand_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),平均数一律以天数为指标。取3个月的话,如果最后取阈值0.5,则预测数/Hit数/R:2909224/64979/2.45%
6、添加重复购买概率特征,公式:( ave_brand_ubuy + 1) * (1+user_repeat) *(1+ brand_repeat)*(1 + ave_user_bbuy) ,平均数一律以天数为指标。取3个月的话,如果最后取阈值580,则预测数/Hit数/R:2949316/80871/2.74%,取阈值600,则预测数/Hit数/R:2068732/65083/3.15%,取阈值650,则预测数/Hit数/R:1180325/45229/3.83%
结论:
提交了一发,成绩F1 4.73%,当天排名45,最优排名67。离F1 5的目标又近了一步。1、重复购买概率是个适合我的特征体系,能带来效果提升的特征。
2014.5.16
提交了一发,成绩 F1 4.72%,当天名次 47,总排名67.
2014.5.17
待分析:
1、重复购买率是否会和周期性相抵消?因为周期性购买行为会导致重复购买率公式中的分母变大,导致值变小,负相关。对结果有什么大的影响吗?进一步思考这几个购买行为之间存在怎么样的相关影响作用?周期性强的也可能重复购买率高,而且这部分被重复购买的概率非常大。
2、重复购买率需和点击量结合吗?
结论:
1、购买周数比购买天数更有效的描述周期性购买行为,但推荐的数量往往较少。
判断各种特征组合的性能好不好,就看推荐同样个数的(u,b)对时他们F1值如何,推荐250万和200万看性能。
提交了一发,成绩 F1 4.71%,当天名次 50,总排名68.
2014.5.18
待分析:
1、公式:( ave_brand_ubuy + 1) * user_repeat * (1 + ave_user_bbuy) / (user_have_buy + 1),如何改进?加入品牌的被重复购买率brand_repeat,以及是否考虑融入时间?ave_brand_ubuy似乎应该使用天数而非数量作为衡量的指标。
2、是否可以通过subs_buy_repeat来进一步查看公式的效果?可以
3、怎么评估用户的购买周期以及品牌的被购买周期。筛选出购买周数超过2的(u,b)对,然后再聚集到u表和b表。
4、用准确度很高的LR融合重复购买率规则,效果如何呢?如果LR中有重复购买率规则的话,效果就不好。
计划:用3天时间改进重复购买率特征。
结论:
提交了一发,成绩F1 3.02%,当天排名258,总排名70。1、使用天数而非数量作为重复购买率中平均数的指标既能提高召回率也能提高转确率。
2、规则也有可取之处,因为可以用到全部的信息。
2014.5.19
计划:
1、用没有重复购买率的特征体系搞LR,然后融合重复购买率规则,试试效果。
2、调整点击的权重公式,试试效果。
3、好好观察样本,作一些分析
4、删除f_7_buy试试
5、试试f_3_c_nob、2个月点击权重、购买周数、p_brepeat、f_rclick_days。
待分析:
1、为什么有些f_bweeks为0,但它的p_brepeat不为0.因为这个用户有购买过其他品牌,且该品牌有被其他用户购买,所以会出现这样的情况。
结论:
1、融合效果不好,因为规则的大部分已经在LR的预测集中
2、删除f_7_buy不管在准确率还是召回率上效果都变差了。
提交了一发,成绩 F1 4.67 当天成绩65,最好成绩76.
2014.5.20
在数据如此多的情况下,尽量多观察,多思考,少跑程序!!需要适当调参,但多思考特征体系能带来更好的效果提升!!
待分析:
1、昨天的提交参数表中与p_brepeat相关的系数是负数,是因为式子?还是与特征体系不匹配?因为利用之前的式子得到的值相差的范围太广。
2、如何评价一个特征好坏?0)是否符合业务逻辑 1)粒度 2)预测100w、200w、300w时的准确率、Hit个数 3)观察正负样本,看是否符合预期的判断 4)LR训练出的参数
3、重复购买是否更多取决于品牌?是的。
4、click_sumweight的day/X的X对结果是否有影响,是的。
结论:
提交了一发,成绩 F1 4.78,当天排名54,最优成绩71。离5还差0.22。1、将式子改的大小波动小一些能够去除负数,但直观判断效果并不好,而且用规则来判断效果也不好。
2、如果重复购买率中的user_brepeat删除,那么各方面性能都下降。
2014.5.21
待分析:
1、去除4~15至6.15之间爆款的影响,效果是否能改善?是的,可以改善。
2、将最后半个月出现的用户找出来,单独使用一个模型向他们做推荐。没必要这样做,因为这些用户在下个月的购买行为非常少。
3、清除爆款行为必须注意:1)使用随机采样而非全部删除 2)最后一个月的数据必须保留 3)最后一个月出现的(u,b)如果在前面3个月出现就必须保留 4)那些购买对应的点击行为也必须处理。
第一次清理,手动清理,清理前:531422169,清理:18081(4600)+986(3600)+11313(27216)+25851(1300)+10391(1967)+13382(160)
+14244(2800)+14679(1000)+23250(8000)+5159(900)+8041(3500)=56031 ,清理后:531366138。清理前所有4.15~7.15的交互(u,b)对在八月份的Hit数是:454063,清理后是:454063
第二次清理,清理4.15~6.15的购买量超过6.16~8.15的购买量两倍的品牌,其中在6~8月出现的(u,b)对不清理,4.15~6.15进行随机采样至购买数量和6~8月差不多(原来是3:1),清理前:531366138,清理后:508118399。清理前Hit数是:454063,清理后Hit数是:447858。
第三次清理,清理4.15~8.08内所有摆设品牌(只点击未购买)的行为。清理前:508118399,清理后:507710289。清理前Hit数是:447858,清理后Hit数是:447858。
第四次清理,对6.16~7.15内爆款的行为采1/10的样(只在这个月出现的点击、购买行为),对7.16~7.31的爆款行为采1/10的样(只在这2周出现的点击、购买行为)。清理前:507710289,清理后:502032515,共清理5677774。
4、7.15~8.15的促销行为是否可以缩减?可以单独拿这部分作为推荐的源数据。
结论:
1、计算60天的click_sumweight,X=30效果不如X=15。
今天终于拍了T-shirt,选了黑绿色,颜色搭配很炫,前面设计得很好,就是后背的字会显得奇怪。
2014.5.22
待分析:
结论:1、点击相关的特征是否需要重新思考该如何取?点击未购买,改为购买后点击行为,15天时相差228万。
2、用户特征靠谱吗?
3、LR的结果拿去跑svd结果如何?Lr的结果中brand数很大
4、是否可以对没有购买行为的品牌的行为进行采样?如果最后半个月内有点击行为的(u,b)对Hit数多,就不能,不然就可以,今天就测试这个。如果点击行为是长期进行的,就不应该简单清除。
1、很多购买行为都是当天点击当天购买
2、用P大R小的LR推荐结果与P大R小的RF推荐结果取并集,能够提升成绩
3、将摆设品牌在最后15天有过点击行为的(u,b)对推荐之,Hit数极少,p只有0.35%,可以清除4.15~8.08的摆设品牌。
是否要放弃未交互行为?之所以有这个考虑,是因为交互行为都没做好。如果放弃的话,伟文就可以搞朴素贝叶斯或者随机森林,志鹏的工作不变。
只有努力远远不够,还必须运用智慧做到行事直达要害。
提交了一发,史上最吊成绩,F1 0.02%,当天排名425,最优排名85。
2014.5.23
待分析:
1、7月份的爆款要如何清洗?会有哪些影响?1)前两个月点击、购买,现在购买,用于形成样本标签。 2)现在点击、购买,后两个月购买。如果6.13、14有点击行为,然后6.16、17有购买行为,清洗会破坏这种因果关系吗?清洗至少应该保留在6.15之前以及7.15之后有的(u,b)对。试试这些爆款(u,b)对的Hit数。
2、品牌分类,算权重。
3、某些品牌一次性购买很多,是否可以随机采样?目前对我没有影响,因为关于购买的特征都是以天数而非次数为指标。
4、去掉购买力小(购买天数<=1)的用户搞LR。推荐数大幅度缩小,准确率没有提高很多。
5、为什么去除了那么多爆款,效果却没怎么提升?24交不融合的结果,就知道对结果是否有影响。
6、购买后的点击量效果不如未购买的点击量。
结论:
1、清洗不应该破坏点击-购买、购买-再购买的因果关系
提交了一发,成绩F1 5.07%,当天排名43,最优排名55。
终于突破了5,第一个月完美收官!
2014.5.24
计划:
1、毋须重新训练、预测,通过设个概率阈值来控制推荐个数,高效的做法!
2、用李阿姨的账号提交以下结果:7月份的爆款对应的不存在于4.15~6.15、7.16~8.15的行为,总的行为数5384439,(u,b)对2793001。
待分析:
1、点击权重公式要怎么调整?
1)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)) ,r=0.1,X=20,click_afterbuy,F1 = 4.463
2)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)) ,r=0.1,X=40,click_afterbuy,F1 = 4.26
3)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=40,click_afterbuy,F1 = 4.46
4)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=20,click_afterbuy,F1 = 4.483 (R:90749/2552557,P:3.47%)
5)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=30,click_afterbuy,R:87391/2524426,P:3.46%
6)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=15,click_afterbuy,R:92329/2546413,P:3.63%
7)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=10,click_afterbuy,R:93860/2553019,P:3.68%
8)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=5,click_afterbuy,R:92329/2508360,P:3.68%
9)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=9,click_afterbuy,R:93326/2510848,P:3.72%
10)Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=9,click_afterbuy,Y:7.4,R:93286/2507133,P:3.72%
2、最近点击时间改成最近行为时间。或者改成最近未购买点击的时间。
3、去掉最近15天未购买点击量特征。
结论:
1、利用规则测试单特征,利用模型测试特征体系
2、在一定范围内,时间衰减的越厉害,预测效果越好,但权重会越来越小。2个月时最好的衰减函数是e^(-d/9)。
3、最近行为时间优于最近点击时间。
4、清除掉4.15~6.15的爆款以及摆设点击能带来0.1的成绩提升。
5、7月份的爆款对9月份的影响甚微。
再平凡的人,只要时时留意,也能找到机会做出一番成就。
这个比赛,就四个字--“剩者为王"!
提交了一发,成绩 F4.76%,当天排名72,最优排名58。
2014.5.25
计划:
1、用3~4天时间将6.15~7.15、7.15~8.01的爆款消除,首先需要判断7.15~8.01的爆款行为是否可以简单消除?是否可以去除与前后无因果关系的行为?
2、线上测试3个月时X=10,X=15,X=20,X=30的效果。
待分析:
1、目前最优特征组合式:r3d_Click_nob+click_sumweight+p_brepeat+rbehavior_days+bweeks,将r3d_Click_nob替换成r3d_Click_afterb效果是否更好?
2、最优的衰减系数应该要和其他点击量结合。
结论:
1、distinct一般比group by 要快一些。
2、最近3天购买后点击量与点击权重特征结合效果并不好。
3、没有最近3天点击特征,预测效果会变差。
李阿姨号提交了一发,7月份爆款中购买天数超过2的2478,购买次数超过3的4657取并集,进行推荐,准确率1.37%,Hit 82,说明7月份爆款对应的行为Hit了4000多是非常分散的,因此可以进行清洗,利大于弊。
自己的号提交了一发,将subt_sumweight错写成subs_sumweight,成绩只有4.27,当天排名130,总排名60。
2014.5.26
计划:
1、将字符串的日期改为离4-14的天数,5.01、09、13、15对应17、25、29、31,6月对应48、56、60、62,7月对应78、86、90、92,8月对应109、117、121、123。
待分析:
1、前两个月的爆款行为(只在这段时间出现的u,b)有270w左右,6.16~7.15的爆款行为(只在这段时间出现的u,b)有270w左右,这些都是刚出现,买完或点击完之后就消失无影,这部分该怎么界定?考虑1)用户活动时间 2)品牌热门时间 3)(u,b)行为时间长(结束 - 开始)
2、几百个特征是怎么来的?特征含义上说,应该是按照天或者周或者3天为单位所取得特征。实现上,肯定要用循环来完成。
结论:
1、最后15天日点击量加现在的特征,效果能够得到提升。
2、大清理后效果也能提升。
正确提交一发,成绩4.81,当天排名73,最优排名61。
2014.5.27
计划:
2、将字符串的日期改为离4-14的天数,5.01、09、13、15对应17、25、29、31,6月对应48、56、60、62,7月对应78、86、90、92,8月对应109、117、121、123。
待分析:
1、将特征分开跑LR,然后再融合,结果如何?融合是结果取并集还是概率相加,取概率大者?分开跑LR后再将得到的结果用于LR,结果如何?
2、重新测试Value特征,用rule测单特征效果,再用LR测单特征效果,再用LR测特征体系。
1)W = [1,10,5,5],取阈值110,Hit数/预测数:95053/2414406,P=3.94
2)W = [1,10,4,4],取阈值109,Hit数/预测数:94257/2385575,P=3.95
3)W = [1,10,2,2],取阈值108,Hit数/预测数:95876/2402052,P=3.99
4)W = [1,10,1,1],取阈值107,Hit数/预测数:95580/2385359,P=4.01
结论:
1、单特征分开跑,然后取并集,效果并不理想。
2、大清理后效果也能提升。
3、各个特征单独跑LR,再将概率作为LR的输入进行LR,效果可以提升。
2014.5.28
待分析:
1、用LR跑r3d_Click+r60d_Click+r_behavior、r3d_Click、r60d_Click、repeat、week、values、,然后再作为LR的输入。
2、把被购买量或者被购买用户数最多的当作爆款热销日,并把它离预测集开始那天的时间数作为品牌的一个特征,可以吗?对于全局热门品牌恐怕不行。
结论:
1、单个特征跑LR,p_repeat的效果不如r60d_click_sumweight,这个公式应该改进。
2、使用两次LR,可以改善效果。
3、如果出现预测数很少,可能是哪里写错了,比如样本中有截断长尾,但预测集中没有,导致预测集的数据归一化之后值偏小,从而导致最终预测数变少。
又发生错误了,处理特征值时,样本和预测集的不一样
2014.5.29
待分析:
结论:1、未购买的点击和购买后点击权重应当不同?
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=18,click_afterbuy,R:96428/2607381,P:3.70%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=0.1,X=10,click_afterbuy,R:95837/2584588,P:3.71%
2、购买后点击是否应该再细分?比如只是购买后来确认收货、评价
将购买后再点击的(u,b)直接推荐,Hit数/推荐数:51292/1698440,P=3.02%,推荐点击数超过4的,Hit数/推荐数:25047/526721,P=4.8%
将购买2天后再点击的(u,b)直接推荐,Hit数/推荐数:40567/1217937,P=3.33%,购买3天,Hit数/推荐数:36237/1018841,P=3.66%
3、是否真需要60天的点击权重?试试30天的
将购买后再点击的(u,b)直接推荐,Hit数/推荐数:24828/571205,P=3.02%
将过去90天购买2天后且在最近1个月再点击的(u,b)直接推荐,Hit数/推荐数:42422/1007673,P=4.21%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,10,X=18,click_afterbuy,R:99019/2675340,P:3.70%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,8,10,X=18,click_afterbuy,R:93893/2619451,P: 3.58%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,10,X=18,click_afterbuy,R:98260/2554041,P:3.85%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(1+a_b)*(1+a_u)) ,r=1,5,>=10,X=18,click_afterbuy,R:97727/2516505,P:3.89%
Click_W = SUM(r * e^(-date_diff/X)*(1+how_hot)(1 + how_tuhao)*(2+a_b)*(2+a_u)) ,r=1,5,>=10,X=18,click_afterbuy,R:97575/2516505,P:3.88%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b)) ,r=1,5,>=10,X=18,click_afterbuy,R:97494/2516505,P:3.87%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b) *f_cdays,r=1,5,>=10,X=18,click_afterbuy,R:98595/2516505,P:3.92%
Click_W = SUM(r * e^(-date_diff/X)(1+how_hot)(1 + how_tuhao)(1+a_b)(1+a_u) *f_cdays,r=1,5,>=10,X=18,click_afterbuy,R:99596/2516505,P:3.96%
1、将点击分为未购买过的点击、购买前的点击、购买后的点击
2014.5.31
计划:
从两个方面入手,一方面是最后1个月点击过的(u,b),这部分Hit了31万,占了总的有行为购买量的3/4,另一方面是最后3个月已经购买过的(u,b),Hit了12w,占总的有行为购买量的1/4,简单地说,一方面是从点击入手,一方面是从购买入手。先搞第一方面,等伟文有点感觉让他搞第二方面。
待分析:
1、试试将月平均购买量减去最后半个月的购买量作为特征(未尝试)
2、试试将购买后的点击量作为特征
3、试试将购买周数加进sum_weight中
4、repeat_nom有预测数/Hit数/P:2068732/65083/3.15,但实际上推荐购买次数超过2次的推荐有推荐数/Hit数/P:1708288/57867/3.39%(P),效果差不多,这说明我一直认为是关键特征的只是个普通特征,T_T。
5、试试购买周数和repeat_nom作为特征
6、训练集取2个月,预测集是否可以取3个月?可以,只要3个月时的每个特征的最大值与2个月时想等就行,也就说说要Cut。取成3个月后成绩比较理想。
7、试试r3d_click_nob+r30d_click_nob+r30d_click_sumweight。最后1个月的点击可以分成几类?
1)本月购买前的点击
2)本月购买后的点击,是查看卖家是否发货还是回味下品牌?
3)未购买过的点击
4)前几个月购买后的点击。之前的点击/购买数可以结合起来考虑吗?逻辑上可以,数据上是否也如此?
重要性与序号成正比。
8、如何挖掘不热门的点击行为(点击次数<5,46578046,Hit:183236)?先要了解这部分数据。1)大部分点击小于5次,天数就1天。2)和前2个月的交互行为多吗?不多。46578046-42459047=4118999,Hit:47300,P:1.15%。
结论:
1、没有r3d_nob特征不行(在5个特征的情况下)。
2、将购买周数加进sum_weight中能使效果提升。
3、购买再购买方面挖掘的太少了。
4、利用sumweight得到的推荐(u,b)对有9/10都是点击天数超过2的,其实都算是热门对,7/10是点击排前5点击超过8。大概有1.1万是点击天数为1的。
5、单click_sum的效果要比添加进其他特征的效果要好。
2014.6.1
待分析:
1、每次都测试下Hit的(u,b)是在测试集的前半个月,还是后半个月。click_sum的预测集中在前半个月。
2、只取7.16~8.01的作为样本数据,结果如何?如果有全局性特征的话,效果差一点,和取全部样本结果不会差很多。
3、我取负样本的方式也不对吧?是对的。
结论:
1、Click_sum和repeat_nom的预测集交集只有43万(各252万),Hit的交集只有3万(10万,7万),说明交集不是很大,但repeat_nom不是个好特征。
2、Click_sum的Hit主要集中在前半个月。
3、前3个月的购买周数超过2的(u,b)(280810)中的b在8.01~8.15的被购买对数(1270727)是1183886,(u,b)对的被购买对数是11602;前3个月的购买周数超过2的(u,b)(280810)中的b(11300)在热门品牌(1857)中Hit是1850,(u,b)对的Hit是231814。说明热门品牌一般都会被反复购买。
4、那些很热门的品牌,即使是很早以前有过行为,后来没行为(最近一个月不点击),也可能购买。所以爆款清理并不恰当,它会导致线下成绩变好,但线上成绩变差。换个角度看,很久之前点击或者购买了的(u,b)对,几乎都是热门的品牌(2000个)。
5、最后一个月购买再购买的几乎都是热门品牌(品牌被购买cnt>=1000,64804(交集)/76314(最后一月购买)推荐1958766个,cnt>=3000,54049/76314,推荐1535821个)。repeat_nom与最后一个月购买的交集大概有6万,占了3/4。
6、click_sum的预测数中有3万(3/10)是最后半个月点击少于5的。
2014.6.2
计划:
1、爆款行为要重新清理,必须倒档。利用聚类分出爆款。
清理((45+56)>(67+78)*5 or 45 > 5678 or 56 >4678 or 67 > 4578),随机采样前3个月行为,并保证购买周数>2的行为不被删除。
清理前:531422169 清理后:524019070 清理7403090
2、最后一个月购买再购买的占7万,之前2个月购买再购买的占6万,这6万几乎都是热门品牌,具体性质如何,应该结合聚类和之前的品牌每月购买情况分析。让伟文改进repeat_nom,将ave_user_cnt,ave_brand_cnt等添加到Hit的(u,b)集合中,看是否合理。
待分析:
1、尝试特征:
1)最后一个月购买是否大等于2
2)购买天数而非购买周数
3)1个月的点击天数是否大等于4
4)2个月的点击天数是否大等于5
5)2个月的点击次数是否大等于25且排名前10
6)购买次数是否大等于3且排名前5
2、尝试特征:最后3天点击、最后15天点击、r30d_sumweight、最近点击时间、点击天数、是否点击次数>=1&<=4&rclick<=10、用户是否土豪、品牌是否热门、用户的从众系数
结论:
1、29360在8月份的购买数是18675(441129,P=4.23),811是8830(1263449)。利用LR跑出来的29360Hit4527,811Hit1548。可以在模型融合的时候加进很优质的品牌对应的(u,b)对。
2、how_tuhao并不科学,因为用户可能会为了买一个品牌,而看很多其他的品牌,我们不能认为这就不够豪爽,而看多少其他的品牌则要取决于品牌,是否点击小于5并在最近20天内?
3、从众系数和品牌热门结合起来并不能优化sum_weight
4、点击未购买的量作为特征还不如点击量,准确率不如点击且购买量
5、最近30天点击天数可以结合之前的5个特征进行预测。比如取最后1个月点击是否大等于4,最后2个月点击是否大等于5,最后3个月点击是否大等于6。还可以添加,诸如点击是否在用户的排名前5中。
6、对于冷门(u,b),最近点击时间是比较好的特征。
7、最后2个月的repeat_nom效果比最后3个月的repeat_nom的效果好。
8、没有购买过品牌的用户购买一个品牌通常点击都非常多(b=0,c>=5,24016/1532581,P=1.57%,b=0,c<=4,44972/19920591,P=0.2%)。
9、利用5个特征得到的热门推荐结果Hit数/推荐数/P:103199/2547324/4.05%,与最后一个月c_cnt>=5的交集是9.4w,与前3个月有购买行为的交集是66525,与前2个月购买行为的交集是20807。
10、60天的sumweight的Hit数是98832(2547324),30天的sumweight的Hit数是98580,差不多,前者会稍微好一点。
11、对于热门样本,负样本应该取正样本的15~200倍,最合适的是?
2014.6.3
待分析:
1、前2个月购买后第4个月购买的有什么特征?比如是否多分布在56月?几乎都是热门品牌,那么用户有什么特征呢?是否从众率都很高?
2、是否将前2个月的Hit的9万也加加进冷门数据中,然后分析和热门样本Hit的交集多大?
结论:
1、对于热门样本,预测中的都是最后一个月13万中的,而前2个月中的9万却只中几千。现在的模型适用于挖掘最近的热门行为。
2、r30d_sumweight(Hit96635)的效果比r60d_sumweight(Hit98832)差了2000多,F差了0.087。
3、可以将前2个月的Hit的9万加加进冷门数据中,和热门样本Hit的交集非常小,预测中的基本上还是最后一个月的行为。
2014.6.4
待分析:
1、将购买次数乘进repeat_nom结果如何?
2、Value加进冷门样本的特征中进行测试。
结论:
1、LR将所有特征统一处理,随机森林则是取若干个特征进行训练,然后投票,相当于多个取特征子集的模型的融合。前者倾向于热门行为,后者则会平均。因此,LR应该用于描述局部或者全局中的一类,而非混合,后者则既可以混合也可以考虑全局。
2、Value能够提升LR对冷门样本的预测效果。
3、将b_weeks加进repeat能提升repeat的效果。
提交了一发,成绩5.23%,当天排名47,总排名58。
2014.6.5
小总结下:
1、用2个月做训练集,3个月做预测集,效果比2:2要好。
2、对于热门数据,负样本比例在[5,20]范围内升高,效果能够提升
3、gbrt模型的效果比其他的都好,只是运行时间很慢
4、将bweeks加进p_repeat,单特征效果能够提高,如何和有bweeks的特征体系放在一起,则效果提升甚微。单特征时,r60d_repeat效果比r90d_repeat好,作为lr输入时r90d_repeat效果好。
5、清洗那些只点击不被购买的品牌能带来成绩的提升。
6、目前可以只用全部样本搞LR,测特征,然后最后将得到的特征体系去跑一次冷门样本的LR,进行融合。
7、不同模型,同一个特征体系,得到的预测结果基本上都是同一分布。LR、RF、GBRT模型跑出来的几乎都是最后一个月热门(u,b)对占9w,然后最后3个月的购买占6~7w,前2个月的购买占2w左右。
待分析:
1、测试下到底是所有样本一起搞LR效果好,还是分成2部分再分别搞LR效果好(一起搞时F1:4.563,一部分:87271/150w/5.81%,另一部分:28963/104w/2.78%(P);分开时F1:4.53,一部分:2.5w/70w/3.58%P,一部分:9.2w/190w/4.89%P)。还是在一起搞的好,简单高效效果好。
是否可以将一起搞的LR融合冷门的LR?效果比较好。
2、rf和gbrt是否越多特征越好?有7个特征时,rf的效果比lr效果好0.3。增加一个点击天数特征,rf的效果提高0.05,但再增加4~11天以及12~30天的特征,效果就下降0.07。证明,特征不是越多越好,而要看是否是一个好的特征体系。
3、特征分段、离散化、等频离散化。
4、训练集和测试集的范围不一样,对结果有影响吗?
2014.6.6
先熟悉随机森林,分析预测结果,然后继续分析数据,进行特征工程。
目标:10天内到5.6。
待分析:
1、RF的各个参数是什么含义?对结果有怎么样的影响?负样本是正样本5倍左右,8、9个特征个选5个建30棵这样的效果几乎是最好的。
2014.6.7
待分析:
1、repeat_xweek和repeat_r30c结合做为rf的输入会如何?当repeat_r30c中只有最后一个月的点击才有值时又当如何?
2、为什么前3个月有购买行为的ub对repeat_xweek为空?因为repeat_xweek中的week表是之前经过错误清洗的t_lr_big_data所产生的,需要重新生成。
3、是否需要添加前2个月购买再购买的公式?
结论:
1、将最后30天内的点击量指数加进train_repeat_week后成train_repeat_week_r30c,Hit 8.4w,其中有7.2w是最后一个月购买的(总的7.8w),几乎全中。如果没加,Hit8w左右,最后一个月Hit 5.7w,前2个月Hit2.2w。这样的话,这其实就是两个不同的特征了,前者和之前的特征体系结合非常适合挖掘最后一个月的热门ub对,后者适用于挖掘冷门样本的ub对。现在subs_repeat比train_repeat多Hit2000,而分布和之前train_repeat_week_r30c的分布相同。
2、repeat_xweek和repeat_r30c结合做为rf的特征体系,结果和只有repeat_xweek的相差无几。单repeat_r30c结果比repeat_xweek差。
3、现在rf得到的结果和Golden Rule(29360,购买天数>=2)结合能提高0.1。
2014.6.8
最痛苦的事是写了很久的代码,既然有致命的错误,导致几天的功夫全废;最快乐的事也是写了错误的代码,因为被你排除的想法突然又变成了希望。
待分析:
1、多加一些用户、品牌的特征,效果会如何?
2、加排名特征、前2个月的购买再购买趋势,效果如何?
3、是否可以统计前几个月用户的月平均购买数、天数,然后减去最近半个月的作为特征?
结论:
1、加排名特征、前2个月的购买再购买趋势,效果相差不多。
2、加一些用户、品牌的特征,诸如最后半个月的点击、购买,最后2个月的总购买等能带来效果的提升,主要是预测中了冷门的点击对。
3、在RF中sum_weight似乎很经常拿来当作根,是说明这个特征权重很大吗?是的。
2014.6.9
能否利用现有的模型训练得到用户对某个品牌的再购买概率,然后把这作为用户对品牌的偏好矩阵,这样可以用到非常多的信息,但可行吗?再购买概率是根据前4个月的行为得到的在8.16~9.15的再购买概率,而偏好矩阵是前4个月用户对品牌的喜好程度,输入是一样的,输出不太一样,前者会受时间影响,特别是最后一个月行为的影响,后者则是全局性的,但是对某个品牌的喜好不也会随着时间推移吗?不一定,如果会推移,则可行,如果不会推移,则不可行。
待分析:
1、是否可以添加用户对品牌的厌恶度?是不是对品牌的喜好程度不高,厌恶度就高?不一定吧。
2、应该把用点击转换率加进特征体系中吗?
3、给最后半个月刚出现的用户最近热门品牌,会怎么样?预测3000w,才中1.2w。如果是点击的就推荐,预测171w,中1.1w。
4、GBRT中当学习速率变小时,树的数量是不是要多一些?是。
结论:
提交了一发,19个特征,GBRT线下5.361,线上会是多少呢?5.658,当天排名20,总排名27。1、解决gbrt过拟合倒是可以用增加样本数量的方法。(导致过拟合的原因:树太高、样本太少,冗余的特征太多?)
2、点击转换率加进特征体系效果会变好。
结论:1、是否可以增加品牌日购买超过日平均购买的最近天数特征?后者效果好很多。2、将品牌或者用户的行为压缩成Values是否可行?3、是否可以添加最近30天ub的收藏、购物车量4、是否可以用repeat_r30c_only来融合gbrt的结果?r30c_only几乎可以全中最后一个月有购买的。
2014.6.111、品牌或者用户的Values不太科学。2、截断长尾仍非常有必要,19个特征,repeat有无截断,差了0.07。3、添加最近行为数超过平均日行为数的时间,效果差不多,单独用户的最近行为时间效果还不错。4、加了收藏、购物车,效果反而不好。5、和repeat_r30c_only融合后,效果不好。
结论:1、是否可以添加用户首次行为时间?
2、负样本有没质量之说?3、是否可以添加最近3天用户、品牌的未购买点击量?4、是否可以添加品牌购买3天后的点击量?5、是否可以添加用户、品牌的再购买概率?6、特征特数越多,样本应该越多,树的数量也应该越多吗?7、最后7天点击量减去平均第一次购买前点击次数作为特征,如何?点击量减去品牌的(点击总数/购买总数),又当如何?都可以用来优化Click_Sum。
2014.6.121、添加用户首次行为时间,可以提高效果。2、应该是有,至少现在样本采集时,负样本大部分是最后一个月出现过的。3、可以添加最近3天用户、品牌的未购买点击量。4、最后一次购买后的点击量并不好,和其他很多特征冗余,尤其是最后3天未购买的点击量。5、应该要添加品牌购买3天的点击量6、到目前为止是这样的7、前者2.7w/62w,P:4.35。8、最近30天用户对品牌的购买量特征并不好。9、根据RF的效果来判断特征体系的效果,然后再拿去GBRT跑,验证下。
待分析:
1、负样本中,通常最后一个月热门的ub对很少,占最后一个月ub对的1/10,第一个月的购买行为很少,占前一个月行为的1/20,这可能是导致我所Hit的都是热门ub对的原因。改进负样本采集方式,热门ub对50w,冷门ub对采集150w,第一月购买行为采集20w,第一个月行为总数100w,合计300w,试试效果。
2、将以上预测的热门ub对数量增加到普通采样的预测数,效果如何?将普通样本与特殊采集的样本的预测热门ub对进行推荐,效果如何?
3、是否可以添加用户的购买天数?
4、用户重复购买概率P_urepeat*f_30_ubuy作为用户的一个特征,效果如何?
结论:
1、热门点击对Hit数少了2w,准确率提到到7.3%,购买再购买的准确率也都提高到7%左右,冷门点击的准确率则很低,3.4%这样。
2、前者效果是差不多的。那样融合后,预测多了1000。
3、直观上,在sample_1中大于2的有5k(1w),sample_0的只有3k,大于1的有7k,sample_0的只有5k。
2014.6.12
待分析:
1、是否可以根据第3个月购买次数(或者天数)改变特征中的y值。
2、是否可以添加用户有购买的周数,比购买天数更精准一点
3、是否可以添加用户对某个品牌购买3天后的点击量
4、用户的最后一次操作时间是否会对结果造成影响?
5、品牌的最近3天购买后点击量是否可以改成有权重的:以前购买过的权重为3,没购买过的权重为1?
6、用户对品牌最后一个月购买后点击作为特征如何?
7、second_buy*f_brepeat作为特征如何?
结论:
2014.6.291、试着按公式1+x/10来得到Y值,但效果不好,少了0.1。
2、效果不好。
3、因为没有区分好购买后的点击还是从未购买的点击,所以结果不好。这两个特征添加了效果都不好。
4、效果不好
5、效果不好
6、效果不好
7、效果不好
9、将GBRT的结果和rf的结果用作LR的特征,效果并不理想。
10、改点击排名到sumweight排名效果不好。
问题分析:给出4.15~8.15的用户对品牌的行为数据,预测哪些用户在8.16~9.15会购买,购买什么物品?实质上是购买预测问题,而不是推荐问题。而这可以从以下三个方面进行分析:
一、用户角度
1、点击转换率高的用户有一定量的点击行为就可能购买。转换率的确切定义?点击且购买的品牌数/点击的品牌数。一定量是指?
2、收藏和购物车转换率
3、新注册用户,第一次行为时间。
4、用户购买力,购买越多,购买力越强,要么是高富帅,要么是购物狂
5、重复购买品牌率
二、品牌角度
1、品牌热度,被购买的人数越多,越热门。热门的物品被购买的可能性高。
2、最近15天被点击的量和被购买的量。量越大,越热门,被购买的可能性越大。或者将最后1个月拆分成3,7,15。
3、被用户重复购买率。
4、趋势特征,品牌最近3天平均热度减去最近15天平均热度。
5、那些只有点击但未购买的品牌可以直接去除。
三、用户品牌对角度
1、关键:用户周期性购买的产品一般会再购买?周期是指月还是周还是天呢?目前测试过周,但没有单独和天、月进行单独的效果比较。
2、关键:用户最近点击、收藏、加进购物车的品牌,购买的可能性非常大。最近是指最近1周还是最近3天还是最近1天?点击和收藏、购物车应该区分开来,点击的时效性更强些。近期仅保留点击特征。
3、用户最近点击的时间越近,购买的可能性就越大?但最近购买的时间如何处理?最近点击但未购买的时间或许是个很好的指标,用最近购买时间减去最近点击时间作为指标,这只是相对关系,和最近点击时间结合起来才靠谱。近期保留最近点击时间特征。
4、关键:如何利用历史购买行为呢?历史购买说明什么?说明用户喜欢这个品牌。可以得出品牌的平均被购买次数、用户的平均购买品牌次数、用户的重复购买率、品牌的重复购买率、用户对品牌的已买个数,然后得出用户再购买的概率。
5、用户对某个品牌的点击量和购买量在用户所有点击或者购买中的排名。也可以是用户对某个品牌最后半个月的点击排名。
6、用户对品牌点击天数,点击天数越多,表示对这个品牌越兴趣。
特征抽取:3天点击、7天购买、15天点击、60天点击、最近点击时间、购买周数、购买天数、重复购买概率
特征处理:将远大于一般值的数值归于一个比一般值略大的值,排名时点击量最少的排第1,。
样本选择:前2个月有行为第3个月有购买的作为正样本,第3个月无购买的作为负样本,负样本固定为正样本的9倍。
建模:使用Xlab的GBRT。
调参:树深、学习速率。
测试-提交-干杯
2014.7.1
待分析:
1、将30天点击量分成3,7,7,7等来搞gbrt会不会更好一些?直观上,gbrt的树是决策树,这样决策的时候不但会将数量关系考虑进去,也会将趋势考虑进去。
2、改进click_w、click_day和一些已有的特征。没用,效果不好。
3、添加点击中心时间、购买中心时间。能够提升0.023。
4、添加用户购买超过3,4,5的品牌数,品牌被购买次数超过3,4,5的用户数
5、重跑r30d_afterb
6、品牌活力(fourthrate*4+3*thirdrate+2*secondtrate+firstrate)
7、将品牌聚类,然后加哑变量到特征体系中。聚类采用特征:7,30,60,120的点击转换率、购买,7,30,60,120天的平均日购买,30,120天2次购买的用户数,品牌活力聚成7类。
结论:
清理数据1、用户是主动的,有偏好型,品牌是不会思考的,只有属性
2、写一篇关于Bug的博文:惊天大Bug(下划线)、日期、公式、语法问题、过拟合、线下5.39线上0.63(gbrt训练完有。
3、爬虫包括:点击很多但没购买,购买很多但没点击。
4、剩半个月左右,一半聊天的时间在吐槽odps慢,一半时间在猜测各种BaseLine。