배민 앱 리뷰 품질을 향상시킨 방법은? 머신 러닝 X 네트워크 탐지 모델 도입

May.16.2023 강성욱

AI Data Machine Learning

배경

배민 앱에서는 많은 음식점 중 선택을 해야 하는 사용자들의 고민을 덜어 주고자 리뷰 서비스를 제공합니다.

사용자들은 작성된 리뷰 내용 및 평점을 참고하여 메뉴를 선택하는 경우가 많습니다. 높은 평점과 후기가 좋은 리뷰를 확보하는 게 중요하다 보니, 리뷰 작성 대행 업체나 다수의 계정을 동원해 허위 리뷰를 작성하는 일이 발생합니다.

[그림 1] 쇼핑몰부터 숙박·배달앱 후기까지 돈 받고…’조작’ 전성시대(출처: 한국경제)

이렇게 작성된 허위 리뷰를 그대로 방치하면 어떻게 될까요? 🧐

허위 리뷰를 보고 주문한 사용자는 예상과 다른 맛에 실망하여 배민 앱을 사용하지 않을 수도 있고, 정상적인 가게는 허위 리뷰를 작성하는 가게보다 주문수가 적어지면서 매출에 타격을 입게 될 수도 있습니다.

결국 허위 리뷰를 작성하는 가게만 남게 되고, 사용자들은 허위 리뷰만 있는 배달 앱이라는 인식에 다른 앱으로 이동하게 되는 악순환이 일어나게 되고 맙니다.

리뷰의 건전한 생태계를 유지하고, 리뷰 본연의 목적을 유지하려면 허위 리뷰 작성을 막아야 할 필요가 있습니다.

허위 리뷰를 작성하는 행위를 효과적으로 막고 정직한 리뷰를 제공하기 위해 준지도 학습 알고리즘(Deep SAD)소셜 네트워크 분석을 결합하여 리뷰 조작 업체를 탐지하는 모델을 개발했습니다.

이 글에서는 리뷰 조작 업체 탐지 모델에 관해 자세하게 소개하고자 합니다.

이상 탐지 접근 방법

먼저 조작 업체 탐지 방법을 설명하기 전에 일반적인 이상 탐지 접근 방법에 대해 설명하려고 합니다.

허위 리뷰와 같은 어뷰징 행위는 정상적인 사용자와 다른 패턴을 보이기 때문에 이를 탐지하기 위해이상 탐지(anomaly detection)기법을 많이 사용합니다. 이상탐지는 정상적인 패턴과 다른 패턴, 행동 또는 이벤트를 탐지하는 기술로 금융거래 사기 탐지, 제조 공정의 불량 탐지 등 다양한 분야에서 활용되고 있습니다.

어뷰징 행위를 탐지하는 방법은 크게 룰 기반 이상 탐지머신 러닝 기반 이상 탐지 2가지로 나눠 볼 수 있습니다. 회사에 따라서 룰 기반 또는 머신 러닝 기반 탐지 중 1가지만 운영하거나, 상황에 따라 둘 다 운영하는 경우도 있습니다. 다음은 룰 기반 탐지과 머신 러닝 기반이상 탐지 주요 접근 방법과 머신 러닝 모델 학습 방식을 나타낸 그림입니다.

[그림 2] 이상 탐지 접근 방법 도식화


1) 룰 기반(rule based) 이상 탐지

기존 이상 패턴 또는 어뷰징 행위에 나타나는 주요 특징과 조건을 규칙화하여 필터링하는 방식으로 예를 들면 ‘최근 10분 내 주문 100건 이상인 경우’와 같이 조건 기반 특정 패턴이나 행위를 탐지합니다.

룰 기반 탐지는 몇 가지 간단한 조건들로 구성되기 때문에 쉽고 빠르게 서비스에 적용할 수 있습니다. 또한 탐지된 항목에 대해 명확한 이해가 가능하다는 장점 때문에 현업에서 자주 사용되는 방식입니다. 하지만 미리 설정된 조건이 아니면 탐지가 어렵고, 설정된 임곗값이나 조건 변화에 민감할 수밖에 없습니다.


