嗨喽! 大家好,我是“流水不争先,争的是滔滔不绝”的翀,欢迎大家来交流学习,一起入坑数据分析,希望我们一起好好学习,天天向上,目前在社会毒打中~~
文章目录
- 摘要
- 关键词:数据分析;数据可视化;数据预处理;协调过滤
- 1.问题描述
- 1.1问题背景
- 1.2所需关键技术
- 2.数据分析
- 任务 1 数据预处理
- 任务1.1对照附录1,理解各字段的含义,进行缺失值、重复值等方面的必要处理。
- 任务1.2对用户信息表中 recently_logged 字段的“--”值进行必要的处理,并在报告中描述处理过程。
- 任务 2 平台用户活跃度分析
- 任务2.1分别绘制各省份与各城市平台登录次数热力地图,并分析用户分布情况。
- 任务2.2分别绘制工作日与非工作日各时段的用户登录次数柱状图,并分析用户活跃的主要时间段。
- 任务3线上课程推荐
- 任务3.1根据用户参与学习的记录,统计每门课程的参与人数,计算每门课程的受欢迎程度,列出最受欢迎的前10门课程,并绘制相应的柱状图。受欢迎程度定义如下:
- 任务3.2根据用户选择课程情况,构建用户和课程的关系表(二元矩阵),使用基于物品的协同过滤算法计算课程之间的相似度,并结合用户已选课程的记录,为总学习进度最高的 5 名用户推荐 3 门课程。
- 任务3.3在任务3.1和任务3.2的基础上,结合用户学习进度数据,分析付费课程和免费课程的差异,给出线上课程的综合推荐策略。
- 3.总结
- 4.未来工作
- 5 附录
- 6 参考文献
- 总结
摘要
近年来,随着互联网与通信技术的高速发展,学习资源的建设与共享呈现出新的发展趋势,各种网课、慕课、直播课等层出不穷,各种在线教育平台和学习应用纷纷涌现。尤其是2020年春季学期,受新冠疫情影响,在教育部“停课不停学”的要求下,网络平台成为“互联网+教育”成果的重要展示阵地。因此,如何根据教育平台的线上用户信息和学习信息,通过数据分析为教育平台和用户提供精准的课程推荐服务就成为线上教育的热点问题。
运用Python中的Numpy、Matplotlib数据可视化、pandas统计分析和数据预处理、Scikit-learn等对所给的数据进行分析,对某教育平台近两年的运营数据(2018 年 9 月至 2020 年 6 月的线上课程运营数据),本文将根据这些数据,分析平台用户的活跃情况,计算用户的流失率,分析线上课程的受欢迎程度,构建基于协同过滤的课程智能推荐模型,为教育平台的线上推荐服务提供策略。
关键词:数据分析;数据可视化;数据预处理;协调过滤
1.问题描述
1.1问题背景
近年来,随着互联网与通信技术的高速发展,学习资源的建设与共享呈现出新的发展趋势,各种网课、慕课、直播课等层出不穷,各种在线教育平台和学习应用纷纷涌现。尤其是2020年春季学期,受新冠疫情影响,在教育部“停课不停学”的要求下,网络平台成为“互联网+教育”成果的重要展示阵地。因此,如何根据教育平台的线上用户信息和学习信息,通过数据分析为教育平台和用户提供精准的课程推荐服务就成为线上教育的热点问题。
现有某教育平台近两年的运营数据(2018 年 9 月至 2020 年 6 月的线上课程运营数据),本文将根据这些数据,分析平台用户的活跃情况,计算用户的流失率,分析线上课程的受欢迎程度,构建课程智能推荐模型,为教育平台的线上推荐服务提供策略。
1.2所需关键技术
阐述本课程设计各部分将使用到数据分析中哪些技术。这是得分点。我们要求必须用到Numpy、Matplotlib数据可视化、pandas统计分析和数据预处理、Scikit-learn。
2.数据分析
任务 1 数据预处理
任务1.1对照附录1,理解各字段的含义,进行缺失值、重复值等方面的必要处理。
1.1.1对于表login.csv进行数据预处理:
(1)读取表中数据。
(2)查表中是否有重复数据,对重复的数据进行删除。
(3)查看表中是否有缺失值。
(4)对表中的异常值进行处理。对异常数据删去。
在对login表中数据进行观察发现,登录的地址存在异常情况。
以下图为例:用户3在2018/9/10 14:04在中国北京登录,但是在2018/9/10 14:36在中国广东广州登录,仅32分钟用户3从北京到广州,由常识可以知道这是不可能的。sk1_2.csv”,并在报告中描述处理过程。
任务1.2对用户信息表中 recently_logged 字段的“–”值进行必要的处理,并在报告中描述处理过程。
用duplicates()方法对表user.csv中的重复出现的user_id用户ID进行删除,只保留第一次出现的。因为每个用户注册后的ID是唯一的,注册时间是唯一的,不可能有同时刻注册了两个相同的用户名,删除后的数据存储为new_data。
对用户信息表中 recently_logged 字段的“–”值进行必要的处理,将处理结果保存为“task1_2.csv”。
计算用户注册时间registration_time与最近访问时间recently_logged的相差时间,对前20名相差时间的数量进行排名,然后根据其数量的比例,对表中recently_logged字段”–”进行等比例填补,例如时间差为 0 days 00:00:00,即注册时间等于登录时间的有8124条,占比率约为40%,那填补的用户信息表中 recently_logged 字段的“–”中,注册时间等于最近访问时间占比为40%
任务 2 平台用户活跃度分析
任务2.1分别绘制各省份与各城市平台登录次数热力地图,并分析用户分布情况。
由于绘制的是中国各省份和各城市平台登陆次数热力图,所以在数据的预处理阶段就需要清洗掉在国外登录的用户数据,同时由于出现类似“中国”,后面不带城市信息的数据,这样的数据也需要清洗掉。
在对数据进行合理的分析与清洗之后分别画出各省份与各城市平台登录次数热力地图。在省份的热力分布图中,可以看出广东、湖南、广西、贵州、重庆等地的学生参与网上学习的数量在全国领先。而在各城市的平台登录次数热力图中,可以明显看到广州遥遥领先其他城市,而紧接着便是佛山市、东莞市、深圳市、惠州市等沿海城市。这些城市的学生在该平台网上学习的人数相对较多。
任务2.2分别绘制工作日与非工作日各时段的用户登录次数柱状图,并分析用户活跃的主要时间段。
数据进行异常处理后,对user.csv里面的register_time进行次数的统计,以3个小时分段,根据统计的结果绘制出工作日各时段登录次数和非工作日用户登录次数的柱状图。
由上图可以看出,工作日中用户最活跃的是12:00—15:00,最不活跃的是在3:00-6:00。学生登录平台的学习时间大致集中在一天的9:00-21:00,这个时间段是平台最为繁忙的时候。
由上图可以看出,工作日中用户最活跃的是18:00—21:00,最不活跃的是在3:00-6:00,用户活跃的阶段主要在一天的12:00-15:00和18:00—21:00。
任务2.3记为数据观察窗口截止时间(如:赛题数据的采集截止时间为2020年6月18日),为用户的最近访问时间,,若>90天,则称用户为流失用户。根据该定义计算平台用户的流失率。
记为数据观察窗口截止时间(如:数据的采集截止时间为2020年6月18日),为用户i的最近访问时间,由题目得,若用户i的登录时间间隔>90天,则称该用户为流失的用户。对于流失率的计算公式如下(为流失的的总数,total为用户的总数):
最终计算出的流失率为58.763%。
任务2.4根据任务2.1至任务2.3,分析平台用户的活跃度,为该教育平台的线上管理提供决策提供建议。
根据前面的用户时间段的统计,可以发现,登录平台的人员主要集中在广东、湖南、广西和贵州等地,而城市则是主要集中在广州、深圳、东莞等地,建议公司可以把公司产品向新疆、西藏等较远离沿海的省份和城市推广。大量用户主要集中在9:00——21:00,所以在这段时间里面平台需要重视大量人流对平台造成的影响,比如:平台因人数过多而导致的卡顿或者是用户不能进入平台的后台维护。
任务3线上课程推荐
任务3.1根据用户参与学习的记录,统计每门课程的参与人数,计算每门课程的受欢迎程度,列出最受欢迎的前10门课程,并绘制相应的柱状图。受欢迎程度定义如下:
其中,为第门课程的受欢迎程度,为参与第门课程学习的人数,和分别为所有课程中参与人数最多和最少的课程所对应的人数。
统计每门课程的参与人数,利用python中value_counts()函数对study_information.csv表中的course_id列进行累计求和,则可以得到每一门课程的人数。根据统计,得到结果如图10(部分数据):
根据统计得到的结果,可以知道课程参与人数最多的是课程76,共有13265人参加该课程,而参加人数最少的课程有课程90、课程91、课程92、课程93皆为1人。由上面的统计结果,取出前十名课程,由excel绘制出柱状图,如下
根据题目中给出的对受欢迎程度的定义式:,以及上面对各种课程数据的统计结果,代入即可求得各门课程的受欢迎程度。
任务3.2根据用户选择课程情况,构建用户和课程的关系表(二元矩阵),使用基于物品的协同过滤算法计算课程之间的相似度,并结合用户已选课程的记录,为总学习进度最高的 5 名用户推荐 3 门课程。
设想一:
设想二:
当我们把学生学习所有课程进度的累加和/学生学习课程的门数的值设定为100%时,作为学习进度最高时可以发现学生学习的门数较少,而依次减少学习所有课程进度进度的累加和/学生学习课程的门数的值时发现学生学习的课程逐渐增加,学习的进度和学习门数的综合性在值设定为>=90%的时候达到最优。故取值为90%时,为总学习进度最高。
在此条件下,取得的最高学习进度的前五名用户如下图所示:
对总学习进度最高的5名用户推荐3门课程,基于物品的协同过滤的原理可以用下图进行概况:
其核心思路可以用一句话概括:大部分观看A课程的人都观看了C课程,因此A课程和C课程是相似的。当一个新用户观看了A课程时,我们认为他大概率也会喜欢C课程。
所以我们需要先计算出所有用户与用户之间的相似度。相似度的计算方法如下:
其中,观看课程a的用户为N(a),观看课程b的用户数为N(b)。公式中的分子则表示同时观看课程a和b的用户数。
另外,我们还需要考虑一个问题,即用户对课程的观看次数,我们在为用户1和用户2推荐课程时,也要考虑他们对已观看学习课程的偏好程度。
计算产品相似度矩阵,利用所给的 study_information.csv表数据,计算出用户-课程矩阵如下图:
然后根据用户-课程矩阵,计算课程之间的相似度矩阵,计算的代码及运行结果如下图所示:
计算用户的产品偏好权重:
权重由基础权重和惩罚项构成基础权重:一个用户学习课程a的学习进度为n,那么该用户对a课程的基础权重就是n。
IDF惩罚项:课程a的IDF = log (所有用户的全部课程的总学习进度/ 所有用户课程a的总学习进度)。
产品偏好权重 = 基础权重 * IDF。
根据以上公式,我们可以计算出每一个用户对所有课程的偏好权重。
计算客户的产品排序列表
假设用户1一共看过a、b门课程。对于用户1没有看过的课程c,其推荐度为:ac的相似度 * 用户1对a的偏好权重 + bc的相似度 * 用户1对b的偏好权重。
以此类推,可计算出每个客户对所有没借过的产品的推荐度。再对每个客户按照产品的推荐度大小从高到低进行排序展现或推送即可。
最终得到得结果如下表:
任务3.3在任务3.1和任务3.2的基础上,结合用户学习进度数据,分析付费课程和免费课程的差异,给出线上课程的综合推荐策略。
根据最受欢迎的前十名课程及其价格的分布,我们可以发现它们的价格区间分布在0-299元之间,但是平均学习进度最高的价格区间是集中在700-800之间。
免费课程和付费课程的差异:虽然免费课程更欢迎,但是付费课程的用户平均学习进度更高。
推荐策略一:
考虑用户偏好程度,增强用户粘性。对于初次登录的用户或者是学习课程数目较少的用户,难以根据协同过滤算法推荐课程给该用户的情况下,我们采取根据任务一求出的最受欢迎的前10门课程推荐给初次的用户。
推荐策略二:
增加平台的盈利。对于在平台学习时间较长的用户(老客户),利用协同过滤算法,我们把价格区间位于700到800的课程优先推荐给用户,因为这些课程平均学习进度最高,反映课程质量更好。
3.总结
包括做这个作业的体会,学到什么,哪些技术适用于什么特定领域,数据分析过程中需要注意哪些问题等。
4.未来工作
对于未来改进的设想:实现平台数据分析和课程推荐的自动化。根据平台的需求,通过一步步对数据分析的实现和智能推荐模型的构建,实现对每一个平台登录客户的自动化精准的推荐。
5 附录
1、软件运行环境和步骤;
2、个人在小组中的贡献等
6 参考文献
[1]杨慧慧. 基于Hadoop的协同过滤推荐算法研究[D].沈阳工业大学,2020.
[2]卢昌杰. 移动环境下商品推荐算法的研究与应用[D].杭州电子科技大学,2020.
[3]孙坤. 基于改进协同过滤的个性化推荐方法研究[D].西安工程大学,2019.
[4]王冲. 基于SVD和用户聚类的协同过滤算法研究[D].青岛理工大学,2018.
[5]王聪. 基于商品排序和用户偏好的个性化推荐模型及应用[D].河北工业大学,2015.
[6]宋伟伟. 基于评分矩阵的推荐算法研究[D].重庆师范大学,2016.
总结
专栏学习
01 【数据分析实战项目】: 无人智能售货机商务分析、 线上课程智能推荐、 学术前沿趋势分析
02 【算法--数据挖掘】: 机器学习----吃瓜教程!、 集成学习、 深度学习 学术前沿趋势分析
03 【天池数据挖掘竞赛】: 心电信号多分类分类、 新闻推荐入门赛系统项目
04 【Python数据分析】: Numpy 数值计算基础、 Matplotlib 数据可视化基础、 Pandas 统计分析基础、 Pandas 进行数据预处理、 scikit-learn 构建模型
往期精彩内容
01 【常见的数据分析师的面试问题】: 基础知识考查、概率论与数理统计、数据挖掘、常见模型介绍、数据分析师工作必备技能等等
02 【基于条件随机场模型的中文分词】: 中文分析、python代码实现
03 【 Github开源项目】: Github开源项目 数分/数挖学习路线
欢迎关注我,一起交流学习探索数据分析的世界,洞察数据!努力接受社会毒打~~