[Review] Deep learning method for synthesis of tabular data

2019. 6. 25. 21:01관심있는 주제/GAN

728x90

Boogie Software라는 곳에서 tabular data를 GAN을 활용해서 만들어서 상업화가 되고 있는 것 같다. 

개인적으로 계속해보고 있지만, 굉장히 불안전하다고 생각하는데, 벌써 상업화하고 있어서 참 빠르다고 생각한다.

은행 거래 데이터를 활용해서 하는 것 같다. 

 

여기선 GAN을 활용해서 합성 데이터를 만든다고 한다. 

은행 데이터에는 Categorical , Numerical 변수들이 많이 있는데, 이렇게 합성한 데이터를 training을 할 때나 test 할 때 쓴다고 한다.

 

Data synthesis

막상 데이터는 있지만, 흔한 경우 그 데이터는 Privacy와 굉장히 밀접한 데이터 때문에 실제 데이터를 바로 사용하기가 어려운 경험들이 있을 것입니다. 그래서 상업적으로 사용하기 위해 비슷한 데이터를 이용한 방법이 있을 것이다.

GAN은 그러한 방법이 필요할 때 유용할 것 입니다.

Is your data too private to share?

합성된 데이터는 보통 개발할 때나, 데이터 분석, 시스템 테스트를 할 때 주로 합니다. 

합성된 데이터는 고객 행동으로 모아 지거나 측정으로부터 생성된 데이터를 흉내 내는 것입니다.

실제 데이터와는 달리, 합성된 데이터는 익명성이 있고, Privacy 걱정 없이 공유가 가능합니다.

그리고 한계가 없이 생성이 가능합니다. 

최소한의 경우, 합성 데이터는 형식적인 수준에서 실제 데이터를 나타낼 것으로 예상되지만, 기껏해야 분석이나 기계 학습 목적으로 실제 데이터를 대체할 수 있다.

합성 방법은 데이터의 종류와 그것에 부과된 요건에 따라 다르다. 활발한 연구가 진행 중이다.

http://www.vldb.org/pvldb/vol11/p1071-park.pdf  https://dai.lids.mit.edu/wp-content/uploads/2018/03/SDV.pdf

 

일반적으로 이미지에는 많이 접목되는 사례가 많다. 

데이터 표는 어디에나 있고, 많은 것들은 산업의 2진 저장고에 봉인되어 있지만, 그곳에서는 금만큼 가치가 있다.

이제는 그런 중요한 데이터를 바로 공유하는 것이 아니라, 생성된 중요한 데이터를 공유하는 방식을 사용하면 된다!

 

https://blog.boogiesoftware.com/2019/02/deep-learning-method-for-synthesis-of.html

 

예시는 은행 데이터

4500명의 고객들의 100만 거래가 있다고 하자. 

이 데이터에서는 모든 관점에서 은행 거래 정보를 포함하고 있다. 

Numeric 한 데이터인 balance 데이터도 있고, Category 한 데이터인 transaction type 도 있다.

여러 개를 해봤는데, 여기선 WGAN이 잘 되었다고 한다.

 

그리고 MLP로 진행을 했다고 한다.

흐음 나는 잘 안되던데...ㅠ 

Evaluation of synthesized transactions

훈련시킨 후에, 제한 없이 데이터를 생성할 수 있는데, 일단 흔히 통계적 유사성을 기준으로 봤다고 한다.

 

https://blog.boogiesoftware.com/2019/02/deep-learning-method-for-synthesis-of.html

실제 데이터(파란색)와 합성 데이터(빨간색)의 서로 다른 트랜잭션 범주에 대한 상대적 트랜잭션 수입니다. 각 마커는 거래 범주의 특정 조합을 나타낸다(예: 현금 인출 수, 특정 은행에서 들어오는 연금 거래 수 등).

 

상기의 그림에서 분명히 알 수 있듯이, 서로 다른 거래 범주의 상대적인 수는 합성에 잘 보존되어 있다.

가장 일반적인 거래의 수는 정확하게 산출되며, 합성된 데이터는 광범위한 주파수에 걸친 실제 데이터와 일치한다.

가장 빈번하지 않은 일부 범주의 수는 생산량이 적다.

일반적으로 네트워크를 오래 훈련할수록 더 많은 범주가 정확하게 생산된다.

 

흐음 여기선 결국 전체를 볼 순 없으니, 카테고리 따로, Numeric 따로 보는 것 같다. 

