在ML里,图数据集一般由多个部分组成,它们的存在让机器学习任务变得更复杂也更有趣。这种数据不是只有单一的样本信息,还包含了样本之间的关联。比如,每个用户不光有个人属性,还和别的用户连着呢。这样的数据结构很特别,给ML带来了很大的挑战和机遇。 咱们先来看看节点特征矩阵。这个东西就像是给每个节点做了个简历,上面写满了各种各样的属性。比如在社交网络里,这可能是年龄或者活跃度。如果一个图里有3个用户,每个人有2个属性,那就能凑成一个3乘2的矩阵。这里面的每一行代表一个用户,每一列代表一种属性。记住它通常用X来表示就行了。 接着讲讲邻接结构。这部分很关键,它描述的是节点之间的连接关系。通常用邻接矩阵来表示,咱们把它记做A。假设还是刚才的例子,有3个用户,那邻接矩阵就是3乘3的。如果A[i][j]等于1,就说明这两个节点连在一起了。比如A[0][1]=1,就代表用户0和用户1是朋友。 除了邻接矩阵之外,还有其他表示方式呢。比如边列表就是把所有的边一条一条列出来;邻接表则是给每个节点列出它都和谁连着。这些方法在节点数量特别多的时候会更节省空间。 再来看看节点标签。有些时候我们需要给每个节点标上类别,比如用户类型或者文档分类。这个标签数组通常用y来表示,形状一般是一维的。但不是所有任务都需要标签,比如图聚类或者链接预测就不一定需要。 特征名称也很重要。矩阵里每一列对应一个特征名,用字符串列表来表示。比如有一列叫“age”,另一列叫“activity”,这样就能清楚地知道每一列代表什么意思了。 还有数据说明呢。这些信息可以帮助我们理解背景情况,比如数据从哪儿来、有多少个节点或者边等等。这些说明通常会写在文档里帮助理解。 把这些东西放在一起,就是一个完整的图数据集了。它不仅有节点的属性信息,还有节点之间的关系结构。通过这些信息,图学习算法就能同时利用节点属性和关系结构来完成任务了。