2) 머신 러닝(machine learning) 기반 이상 탐지

머신 러닝 알고리즘을 활용하여 데이터의 이상을 탐지하는 방법입니다. 학습 데이터 사용 방식에 따라 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 준지도 학습(Semi-Supervised Learning)으로 나눌 수 있습니다. 지도 학습의 알고리즘은 입력값에 대한 정답이 있는 라벨(Label) 데이터를 학습하여 예측하기 때문에 라벨 데이터가 필요합니다. 비지도 학습은 라벨 데이터가 없이도 학습이 가능한 방식입니다. 준지도는 일부 소량의 라벨 데이터를 사용합니다.

2-1) 지도 학습

정상 또는 이상 여부에 대한 라벨 데이터를 가지고 학습하는 방법입니다. 학습 데이터를 이용하여 모델을 학습하고, 새로운 입력 데이터에 대해 라벨을 예측하는 방식입니다. 주요 알고리즘으로는 SVM, LightGBM, ANN 등이 있습니다.

지도 학습의 장점은 타 방식에 비해 높은 정확도로 학습한 어뷰징 패턴 탐지가 가능하며, 분류 결과에 대한 패턴이 쉽게 구분 가능하다는 점입니다. 단점은 학습을 위한 많은 양의 라벨 데이터가 필요합니다. 모든 데이터에 대한 라벨을 지정하는 것이 불가능하지는 않지만 이를 위해선 많은 비용이 발생하게 됩니다. 더불어 학습 되지 않은 새로운 패턴에 대해서는 탐지하기가 어려운 점이 존재합니다.

2-2) 비지도 학습

비지도학습에서는 라벨 데이터 없이 주어진 입력 데이터를 비슷한 데이터끼리 묶어 주는 클러스터링 방법을 사용합니다. 또는 데이터의 대부분이 정상 데이터라고 가정하고, 해당 정상 데이터에서 멀리 떨어진 데이터를 찾는 방법들이 주로 사용됩니다. 예를 들면 K-means, DBSCAN, Autoencoder, Isolation Forest 등이 있습니다.

비지도 학습의 장점은 라벨 데이터가 없어도 사용 가능하다는 점과 지도학습의 단점인 알려지지 않은 새로운 패턴을 탐지 할 수 있다는 점입니다. 단점은 지도 학습에 비해 상대적으로 낮은 정확도를 보이고, 탐지 결과가 모호할 수 있다는 것입니다. 예를 들어 정상 사용자 패턴이 달라 이상으로 탐지했지만, 이는 데이터 분포상 이상한 것이지 결과적으론 어뷰저가 아닐 가능성이 있습니다.

2-3) 준지도 학습

준지도 학습은 적은 수의 라벨 데이터와 많은 수의 라벨링되지 않은 데이터를 모두 사용하는 방식입니다. 지도 학습과 비지도 학습의 중간 단계라고 볼 수 있습니다. 즉 라벨된 데이터가 적을 때, 라벨이 없는 데이터를 함께 사용해 학습 모델의 성능을 향상시키는 방식입니다.

장점은 라벨된 데이터가 소량만 있어도 사용할 수 있어 라벨 수집에 대한 비용과 시간을 절약할 수 있다는 점입니다. 모델의 성능을 개선하기 위해서 라벨이 있는 데이터를 추가로 수집하여 모델을 업데이트할 수도 있습니다. 단점으로는 라벨이 없는 데이터를 이용하여 학습하기 때문에 해당 데이터의 특성에 따라 이상치를 잘 못 판단하거나, 성능이 크게 차이 날 수 있습니다.


리뷰 조작 업체 탐지 모델 접근 방향

여러 이상 탐지 방법 중에서 리뷰 조작 업체를 탐지하기 위해 배민에서는 룰 기반의 탐지 모델을 운영 중이였습니다.

