Tag Archives: graph

Graph Databases: The Next Generation of Fraud Detection Technology

graph database Graph Databases: The Next Generation of Fraud Detection Technology

This is a follow-up blog post in our Graph Database series. Learn what a graph database is and why it’s important here.

Today’s approach to fraud detection: Discrete Analysis

With its terrific ability to enable users to spot patterns quickly and easily, graph database has wide implications for use in a number of industries including fraud detection. Fraud accounts for billions of dollars lost per year and it seems each year, fraudsters get more sophisticated in outsmarting the banks. Unfortunately, the most common attribute of fraud is misdirection and burying their patterns in lots of data.  With traditional data storage techniques, it really isn’t possible to see beyond individual points to the connections between them. That sort of heightened, overarching pattern-like view has now become more feasible with graph database. The connected data view in graph database can more easily uncover these larger complex patterns and make fraud evasion harder. To understand how useful an addition graph database can be in detecting fraud, it’s best to first understand Gartner’s layered approach to fraud detection.

Gartner analysts say “No single layer of fraud prevention or authentication is enough to keep determined fraudsters out of enterprise systems.” They say that you need a combination of monitoring and controls to combat fraud. Therefore, they recommend following the 5 layered fraud prevention approach. This approach recommends that companies use all five layers, ranging from the most basic of security measures (secure browsing) to the most complex (analysis of relationships), and encourages companies to face the fact that some determined fraudsters will break through the first few layers of security. Because some will make it in.

Most of today’s available fraud prevention solutions only address the first four layers of Gartner’s recommended approach. For instance, banks mainly use transaction monitoring systems (TMS) which rely on relational databases. Due to their linear, discrete analysis approach, most of today’s solutions can usually only spot trends and incidents after they’ve happened and only a limited basis.

While the discrete approach is an easy one that helps users spot patterns and capture fraudsters acting alone, it doesn’t necessarily detect patterns between all the different data endpoints and therefore, is not very useful in detecting elaborate crime rings. Further, modern fraud rings have become very familiar with the ways of discrete data analysis and know how to avoid detection with this approach. This leads us to the next frontier of fraud detection which revolves around connected analysis.

Tomorrow’s approach to fraud detection: Connected Analysis

This is where graph database can really add value. Graph database addresses Gartner’s fifth layer of fraud prevention: entity link analysis. Graph database enables banks to look beyond the individual data points of discrete analysis to the connections that link them. With graph database, banks can see their data in “graphs” and more easily visualize patterns and opportunities to better predict when and where fraud might occur.

Another important trait that makes graph database a value add to any fraud prevention solution is its inherent speed in calculating relationships. Since the relationships in graph database are treated with as much value as the database records themselves, the engine that navigates the connections between nodes can do so efficiently, enabling millions of connections per second. Graph database enables quick extraction of new insight from large and complex databases to help uncover unknown interactions and relationships. This means that with a graph database, banks can process data and compute risks quicker than today’s current relational databases so they can spot opportunities and threats before the competition.

According to Forbes, graph database reduces false positives, improve false negative detection, ease investigations, and reduce overall fraud investigation costs. Fundamentally, fraud detection depends on the ability to analyze the relationships between customers and transactions, and recognize patterns or trends. All at the speed of today’s transactions. Graph database provides the speed and the ability to detect large patterns making it the ideal addition to any fraud prevention solution.

Let’s block ads! (Why?)

The TIBCO Blog

Is there a Bond Graph toolbox or Package?

 Is there a Bond Graph toolbox or Package?

It seems like there was one, but it doesn’t exist anymore

Let’s block ads! (Why?)

Recent Questions – Mathematica Stack Exchange

Using R to illustrate relationships from graph objects

My new article about Graph Database Objects was just published, it’s really a very good new feature.

Another new feature we have since SQL Server 2016 is R language. We can use R language inside the database to analyze our data.

The possibility to use both technologies together is very interesting. Using graph objects we can store relationships between elements, for example, relationships between forum members. Using R scripts we can build a cluster graph from the stored graph information, illustrating the relationships in the graph.