결국 한 개만 보는 것이 아니라 다른 변수들과의 유사도가 잘 학습하는지를 초점을 맞추는 것 같다.

이렇게 보는 이유는 내 생각에는 결국 합성된 데이터가 통계적인 성격이 실제 데이터와 유사하면 되는 것이기 때문에, 

그렇게 만들어지는지를 보고 그렇게 되면 장땡이라고 생각하는 것 같다.

 

위 그림은 거래금액과 계좌 잔액의 함수로서 거래 건수를 나타낸다. 이 데이터는 서로 다른 금액의 거래에 해당하는 세 개의 우세한 지역(그림의 '빨간' 지역)을 분명하게 보여준다. 이 세 영역은 합성에서 정확하게 생성되며, 영역의 모양에서 알 수 있듯이, 합성도 변수 사이의 공분산을 캡처한다!

 

 

GAN은 서로 다른 범주 간의 상대적 수치, 거래 일자 분포, 거래 금액과 계좌 잔액의 분포를 보존하는 등의 특성을 가진 합성 데이터를 생성하는 데 성공한다. 

변수들 사이의 공분산의 상당 부분이 보존되어 있다. 

이 합성은 예측 불가능한 방법으로 데이터의 일부 미세한 세부사항을 무시하거나 변형시킨다. 

그 사용 요건에 따라, 이것은 합성의 한계 또는 선호되는 특징으로 볼 수 있다.

 

Usability of synthetic data for machine learning?

합성된 데이터를 ML를 학습시키거나, 해결하려는 문제에 간단한 연습을 할 수 있게 된다.

결국 이렇게 함으로써, Privacy Issues를 해결하면서, 데이터를 활용할 수 있게 된다는 것이다.

 

기계 학습 예제에서는 먼저 모든 고객을 별도의 등급으로 분류한다.

이러한 분류는 계정 잔액과 거래 금액의 통합 가치와 서로 다른 거래 범주의 시간 밀도에 기초한다.

고객 클래스에 대한 시각화는 아래 그림을 참조하십시오.

 

 

Spectral clustering of different customers visualized in PCA (Principal Component Analysis) space. Each marker represents one customer and colors indicate the customer class.

 

그런 다음 각 거래에 거래를 운반하는 고객의 등급에 따라 라벨을 지정하며, 라벨도 합성에 포함된다.

즉 라벨도 고려한 데이터 생성이 잘 된 것이다!!

 

GBM으로 훈련을 시켰다고 한다. 그리고 분류 Metric을 비교해봤다고 한다.

 

The classification metrics for four major customer classes. Precision (the fraction of correct predictions) (right panel) and recall (the fraction of labels which are correctly predicted) (left panel). The classifier is trained either with real transactions (blue) or with synthetic transactions (red). The baseline prediction denotes random guesses for the labels (orange). All cases are evaluated against the real transaction set.

 

기본적인 랜덤보다는 더 잘되는 것을 알 수 있다, 물론 Real보다는 성능이 떨어진다.

대체제 느낌으로 사용 가능.

 

나의 생각

으흠 일반적으로 사용되는 것에 대해서 사례가 있는 것은 알겠고, 

WGAN을 사용했다는 것과, 통계량의 유사성을 통해 Metric을 본다는 점이 눈에 띈다. 

나는 지금 일반적으로는 한 변수들 간의 통계량으로 따지고 있었는데, 그렇게 볼게 아니라, Numeric , Category 

같이 볼 순 없지만, 둘 다 묶어서 보는 방식으로 통해서 Subset를 통합해서 보는 것도 좋은 방법인 것 같으니,

방법을 찾아봐야겠다.

 

하지만 이 Post는 디테일한 것에 대해서 설명이 없어서 개인적으로 아쉽다.

실제로 해보면 결과가 썩 좋진 않은데, 여러 가지 테크닉이 필요해 보인다. 

scaling이라던지, softmax를 어떻게 활용할지? 써야 할지 말아야 할지?

암튼 사례가 점점 나오고 있는 것 같다!

 

 

 

리뷰 :

https://blog.boogiesoftware.com/2019/02/deep-learning-method-for-synthesis-of.html

 

Deep learning method for synthesis of tabular data

In this post I present a study conducted here at Boogie Software by the Boogie Artificial Intelligence Team. The purpose is to...

blog.boogiesoftware.com

 

728x90