XHJ


  • Home

  • About

  • Tags

  • Categories

  • Archives

  • Search

图神经网络——节点分类与边预测

Posted on 2021-06-27 | In Machine Learning |
Words count in article: 1.3k

1.InMemoryDataset基类

在PyG中,可以通过继承InMemoryDataset类来自定义一个数据可全部存储到内存的数据集类。(继承Dataset是分次加载到内存,继承InMemoryDataset是一次性加载所有数据到内存)

1
class InMemoryDataset(root: Optional[str] = None, transform: Optional[Callable] = None, pre_transform: Optional[Callable] = None, pre_filter: Optional[Callable] = None)

参数说明:

transform:数据转换函数,用于转换Data对象,每一次数据获取过程中都会被执行。
pre_transform:数据转换函数,用于转换Data对象,在Data对象被保存到文件前调用。
pre_filter:检查数据是否要保留的函数,接收一个Data对象,返回此Data对象是否应该被包含在最终的数据集中,在Data对象被保存到文件前调用。

Read more »

图神经网络——基于图神经网络的节点表征学习

Posted on 2021-06-23 | In Machine Learning |
Words count in article: 2.3k

Graph的特征表示非常复杂:

1.复杂的拓扑结构,较难从图像中的感受野提取有效信息;
2.无特定的节点顺序;
3.通常graph会是动态变化的, 且使用多模态特征。

高质量的节点表征能够用于衡量节点的相似性,同时高质量的节点表征也是准确分类节点的前提。

本文以Cora论文引用网络数据集为例,对MLP、GCN、GAT三种神经网络的分类性能进行对比。首先载入数据集并定义可视化函数:

1
2
3
4
5
#载入数据集
from torch_geometric.datasets import Planetoid
from torch_geometric.transforms import NormalizeFeatures

dataset = Planetoid(root='dataset', name='Cora', transform=NormalizeFeatures())
Read more »

图神经网络——消息传递网络

Posted on 2021-06-19 | In Machine Learning |
Words count in article: 1.4k

消息传递(Message Passing) 指的是目标节点$S1$的邻居$\mathcal{N(S1)}$——B1、B2、B3,这些邻居节点根据一定的规则将信息(特征),汇总到目标节点上。信息汇总中最简单的规则就是逐个元素相加。
在pytorch-geometric的官方文档中,消息传递图神经网络被描述为:
$$
\mathbf{x}_i^{(k)} = \gamma^{(k)} \left( \mathbf{x}i^{(k-1)}, \square{j \in \mathcal{N}(i)} , \phi^{(k)}\left(\mathbf{x}i^{(k-1)}, \mathbf{x}j^{(k-1)},\mathbf{e}{j,i}\right) \right),
$$
其中,$\mathbf{e}
{j,i} \in \mathbb{R}^D$ 表示从节点$j$到节点$i$的边的属性,$\mathbf{x}^{(k-1)}_i\in\mathbb{R}^F$表示$(k-1)$层中节点$i$的节点表征,$\square$表示聚合策略,$\gamma$和$\phi$表示一些神经网络方法,比如MLPs多层感知器、LSTM等。
从公式中可以看出,目标节点$x_i$在k层的特征可以通过$x_i$在上一层(k-1层)的特征与其相邻节点$x_j$在上一层(k-1层)的特征以及相邻节点到目标节点的边的特征,这三个特征在k层通过$\square$的聚合策略(aggregate),通过一个$\gamma$在k层的分析方法来导出目标节点$x_i$的特征。

Read more »

图神经网络——基本图论与PyG库

Posted on 2021-06-15 | In Machine Learning |
Words count in article: 2.1k

在以往的深度学习中,主要的数据形式包括矩阵、张量、序列(sequence)和时间序列(time series),然而还有许多数据是图的结构,如社交网络、知识图谱等。图结构数据具有以下特点:

任意的大小和复杂的拓扑结构;
没有固定的节点排序或参考点;
通常是动态的,并具有多模态的特征;
图的信息包括节点信息、边信息和拓扑结构信息。

1. 图结构数据

1.1 图(Graphs)

· 一个图记作$\mathcal{G}={\mathcal{V}, \mathcal{E}}$,其中 $\mathcal{V}=\left{v_{1}, \ldots, v_{N}\right}$是数量为$N=|\mathcal{V}|$ 的节点的集合, $\mathcal{E}=\left{e_{1}, \ldots, e_{M}\right}$ 是数量为 $M$ 的边的集合。
· 节点表示实体(entities),边表示实体间的关系(relations);节点和边的信息可以是类别型或数值型的。
· 只有一种类型的节点和一种类型的边的图称为同质图(Homogeneous Graph)。
· 存在多种类型的节点和多种类型的边的图称为异质图(Heterogeneous Graph)

