- Machine Learning
편집자 주: 이 프레젠테이션은 Michael Moore와 Omar Azhar가 제공했습니다.그래프커넥트 뉴욕2017년 10월.
프레젠테이션 요약
데이터가 그래프로 연결되면, 이를 활용해서 쉽게 그래프를 만들 수 있어요. 바로 Knowledge Graph죠! Knowledge Graph를 만들려면 데이터 그래프를 가져와서 해당 데이터에 Machine Learning을 적용한 다음, 그 결과를 다시 그래프에 작성하면 돼요. Natural Language Processing(NLP)을 사용해서 구조화되지 않은 텍스트에서 주제와 감정을 파악하고 그래프에 추가할 수도 있고요.
Knowledge Graph는 정보 흐름이 필요한 곳이라면 어디든 활용할 수 있어요. data가 연결되어야 하는 곳(건물이든)이나, 고객 360도 보기, 이상 탐지, 사이버 보안 또는 고급 통계 모델의 대규모 네트워크 작업 수행 등 다양한 곳에서 활용 가능하죠. 선제적 리스크 관리에도 유용하고요.
이 프레젠테이션에는 기업 Knowledge Graph 구축을 위한 다양한 방법 정보가 담겨 있어요. 그래프 문제 인식 방법도 포함되어 있답니다.
전체 프레젠테이션: Knowledge Graph: 엔터프라이즈 AI로 가는 길
이 블로그에서는 반복적인 Machine Learning과 결합된 데이터 그래프, 즉 Knowledge Graph를 활용해서 많은 기업 과제를 해결하는 방법을 보여줄 거예요.
그래프 기술은 혁신적이에요
마이클 무어: 저는 4년 동안 그래프 기술 분야에서 일해 왔는데요, 저는 이게 SQL 등장 이후 가장 흥미롭고 혁신적인 기술이라고 생각해요. SQL. 10년 안에 SQL 작업 부하의 50%가 그래프에서 실행될 거라고 굳게 믿고 있답니다.
Ernst & Young은 서비스 조직이에요. 저희는 새로운 기술과 긴밀히 협력하면서, 전 세계 조직들이 이러한 기술을 통해 성공하고 실제 비즈니스 문제를 해결하도록 돕고 있어요. 다른 컨설팅 회사와 마찬가지로 다양한 서비스를 제공하고 있죠.
하지만 우리가 차별화하고 싶은 점은 정말 어려운 문제를 해결하기 위해 노력한다는 점이에요. 우리는 어려운 문제를 해결하고 높은 가치의 결과를 도출하기 위해 소규모 팀을 구성하는 경향이 있어요.
저희 데이터 및 분석 업무는 전 세계적으로 150개 이상의 국가에 배포되어 있어요. 6,000명이 넘는 분석가와 개발자가 있고, 전략부터 분석, 혁신, 구현에 이르기까지 다양한 기능을 다루면서 비즈니스 운영을 관리형 서비스로 운영하고 있죠.
저희는 데이터 웨어하우스 설계부터 데이터 이동, BI 구축, 시각화, 문서에 Machine Learning을 적용해서 더 정확하고 효율적으로 처리되는 로봇 프로세스 자동화 등에 이르기까지 모든 작업을 수행해요.
우리가 사용하는 도구 중 일부는 다음과 같아요.
저희는 대규모 시스템을 사용해서 많은 작업을 수행해요. 잠시 후에 저희 제휴 파트너 중 일부를 보여드릴게요. 하지만 저희는 노트북 작성과 관련된 모든 모범 사례를 사용해서 완전히 일어섰어요. 정말 많은 일을 하죠. 저희에겐 R 개발자와 Python 개발자가 많아요. Omar의 그룹은 TensorFlow를 광범위하게 사용하고, 저는 H2O.ai를 많이 활용해요. 그리고 물론 모든 일반적인 BI 도구에 대한 많은 기능도 갖추고 있답니다.
데이터 지식 실무에 대한 저희의 전체 목표는 데이터에서 신속하게 가치를 찾아 조직에 더 높은 수준으로 전달하는 것이에요. 국내와 해외가 혼합되어 있으며 약 30%가 국내 또는 근해에 있는 경향이 있고, 일부 관리 서비스 또는 보다 간단한 마이그레이션에 사용하는 글로벌 배송 센터도 있죠.
저희는 다수의 글로벌 제휴 파트너를 보유하고 있어요. Adobe 및 전체 Adobe 스택에 정통한 다수의 컨설턴트와 글로벌 제휴를 맺고 있고, SAP에 관한 대규모 사례도 보유하고 있죠. 저희는 Microsoft의 글로벌 제휴 파트너이며 일부 공동 개발 작업에 참여하고 있답니다.
예를 들어, 저희는 IBM과의 제휴를 포함해서 여러 가지 다른 제휴를 맺고 있으며, 이는 대규모 서버 온프레미스 그래프 배포에 대한 몇 가지 흥미로운 가능성을 열어줘요.
그래프란 무엇일까요?
비즈니스 리더와 이야기할 때 항상 기본부터 시작하게 되죠. 그래프가 뭘까요? 그래프는 데이터가 어떻게 연결되어 있는지, 사물들이 어떻게 연결되어 있는지를 시각적으로 보여주는 표현 방식이에요.
그래프는 프로세스를 설명하는 데 정말 유용해요. 누군가에게 마커를 주고 "당신의 사업이 어떻게 돌아가는지, 시스템이 어떻게 작동하는지 한번 설명해 주세요"라고 물어보면, 다들 금방 동그라미랑 상자를 막 그리고 화살표를 연결하잖아요? 복잡한 프로세스가 어떻게 돌아가는지 설명할 때 그래프를 구성 요소로 사용하기 시작하는 거죠.
그래프에는 `Node`와 `Relationship` 사이에 흥미로운 이분법이 존재해요. 때로는 `Node`를 정점(Vertex)이라고 부르기도 하고, `Relationship`을 엣지(Edge)라고 부르기도 하죠.
디자인 관점에서 보면 이걸 여러 가지 방법으로 활용할 수 있어요. 그래프 표현을 가져와서 Graph Database like 처럼 만들면, 해당 데이터베이스의 `Schema`는 원래 설명했던 내용과 거의 똑같은 복사본이 될 수 있답니다.
비즈니스에서 그래프를 도입하는 데 가장 큰 영향을 미치는 기능 중 하나는 그래프가 가진 의미적 충실도가 매우 높다는 점이에요.
데이터 개발자로서 여러분은 비즈니스 담당자와 충분한 정보를 가지고 토론할 수 있어요. "당신의 비즈니스가 어떻게 돌아가는지 제가 이해한 방식은 이렇습니다. 제가 구축한 `Schema`는 이렇고요. 한번 보여드릴까요?" 라고 말할 수 있는 거죠.
SQL 세계에서는 이런 일이 끔찍하게 느껴질 수 있지만, 그래프 세계에서는 꽤 재밌는 일이에요. 비즈니스 리더들과 함께 앉아서 "제가 이해한 바는 이렇습니다" 라고 말하면, 그들은 "아니, 아니에요. 그건 그렇게 작동하지 않아요. 화살표가 하나 빠졌어요" 라고 말할 수도 있죠. 그러면 여러분은 "좋아요, 그럼 다른 `Relationship`을 하나 만들면 되겠네요" 라고 답할 수 있어요.
그래프 개발에는 매우 민첩한 흐름이 있답니다.
아래 예시 그래프는 누군가를 웹사이트로 유도하려는 간단한 전자상거래 시나리오를 보여주고 있어요. 이 시나리오에서 저는 사람들에게 이메일을 보내고 있고, 그들이 웹사이트를 방문하도록 유도하려고 하는 거죠. 그리고 그들이 웹사이트에 방문하면, 웹사이트에서 판매하는 제품을 구매하기를 바라고 있어요.
이 작은 그래프가 바로 그걸 보여주는 거예요. 이 `Schema`에서는 정확히 이런 작업을 수행하는 Graph Database를 구현했고, Graph Database에는 이메일을 위한 `Node`가 존재하죠.
수많은 개별 이메일을 생각해 보세요. 각각은 email이에요. 하지만 해당 node의 내용은 메시지 내용일 수 있겠죠.
고객이 많으니까, 이게 제 person node에요. 그리고 저는 많은 person node를 가질 거고, 모든 node는 해당 개인에 대한 세부 정보를 전달하죠. 저는 또한 website node를 가지고 있고, 해당 node에는 연결된 페이지가 있으며 페이지의 모든 세부 정보가 담겨 있어요. 제 product node도 있을 거고, 모든 제품 기록이 있겠죠.
이런 단계 중 하나를 수행할 때마다 relationship을 설정할 기회가 생겨요. 이 사람에게 이메일을 보냈으니까, 해당 relationship을 설정할 수 있죠. 이제 개별 개인에게 전송된 이메일 그룹 사이에 구체적인 연결이 생긴 거예요.
그 사람이 조치를 취했나요? 웹사이트에서 봤나요? 그렇다면 다른 relationship을 설정할 수 있어요. 그들이 뭔가를 샀나요? 그리고 그들이 구입한 것은 무엇이었나요?
그러면 실제로 연결할 수 있어요. product node이므로 웹사이트에서 판매된 것을 볼 수 있기 때문에 웹사이트에 있는 제 재고가 무엇인지 알 수 있는 거죠.
SQL query를 작성하고 실제로 얼마나 많은 개인이 이 패턴을 겪었는지 확인하려면 최소한 4개의 다른 table을 건드려야 해요. 해당 relationship에 존재하는 경로 수를 파악하려면 많은 재귀 query를 수행해야 하죠.
Graph 세계에서는 어떤 table을 합치려는지, 해당 table을 join하기 위해 어떤 key를 사용할지 파악하는 대신 순회 경로를 선언해요. 이미 graph를 사용해 본 사람들에게는 이게 단순하게 들릴 수도 있지만, graph에 대한 사고의 가장 큰 변화는 graph를 어떻게 탐색할지 상상하기 시작한다는 점을 기억하는 것이 중요해요.
위 그림에는 몇 가지 예제 코드가 나와 있어요. 그리고 해당 코드 블록에서 이 graph를 query하고 이 패턴으로 돌아오는 것이 얼마나 간단한지 알 수 있죠. 기본적으로 우리는 "이 이메일"을 "이 사람"에게 보낼 것이라고 말하고 있는 거예요.
Neo4j는 Property Graph이기 때문에 Steve Newman이라는 사람에게 보낸 이메일을 필터링할 거예요. 그리고 Steve가 웹사이트를 방문했다는 제약도 적용할 거죠.
그런 다음 해당 웹사이트에서 판매되는 제품을 구매했다는 또 다른 제약 조건을 적용할 거예요. 이제 한 줄의 코드로 표현되는 상관 Subquery인 이 복잡한 순환 query가 주어지면 해당 순회 패턴을 만족하는 모든 record가 반환돼요.
Graph는 대규모 데이터 환경에서 이러한 종류의 복잡한 순회를 수행하는 데 매우 유용해요.
Graph의 흥미로운 점 중 하나는 두 데이터 엔터티 사이에 존재할 수 있는 모든 논리적 relationship이 미리 계산되어 스토리지 구조에 저장된다는 것이에요. 이로 인해 query 시간이 매우 빨라지죠. Graph는 쓰기 속도가 약간 느리지만 query 속도는 SQL보다 훨씬 빠르답니다.
Graph에서 매우 중요한 또 다른 점은 순회를 통해 다양한 엔터티를 query하고 여전히 매우 선형적이고 일관된 응답을 얻을 수 있다는 것이에요. Graph Database가 단순히 넘어져 손을 내밀고 SQL에서 항상 발생하는 "메모리가 부족합니다"라고 말하는 일은 결코 없을 거예요.
SQL 실무자라면 누구나 Query Optimizer를 사용하여 많은 작업을 수행하고, 메모리가 부족해지지 않도록 table에 힌트를 주고 순서를 지정하죠. Graph에서는 문제가 되지 않아요.
Graph 사용 사례
아래 그래픽은 몇 가지 멋진 사용 사례를 보여줘요.
고객분들이 가장 많이 요청하는 사용 사례는 이런 것들이 있어요. Customer 360, 실시간 추천 엔진, 마케팅 기여도 분석, 기업 검색 등 정말 다양하죠. 잠시 후에 몇 가지 더 자세히 알아볼게요.
우리가 그래프에 열광하는 이유
그래프에 관심을 갖는 이유는 여러 가지가 있는데요.
빠르다. 그래프는 쿼리 속도가 엄청 빨라요. 즉, 그래프에서 직접 고성능 디지털 경험을 구현할 수 있다는 거죠. 여러 엔터티에 걸친 심층적인 탐색도 밀리초 단위로 응답할 수 있어요.
쉽다. 스키마가 없어서 빠르고 반복적인 개발이 가능해요. 반복 작업에 유연하게 대처할 수 있다는 뜻이죠. 예를 들어, Node를 로드하고, 여러 Relationship을 설정한 다음에 "음, 이 Relationship 모양이 마음에 안 드는데?"라고 생각할 수도 있잖아요. 그럼 Relationship을 삭제하고 다시 실행하면 돼요.
영향력이 있다. 그래프를 활용하는 방법은 정말 다양해요. Neo4j는 OLTP에 최적화된 인메모리 그래프이고, 실시간 애플리케이션에 아주 적합하죠. Machine Learning을 수행하는 데 그래프를 사용할 수도 있고, 실제로 그래프 내에서 바로 할 수도 있어요. 다른 OLAP 그래프 구조를 사용해서도 가능하고요. 이 모든 게 데이터의 영향력을 극대화하기 위한 훌륭한 생태계를 만들어주는 거죠.
혁신적이다. 그래프는 실행 가능한 엔드 투 엔드 고객, 프로세스 및 비즈니스 분석을 위한 확장 가능한 플랫폼을 제공해요. 사람들은 보통 단일 데이터 도메인의 개념 증명으로 시작하지만, 이 구성의 강력함을 금방 깨닫고 다른 도메인을 추가하고 싶어하죠. 그렇게 하려면 그래프에 새로운 Edge와 Node를 추가로 설계하고 하나로 모으면 돼요. 정말 가능성이 무궁무진하죠.
전략적이다. 그래프는 데이터 레이크의 데이터를 표면화, 통합하고, 일선 경험으로 가져다 줘요. 데이터 작업도 중요하지만, 그 데이터를 고객 경험으로 연결하지 못하면 성공하기 어렵잖아요.
그래프 및 데이터 레이크
데이터 레이크에 대해 잠깐 이야기해볼까요?
데이터 레이크는 정말 멋지고 깔끔하죠. 모든 데이터를 한 곳에 모아두는 건 정말 훌륭한 아이디어에요. 하지만 곧 "내년까지 데이터 레이크를 완성할 겁니다!"라는 말을 듣게 될 텐데, 이건 데이터 업계에서 가장 흔한 거짓말일 거예요. 매년 듣는 이야기거든요. 사실 데이터 레이크는 절대 완성될 수 없어요.
비즈니스가 발전하고 성장하면서 점점 더 많은 데이터 소스가 유입되거든요. 현재 데이터 레이크에는 구조화되지 않은 데이터가 엄청 많아요. 아무도 생각해본 적 없는 주제 영역도 있고요. Oracle 데이터베이스나 Teradata EDW의 스냅샷을 찍어서 데이터 레이크에 저장하고는 "Oracle 시스템의 모든 데이터가 들어 있는 S3 버킷이 있어요!"라고 말하죠. 그걸 봤냐고 물어보면 "아니요, 올해는 못 볼 것 같아요."라고 대답할 거예요.
물론 특정 데이터 도메인에 관심이 집중되는 경우도 있겠죠. 그런 데이터는 고도로 정제되고 선별되는 경향이 있어서 작업을 시작하기에 좋은 출발점이 될 수 있어요.
그리고 스트림도 빼놓을 수 없죠. 핵심 프로세스를 중심으로 항상 사용되는 스트리밍 기술이 있잖아요. 게시/구독 모델은 정말 훌륭한 아키텍처 모델이에요.
그래프로 데이터를 모바일화하다
그래프는 데이터를 모바일화하는 데 아주 훌륭한 가속기 역할을 해요. 다음은 기능적 아키텍처를 보여주는 그림이에요.
여기서 우리가 이야기하는 건 데이터 웨어하우스나 데이터 레이크 위에 그래프 레이어를 얹는 거예요. 이렇게 하면 실시간 쿼리의 세계로 아주 빠르게 넘어갈 수 있죠. 이제 일괄 처리 방식은 끝났어요! 비즈니스 변화에 맞춰 데이터 프레젠테이션을 반복적으로, 그리고 민첩하게 발전시켜나갈 수 있는 세계로 안내하는 거죠.
그래프를 주로 사용하는 사람들은 모바일 및 웹 애플리케이션, 실시간 BI, 그리고 데이터 과학 팀에서 사용하는 스코어카드 등이 있어요.
또 하나 재미있는 점은 CIO가 데이터 자체에 그렇게 큰 관심을 두진 않는다는 거예요. 오히려 컨테이너에 더 관심이 많죠.
데이터 품질, 데이터의 의미, 분석의 의미처럼 데이터에 정말로 집중하는 사람들은 비즈니스 전반의 최종 사용자예요. 여기에는 마케팅 부서, 운영 부서, 개인 정보 보호 및 데이터 거버넌스 담당자, 제품 추천 및 개발 관련자, 그리고 영업 팀이 포함되죠.
이들은 정확한 데이터를 확인해야 하는 사람들이고, 쿼리, Machine Learning 등 그래프가 제공할 수 있는 다양한 기능을 활용할 수 있어야 해요.
고급 분석을 위한 비전
고급 분석에 대한 우리의 비전은 다음 네 가지 핵심 요소에 기반하고 있어요.
Natural Language Processing(NLP). 이 분야에 많은 노력을 쏟고 있고, 정말 중요한 핵심 분야라고 생각해요. 왜냐하면 의도를 이해하고, 감정을 파악하는 곳이니까요. 일반적으로 구조화된 데이터에서는 얻을 수 없는 인간 상호 작용 방식의 미묘한 차이를 이해하는 곳이기도 하고요. Machine Learning의 유용성은 일부 NLP 소스 정보에 노출될 때 극적으로 향상될 수 있어요.
개방형 플랫폼. 개방형 플랫폼을 중심으로 많은 작업을 진행했어요. Apache 스택 전체를 포함하는 완전한 컨테이너화된 플랫폼을 Azure에 구축했죠. 이 환경을 사용해서 대형 모델을 만들고, 고객들이 큰 기술적 위험 부담 없이 새로운 아이디어를 시험해볼 수 있는 테스트 베드로도 활용하고 있어요.
Knowledge Graph. 저희는 Knowledge Graph의 열렬한 팬이에요. Knowledge Graph는 B2B든 B2C든, 고객이 외부 고객이든 내부 고객이든 관계없이 고객에 대한 완전한 360도 뷰를 제공하는 최고의 방법이라고 믿고 있어요. 게다가 Knowledge Graph를 실제로 구축하는 것은 SQL 환경을 그래프 기반으로 표현한 데이터 그래프를 가져온 다음, 해당 데이터에 Machine Learning을 적용하고 그 결과를 다시 그래프에 쓰는 것이죠.
디지털 개인화. 데이터를 데이터 환경에서 최전선으로 가져와야 해요. 그래서 저희는 상대적으로 지능이 낮은 웹 경험에서 렌더링될 수 있는 위젯에서 매우 지능적인 추천 같은 것을 실제로 생성할 수 있도록 매우 가벼운 마이크로서비스를 설정할 수 있기를 바라기 때문에 Node.js, 마이크로서비스, 스트리밍 같은 기술에 많은 투자를 했어요. 즉, 광범위한 IT 혁신을 수행하기보다는 스마트 분석을 최전방까지 추진할 수 있는 좁은 파이프라인을 찾고 있는 거죠.
더 나은 통찰력을 위한 Natural Language Processing(NLP)
오마르 아자르: 고급 분석 내에서 저희는 고객이 실용적인 AI 및 빅 데이터 전략을 만들고, 구축하고, 구현하도록 돕고 있어요. 그리고 그 중심에는 세 가지 핵심 기둥이 있죠.
첫 번째는 성장 의제와 고객 경험을 주도하기 위해 고객을 이해하고, 프로세스를 처음부터 끝까지 수행하고, 지능형 프로세스 자동화를 위한 올바른 RPA(로봇 처리 자동화) 및 Machine Learning 프레임워크를 적용한 다음 더 나은 신호를 얻는 것이에요.
Machine Learning, AI, 빅 데이터 등 모든 주요 유행어에 대해 모든 경영진은 "이것을 어떻게 사용하죠? 이를 어떻게 활용하여 우위를 점하고 프로세스 효율성을 높이거나 더 나은 통찰력을 얻을 수 있을까요?"를 알고 싶어해요. 핵심 동인은 Natural Language Processing이죠.
매일, 특히 인터넷에 존재하는 다양한 커뮤니케이션 채널에서 수많은 구조화되지 않은 텍스트가 생성돼요. 금융 서비스에서 특히 그렇죠.
콜센터를 운영할 수도 있어요. 매일 고객으로부터 수천 건의 전화를 받는 경우 고객이 어떤 제품에 대해 이야기하고 있는지, 대화 주제 및 고객의 감정을 알고 싶을 거예요. 내 상담원이 해당 통화를 제대로 처리하고 있나요? 아니면 추가 교육을 제공해야 할까요?
자산 관리에서는 재무 자문가가 고객과 어떻게 대화하고 있는지 알고 싶을 거예요. 고객은 서로 어떻게 관련되어 있을까요?
판매 및 거래 분야에서는 기관 고객으로부터 하루에 수천 통의 이메일을 받을 수 있어요. 이는 담보 마진 의무, 가격 확인, 또는 단순히 판매원이 당신에게 소리를 지르는 것 등 무엇이든 될 수 있죠.
Natural Language Processing은 어디에 있든 백오피스부터 프론트오피스까지 금융 서비스 산업 내에서 엄청난 사용 사례를 갖고 있어요. Natural Language Processing을 사용하면 대화에서 많은 특징을 추출할 수 있거든요.
사람들은 맥락이나 주제, 언급되는 실체에 관해 무엇에 대해 이야기하고 있을까요? 애플 주식인가, 맥도날드인가, 미국인가 러시아인가, 정서와 의도인가?
그리고 추출하는 이러한 기능을 도메인 온톨로지 및 도메인 계층 구조와 결합하면 실제로 매우 유용한 실제 사용 사례를 얻을 수 있어요. 이제 기업들은 비즈니스 전반에 걸쳐 매우 표적화된 NLP 파이프라인을 구축하기 시작했어요. 이는 NLP의 훌륭한 전술적 사용 사례이죠.
커뮤니케이션 그래프 구축
추출하는 기능과 사용 사례를 실제로 어떻게 만들고 이를 전략적 자산으로 만들까요?
NLP 파이프라인이 확보되면 해당 통신을 그래프로 푸시하기 시작하세요. 이제 실제로 해당 커뮤니케이션 채널을 자산으로 구축하고 있는 거예요. 이제 귀하는 모든 고객이 갖고 있는 커뮤니케이션 네트워크를 구축하고 있어요. 이제 그래프를 통해 자연스럽게 연결이 이루어지기 때문에 대화 중인 주제를 기반으로 고객과의 관계를 연결할 수 있죠.
이를 계속 확장하고 점점 더 많은 도메인을 추가하면 자신의 기업에 대한 매우 본질적인 자연어, 즉 기업 내에서 발생하는 모든 다양한 커뮤니케이션을 이해하기 시작해요. 대화 인텔리전스 플랫폼을 구축하기 시작한 거죠.
이제 녹음하고, 콜센터를 통과하고, 이메일을 통과하고, 재무 분석가(FA)를 거쳐 고객과 대화하는 모든 NLP 파이프라인을 실제로 비즈니스에서 무슨 일이 일어나고 있는지, 고객과 고객이 대화하는 내용을 더 잘 이해하기 위해 사용할 수 있는 전략적 자산으로 구축하기 시작하는 거예요.
커뮤니케이션 그래프를 구축하기 시작했어요. 그리고 고객이 말하는 내용을 토대로 고객이 서로 어떻게 연관되어 있는지 이해하려고 노력하고 있죠. 하지만 그런 다음 추가 항목을 추가할 수 있어요.
자산 관리 기업이라면, 이 예시를 통해 이미 통신 네트워크 구축을 시작했을 거예요.
FA가 고객과 어떻게 대화하는지 알고, 대화의 핵심 내용, 어떤 제품을 이야기하는지, 다양한 트렌드가 무엇인지 정확히 파악할 수 있죠. 여기에 추가적으로 거래 데이터, 계정 수준 데이터, FA 데이터를 가져와서 고객에 대해 알고 있는 다양한 정보를 활용해 Customer 360 뷰를 구축할 수 있어요.
Customer 360도 뷰 구축
Knowledge Graph를 사용하면 Customer 360 뷰가 정말 자연스럽게 구축돼요. 특정 고객에 대해 알고 싶은 모든 정보는 몇 번의 traversal만으로 해당 node에서 바로 찾을 수 있죠. 그리고 해당 고객이 다른 고객과 어떻게 연결되어 있는지 파악할 수 있어요. 예를 들어, 동일한 주식을 소유한 경우 그래프에서 몇 번의 traversal만으로 자동으로 연결되는 거죠.
Trader 360도 보기 구축
그래프가 제공하는 이 360도 뷰는 단순히 Customer 360도를 위한 것만이 아니에요. 고객이 구축하는 차선책 작업 프레임워크 및 추천 엔진에 대한 더 나은 이해를 구축하는 데도 활용할 수 있죠. 우리가 이야기하고 있는 다른 두 가지 핵심 요소에도 사용할 수 있고요.
가장 중요한 건 담합이나 판매 및 거래 행위를 감시하는 거예요. 영업에서도 영업 담당자가 과도하게 푸시하거나, 고객에게 부적절한 방식으로 말하고 있는지 알고 싶어하죠. 거래자들 사이에서 비정상적인 행동을 어떻게 감지할 수 있을까요?
판매 및 거래에서도 Knowledge Graph의 360도 뷰를 사용하기 시작하면, 그들이 사용하는 다양한 커뮤니케이션 채널을 모두 포함할 수 있어요. 거래자는 누구와 대화하고 있고, 무슨 말을 나누고 있으며, 어떤 조치를 취하고 있을까요?
이제 각 트레이더의 subgraph를 구축하기 시작하는 거예요. 그리고 이상 탐지를 사용하면 "우량 주식 거래자 그룹이 있다면, 그들의 subgraph는 상대적으로 유사할 것이다"라는 것을 알 수 있죠.
이상 기반 그래프 감지를 통해 공모 행위, 내부자 거래, 또는 조사해야 할 모든 종류의 비정상적인 행위를 감지할 수 있어요. 그래프가 제공하는 360도 뷰는 데이터 관점에서 보기에 정말 자연스럽죠.
선제적 리스크 관리
다시 자산 관리 사례로 돌아가 볼게요.
다양한 데이터 세트를 추가하기 시작했어요. 이러한 다양한 도메인을 모두 추가하고 있죠. 모든 Customer 360 보기, 보유하고 있는 다양한 제품, 모든 고객 및 대화가 포함된 엔터프라이즈 Knowledge Graph를 구축하고 있어요. 그렇다면 이제 어떻게 더 스마트하게 만들 수 있을까요? 이미 꽤 지능적이에요. 여러분의 비즈니스에 대해 알고 있는 모든 것을 알고 있거든요. 여러분이 알고 싶은 모든 정보는 여러분의 손끝에 있어요. 검색 엔진을 구축할 수 있죠.
외부 뉴스 데이터 소스와 같은 외부 데이터를 가져와 더욱 스마트하고 능동적으로 만들 수 있어요. 이를 자신의 내부 그래프에 추가하기 시작할 수 있죠. 이 예에서 여러분의 내부 비즈니스 Knowledge Graph는 여러분의 제품 도메인 측면에서 가장 먼 Apple에 도달할 수 있어요.
여러분은 Apple 주식을 소유한 모든 단일 고객과 그들과 관련된 모든 FA를 알고 있어요. 하지만 이는 내부 비즈니스 데이터일 뿐이죠. 외부 데이터 소스를 가져오기 시작하면 "Apple 주변에서 일어나는 외부 이벤트는 무엇일까요? 그리고 그것이 고객의 포트폴리오에 어떤 영향을 미치는가?"를 알 수 있어요. “제가 취해야 할 조치가 있나요?”
Knowledge Graph는 순회 정보를 매우 쉽고 완벽하게 자연스럽게 만들어요.
현재 일어나고 있는 외부 뉴스를 추가하고 이를 내 비즈니스 내에서 소유한 관련 제품에 넣기 시작하면 Natural Language Processing 또는 기타 Machine Learning 프레임워크를 사용하여 중요한 이벤트를 감지할 수 있어요.
중요한 이벤트가 내 그래프의 한 위치에서 발생하면 비즈니스 규칙과 도메인 로직을 추가하여 "여기 특정 유형의 이벤트가 있어요. 이 정보가 내 Knowledge Graph의 이 특정 Node와 이 특정 도메인으로 전달되기를 원해요."라고 그래프에 자동으로 알릴 수 있어요.
아래 예에서는 Apple 주식에 대한 이벤트가 발생해요. "이 주식에 대한 중요한 이벤트에요. 이 주식에 포지션을 보유한 고객이 있는 모든 FA에게 정보를 보내시기 바랍니다."라는 비즈니스 규칙을 입력하면 Knowledge Graph를 지능적으로 만들고 실제로 자체적으로 조치를 취할 수 있어요. 그리고 그 FA는 알림을 받고 "여기에 이벤트가 있어요. 아마도 당신이 살펴보고 싶을 수도 있어요. 여기 뉴스 기사가 있어요."라고 말하죠.
이 그래프를 지능적으로 만들고 비즈니스를 능동적으로 만들기 시작했어요.
간단한 규칙으로 시작할 수 있어요. 이런 일이 발생할 때마다 이 정보를 여기로 보내야 해요. 이제 비즈니스의 모든 부분이 올바른 방식으로 연결되어 있으므로 복잡한 Machine Learning, AI 또는 Deep Learning 프레임워크를 사용할 필요조차 없어요. 여러분이 해야 할 일은 "야, 이 정보는 여기에 들어가야 할 것 같아"라고 말하는 것 뿐이죠.
위험 동인 그래프 작성
예를 들어 고객 및 작업에 대한 정보 검색 이상의 작업을 수행할 수 있어요. 대규모 계산 엔진으로 Knowledge Graph를 구축할 수도 있죠.
은행에는 종합 자본 분석 및 검토(CCAR)라는 기능이 있어요. 여기서 모든 단일 은행은 연준이 제공하는 다양한 시나리오에 걸쳐 스트레스 테스트를 수행하기 위해 엄청난 수의 모델을 구축해야 해요. 이는 일반적으로 몇 달이 소요되는 과정이죠.
은행은 이러한 스트레스 테스트를 완료하는 데 8개월에서 12개월이 걸릴 수 있어요. 위험을 식별하고, 기관에 실제로 스트레스를 줄 것이라고 생각하는 시나리오를 구축하고, 비즈니스를 정확하게 포착하는 모델을 구축한 다음, 해당 모델 결과를 집계하여 연준, SEC 또는 주주에게 수익, 대차대조표 등의 측면에서 보낸 다양한 항목으로 구성해요. 그것은 단지 정보의 흐름일 뿐이죠.
그래프는 실제로 모든 것을 포착할 수도 있어요. 식별한 모든 위험 목록을 그래프로 작성하기 시작한 다음 이를 해당 위험을 유발한다고 식별된 매크로 변수 또는 시장 변수에 연결하면 해당 변수는 모델과 비모델의 동인이기도 해요. 그리고 그 모델에는 또한 없었어요. 해당 모델의 결과도 재무제표까지 집계되죠.
이는 Graph Database를 사용하여 모델 네트워크로 넣을 수 있는 정보 흐름이에요. 이제 엔터프라이즈 계산 엔진을 직접 구축했어요.
만약 여러분이 CEO라면, 모든 모델과 비모델을 입력하고 이를 Knowledge Graph에 연결해서 이렇게 말할 수 있을 거예요. "내일 아침 VIX가 5비트 오르는지 확인해보고, 불리한 시나리오에서 내 대차대조표에 어떤 영향을 미칠까?"
지금 당장 누군가에게 물어보면 3~4개월 정도 걸릴 텐데, 모든 모델을 배치하고 그래프를 자연스러운 정보 흐름으로 사용하면 한 모델의 입력이 다른 모델로 들어가는 계산 엔진이 되어서 모두 집계되는 거죠.
비교적 빠른 계산이 가능해요. 여러분이 만든 앱에 그걸 넣으면 되는 거죠. 그리고 하나의 Node를 변경하면 모든 다운스트림 Node가 영향을 받아요. 그런 다음 사전 프로비저닝 순 수익(PPR)을 보고 순 수익 항목을 확인한 다음 "이것이 Node 변경으로 인한 영향입니다."라고 말할 수 있는 거죠.
Knowledge Graph는 고객 360도 뷰 구축, 이상 탐지, 사이버 보안, 대규모 모델 네트워크 연결 등 정보 흐름이 필요하고 데이터 연결이 필요한 모든 곳에서 사용할 수 있어요.
이 은행들 중 일부는 회귀 분석부터 비율 기반, 복잡한 몬테카를로 및 확률론적 미적분학 모델에 이르기까지 다양한 모델을 800~1,000개 정도 가지고 있어요.
스마트 검색을 위한 Knowledge Graph
Knowledge Graph에 전체 비즈니스를 구축하고 나면 (데이터 시스템 위에 이 레이어를 구축했다면) 매우 지능적인 기업 검색 엔진 구축을 시작할 수 있어요.
우리의 대규모 개인 자산 관리 고객 중 한 곳이 최근 우리에게 와서 이렇게 말했어요. "저는 그냥 사업가일 뿐이에요. 제 데이터가 여러 다른 데이터 시스템에 분산되어 있어서 기술 팀으로부터 주간 보고서를 받아서 고객에게 제공하고 있죠. 하지만 때때로 정보를 검색하고 임시 보고서를 작성하고 싶은데, 그럴 수가 없어요. 왜냐하면 기술 팀에 가서 제가 원하는 변수를 제공하면 그들이 저를 위해 가져와야 하거든요." 정말 번거롭죠. 제가 원할 때, 원하는 방식으로 데이터를 원할 뿐이에요.”
그래서 우리는 이게 고전적인 Knowledge Graph에 Natural Language Processing 문제를 더한 것 같다고 말했어요. 수십 개 정도의 시스템에 구조화된 데이터가 있는데, 그 위에 Natural Language Processing을 사용해서 Graph Database를 얹으면 검색창을 제공할 수 있는 거죠. 원하는 것을 입력하기만 하면 돼요.”
다음은 우리가 구축한 개념 증명의 스크린샷이에요. 원하는 내용을 입력하기만 하면 Excel 파일이 제공되어서 Tableau나 Spotfire에 넣고 원할 때 임시 보고서를 만들 수 있죠.
자연어를 사용해서 의도, 언급된 명명된 엔터티 및 타임스탬프를 해석하고 이를 Cypher 쿼리하고 그래프에서 관련 정보를 가져오는 거예요.
이건 기업 검색 구축 방법의 시작일 뿐이에요.
엔터프라이즈 그래프 구축을 시작하는 방법
무어: 엔터프라이즈 그래프 구축을 어떻게 시작할 수 있을까요?
데이터가 있는 위치를 찾은 후 기본 프로세스는 여러 쿼리를 작성하는 거예요. 이러한 쿼리의 결과는 제가 그래프 형식 테이블이라고 부르는 것인데, 이는 Node 또는 Node 간 Relationship 맵의 심층 테이블이 되는 거죠.
다음으로 각 테이블에서 간단한 SELECT * 쿼리를 수행해요. 그런 다음 압축된 CSV 파일을 생성해서 Neo4j에 로드하죠. Neo4j 로더는 압축된 CSV 파일을 직접 사용할 수 있는 빠른 로딩 도구라서 매우 효율적이에요. 그리고 이는 본질적으로 초기 그래프 수화에 사용되는 거죠.
가장 어려운 부분: 그래프를 작성하기 전의 모든 것
새로운 그래프를 만들 때 가장 어려운 부분은 그래프 이전에 일어나는 모든 일이에요.
엄청나게 많은 양의 데이터를 처리하기 시작하고 Relationship을 매핑하려고 할 때 모든 주요 제약 조건을 준수해야 해요. 모든 문자열 처리가 올바르게 수행되었는지 확인해야 하죠.
저희가 발견한 건 그래프를 형성할 핵심 테이블에서 많은 반복을 수행해야 한다는 거예요. 처음 두 가지 주요 단계를 수행하는 데 몇 주를 보낼 정도죠. 그 다음에는 모든 것이 합쳐지게 돼요.
아래 이미지는 약 1년 전에 Azure에서 구축한 그래프의 실제 결과물이에요. 모든 데이터가 로드되는 동안 검증이 이루어지죠. 그리고 데이터베이스인 Neo4j는 `Node` 간의 `Relationship`을 생성하는 `Key`를 찾을 수 없거나 고유성 제약 조건을 위반하는 경우, 아주 강력하게 에러를 뱉어낼 거예요.
데이터 선택
회사 내 여러 팀과 이야기를 나누면서, 이미 어느 정도 작업이 완료된 데이터를 선택하는 게 좋아요. 이렇게 하면 기본적으로 `Node` 및 `Relationship` 테이블을 만드는 작업을 수행하게 되는데, 이는 프로젝트에 좋은 촉진제가 될 수 있죠. 일반적으로 이런 데이터는 이미 정제되어 있을 가능성이 높고요.
또 다른 흔한 시나리오는 레거시 데이터베이스를 사용하는 클라이언트인데요. 이 경우는 조금 느려요. 왜냐하면 각 데이터베이스에서 개별적으로 데이터를 추출해야 하거든요. 가장 시간이 오래 걸리는 부분은 특정 시스템에 대한 액세스 권한을 얻는 과정일 거예요.
스트림 데이터는 그래프로 가져오기가 매우 쉬워요. 초기 그래프를 구성하고 업데이트에 대한 논의를 마친 후에 스트림에 대해 생각하기 시작하는 것이 일반적이죠.
그래프를 업데이트하는 방법은 여러 가지가 있어요. 증분 업데이트, CSV 로드 방식을 사용할 수도 있고, Neo4j가 지원하는 다양한 드라이버를 통해 그래프를 업데이트하는 애플리케이션을 만들 수도 있죠. 하지만 스트림 방식이 아주 좋은 방법이고 확장성도 뛰어나요.
데이터 그래프에서 Knowledge Graph로
이제 데이터 그래프에서 Knowledge Graph로 전환하는 방법에 대해 이야기해 볼까요? 몇 가지 패턴이 있어요.
패턴 1: GPU 가속
가장 일반적인 첫 번째 패턴은 Neo4j에서 데이터를 추출하는 거예요. 일반적으로 모델 구축에 필요한 모든 기능을 포함하는 테이블 형태로 추출해야 하죠. 그런 다음 R, H2O 또는 TensorFlow와 같은 모델링 환경에서 처리하고, 점수가 매겨진 결과를 다시 그래프에 쓰는 방식이에요. 약간 투박하지만, 잘 작동하고 각 플랫폼의 장점을 최대한 활용할 수 있다는 장점이 있죠.
패턴 2: 분산 OLAP 그래프 처리
또 다른 패턴은 분산 OLAP 그래프 처리를 사용하는 건데요. 저는 이 패턴이 점점 더 널리 사용될 거라고 생각해요. Neo4j에서 데이터를 추출해서 Spark 내부의 그래프 프레임으로 넣고, Scala 기반 모델링 절차를 실행한 다음, 결과를 다시 Neo4j로 업데이트하는 방식이죠.
패턴 3: 인그래프, 인메모리 Machine Learning
제가 가장 좋아하는 패턴은 인그래프, 인메모리 Machine Learning이에요. 최근 Michael Hunger와 팀이 전체 확장 및 절차 세트를 중심으로 정말 훌륭한 작업을 했는데요. 이는 기본적으로 Neo4j 서버에 넣을 수 있는 플러그인이에요. 이걸 사용하면 고도로 병렬화된 다양한 그래프 Machine Learning 알고리즘을 사용할 수 있게 되죠. 정말 강력한 모델이에요. 왜냐하면 모델링을 위해 데이터를 이동시키는 대신, 모델링 자체를 그래프로 가져오기 때문이죠. 이 방식은 속도도 엄청나게 빠를 수 있어요.
데이터를 변화시키는 요소
그래서, 이제 어디로 가야 할까요?
모델 점수가 확보되면 데이터 그래프를 Knowledge Graph로 변환하는 것은 예측 결과를 다시 그래프에 기록하는 방법을 선택하는 것과 같아요.
아래 그림 오른쪽에는 마케팅 기여도 그래프가 보이네요. 저 노란 점들은 모두 한 사람에게 집중된 다양한 마케팅 메시지인데요. 여기서 질문은 "이 사람이 리드로 전환되도록 하려면 다음에 어떤 마케팅 메시지를 보여줘야 할까?" 하는 거예요. 이 그래프에는 활용할 수 있는 유사성 관계가 포함되어 있죠.
그래프를 더 스마트하게 만드는 방법은 크게 네 가지로 생각해볼 수 있어요. 예측을 수행하고, 그 결과를 기존의 nodes에 property로 추가하는 거죠. 이건 흔히 사용되는 방법이에요.
또 다른 흥미로운 방법은 클러스터링 알고리즘 같은 작업에 유용한데요, 그래프의 nodes에 추가 label을 적용하는 거예요. Neo4j 그래프는 원하는 만큼 다양한 labels를 가질 수 있거든요. Label이 하는 일은 node 집합을 선언하는 것뿐이고, 이 labels는 완전히 겹칠 수도 있어요. Label을 적용해서 얻을 수 있는 것 중 하나는 무료 index이고, label별로 그래프를 즉시 하위 분할할 수 있다는 점이죠.
물론 복잡한 모델 결과를 node로 밀어 넣어 그래프에 연결할 수도 있지만, 점수를 그래프로 밀어 넣는 가장 강력한 모델 중 하나는 relationships를 활용하는 거라고 생각해요.
Neo4j의 흥미로운 점 중 하나는 Property Graph라는 건데요, relationships에 properties를 넣을 수 있다는 거예요. Relationships에 properties를 추가할 수 있으니, 두 개의 데이터 포인트를 가지고 여러 모델을 실행할 수 있겠죠?
각 모델을 실행할 때마다 어떤 모델이 해당 예측을 했는지 참조하는 새로운 모델 relationship, 새로운 예측 relationship을 설정하고 확률 점수, 신뢰도 점수, 유사성 점수를 추가할 수 있어요. 그리고 이게 본질적으로 우리가 이러한 유사성 relationships를 통해 하고 있는 일이죠.
이 그래프에서는 모든 단일 고객과 다른 모든 고객의 유사성을 계산해요. 이는 Neo4j에서 매우 쉽게 접근할 수 있는 종류의 계산이죠. 그런 다음 이를 relationship으로 작성하는 거고요. 여러 버전의 모델을 추적할 수 있고, 방향성 때문에 동일한 두 nodes에 대해 서로 다른 예측을 할 수도 있어요.
위에 표시된 것처럼 A가 B를 예측하는 곳에 파란색 화살표가 있지만, B가 A를 예측하도록 할 수도 있죠. 그러면 이는 그래프로 지식을 표현하기 위한 매우 간결한 언어가 되는 거예요.
그리고 이 모든 것의 가장 중요한 측면은 이제 relationship으로 인스턴스화되었으므로, 실제로 Cypher를 사용해서 탐색하고 예측된 모든 nodes를 선택할 수 있다는 거예요. 연결된 예측이 여러 개 있을 수 있겠죠. 그래프와 Machine Learning의 조합을 사용해서 본질적으로 귀속되는 관련성이 높은 데이터를 추출하는 여러 연결된 예측을 얻게 되는 거고요. 정말 강력한 구조죠!
시작하기 위해 아래 그림은 AWS에서 구현된 일반적인 샌드박스 환경이에요. Azure에도 매우 유사한 서비스가 있답니다.
일반적으로 우리가 최종적으로 수행할 작업은 Hive에서 수행하는 거예요. 우리는 S3에서 이러한 그래프 형식의 테이블을 여러 개 생성할 거예요. 그런 다음 이를 가상 프라이빗 클라우드에서 독립 실행형으로 실행되는 EC2 서버로 가져오죠. 데이터 과학 팀이 선택한 패키지를 사용해서 그래프로 직접 작업할 수 있도록 다양한 도구를 추가하고요.
그래프 문제를 인식하는 방법
그래프를 사용해야 할지 어떻게 알 수 있냐구요?
이걸 기술적인 문제가 아니라 비즈니스적인 문제로 생각하는 게 훨씬 좋을 것 같아요. "고객과의 커뮤니케이션 양이 엄청 많은데, 고객이 말하는 내용을 어떻게 더 잘 이해할 수 있을까?" 같은 질문이 들리기 시작하면 그건 그래프 문제일 가능성이 높아요.
"고객에게 더 나은 경험을 제공하기 위해 어떻게 고객을 더 잘 이해할 수 있을까? 고객과 직접 상호 작용하는 방식을 어떻게 개선할 수 있을까?" 이것도 아주 좋은 그래프 문제죠!
"어떻게 하면 더 적극적으로 대처할 수 있을까? 신호와 잡음을 어떻게 분리할 수 있을까?" 다시 말하지만, 훌륭한 그래프 문제에요.
"내 데이터는 여러 소스에 흩어져 있는데, 많은 어려움 없이 쉽게 액세스하고 더 나은 뷰를 얻을 수 있는 방법은 없을까?" (이건 정말 뛰어난 그래프 작업량이죠.)
마지막으로, 이게 아마 가장 중요한 질문일 거라고 생각해요. "내가 취할 수 있는 최선의 차선책은 뭘까?"
제 생각에는 반복적인 Machine Learning과 결합된 데이터 그래프, 즉 Knowledge Graph가 특정 질문에 답하기 위한 최고의 패턴이 될 거예요.
- 엔터프라이즈 AI
- Machine Learning
- Natural Language Processing
에이치시스템즈의 LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.
'Ontology & Knowledge Graph' 카테고리의 다른 글
| 지식 해방: Neo4j와 함께하는 Machine Learning 기법 (0) | 2026.07.16 |
|---|---|
| From Data to Intelligence: Why Every Enterprise Needs an AI Knowledge Layer (0) | 2026.07.16 |
| 지식 그래프와 AI 미래 탐색: Accenture Charlie Beveridge 인터뷰 (0) | 2026.07.15 |
| 지식 그래프로 데이터 잠재력을 폭발시키세요! (0) | 2026.07.15 |
| 실시간 추천 엔진으로 매출 UP! Knowledge Graph 활용법 (1) | 2026.07.15 |
