3 Star 1 Fork 2

openEuler-competition / Summer2021-No.3 开源项目开发者流失预测分析

加入 Gitee
与超过 600 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

开源项目开发者流失预测分析

赵博宣 项目编号:210010003

项目信息

  • 项目名称:开源项目开发者流失预测分析

  • 方案描述:

    • 基于随机森林、xgboost、迁移学习等机器学习方法,设计开发者流失最优预测模型
    • 获取openEuler社区的真实开发者数据,验证模型的有效性;基于预测模型,分析openEuler社区的人员流失情况
    • 通过ElasticSearch建立流失状态数据库,结合Kibana/Grafana工具,实现开发者人员流失看板输出功能
    • 对不活跃开发者和SIG组进行召回
  • 时间规划:

学生提交项目申请阶段 [05 月 24 日 - 06 月 13 日] - 与项目导师进行充分沟通,完善项目申请书,优化项目开发计划及研究内容
项目预研与社区交流 [06 月 14 日 - 06 月 30 日] - 获取openEuler社区的数据 (Gitee API & 导师提供) - 熟悉openEuler社区的样本数据和标签结构
项目研发第一阶段 第1 - 2周 [07 月 01 日 - 07 月 14 日] - 结合真实数据标签和特征工程方法,确定“人员流失程度”指标定义
项目研发第一阶段 第3 - 4周 [07 月 15 日 - 07 月 28 日] - 基于Pandas等Python数据处理工具,对项目指标数据进行单因子探索性分析,筛选出与人员流失程度相关性较高的特征因子
项目研发第一阶段 第5 - 6周 [07 月 29 日 - 08 月 04 日] - 用Xgboost算法实现预测模型 - 项目数据多因子探索分析,基于多因子(可调控指标或先验因)训练预测模型
中期考核前准备 第7周 [08 月 05 日 - 08 月 15 日] - 中期考核目标:实现开发者流失最优预测模型 - 能基于历史数据对潜在流失开发者进行预测
项目研发第二阶段 第8 - 9周 [08 月 16 日 - 08 月 29 日] - 设计潜在流失开发者召回方案,对已经或潜在流失的开发者进行召回 - 实现流失事件检测
项目研发第二阶段 第10 - 11周 [08 月 30 日 - 09 月 05 日] - 继续进行开发者召回工作 - 继续实现流失事件检测 - 基于Kibana,完成可视化看板开发
项目研发第二阶段 第11 - 12周 [09 月 06 日 - 09 月 19 日] - 进行开发者召回工作 - 完善可视化开发的工作
项目结题阶段 第13周 [09 月 20 日 - 09 月 30 日] - 对项目的主要工作进行总结和评价

项目进度

项目产出:

主要完成内容:

  1. 数据获取(数据爬取代码 ./data_collection)
  • openEuler和src-openEuler的数据获取,包括仓库宏观信息、开发者行为及event事件信息、SIG组信息等
  1. 方法一:机器学习分类预测流失开发者(机器学习代码 ./machine_learning_classification)
  • 用10余种机器学习方法,几十个特征的静态数据,对流失开发者进行二分类

  • 设置中间值,进行三分类,找出临界/潜在流失开发者

  1. 方法二:时间序列预测潜在流失开发者 (时间序列预测代码 ./time_series_prediction)
  • 开发者活跃度定义,三个流失程度参考指标 (通过原始数据计算时间序列训练数据的代码, 包括时间切片和活跃度计算)

  • 根据历史数据,比较多种时间序列预测算法的准确度,补充实验过程数据,并选择使用Facebook-prophet方法

  • 对所有在两大仓库发生过行为(不包括仅star)的开发者进行时间序列预测

  1. 方法二+:时间序列预测SIG组活跃度及流失预测 (时间序列预测代码 ./time_series_prediction)
  • 参考社区活跃度计算方法,对SIG组活跃度进行定义与计算
  • 对所有SIG组进行活跃度时间序列预测
  1. 数据可视化看板
  • 基于ElasticSearch & Kibana,对开发者和SIG组的活跃度及流失程度时间序列数据进行持久化和可视化输出
  • 可视化组件主要包括:开发者/SIG组的历史活跃度及预测值时间序列折线图、高流失可能性开发者/SIG组列表输出、活跃度来源比例饼图等

方案进度:

根据原定方案和时间规划,目前进度为:全部计划开发工作已完成,并补充SIG组活跃度时间序列预测模型及其可视化组件的开发。

遇到的问题及解决方案:

  1. 数据获取阶段

    问题:Gitee token有速度限制

    解决方案:多注册账号并行爬取数据

  2. 时间序列预测阶段:

    问题:如何选取合适的时间序列预测算法

    解决方案:经过各个算法的比较,最终选择prophet算法

  3. SIG组流失预测阶段:

    问题:部分仓库无SIG组对应关系,SIG组活跃度的定义不确定

    解决方案:忽略不对应SIG的仓库,参考CHAOSS对项目活跃度的定义,迁移至SIG级别

  4. 看板开发阶段:

    问题:Elastic Stack工具的使用及数据格式的对齐

    解决方案:通过参考社区中的数据样例,调整数据接口及存储格式,保证数据的正确输入和输出

心得体会:多和导师沟通交流解决方案,确定思路和方法的正确性

项目完成质量:

从总体上看,项目的两大目标——开发者流失预测算法及数据计算、开发者活跃度与流失状态看板均合格完成,预期功能全部实现。

在此基础上,我们又根据社区反馈补充了SIG组的活跃度与流失预测分析内容,具体实现方法与开发者个体相似,且有一定的创新。

通过与社区开发者的沟通和对接,本项目的最终成果可以作为服务在openEuler社区上线运行,持续为社区输出数据分析和可视化结果。

综上所述,本项目的完成度很高,具有一定程度的开发工作量,能为社区持续作出贡献,故完成质量很高。

与导师沟通及反馈情况:

在完成暑期项目的全过程中,我始终与社区和项目导师保持紧密联系,并及时报告工作成果、调整工作计划。项目进行的前半段,我们通过双周例会保持沟通;后半段则改为单周例会,保证导师能充分知晓自己的工作方向和进度。

项目进行过程中,钟君老师认真负责,对项目工作的阶段性任务做出了充分指导,保证其顺利推进,使得项目最终能够顺利完成。

未来工作计划:

虽然暑期2021项目即将结项,但项目成果的部署和与社区的合作会继续进行,未来一段时间的工作内容如下(按优先级排序):

  1. 开发者和SIG组活跃度定义的动态调整功能
  2. 可视化看板中查看开发者/SIG组活跃度的组成来源模块
  3. Gitee行为和Git commit行为的统一身份认证(通过用户邮箱)

仓库评论 ( 0 )

你可以在登录后,发表评论

简介

https://gitee.com/openeuler-competition/summer-2021/issues/I3DO3J 展开 收起
Jupyter Notebook 等 6 种语言
MulanPSL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/openeuler-competition/summer2021-3.git
git@gitee.com:openeuler-competition/summer2021-3.git
openeuler-competition
summer2021-3
Summer2021-No.3 开源项目开发者流失预测分析
master

搜索帮助