The script below creates a database for our example with a subset of the objects used in my article and a few more relationship records between the forum members.

use master
drop database if exists RGraph
go
create database RGraph
go

use RGraph
go

drop table if exists dbo.Likes
drop table if exists dbo.ForumMembers

CREATE TABLE [dbo].[ForumMembers](
       [MemberID] [int] IDENTITY(1,1) NOT NULL,
       [MemberName] [varchar](100) NULL
)
AS NODE
GO

CREATE TABLE [dbo].[Likes]
AS EDGE

INSERT ForumMembers values (‘Mike’),(‘Carl’),(‘Paul’),(‘Christy’),(‘Jennifer’),(‘Charlie’)

INSERT Likes ($ to_id,$ from_id)
    VALUES
    ((SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 1),
         (SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 2)),
    ((SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 3),
         (SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 2)),
    ((SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 1),
         (SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 4)),
    ((SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 5),
         (SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 4))

insert into likes ($ from_id,$ to_id) values
  ((select $ node_id from dbo.forummembers where MemberName=‘Mike’),
    (select $ node_id from dbo.forummembers where MemberName=‘Paul’)),
  ((select $ node_id from dbo.forummembers where MemberName=‘Paul’),
    (select $ node_id from dbo.forummembers where MemberName=‘Christy’)),
  ((select $ node_id from dbo.forummembers where MemberName=‘Christy’),
    (select $ node_id from dbo.forummembers where MemberName=‘Carl’)),
  ((select $ node_id from dbo.forummembers where MemberName=‘Paul’),
    (select $ node_id from dbo.forummembers where MemberName=‘Jennifer’)),
  ((select $ node_id from dbo.forummembers where MemberName=‘Jennifer’),
    (select $ node_id from dbo.forummembers where MemberName=‘Carl’))

You need to follow a few steps to enable R scripts:

1) Install R in SQL Server

You can follow the instructions in this link to install R in SQL Server

2) Install the package iGraph in R

You can follow the instructions in this link to install iGraph package

3) Enable the use of external scripts. You can execute the following t-sql code:

exec sp_configure ‘external scripts enabled’, 1;

RECONFIGURE;

4) Execute the script

Below is the R script to build a cluster graph using iGraph our relationships stored in SQL Server. You need to change the folder to store the graph.

exec sp_execute_external_script @language = N’R’,
@script = N’

require(igraph)

g <- graph.data.frame(graphdf)

V(g)$ label.cex <- 2

png(filename = “c:\R\plot1.png”, height = 1200, width = 1200, res = 100); plot(g, vertex.label.family = “sans”, vertex.size = 40)

dev.off() ‘,
@input_data_1 = N’select LikeMember.MemberName as LikeMember,    LikedMember.MemberName as LikedMember         from dbo.ForumMembers as LikeMember,  dbo.ForumMembers as LikedMember,  Likes

        where Match(LikeMember-(Likes)->LikedMember) ‘,
@input_data_1_name = N’graphdf’

GO

The image below shows the resulting graph with the relations between forum members:

RAndGraph1 Using R to illustrate relationships from graph objects

It’s interesting to remember about the new feature in SQL Server 2017: We can also build the same script using Python.

Let’s block ads! (Why?)

SQL – Simple Talk

Using R to illustrate relationships from graph objects

My new article about Graph Database Objects was just published, it’s really a very good new feature.

Another new feature we have since SQL Server 2016 is R language. We can use R language inside the database to analyze our data.

The possibility to use both technologies together is very interesting. Using graph objects we can store relationships between elements, for example, relationships between forum members. Using R scripts we can build a cluster graph from the stored graph information, illustrating the relationships in the graph.

The script below creates a database for our example with a subset of the objects used in my article and a few more relationship records between the forum members.

use master
drop database if exists RGraph
go
create database RGraph
go

use RGraph
go

drop table if exists dbo.Likes
drop table if exists dbo.ForumMembers

CREATE TABLE [dbo].[ForumMembers](
       [MemberID] [int] IDENTITY(1,1) NOT NULL,
       [MemberName] [varchar](100) NULL
)
AS NODE
GO

