你好。 我在过去的文章中提到我正在为企业数据集进行认知计算。 就是这样。

本文将需要深入学习的一些理解,但您应该能够遵循对数据科学的最小理解。

我一直致力于在GPU上深入学习的图形中检测模式。 Thomas Kipf 编写了一个用 Keras对图形节点进行分类的好库 。 本文基于他的作品“ 图形卷积网络的半监督分类 ”。 我们来看一下。

首先,图表是什么?

那么,我关心我工作中的知识图。 这些图表代表像“白宫”和“唐纳德特朗普”这样的实体作为节点,像“作品”这样的关系是边缘。 我们如何构建这些图表是另一回事。 在本文中,我正在研究交易数据以训练分类器来识别欺诈交易。 如果你更喜欢顶点和圆弧而不是节点和边缘,那么阅读这篇文章 。

我在这个奇怪的图表世界中感到宾至如归。 我在图表上的工作可以追溯到我的硕士论文。 在那项工作中,我有兴趣在有向无环图内找到共同元素(凸子图)。 我正在确定基于它运行的软件添加到处理器的定制指令。 我用整数线性规划来解决这个问题。 在大图上,求解器可能需要数小时甚至数天。

这一系列研究的链接:

  • 嵌入式人工神经网络硬件/软件代号研究
  • 可调指令集扩展标识
  • 用于人工神经网络的ASIP
  • 用定制指令在FPGA上进行人工神经网络加速
  • 硬件约束下改进的ISE识别
  • 并行指令集扩展标识
  • 针对可配置多处理器的静态任务调度
  • 为多处理器片上系统硬件/软件协同设计工具链设计和实现指令集扩展标识
  • SING:多处理器系统芯片设计和系统生成工具

以下是OrientDB中知识图本体的一个例子:

来源: OrientDB演示页面

其次,我们可以发现什么样的模式?

我们想要标记节点。 图中的每个实体都有一些我们想要分类的特征,而我们只有一些节点的标签。 我们可以预测出简单的布尔标签,比如“人物”或“不是人物”,还有更有趣的标签,比如节点分类到几个类别之一。 然后我们可以做更复杂的回归,比如根据图表中的实体数据预测实体所带来的风险。 这包括节点到其他节点的连接。 让我们坚持本文中的布尔节点标签/分类问题,以保持简单。 我们希望通过大约4,000个银行帐户标记594,643笔交易,要么是可疑的,要么是不可疑。 我们希望在不到一分钟的时间内完成 。 不是几小时或几天。

第三,我们如何定义kegra理解的图形?

我们需要指定两个文件。 第一个节点具有节点描述,第二个节点说明节点如何连接。 在kegra提供的cora示例中,有2,708个节点的描述和标签,其中有5,429个边(节点对),用于定义节点彼此的连接。

以下是每个文件几行的视图:

节点之间的链接

每个节点ID后面跟着特征(大多数为0),最后还有一个节点标签(例如Neural_Networks,Case_Based)。  这些功能大多为0,并在上面的屏幕截图中为许多行换行。  每个特征表示在某个单词的文档(节点)中的使用。  更多信息请点击此处kegra自述文件 。

让我们试试看

首先,你需要Keras 2,所以这样做:

 点安装keras  - 升级 

假设你安装了Keras和TensorFlow,keras-gcn依赖于gcn,所以让我们克隆并逐个安装它们。

  #install gcn  git clone https://github.com/tkipf/gcn.git  cd gcn /  python setup.py安装  cd .. 
  #install keras-gcn  git clone https://github.com/tkipf/keras-gcn.git  cd keras-gcn /  python setup.py安装 

首先,让我们使用kegra称为cora的现成示例运行代码。 我们在输出中看到cora从原始数据中检测并打印了预期的节点数和边数。

训练运行在cora数据集上:36%的准确性和上升。

cora数据集的测试结果:77.6%的准确性。