Read more »

异常检测——集成方法

Posted on 2021-05-23 | In Machine Learning |
Words count in article: 1.7k

一般情况下,可以把异常检测看成是数据不平衡下的分类问题,如果数据条件允许,优先使用有监督异常检测如XGBOOST;仅有少量标签时,可以用无监督学习作为一种特征抽取方式,最后喂给有监督的分类模型。
之前介绍的统计与概率模型、线性模型、基于相似度的模型,和今天要介绍的集成学习都是无监督模型。

为什么要使用集成学习?——①适合高维度数据(空间稀疏),②提高模型鲁棒性。
值得注意的时,异常检测没有标签,所以feature bagging、bagging比boosting多。而使用boosting进行异常检测,需要生成伪标签。

Read more »

异常检测——基于相似度的方法

Posted on 2021-05-20 | In Machine Learning |
Words count in article: 2.3k

异常值通常具有更高的离群程度分数值,同时也更具有可解释性。在基于相似度的异常检测方法中,主要思想是异常点的表示与正常点不同。

1. 基于距离的度量

基于距离的异常检测有这样一个前提假设,即异常点的k近邻距离要远大于正常点。常见的方法是嵌套循环,第一层循环遍历每个数据,第二层循环进行异常判断计算当前点与其他点的距离,一旦发现多于k个数据点与当前点的距离在D之内,则将该点标记为非异常值。 此法计算的时间复杂度为O(N2),当数据量比较大时需要修剪方法以加快距离计算。

Read more »

异常检测——线性相关方法

Posted on 2021-05-17 | In Machine Learning |
Words count in article: 2.2k

真实数据集中不同维度的特征可能具有高度相关性,这是因为不同的特征往往是由相同的基础过程以密切相关的方式产生的。这被称为——回归建模,是一种参数化的相关性分析。
一类相关性分析通过其他变量预测单独的属性值,另一类方法用一些潜在变量来代表整个数
据。前者的代表是线性回归,后者一个典型的例子是主成分分析。
线性相关分析基于的假设是:①近似线性相关假设;②子空间假设。为了确定线性模型是否适合数据集,需要进行探索性和可视化分析。

Read more »

异常检测——基于统计学的方法

Posted on 2021-05-14 | In Machine Learning |
Words count in article: 1.4k

异常检测的统计方法包含两种主要类型:参数方法和非参数方法。
参数方法:假定数据服从以θ为参数的参数分布,该参数分布的概率密度函数f(x,θ)给出x属于该分布的概率,该值越小,x越可能是异常点。(仅对数据做的统计假定满足实际约束时可行)
非参数方法:不假定先验统计模型,假定参数的个数较为灵活,并非完全无参。

Read more »

异常检测(Anomaly Detection)简介

Posted on 2021-05-12 | In Machine Learning |
Words count in article: 676

异常检测顾名思义就是检测出与正常数据不同的数据,检测给定的新数据是否属于这组数据集。

1. 异常检测的任务类型

无监督:训练集无标签
有监督:训练集的正例和反例均有标签
半监督:在训练集中只有正例,异常实例不参与训练

Read more »

特征工程_1

Posted on 2021-04-21 | In Machine Learning |
Words count in article: 1k

特征工程就是将原始数据空间变换到新的特征空间,在新的特征空间中,模型能够更好地学习数据中的规律。特征的选择和构造,就是人为地帮助模型学习到原本很难学好的东西,从而使模型达到更好的效果。

1. 根据现实情况构造特征

1.1 各点与特定点的距离
1
2
3
4
5
df['x_dis'] = (df['x'] - 6165599).abs()
df['y_dis'] = (df['y'] - 5202660).abs()
df['base_dis] = (df['y_dis']**2))**0.5 + ((df['x_dis']**2)
del df['x_dis'],df['y_dis']
df['base_dis_diff'].head()
1.2 将时间划分为白天与黑夜
1
2
3
df['day_night'] = 0
df.loc[(df['hour'] > 5) & (df['hour'] < 20),'day_night'] = 1
df['day_night'].head()
Read more »
<i class="fa fa-angle-left"></i>1…91011<i class="fa fa-angle-right"></i>

109 posts
21 categories
102 tags
RSS
GitHub
友情链接
  • Yaoguo Wang
© 2021 — 2024 true | Site words total count: 328.5k
Theme — NexT.Pisces v5.1.4
0%