X-lab2017 / open-research

📚 用开源的方法来研究开源的现象。(open source methodology for open source phenomena)
50 stars 17 forks source link

[Task] HINRank——一种面向复杂异质信息网络的中心度算法及其在开源软件研发领域的应用 #28

Open frank-zsy opened 2 years ago

frank-zsy commented 2 years ago

背景

基于网络的中心性算法在中心性评估中有较好的表现,而自 PageRank 提出以来,基于网络拓扑关系的协同中心性排序备受关注,并演化出众多的相关算法。如面向特定领域的 ArticleRank、MovieRank,针对性能优化的 LeaderRank,以及在 2018 年提出的扩展到二部图的BiRank 等,都是对 PageRank 算法的扩展。

但在实际业务场景中,简单的同质图或二部图并不能很好的反映真实世界的网络关系,真实的网络更多是异质信息网络。因此将 PageRank 类算法扩展到泛化异质信息网络,并使其可以支持先验知识,则可以更好的适应真实业务需求,为真实世界的价值评估提供更好的数据与理论支撑。

思路

摘要

介绍开源软件的统计评价方法及其局限性,并介绍基于图网络的中心性算法。

问题

更详细介绍开源软件研发领域的软件中心性评估的问题与意义,介绍开源软件研发领域的数据情况。

方法

实验

未来与规划

will-ww commented 2 years ago

我觉得挺好的,几个要点建议,需要:

will-ww commented 2 years ago

有啥进展不?我可以来帮忙讲故事~ @frank-zsy

frank-zsy commented 2 years ago

这个论文基本就是之前几篇博客的内容,没有什么新的东西,王老师看需不需要输出吧,我倒是觉得不着急

will-ww commented 2 years ago

理解你的不着急,我想如果有空你就搞下呗,应该需要加点实验,这样可以早点准备,也会有些启发的~

frank-zsy commented 2 years ago

这里理解王老师的意思是否是可以做一些图上的基本指标分析实验,例如连通性、度分布、图半径、集聚系数等,其实也非常合适,我感觉整个框架有两条相对独立的脉络,虽然最终是合在一起的,但其实展开时会相对独立和发散。

一条线索是关于开源数据的量化。这块可以从开源导致公开源代码数据激增,从而拉动的新兴学科,例如从 MSR (Mining source repository) 对代码仓库的挖掘,到 DSN (Developer social network) 开发者社交网络分析的兴起。DSN 有可以从最早的邮件交互,到 Mozilla 的 Bug report 平台交互,再到 GitHub 平台上的社交研发网络,也有一个演变的过程。而分析也从最早的网络基本指标的分析到网络结构分析、中心性分析等。所以本篇使用了更加复杂的建图方式,将社交研发、社交关注、仓库依赖关系等统一建图,并对子生态网络可以做一些基础指标的统计分析工作,并使用 HINRank 对多生态的融合异质信息网络进行统一的中心性分析。这是其中一条线索。

另一条线索则是网络中心性算法的演化。这块可以从中心性评估的算法体系说起,例如基于节点邻域信息的度中心度、半局部中心度、K-shell 分解、H 因子,到基于路径信息的接近中心度、介数中心度、离心中心度、Katz 中心度等,再到基于特征向量的如 PageRank、HITS 等。进而到 PageRank 算法的演化,如在不同领域的应用,如 ArticleRank、ObjectRank、MovieRank、PopRank 等,以及重要的几个优化算法,如 LeaderRank 对性能和鲁棒性的提升,BiRank 向二部图的扩展。而 HINRank 则是将 PageRank 扩展到泛化的异质信息网络中,并对收敛性进行了严格证明。并最终使用 DSN 网络信息对 HINRank 的表现进行说明,例如与度中心度、接近中心度等比较。

所以两条路径其实相对独立,虽然最终可以交汇在一起,但扩展的外延几乎完全无关,所以感觉有点难以驾驭,不知道王老师和同学们有没有什么好的建议,是否应该拆成两篇还是可以分章节来做?

另外,对于建图中的事件到边权的压缩,我个人想法在本次中不引入活跃度指标,而是直接使用事件数量作为权重,虽然活跃度指标更加合理,但可能较难解释。关于活跃度权重,个人想法是后续增补一个问卷调研研究来进行。

will-ww commented 2 years ago

这里理解王老师的意思是否是可以做一些图上的基本指标分析实验,例如连通性、度分布、图半径、集聚系数等,其实也非常合适,我感觉整个框架有两条相对独立的脉络,虽然最终是合在一起的,但其实展开时会相对独立和发散。

