Kaggle 首战拿银总结
比赛起止时间: 2020.10.12 - 2021.1.5
个人比赛账号: Kwjdefulgn
比赛项目简介: 官方给了一个5个G的压缩包,里边有三张表格,分别是train lecture 和 question,我们需要根据这三张表中的做题信息来推测出该用户下一次再遇到某一道题目时的答题正确率。
train表 中主要是用户的一些做题信息,主要字段包括user_id,问题或者讲座的id即content_id,题目类型content_type_id(1代表讲座0代表问题),做题的时间戳timestamp,上一个batch题目的做题时长prior_question_elapsed_time,这一道题目是否回答正确,每套题目的编号task_container_id(默认是按用户做题顺序由小到小大编号),上一套题目是否有解释prior_question_had_explanation。
lecture表 主要依靠外键lecture_id与train表相连,当train表中的题目类型type字段为1时表示讲座。lecture表里边主要字段有lecture的类型编号,tag标号等信息。
question表 主要依靠外键question_id与train表相连,当train表中的题目类型type字段为0时表示讲座。lecture表里边主要字段有question的类型编号,tag标号,该道题目的正确答案, 问题属于哪个模块part。
前期的数据清洗: 经过检查,有196条数据存在异常。即某个task_container里边出现了同一道题目,一套题里边有两道同样的题目,属于异常数据,需要剔除。
主要模型: light gbm模型,后期走多个lgbm模型融合路线。
前期处理: 由于官方给的表格数据过于庞大,我们无可避免的需要对原有的数据进行降维处理,另外可以将.csv类型的表格转成.pkl类型的文本文件,这样可以极大的增加数据的读写效率。
特征工程:
1 前期将所有的列加入lgbm之后发现用户的时间戳,user_id,content_id,part的重要性系数最高,因此前期主要做的是两个维度的特征,一个是用户维度,另一个是问题维度。主要特征尝试如下所示。
# feat_question_tags,
feat_user_history_lecture_nums,
# feat_question_asked_nums_and_corroct_nums_and_rate,
# feat_question_first_tag,
# feat_time_interval_of_the_last_question,
feat_user_this_part_history_question_nums_and_corroct_nums_and_rate,
# feat_user_this_part_history_lecture_nums,#基本没啥用啊,不过也可以先留着
# user_in_task_container_rate,
# wa_and_no_explanation,
feat_user_history_rolling3_container_question_nums_and_corroct_nums_and_rate,