CREATE TABLE [dbo].[Likes]
AS EDGE

INSERT ForumMembers values (‘Mike’),(‘Carl’),(‘Paul’),(‘Christy’),(‘Jennifer’),(‘Charlie’)

INSERT Likes ($ to_id,$ from_id)
    VALUES
    ((SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 1),
         (SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 2)),
    ((SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 3),
         (SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 2)),
    ((SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 1),
         (SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 4)),
    ((SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 5),
         (SELECT $ node_id FROM dbo.ForumMembers WHERE MemberID = 4))

insert into likes ($ from_id,$ to_id) values
  ((select $ node_id from dbo.forummembers where MemberName=‘Mike’),
    (select $ node_id from dbo.forummembers where MemberName=‘Paul’)),
  ((select $ node_id from dbo.forummembers where MemberName=‘Paul’),
    (select $ node_id from dbo.forummembers where MemberName=‘Christy’)),
  ((select $ node_id from dbo.forummembers where MemberName=‘Christy’),
    (select $ node_id from dbo.forummembers where MemberName=‘Carl’)),
  ((select $ node_id from dbo.forummembers where MemberName=‘Paul’),
    (select $ node_id from dbo.forummembers where MemberName=‘Jennifer’)),
  ((select $ node_id from dbo.forummembers where MemberName=‘Jennifer’),
    (select $ node_id from dbo.forummembers where MemberName=‘Carl’))

You need to follow a few steps to enable R scripts:

1) Install R in SQL Server

You can follow the instructions in this link to install R in SQL Server

2) Install the package iGraph in R

You can follow the instructions in this link to install iGraph package

3) Enable the use of external scripts. You can execute the following t-sql code:

exec sp_configure ‘external scripts enabled’, 1;

RECONFIGURE;

4) Execute the script

Below is the R script to build a cluster graph using iGraph our relationships stored in SQL Server. You need to change the folder to store the graph.

exec sp_execute_external_script @language = N’R’,
@script = N’

require(igraph)

g <- graph.data.frame(graphdf)

V(g)$ label.cex <- 2

png(filename = “c:\R\plot1.png”, height = 1200, width = 1200, res = 100); plot(g, vertex.label.family = “sans”, vertex.size = 40)

dev.off() ‘,
@input_data_1 = N’select LikeMember.MemberName as LikeMember,    LikedMember.MemberName as LikedMember         from dbo.ForumMembers as LikeMember,  dbo.ForumMembers as LikedMember,  Likes

        where Match(LikeMember-(Likes)->LikedMember) ‘,
@input_data_1_name = N’graphdf’

GO

The image below shows the resulting graph with the relations between forum members:

RAndGraph1 Using R to illustrate relationships from graph objects

It’s interesting to remember about the new feature in SQL Server 2017: We can also build the same script using Python.

Let’s block ads! (Why?)

SQL – Simple Talk

Graph reduction

Let us consider graph1:
eblaC Graph reduction