一条线索是关于开源数据的量化。这块可以从开源导致公开源代码数据激增,从而拉动的新兴学科,例如从 MSR (Mining source repository) 对代码仓库的挖掘,到 DSN (Developer social network) 开发者社交网络分析的兴起。DSN 有可以从最早的邮件交互,到 Mozilla 的 Bug report 平台交互,再到 GitHub 平台上的社交研发网络,也有一个演变的过程。而分析也从最早的网络基本指标的分析到网络结构分析、中心性分析等。所以本篇使用了更加复杂的建图方式,将社交研发、社交关注、仓库依赖关系等统一建图,并对子生态网络可以做一些基础指标的统计分析工作,并使用 HINRank 对多生态的融合异质信息网络进行统一的中心性分析。这是其中一条线索。

另一条线索则是网络中心性算法的演化。这块可以从中心性评估的算法体系说起,例如基于节点邻域信息的度中心度、半局部中心度、K-shell 分解、H 因子,到基于路径信息的接近中心度、介数中心度、离心中心度、Katz 中心度等,再到基于特征向量的如 PageRank、HITS 等。进而到 PageRank 算法的演化,如在不同领域的应用,如 ArticleRank、ObjectRank、MovieRank、PopRank 等,以及重要的几个优化算法,如 LeaderRank 对性能和鲁棒性的提升,BiRank 向二部图的扩展。而 HINRank 则是将 PageRank 扩展到泛化的异质信息网络中,并对收敛性进行了严格证明。并最终使用 DSN 网络信息对 HINRank 的表现进行说明,例如与度中心度、接近中心度等比较。

所以两条路径其实相对独立,虽然最终可以交汇在一起,但扩展的外延几乎完全无关,所以感觉有点难以驾驭,不知道王老师和同学们有没有什么好的建议,是否应该拆成两篇还是可以分章节来做?

另外,对于建图中的事件到边权的压缩,我个人想法在本次中不引入活跃度指标,而是直接使用事件数量作为权重,虽然活跃度指标更加合理,但可能较难解释。关于活跃度权重,个人想法是后续增补一个问卷调研研究来进行。

嗯,明白你的意思。我认为你书的对,是因该作为两个工作,提现到博士论文中也是两个章节的内容。

而且,量化和建图,应该是更加靠前的一个工作,然后有了图以后,甚至可以脱离业务,做一些更加深入的图分析,这种工作就更加理论化了,也是非常好的研究。最后,有回到应用场景中,支撑上层的一些应用。

frank-zsy commented 1 year ago

重拾一下论文实验的内容,目前希望进行的内容如下:

bifenglin commented 1 year ago

重拾一下论文实验的内容,目前希望进行的内容如下:

  • 量化仅限于特征向量中心性评价,学术论文也常称为影响力
  • 数据范围:

    • 仅选择 GitHub 上 2021 年全年项目语言为 TypeScript 和 JavaScript 的项目,约 300W 个
    • 使用 npm 制品库中 GitHub 托管项目的依赖关系数据
    • 使用 GitHub 在 2021 年底的开发者社交关系数据
  • 使用上述数据构建 JavaScript/TypeScript 语言开源生态网络
  • 定义 OpenRank 计算框架

    • PageRank 向具有初值有关、异质网络的扩展与数学证明
    • 异质网络 OpenRank(节点异质、边异质)的计算框架定义
    • OpenRank 计算框架在 Neo4j 上的实现
  • OpenRank 的性质分析

    • 对于数据缺失的算法鲁棒性研究(随机抽离部分数据,观察结果)
    • 对于边权合并策略的敏感度研究(使用不同边权权重观察与统计结果的差异)
  • OpenRank 在 JavaScript/TypeScript 开源生态数据中的应用
  • OpenRank 的算法效果评价

    • 使用榜单编辑距离评判,寻找相关 2021 年项目排名列表,如 GitHub Trending 等,并和纯协作网络结果进行对比

使用异质图进行openrank实验么?那么排名出来的结果对不同类别的对象(仓库、人)单独排名,然后针对repo与Github Trending的排名进行对比评价算法效果?

frank-zsy commented 1 year ago

使用异质图进行openrank实验么?那么排名出来的结果对不同类别的对象(仓库、人)单独排名,然后针对repo与Github Trending的排名进行对比评价算法效果?

是这样的想法,除了 GitHub Trending 外,应该还会再找一些其他的榜单数据来做对比。

frank-zsy commented 1 year ago