我们现在对kegra理解输入文件的方式做一些小改动,只是为了让这些名字更好。 在github的当前版本中,输入文件是描述节点之间的弧的“* .cites”,描述节点的“* .content”。 相反,我改变了kegra以读取“* .link”和“* .node”文件。 你的数据文件夹现在应该是这样的:

  〜/ kegra / keras-gcn / kegra $ ls -l data / cora / 总计7720  -rwxrwxr-x 1 ubuntu ubuntu 69928 Dec 3 02:52 cora.link(was cora.cites)  -rwxrwxr-x 1 ubuntu ubuntu 7823427 Dec 3 02:52 cora.node(was cora.content)  -rwxrwxr-x 1 ubuntu ubuntu 1560 Dec 3 02:52自述文件  〜/ kegra / keras-gcn / kegra $ ls -l data / customerTx / 总计7720  -rwxrwxr-x 1 ubuntu ubuntu 7823427 Dec 3 05:20 customerTx.node  -rwxrwxr-x 1 ubuntu ubuntu 1560 Dec 3 05:20自述文件  -rwxrwxr-x 1 ubuntu ubuntu 69928 Dec 3 05:20 customerTx.link 

现在让我们用交易数据填写customerTx.node和customerTx.link 。 第一个文件是银行客户及其功能的列表。 格式是:

快速查看一些交易记录。  在这种情况下,有货币的发送者和收款人,以及已发送金额的记录(金额栏),以及由审阅交易的人类分析员(欺诈栏)应用的标签。  我们可以忽略前两列(索引和步骤栏)。

边缘文件( customerTx.link )记录双方在每次交易中的人员。

节点文件( customerTx.node )将图表中每个节点上的信息记录为每笔交易的资金发送者。  txCount列列出了离开节点的事务(边)的数量。  amountMean列指定平均事务大小。  “ 欺诈平均值”列是此数据涵盖期间发件人帐户上标记的交易的平均值。  请注意,绝大多数交易都可以,而不是FRAUD,这是一种数据集失衡 。

图中有4112个节点。  分析师平均有2.3%被标记为问题。

我们现在可以使用kegra来分析各种分析精度的图表。

如果系统是由完美的分析师对数据进行培训的,那么应该完全学会如何分析图表。 但是,如果人类分析师在20%的时间内出错,那么kegra模型的预测能力应该同样被限制在80%。 为了试验这个,我给图形标签添加了不同数量的随机噪声,看看kegra会如何做,因为训练数据的质量越来越差。

以表格和图表形式显示的结果如下:

交易标签实验的原始结果,在知识图上使用深度学习

这与上表中的数据相同,但更易于理解图形

这里有很多东西需要消化。 首先,我们看到,随着数据(蓝色)中的噪声增加,早期停止(x轴上的标签)会在训练中更早和更早地进行踢球。 这告诉我们,特征数量太少(少数列)导致训练数据过度拟合。 其次,我们看到测试精度通常低于训练精度。 这是预期的,因为训练数据对于分类器而言是熟悉的,而测试数据则不是。 第三,测试精度不为零。 好! 这意味着分类器可以仅使用图形和每个节点的特征(txCount,amountMean和fraudMean)重新生成OK / FRAUD标签。 第四,随着注入的噪声(蓝色)上升,分类器(橙色)的准确度下降。 这意味着结果不是随机的。 第五,我们看到,训练准确度(红色)加上附加噪声(蓝色)增加了大约100%,这意味着分类器与标注数据集的分析师一样好/坏,但不会更糟。

总之,kegra在知识图谱分类上表现得非常好。 与他们的论文中的结果相比,这些结果可能太好了。 我将检查交易文件中的欺诈标签列是否太具有说明性,并将其替换为难以用来从诸如原籍国,城市,邮政编码等更广泛的数据集中预测的功能。

我的下一个动作是从源文件中重新生成具有更多列的交易数据集,并查看kegra是否仍然表现如此出色。 在cora数据集上没有提前停止,所以我怀疑交易数据对kegra来说并不具有挑战性,这是我之前提到的原因之一。 也许如果我将更多语义特征嵌入到生成的图中......我可以做很多有趣的事情作为下一步。

特别感谢Thomas Kipf在出版前观察这篇文章。 与我平常的高级文章相比,这是一篇非常复杂的文章,可以准备(和阅读)。 如果你喜欢这篇关于图表的深度学习文章,那么请让我知道写出更多这样的研究内容。 我也很高兴在评论中听到您的意见。 你怎么看?

https://towardsdatascience.com/kegra-deep-learning-on-knowledge-graphs-with-keras-98e340488b93