g1 = {4612 <-> 4613, 4613 <-> 4614, 4642 <-> 4612, 4614 <-> 4522, 4798 <-> 4642, 4522 <-> 4376, 4536 <-> 4798, 4798 <-> 4996, 4376 <-> 4201, 4338 <-> 4536, 4813 <-> 4996, 4201 <-> 4043, 4074 <-> 4338, 4813 <-> 4735, 4043 <-> 3813, 3796 <-> 4074, 4646 <-> 4735, 3711 <-> 3813, 3665 <-> 3796, 4646 <-> 4585, 3711 <-> 3450, 3509 <-> 3665, 4584 <-> 4585, 3119 <-> 3450, 3177 <-> 3509, 4662 <-> 4584, 3119 <-> 2911, 2890 <-> 3177,4729 <-> 4662, 2911 <-> 2714, 2642 <-> 2890, 4729 <-> 4753, 2551 <-> 2714, 2641 <-> 2642, 4875 <-> 4753, 2518 <-> 2551, 4972 <-> 4875, 2481 <-> 2518, 5081 <-> 4972, 2365 <-> 2481, 4967 <-> 5081, 2320 <-> 2365, 4938 <-> 4967, 2310 <-> 2320, 4937 <-> 4938, 2215 <-> 2310, 2310 <-> 2317, 4942 <-> 4937, 2053 <-> 2215, 2315 <-> 2317, 4923 <-> 4942, 1943 <-> 2053, 2315 <-> 2316, 4922 <-> 4923, 1942 <-> 1943, 2329 <-> 2316, 4880 <-> 4922, 2329 <-> 2248, 4721 <-> 4880, 2248 <-> 2249, 4673 <-> 4721, 4683 <-> 4721, 2249 <-> 2246, 4672 <-> 4673, 4508 <-> 4683, 2246 <-> 2191, 4831 <-> 4672, 4507 <-> 4508, 2191 <-> 2093, 4779 <-> 4831, 2093 <-> 2052, 4551 <-> 4779, 4717 <-> 4779, 2052 <-> 2000, 4551 <-> 4409, 4489 <-> 4717, 2000 <-> 1961, 4274 <-> 4409, 4323 <-> 4489, 1961 <-> 1950, 4224 <-> 4274, 4084 <-> 4323, 1950 <-> 1951, 4223 <-> 4224, 3876 <-> 4084, 1951 <-> 1957, 4336 <-> 4223, 3769 <-> 3876, 1957 <-> 1948, 4336 <-> 4069, 4232 <-> 4336, 3704 <-> 3769, 1948 <-> 1949, 3767 <-> 4069, 4103 <-> 4232, 3545 <-> 3704, 2054 <-> 1949, 3561 <-> 3767, 4055 <-> 4103, 3409 <-> 3545, 2054 <-> 1996, 3415 <-> 3561, 3899 <-> 4055, 3408 <-> 3409, 1996 <-> 1997, 3415 <-> 3377, 3898 <-> 3899, 3425 <-> 3408, 2043 <-> 1997, 3345 <-> 3377, 3905 <-> 3898, 3461 <-> 3425, 2043 <-> 2128, 3277 <-> 3345, 3689 <-> 3905, 3410 <-> 3461, 2091 <-> 2128, 3277 <-> 3105, 3459 <-> 3689, 3360 <-> 3410, 2091 <-> 1946, 2923 <-> 3105, 3458 <-> 3459, 3254 <-> 3360, 1946 <-> 1838, 2822 <-> 2923, 2923 <-> 2894, 3458 <-> 3460, 3239 <-> 3254, 1725 <-> 1838, 2772 <-> 2822, 2894 <-> 2788, 3407 <-> 3460, 3238 <-> 3239, 1725 <-> 1531, 2771 <-> 2772, 2788 <-> 2598, 3406 <-> 3407, 1531 <-> 1342, 2480 <-> 2598, 3514 <-> 3406, 1342 <-> 1276, 2480 <-> 2402, 3321 <-> 3514, 3514 <-> 3504, 1219 <-> 1276, 2402 <-> 2400, 3153 <-> 3321, 3504 <-> 3272, 1219 <-> 1090, 2400 <-> 2401, 3042 <-> 3153,3023 <-> 3272, 1090 <-> 1035, 2793 <-> 3042, 3084 <-> 3042,2850 <-> 3023, 997 <-> 1035, 2424 <-> 2793, 3008 <-> 3084, 2739 <-> 2850, 997 <-> 960, 2134 <-> 2424, 3007 <-> 3008, 2578 <-> 2739, 2739 <-> 2645, 960 <-> 961, 1914 <-> 2134, 2488 <-> 2578, 2645 <-> 2356, 1656 <-> 1914, 2278 <-> 2488, 2195 <-> 2356, 1655 <-> 1656, 2277 <-> 2278, 2195 <->2023, 1896 <-> 2023, 1895 <-> 1896};