룰 기반 탐지 방법은 패턴과 임계치 변화만으로 쉽게 우회가 되기 때문에 조작 업체들이 쉽게 우회하고 있었고, 점점 고도화 되는 패턴을 단순 조건 몇 가지만으로는 대응하기가 어려운 상황이었습니다. 매번 임곗값과 조건들을 변경하면서 대응하기에는 어렵다고 판단하였고, 머신러닝 기반 이상 탐지 방법을 사용하여 탐지모델을 고도화하는 방향으로 선택했습니다.

먼저 리뷰 조작 업체 탐지 방법에 대해 간략히 설명하도록 하겠습니다. 머신 러닝 기반 이상 탐지를 통해 이상 회원인리뷰조작 회원을 우선 탐지하고, 소셜 네트워크 분석을 통해 회원과 가게의 연관 관계를 분석하여 최종적으로 리뷰 조작 업체(그룹군)을 탐지하였습니다.

[그림 3] 리뷰조작 업체 탐지 흐름도


어떤 머신러닝 알고리즘을 이용해 탐지할까?

여러 머신러닝 방법 중 준지도 이상 탐지 방식을 선택한 이유는 다음과 같습니다.

  1. 기존 룰 기반 탐지를 통해 확보한 “소수”의 라벨데이터 활용

    기존 룰 기반 탐지로 조작 업체에 대해 탐지하여 일부 라벨 데이터를 보유한 상태였지만 라벨 데이터 건수가 너무 적어 다량의 학습 데이터가 필요한 지도 학습을 사용하기엔 부족하다고 생각하였고, 충분한 라벨 데이터를 확보하려고 하니 많은 비용과 시간이 필요하였습니다.

  2. 비지도 학습의 낮은 정확도 보완

    비지도 이상 탐지로 접근하게 되면 여러 가지의 알 수 없는 이상 패턴까지 섞여서 탐지되기 때문에 낮은 정확도가 문제가 되었습니다.

비지도 이상 탐지보다 정확도를 높이기 위해서 소량의 라벨 데이터를 활용하고 싶었고, 이후 추가적으로 확보되는 라벨 데이터를 이용해 학습 모델을 주기적으로 업데이트할 수 있는 준지도 학습 알고리즘을 선택하게 되었습니다.

준지도 학습 알고리즘 중 Deep SAD(Semi-supervised Anomaly Detection)라는 알고리즘을 사용하였습니다. Deep SAD는 라벨 데이터가 있는 경우에는 준지도 이상 탐지로 동작하고, 라벨 데이터가 없는 경우에는 비지도 이상 탐지로 동작하는 알고리즘입니다.

우아한형제들에서는 현재 여러 가지 서비스들이 계속 추가되고 있고, 이상 탐지 역시 신규 서비스들에도 확장될 가능성이 높습니다. 그러나 신규 서비스의 경우 초반 라벨 데이터가 없어서 지도 학습 모델 구축이 어렵습니다. Deep SAD는 초기에 라벨 데이터가 없어도 모델 구축 가능한 장점이 있기 때문에 신규 서비스에 확대할 때도 유리한 알고리즘이라고 판단하여 선택하였습니다.

준지도 머신러닝 알고리즘(Deep SAD)

선택한 준지도 이상 탐지 알고리즘에 대해서 간단히 설명하겠습니다.

Deep SAD 알고리즘은 준지도 이상 탐지 방법론입니다. 준지도 이상 탐지 방법론은 비지도 이상 탐지인 Deep SVDD 방법론에 준지도 학습 방법을 적용한 모델로 볼 수 있으며, Deep SVDD는 고전적인 비지도 이상 탐지 방법인 SVDD(Support Vector Data Description)의 아이디어를 착안하여 Deep Learning에 접목시킨 방법으로 볼 수 있습니다. 알고리즘 발전 과정순으로 SVDD, Deep SVDD, Deep SAD 알고리즘에 대해서 간단히 설명드리겠습니다.

1) SVDD