kegra:用Keras深度学习知识图相关推荐

  1. 万字总结Keras深度学习中文文本分类

    摘要:文章将详细讲解Keras实现经典的深度学习文本分类算法,包括LSTM.BiLSTM.BiLSTM+Attention和CNN.TextCNN. 本文分享自华为云社区<Keras深度学习中文 ...

  2. 复旦大学邱锡鹏教授:一张图带你梳理深度学习知识脉络

    Datawhale 作者:邱锡鹏,复旦大学教授 寄语:本文梳理了深度学习知识体系,分为机器学习.神经网络和概率图模型,同时对机器学习算法类型.深度学习原理框架等进行了梳理,帮助大家更好地学习和入手深度 ...

  3. 深度学习者的入门福利-Keras深度学习笔记

    Keras深度学习笔记 最近本人在github上发现一个不错的资源,是利用keras来学习深度学习的笔记,笔记内容充实,数据完善,本人亲自实操了里面的所有例子,深感收获颇丰,今天特意推荐给大家,希望能 ...

  4. [Python人工智能] 三十.Keras深度学习构建CNN识别阿拉伯手写文字图像

    从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章分享了生成对抗网络GAN的基础知识,包括什么是GAN.常用算法(CGAN.DCGAN.infoGAN.WGAN). ...

  5. 为什么将表格的method改为post后就无法工作_用Python将Keras深度学习模型部署为Web应用程序...

    构建一个很棒的机器学习项目是一回事,但归根结底,你希望其他人能够看到你的辛勤工作.当然,你可以将整个项目放在GitHub上,但是怎么让你的祖父母也看到呢?我们想要的是将深度学习模型部署为世界上任何人都 ...

  6. Keras深度学习实战(2)——使用Keras构建神经网络

    Keras深度学习实战(2)--使用Keras构建神经网络 0 前言 1. Keras 简介与安装 2. Keras 构建神经网络初体验 3. 训练香草神经网络 3.1 香草神经网络与 MNIST 数 ...

  7. Keras深度学习实战(1)——神经网络基础与模型训练过程详解

    Keras深度学习实战(1)--神经网络基础与模型训练过程详解 0. 前言 1. 神经网络基础 1.1 简单神经网络的架构 1.2 神经网络的训练 1.3 神经网络的应用 2. 从零开始构建前向传播 ...

  8. [Python图像识别] 四十七.Keras深度学习构建CNN识别阿拉伯手写文字图像

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  9. Windows+Anaconda+tensorflow+keras深度学习框架搭建--reproduced

    转载于网络,已备查用. 现在把windows下的Anaconda+tensorflow+keras深度学习框架搭建过程记录如下 1.下载安装Anaconda记住支持版本一定是python3以上的版本 ...

最新文章

  1. QEMU和KVM 中断处理过程
  2. 安卓java增加属性_如何使用Java读取Android属性
  3. C++实现选择排序(附完整源码)
  4. Web 开发时需要注意到的一些性能问题
  5. 网络编程释疑之:TCP连接拔掉网线后会发生什么
  6. ISO C99中的一些扩展(草稿)
  7. 2020 ccf推荐中文期刊_CCF推荐国际学术期刊
  8. S3C DMA使用方法,2410-2440 dma介绍
  9. 我的docker随笔28:基于容器的升级方案实验
  10. 08-01 Jmeter 核心原理与性能测试理论
  11. 吴恩达机器学习笔记3——线性代数
  12. 应该如何理解mobx_如何使用mobx观察observable数组上的object.property更改
  13. 三分钟了解域名怎么备案?
  14. source insight 4.0 的一些设置
  15. APP——adb命令——背诵实操——背诵总结
  16. Pymol获得蛋白中二级结构信息
  17. Go语言核心之美-必读
  18. 阅读笔记:Single Shot Multibox Detector(SSD)
  19. html框架自动居中,html 宽度固定并布局居中模板框架
  20. 最新钣金设备制造公司网站模板源码+手机端+后台

热门文章

  1. 脑电信号特征提取常用算法(共空间模式CSP、小波变换DWT、功率谱密度PSD、AR模型)
  2. 语音幅度统计-matlab-有问题
  3. 学习笔记 Keras:常见问题
  4. CUDA程序编写具体参数设置
  5. java数据结构编程_Java数据结构编程
  6. 【总结】一文了解所有的机器学习评价指标
  7. SVM 透彻理解与分析
  8. 1.2传值、引用、常量引用
  9. [云炬创业基础笔记]第五章创业机会评估测试8
  10. 云炬Qtpy5开发与实战笔记 3PyCharm添加PyUIC扩展——将.ui文件转换成.py文件