gx = Graph[g1];
we1 = Select[SortBy[{VertexList[g1], DegreeCentrality[g1]}[Transpose], Last], #[2] == 1 &][[All, 1]];

we11 = Table[we1[[i]] -> i, {i, 1, Length[we1]}];
we2 = Select[SortBy[{VertexList[g1], DegreeCentrality[g1]}[Transpose],Last],#[2] == 3 &][[All, 1]];
we22 = Table[we2[[i]] -> i + 11, {i, 1, Length[we2]}];
gx = Graph[g1(,GraphLayout[Rule]”SpringEmbedding”),VertexLabels -> Join[we11, we22]];
graph1 = HighlightGraph[gx, {Style[we2, Red], Style[we1, Yellow]}, VertexSize -> 2]

How to reduce the graph1 to graph2?. Graph2: x = {1 <-> 12, 12 <-> 4, 12 <-> 20, 20 <-> 7, 20 <-> 18, 18 <-> 11, 18 <-> 19, 19 <-> 10, 19 <-> 17, 17 <-> 14, 14 <-> 8, 14 <-> 6, 17 <-> 16, 16 <-> 13, 13 <-> 3, 13 <-> 5, 16 <-> 15, 15 <-> 2, 15 <-> 9};

graph2 = Graph[Reverse[x], GraphLayout -> “SpringEmbedding”,VertexLabels -> “Name”]

e0Ump Graph reduction

I have such an algorithm but it works relatively slowly (I need it to very large networks).
Designation of nodes are accidental and does not matter.

Let’s block ads! (Why?)

Recent Questions – Mathematica Stack Exchange

Both axes labels and frame to my graph

 Both axes labels and frame to my graph

Seems like I can’t ad axes labels and a frame to my graph.

I am trying this:

Plot[Blackvolality[k], {k, 0, 0.1}, AxesLabel -> {Volatility, Strike},
PlotLabel -> "Beta=0"]

This work fine^. But when I add frame to it:

Plot[Blackvolality[k], {k, 0, 0.1}, AxesLabel -> {Volatility, Strike},
PlotLabel -> "Beta=0",Frame->True]

Suddenly my Axes labels disappear. How Come? How can I have both?

Let’s block ads! (Why?)

Recent Questions – Mathematica Stack Exchange

Permutations on graph vertex labels

 Permutations on graph vertex labels

I want to generate all the possible adjacency matrices of equivalent unlabeled graphs. For example, consider the simple path graph of three vertices. There are three possible adjacency matrices:

a1={{0, 1, 0}, {1, 0, 1}, {0, 1, 0}};
a2={{0, 1, 1}, {1, 0, 0}, {1, 0, 0}};
a3={{0, 0, 1}, {0, 0, 1}, {1, 1, 0}};

Each matrix corresponding to a different (numerical) labeling of the vertices.

Is there a way to generate the other representations given any one of them for any simply connected graph?

Let’s block ads! (Why?)

Recent Questions – Mathematica Stack Exchange

Elasticsearch vs Graph Database

Recently, I worked on a project which involved building a genealogy portal to gather information about individuals and their genealogical/family links. Through the portal, the users could access and collaborate on comprehensive family trees. Target users were curious amateurs, genealogists, researchers, and professionals related to this space. In order to build this for different users, we needed flexibility to build different search interfaces.

elastic search Vs Graph database Elasticsearch vs Graph Database

For this project, we evaluated relational databases, NoSQL, search engines and graph databases. Here’s what we considered:

Relational Databases

Relational databases cannot store relationships between data elements. When you try to get relationships in data using a relational database, it involves numerous JOINs, resulting in database complexity and poor performance.

Elasticsearch

Elasticsearch is a full-text search engine. It is based on Lucene and is highly scalable. It allows RESTful web interface and schema-free JSON documents. Elasticsearch is able to achieve fast search responses because it searches an index instead of searching the text directly.

Graph Database

Graph databases use graph theory to store, map and query relationships. A graph database is essentially a collection of nodes and edges. Each node represents an entity (such as a person) and each edge represents a connection or relationship between two nodes. Each node also has a set of properties to define it.

Compared with relational databases, graph databases often deliver faster performance for associative data sets. They can scale more naturally to large data sets as they do not typically require expensive JOIN operations. It can very efficiently and easily traverse 100.000 nodes/relationships of any depth.

Some of the popular graph databases are Neo4J, Orient DB and Apache Titan.

What Fit our Requirement?

Genealogy is about relationships and not text patterns. We needed an engine which could navigate/update graphs very fast.

We listed some of the sample queries that are commonly required for Genealogy portals:

  • Show all relationship types such as Father, Mother or Spouse (with constraints to get a graph shape we are interested in)
  • Show all relationship nodes
  • Find siblings for any node.
  • Extract ancestors or decedents to a depth
  • Simple queries such as finding nodes where full name starts with Maria, along with other conditions.
  • Build a family tree.

Keeping these use cases in mind, we compared Elasticsearch and Graph Database with their ability to get results for these scenarios.

In Elasticsearch, we would need to flatten/denormalize the data while saving data. Graph database, on the other hand, stores and maintains data relationships by default.

We further narrowed it down to the Neo4j graph engine that matches the requirements for the genealogy use case. We did not need to write complex queries to retrieve nested data. Moreover, the schema was a lot simpler compared to the amount of nodes we had in the data.

Cypher Query Language (CQL)

Without graph-based queries, extracting data from graph databases could have posed a huge challenge. Thankfully, the Cypher Query Language (CQL) in Neo4j allows users to extract very complex graph shapes quickly. We could merge nodes and allow string, aggregate and relationship functions. The ‘Cypher Query Optimizer’, which produces a highly optimized query plan, enables faster execution times.

Graph databases are well-suited for analyzing interconnections. Hence, it is widely used in social media, fraud detection and recommendation engines.

This entry passed through the Full-Text RSS service – if this is your content and you’re reading it on someone else’s site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.

e-Zest | India | USA | UK | Germany | Europe

Neo Technology loves graph databases. Investors give the startup $20M more

Neo Technology, a startup with a commercial distribution of the Neo4j open-source graph database for storing and serving up information for applications, has brought on $ 20 million in new venture funding.

Graph databases are one flavor of non-relational database technology, which generally differs from the relational technology in place at big companies for decades. NoSQL databases have gotten plenty of venture backing lately. But unlike, say, key value stores or document databases, graph databases depict the relationships connecting various entities. For instance, a social network has good reason to determine how two people are related and which friends they have in common. Indeed, Facebook employs a graph database called Apache Giraph.

But Neo’s open-source database, and the commercially available version sporting business-friendly features, are being implemented for some serious purposes, Emil Eifrem, chief executive and a cofounder of Neo, told VentureBeat in an interview.

The technology is useful to e-commerce sites for making recommendations, or to graph-based search engines like Crunchbase. Telecommunications companies use it to figure out what might happen if one piece of networking infrastructure goes down. And it even plays a role in complex domains of identity and access management, and master data management, Eifrem said.

Eifrem said Neo now has 150-200 subscription customers. Think Accenture, eBay, HP, National Geographic, and Walmart. That’s not too shabby for a startup pushing a technology that isn’t as well understood as the relational databases from companies like IBM and Oracle, which Eifrem said are his company’s most visible competitors.

But Eifrem believes big companies actually are starting to understand graph databases. He pointed to technology analysis firm Forrester, which found that more than one quarter of enterprises would use graph databases by 2017.

“A lot of smart people think there’s a lot of value in this market,” Eifrem said.

Meanwhile, other startups packing graph capability can benefit from an increase in adoption. Consider Dato (formerly GraphLab) and Orchestrate, for instance.

About 80 people now work for Neo, Eifrem said.

Creandum led the new funding round, while Conor Venture Partners, Dawn Capital, Fidelity Growth Partners Europe, and Sunstone Capital also participated.

To date, San Mateo, Calif.-based Neo Technology has raised approximately $ 45 million.

More information:

Graphs are everywhere. From websites adding social capabilities to Telco’s providing personalized customer services to innovative bioinformatics research, organizations are adopting graph databases as the best way to model and query co… read more »

Powered by VBProfiles

Recommended article: Chomsky: We Are All – Fill in the Blank.
This entry passed through the Full-Text RSS service – if this is your content and you’re reading it on someone else’s site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.

VentureBeat » Big Data News | VentureBeat