SVDD는 기존의 SVM(Support Vector Machine) 알고리즘에서 발전하였습니다. 정상과 이상 데이터가 있을 때, 입력 데이터를 커널 함수로 매핑하여 새로운 고차원 공간에 데이터를 나타냅니다. SVDD는 새롭게 매핑한 데이터 공간에서 정상 데이터는 최대한 구안에 포함하도록 하는 구의 중심과 반지름을 찾는 알고리즘입니다. 반대로 이상 데이터는 구의 중심에서 최대한 멀리 떨어지도록 합니다. 결과적으로 구의 경계면을 기반으로 데이터가 안쪽에 위치하면 정상이고, 밖에 위치하면 비정상으로 판단할 수 있습니다.

[그림 4] SVDD 알고리즘 설명

목적 함수는 아래와 같고, 일부 페널티를 포함하여 구의 반지름을 최소화하는 반지름(R), C(중심), 페널티(ξ)를 찾아서 정상 데이터를 최대한 구안에 포함하도록 하는 것이 목적입니다. 소프트 마진(Soft-margin)은 데이터를 분류하는 결정 경계를 찾을 때 일부 오류를 허용하여 데이터 노이즈나 이상치에 더 견고하도록 할 수 있습니다. 이런 소프트 마진을 위한 페널티를 추가하여 구가 비효율적으로 커지는 것을 방지하게 됩니다. 예를 들면 정상 데이터와 이상 데이터가 가깝게 존재하는 경우 모두 포함하는 구를 찾게 되면 상당히 큰 구가 설정될 수 있습니다.

[수식 1] SVDD 목적 함수

2) Deep SVDD

정상 데이터를 최대한 포함하는 구의 중심과, 반지름을 찾는 SVDD와 유사한 개념입니다. 하지만 Deep SVDD는 커널 함수를 사용하지 않고, 딥러닝 기반으로 학습한 피처 공간에서 정상 데이터를 최대한 중심에 매핑하도록 학습하게 됩니다. 즉 학습 시 구의 중심과 반지름을 계산하는 것이 아닌 정상 데이터를 대표하는 중심점에 정상 데이터를 최대한 가깝게 매핑하도록 학습하여 유사한 효과를 내도록 하였습니다.

[그림 5] Deep SVDD 알고리즘 설명

목적 함수는 아래와 같습니다. 딥러닝을 통해 정상 데이터를 중심점에 최대한 가깝게 표현할 수 있도록 가중치(W)를 학습하게 됩니다. 중심점은 Deep SVDD와 동일한 구조를 가진 Autoencoder를 이용하여 미리 계산된 가중치를 대체하여 사용합니다. 즉 정상 데이터를 대표하는 중심점을 미리 계산해놓고 사용한다고 볼 수 있습니다. 딥러닝 가중치(W)에 대해 정규화(regularization)을 추가하여 모델 과적합(overfitting)을 예방하고, 일반화 성능을 높이도록 하였습니다. 최종 이상 점수는 중심점에서 각 데이터 포인트가 얼마나 떨어져 있는지를 수치화하여 사용하게 됩니다.

[수식 2] Deep SVDD 목적 함수

3) Deep SAD

Deep SAD는 준지도 학습 알고리즘이기 때문에 비지도 이상 탐지와 달리 라벨 데이터를 학습에서 사용합니다. 결과적으로 다량의 라벨되지 않은 데이터와 소량의 라벨된 데이터를 학습에 모두 사용합니다.

라벨된 데이터를 학습에서 사용하기 위해서 기존 Deep SVDD의 목적 함수에 추가되는 항목이 존재합니다. 아래 [수식 3]의 목적 함수를 보면 수식의 첫 부분과 마지막 항은 기존 Deep SVDD와 동일하고, 라벨 데이터를 목적 함수에 반영하기 위해 두 번째(중간) 수식이 추가되었습니다.

두 번째 수식에서 y˜은 라벨 데이터가 정상인 경우에 1이고, 이상인 경우에 -1로 설정됩니다. 이상인 경우 y˜=-1이기 때문에 해당 항목이 역수가 되어 결과적으로 중심에서 멀어지게 학습됩니다. m은 라벨 데이터의 수인데, 라벨 데이터가 없으면 m=0이 되고, y˜=0으로 설정되어 기존 Deep SVDD 목적 함수와 동일하게 동작하게 됩니다.

[수식 3] Deep SAD 목적 함수

머신러닝 기반 이상탐지: 리뷰 조작 회원 탐지

기본적으로 공개된 Deep SAD 알고리즘은 비정형 데이터인 이미지에서 이상을 탐지하는 다음 그림과 같이 유사한 CNN(Convolutional Neural Network) 구조를 가지고 있습니다. 하지만 리뷰 조작 회원의 데이터는 회원 행위를 일정 단위로 집계된 정형 데이터 구조입니다. 따라서 Deep SAD로 학습하고 탐지하기 위해서는 행위 데이터를 이미지 형태로 변경 가공을 하거나, 기존 신경망 네트워크 구조를 일반적인 정형 데이터로 사용 가능하도록 변경이 필요하였습니다.

[그림 6] 일반적인 CNN 네트워크 구조 (출처: CNN-matlab)

이미지 형태로 데이터를 변경하기 위해서는 회원별로 X축은 특정 시간 단위, Y축은 각 피처별 집계값을 사용하여 이미지 형태로 변환이 가능합니다. 하지만 이런 형태의 데이터에 CNN 적용하여, 입력 데이터의 특징을 추출하는 합성곱 연산과 이미지 크기를 줄이기 위한 Pooling 과정이 불필요하다고 생각하였습니다.

따라서 CNN 구조가 아닌 정형 데이터를 그대로 학습 가능하도록 일반적인 Autoencoder 구조로 변환하여 Deep SAD를 학습하였고, 정형 데이터 구조로 학습한 성능이 충분한 것을 확인하였습니다. Deep SAD 사용 시 각자 보유한 데이터 형태에 맞춰 신경망 구조를 변경 사용하면 좋습니다.

리뷰 조작 회원을 탐지하기 위해서 회원별로 피처들을 집계하였습니다. 네트워크 구조를 CNN이 아닌 일반적인 정형 데이터 입력 형태로 변경하여 Deep SAD 알고리즘을 적용하였고, 기존에 룰셋으로 차단한 소량의 라벨 데이터와 라벨링되지 않은 데이터를 모두 사용하여 학습하였습니다.

결과적으로 중심점에서 거리가 먼 리뷰 조작 가능성이 높은 회원을 탐지할 수 있었습니다.


소셜 네트워크 분석: 리뷰 조작 업체 탐지

준지도 이상 탐지 방법을 이용하여 이상 회원 즉, 리뷰 조작 회원을 탐지하였습니다. 하지만 리뷰 조작 업체 탐지의 최종 목적은 조작 그룹을 탐지하는 것입니다. 이러한 조직적 행위를 탐지하기 위해선 소셜 네트워크 분석 방법이 유용하게 사용될 수 있습니다.

네트워크 기반 탐지는 조작 업체의 특징인 ‘다량의 허위 리뷰를 작성을 위해 다수 계정으로 유사한 가게에 허위 리뷰를 작성한다’를 모델링하여 탐지하려고 하였습니다. 또한 준지도 이상 탐지로 탐지한 이상 회원들이 하나의 특정 네트워크 그룹으로 묶여 탐지된다면 더욱 강하게 의심해 볼 수 있습니다.

준지도 이상 탐지로 탐지한 이상 회원에 대해서만 네트워크 탐지를 적용하였습니다. 이상 회원에 대해서 회원과 회원 간에 리뷰를 작성한 가게가 얼마나 유사한지를 자카드 유사도(Jaccard similarity)로 측정하였습니다. 자카드 유사도는 두 집합 사이의 유사도 측정이 가능하여 자주 사용되는 방법입니다. 하지만 회원 쌍에 대해 모두 계산하기에는 자카드 유사도 계산량이 많아 Spark에서 제공하는 MinHash LSH 방법을 사용하여 근삿값을 계산하였습니다. 해당 알고리즘에 설명은 생략하고, 상세 내용은 MinHash 위키 내용을 참고 바랍니다.

회원을 노드(node)로 보고, 리뷰 작성 가게 간 유사도가 높은 경우만 에지(edge)로 연결해주는 네트워크를 구성하였습니다. 해당 네트워크에서 커뮤니티 탐지(community detection) 알고리즘 보다 더 강한 조건인 K-core 분해(decomposition)를 적용하여 그래프내 응집도가 높은 그룹만 추출하였습니다. 커뮤니티 탐지를 적용하면 우연히 엣지(edge)로 연결되는 오탐이 발생할 수 있어 k-core를 사용하여 정확도를 높였습니다.

[그림 7] 네트워크 그룹 탐지


최종 리뷰 조작 업체 탐지 모델

다음 그림은 준지도 학습 이상 탐지 알고리즘인 Deep SAD와 네트워크 탐지 방법을 결합한 리뷰 조작 업체 탐지 모델의 구성도입니다.

먼저, 회원별 피처 데이터를 집계하여 준지도 이상 탐지 알고리즘을 이용해 이상 회원을 탐지합니다. 이후, 이상 스코어를 계산하여 이상 스코어가 높을수록 약한 조건의 네트워크 탐지를 적용하고, 이상 스코어가 낮은 회원들에 대해서는 강한 조건의 네트워크 탐지를 적용하였습니다.

최종적으로 두 가지 결과를 통합하여 탐지하게 되고, 검수 후 조치가 취해집니다. 조치를 통해 차단된 라벨데이터를 저장하여 모델 재학습에 사용되고 있습니다. 모델은 일정 주기마다 재학습을 통해 신규 모델을 생성하고 탐지하는 과정을 거치게 됩니다.

[그림 8] 최종 리뷰 조작 회원 탐지 모델 구성도


성과

보통 이상 탐지 모델의 성과 측정은 어려운 경우가 많습니다. 전체 조작 업체의 정확한 모수를 알기 어렵기 때문입니다.

배민 앱에서 허위 리뷰에 대한 차단은 탐지된 모든 리뷰들에 대해 검수자들의 검수를 거쳐 차단되고 있습니다. 따라서 검수자들이 처리 가능한 범위 내의 적절한 탐지 건수를 선정하고, 그 탐지 건수에서의 정탐률(precision) 향상을 목표로 모델을 만들고 있습니다.

결과적으로 기존 탐지 모델 보다 정탐률이 약 60% 이상 증가하였습니다. 정탐률뿐만 아니라 기존 보다 탐지되는 전체 건수도 증가하였습니다.

지난 몇 년간 건전한 리뷰 생태계를 유지하기 위한 노력은 꾸준히 하고 있습니다. 상세한 건수를 말할 순 없지만, 다음 그림과 같이 내부적으론 허위 리뷰 의심 제보(고객 제보)가 대폭 감소되었고, 외부적으로는 특정 조작 업체에서 배민 앱 리뷰 작업은 포기하겠다고 선언할 정도로 성과를 낼 수 있었습니다. 모든 업체들이 완전 포기를 했다기보다는 리뷰 조작업체들에게 배민은 리뷰 작업이 어렵다는 이미지를 충분히 심어 주었다고 생각합니다.

[그림 9] 허위리뷰 의심 제보 감소 건수 그래프


마무리

일반적인 이상탐지 접근 방법과 배민 앱에서 리뷰 조작 업체 탐지 모델 사례를 소개해드렸습니다.

준지도 학습 알고리즘을 도입하여 소량의 라벨 데이터를 이용하여 정확도를 높였고, 주기적으로 학습하는 프로세스를 구축하여 패턴 변화에도 대응 가능하도록 하였습니다.

또한 Deep SAD의 경우 라벨 데이터 없어도 비지도 학습 알고리즘으로 동작 가능하여 여러 서비스에 확장에도 유연할 것으로 기대하고 있습니다.

유사 이상 탐지나 준지도 학습 이상 탐지 알고리즘 적용 사례에 대한 많은 도움이 되었기를 바랍니다.

추가로 탐지 모델은 우아한형제들의 MLOps 플랫폼을 이용해 서비스하고 있습니다. MLOps에 관심 있는 분들은 "배민 앱에도 AI 서비스가? AI 서비스와 MLOps 도입기"도 같이 읽어 보시면 좋겠습니다.


참고 자료