研究相关内容持续更新文档:https://www.yuque.com/docs/share/cd343b65-a9b2-42df-9853-ce15fe1a5cfa?# 《NPM 开源生态网络分析》

will-ww commented 1 year ago

昨天的报告,还是非常有启发和收获的。Frank 不仅用供应链数据,讲了真·异质信息网络,以及上面的OpenRank模型,还做了些论文分析与初步推到,从论文角度,已经可以写出很不错的撑过了。

另外还在后面做了未来工作的设想,特别是将影响力值推广到影响力向量,不仅能在数学上引出新的问题(不确定是否有人研究过),同时在实践上是极具意义的,one model fits all,非常优雅~

frank-zsy commented 1 year ago

目前关于在数学层面的创新,我个人感觉是有的。因为经典的 PageRank 是无法引入节点固有属性的,包括之后的各种改进都有类似的性质,所以这些算法的在数学上的收敛性是依赖于随机过程的佩龙一弗罗宾尼斯定理。而 OpenRank 使用了随机矩阵的谱半径性质,但收敛性则依赖于转移矩阵的谱半径和矩阵范数的关系,这种方式是目前没有看到过的。所以这个创新说大也不大,但是确实跳出了之前的套路,这也是为什么 OpenRank 对图的强连通性没有要求。

而影响力向量则是另外一个维度,目前我基本可以确定没有类似的工作,因为我使用multi dimension pagerankvector pageranktensor pagerank 等,都没有看到相关的论文。我的猜测是在机器学习兴起后,PageRank 这种迭代计算的算法已经不受学术界的看重了,所以近些年图机器学习是更热的领域,类似 PageRank 的随机游走采样的图特征采样等方法更加容易出成果,而这种方式对于收敛性并没有要求,只要采样到特征即可做下游任务了。

而后续的工作,除了推广到高维外,还有是直接使用指定参数说明效果,还是使用已有榜单学习参数的问题,我个人的看法是:

所以从出论文投稿的角度来说,我觉得前者是一个好的方式,但从做正确的事的角度出发,我觉得应该是后者的方式。

frank-zsy commented 1 year ago

所以我觉得如果以后者的方式来做,可能可以发布一个调查问卷,收集大家对于不同类型的数据对于影响力影响权重的看法,并汇总得到一个共识参数集,之后根据这个参数集计算结果再和已有的榜单对比做案例说明,应该会是一个好的方式,比起直接指定参数要更加 solid 一些。

frank-zsy commented 1 year ago

目前计划使用问卷方式进行权重调研,在当前图中,已知邮箱地址的用户数为 58,667 个,使用 2021 年活跃时间次数排序取 Top 2W 用户发送调研问卷,按照小雅归档项目研究的问卷回收率 5%,预计可回收问卷约 1000 份。

问卷地址:http://survey.frankzhao.cn/vm/mRoStuy.aspx?sojumpparm=xlab 大家也可以帮忙 review 一下,暂时不要提交。

问卷后的参数是定制的,给每个开发者发送的链接均注入了其对应的 GitHub login 用于追踪填写情况,且对于每个 login 仅可填写一次问卷,回收后的问卷需匹配 login 信息,若出现 login 不匹配则视为无效数据。

后续采用统计方法对问卷结果进行处理,剔除异常离群样本,然后按用户影响力(初始为活跃事件次数)进行加权平均后计算 OpenRank 影响力,然后再按得到的影响力重新计算权重,修正后重新计算 OpenRank 直至 OpenRank 与权重集收敛。

frank-zsy commented 1 year ago

另,上次提到 OpenRank 的实现分为三步:

之前在 Neo4j 插件中实现了最后一步,前两步在分析代码中实现,如果要分为两步实现需要升级插件到支持 GDS 2.1 版本,原始版本为 1.7.3。

故 1.7.3 版本打 tag 并发布了一个 release,master 分支已升级到 GDS 2.1.6 版本,后续可进一步开发实现第二步,第一步属于业务侧需求,不是通用需求,需在调用 OpenRank 前自行抽取。

详情见 https://github.com/X-lab2017/openrank-neo4j-gds

frank-zsy commented 1 year ago

十一期间基本完成了问卷发放和回收工作,发送定向邮件的坑挺多,没有完成 2W 用户的发放。

目前共完成约 5000 个用户的问卷发放,回收问卷 175 份,来源分布六大洲 39 个国家,离散性较好。其中中美德法四国人数最多。

具体分布情况见这里

邮件进行问卷调研的具体坑包括: