코로나 19 장기화로 인해 외부 활동이 과거 어느때보다 제한되고, 경제적 상황이 어려워지면서 이를 보상받으려 하는듯 한번에 큰 돈을 쉽게 벌고자 하는 한탕주의가 만연해 지면서 온라인 불법 도박 문제가 지속적으로 수면위로 떠오르기 시작하였습니다. 이를 해결하고자 수사 및 사정기관에서 불법 도박 사이트에 대해 꾸준히 단속을 하고 있지만 급속도로 증가하는 불법 도박 사이트를 수작업으로 일일히 확인 및 감시하는 것은 사실상 불가능합니다. 더욱이 이러한 단속을 회피하고자 해외에 서버를 운영하거나 IP 및 도메인을 수시로 변경하는 등 다양한 회피 방법으로 단속을 어렵게 만들고 있어 효과적이고 효율적인 대응 방법이 필요한 시점입니다.
이번 글은 “디지털 질병! 불법 도박 사이트의 특징을 파헤치다.”의 후속편으로, 온라인 불법 도박 사이트의 특징점을 어떻게 활용하여 불법 도박 사이트를 효과적으로 탐색하고 분류할 수 있는지에 대하여 소개하고자 합니다.
키워드를 이용한 도박 사이트 분류
일반적으로 접속하려는 웹사이트의 도메인 주소를 정확히 모르거나 관련 웹사이트를 찾을 때, 네이버나 구글과 같은 검색엔진에 사이트명이나 연관 검색어를 입력하여 찾은 사이트들 중에서 선택하여 접속합니다. 이때 사용되는 연관 검색어는 주로 사이트의 주제나 사이트 내에서 사용될만한 키워드를 입력하는 것이 일반적인 방법입니다. 하지만 불법 도박 사이트의 경우, 사이트명이 일반적이지 않고, 공개적이지 않아 쉽게 검색하여 접근하기 어렵기 때문에, ‘토토’, ‘카지노’ 등 관련 용어를 이용하여 검색된 결과를 바탕으로 접속할 수 있습니다. 그렇다면 키워드의 존재 유무만으로 검색된 결과를 모두 도박 사이트로 판단할 수 있을까요?
단순히 키워드만으로 도박 사이트를 판단할 수 있다면 좋겠지만, 도박 관련 뉴스나 블로그에서도 관련 용어가 상당수 사용되기 때문에 잘못 판단할 수 있습니다. 관련 연구 [1]에서는 도박 사이트에서 사용되는 키워드를 이용하여 도박 사이트를 분류하는 실험을 진행하였는데, 도박 사이트에서 흔히 사용되는 ‘토토’, ‘배팅’과 같은 단일 키워드만으로 도박과 정상 사이트를 분류 할 경우 60%의 정확도로 많은 수의 사이트가 오분류되는 결과를 확인할 수 있었고, 오분류를 해결하고자 (‘배팅’, ‘토토’) 또는 (‘배팅’, ‘토토’, ‘충전’)과 같이 키워드 조합을 통한 룰을 고도화하여 정확도 문제를 해결할 수 있었습니다.
키워드 조합을 활용할 경우 약 96.1% 분류 정확도의 높은 성능을 확보할 수 있었습니다. 하지만 키워드 조합 룰을 만드는 과정에서 큰 문제가 발생하였는데, 이는 도박 사이트에서 사용되는 키워드는 무수히 많기 때문에 이를 활용한 키워드 조합 룰을 만들 경우엔 조합 개수가 기하급수적으로 늘어나며, 또한, 생성된 조합을 검증하기에는 많은 시간과 노력이 필요하다는 단점을 가지고 있습니다. 예를 들어 두 개의 키워드 조합 룰을 만든다고 할 때, 키워드 개수 n에 따른 수식은 n * (n – 1 ) / 2과 같이 구성됩니다.
이러한 문제를 해결하기 위해 다음 섹션과 같이 머신러닝 기법을 활용하면 개별 조건을 만들거나 검증하기 위한 소요를 줄일 수 있습니다.
머신러닝을 활용한 자동화 분류
머신러닝은 주어진 데이터를 스스로 학습하여 패턴을 분석한 뒤 자동으로 개선하는 알고리즘 기술로, 도박 사이트를 분류하기 위해서 도박 사이트에서 사용되는 키워드 데이터를 학습하여 패턴을 찾고 정상 혹은 도박 사이트인지 분류합니다.
이를 위해 진행한 머신러닝 학습 순서에는 크게 1) 데이터 수집 및 전처리 2) 주어진 작업에 적합한 알고리즘 설계로 구성되어 있습니다. 이후 각 Step별로 머신러닝을 어떻게 학습시켰는지 설명드리겠습니다.
Step 1. 데이터 수집 및 전처리
머신러닝 알고리즘이 어떤 데이터를 학습하는지에 따라 분류 결과는 상이해질 수 있기 때문에 학습 데이터를 위한 데이터 수집과 전처리는 매우 중요한 과정입니다. 도박 사이트를 정확하게 분류하기 위해서 사이트에서 사용하는 키워드가 일반적이지 않기 때문에 이를 이용하여 학습 데이터를 구축한다면 패턴이나 룰을 찾아내기에 용이할 것 입니다.
웹사이트를 자세히 살펴보면 HTML 소스에 삽입된 텍스트 이외에도 이미지를 비롯한 다양한 소스에서 키워드를 나타내고 있습니다. 하지만 일반적인 소스코드를 비롯하여 도박 사이트 분류에 불필요한 키워드를 많이 포함하고 있어, 이에 대한 적절한 데이터 수집 과정이 필요합니다. 아래의 순서는 저희가 수행한 도박 사이트 내 키워드 수집 순서를 나타내고 있습니다.
- HTML 내 텍스트 수집: HTML Tag 내 텍스트 추출
- HTML 일부 속성 수집: HTML Tag 시작점과 끝나는 점 사이의 키워드 추출
- 이미지 키워드 추출: 이미지 내에 포함된 키워드 추출
- gif 이미지 파일 키워드 추출: 여러 개의 프레임으로 구성된 gif파일은 프레임 단위로 끊어 이미지를 저장한 뒤, 키워드 추출
- 텍스트 통합: 이미지와 HTML 에서 각각 추출한 키워드를 단일 문서로 통합
데이터 수집이 완료 되었다면 이제 전처리 과정이 필요합니다. 전처리란 머신러닝을 학습하기 전 해당 알고리즘에 적합한 데이터로 만들기 위해 데이터를 축소시키거나 변환하는 작업으로, 이를 통해 머신러닝 성능 및 학습 속도를 향상할 수 있습니다. 웹사이트의 수집 과정에서 선행적으로 전처리를 하였음에도 불구하고, 수집된 키워드에 불필요한 소스코드와 무의미한 키워드, 명사 이외의 형태소를 포함하고 있기 때문에 이에 대한 제거 작업이 필요합니다. 또한 중복된 키워드를 통합함으로써 키워드의 사용 유무만 표현하여 데이터를 축소시킬 수 있습니다. [표 1]은 저희가 수행한 키워드 분류 및 삭제에 대한 전처리 작업의 일부분을 나타내고 있습니다.
| 처리 전 | 처리 후 | |
|---|---|---|
| HTML 키워드 분류 | <a href=”/”>먹튀사이트</a> | 먹튀사이트 |
| HTML 일부 속성 분류 | <meta content=”안전놀이터”/> | 안전놀이터 |
| 키워드가 아닌 데이터 삭제 | *, 😀, ☏, ❤, 2012, | * 삭제 처리 |
| 중복되는 키워드 삭제 | 토토, 토토, 충전, 토토, 환불 | 토토, 충전, 환불 |
| 형태소 분석 후 명사 추출 | 충전을, 무료로, 오늘은 | 충전, 무료, 오늘 |
마지막으로 머신러닝 학습 데이터 크기가 들쑥날쑥하면 데이터를 잘못 해석할 수 있기 때문에, 이러한 데이터를 균일하게 만드는 정규화 과정을 거치는 과정으로 키워드 존재 유무를 0과 1로 변환합니다. 이러한 과정을 통해 [표 2]와 같이 최종 데이터 전처리가 완료된 데이터셋을 확인 할 수 있습니다.
| 토토 | 배팅 | 바카라 | 가입 | 이벤트 | 나로호 | 자율 주행 | Label | |
| A 사이트 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 도박 |
| B 사이트 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 정상 |
| C 사이트 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 도박 |
| D 사이트 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 도박 |
| E 사이트 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 정상 |
- (‘토토’, ‘배팅’, ‘바카라’): 도박과 관련된 키워드로 도박 사이트에서 다수 발견될 수 있으며, 일부 도박 관련 뉴스나 블로그에서 등장할 가능성이 있음
- (‘가입’, ‘이벤트’): 사이트 내 회원 유치를 하기 위해 도박 및 정상 사이트에서 흔히 사용될 수 있으며, 중립적인 키워드를 의미함
- (‘나로호’, ‘자율주행’): ‘네이버’와 같은 다양한 주제가 사용되는 대형 포털 사이트 키워드로, 도박과 연관성이 전혀 없어 도박 사이트에서 등장할 확률이 매우 낮음
Step 2. 머신러닝 알고리즘 설계
앞선 과정을 통해 머신러닝 학습에 필요한 데이터가 준비되었다면, 가장 핵심 영역인 머신러닝 알고리즘 설계가 남아있습니다. 앞에서 진행한 연구 내용에서 생성된 키워드의 존재 유무를 활용한 키워드 조합은 예/아니오 형태의 결정트리 형태로 변환할 수 있습니다. [그림 1]은 도박 사이트를 분류하는 키워드 조합을 토대로 만들어진 결정트리 예시입니다. 만약 머신러닝이 스스로 학습하여 결정트리를 자동으로 생성할 수 있다면 키워드 조합을 만들고 검증하기 위한 소요를 줄일 수 있어 보다 빠르고 정확하게 웹사이트를 분류할 수 있습니다.
따라서 저희는 결정트리 기반의 XGBoost[2] 알고리즘을 사용하여 데이터를 학습할 수 있도록 알고리즘을 설계하였습니다. XGBoost는 결정트리 기반 분류 모델의 대표적인 알고리즘으로 데이터에 있는 분류 규칙을 통해 지정된 결과 값을 분류하는 방법으로 마치 스무고개를 하는 것처럼 예/아니오를 반복하며 학습하여 여러 개의 결정트리를 조합하는 알고리즘 입니다. 웹사이트를 분류하기 위해서는 결정트리 이외에도 확률 기반의 분류, 선형 기반 분류나 인공지능에서 많이 활용되는 딥러닝 등 다양한 분류 모델 알고리즘을 적용할 수 있는데, 각 분류 특성에 맞게 적합한 분류 모델 알고리즘을 선택하여 활용하면 되겠습니다.
XGBoost을 활용하여 도박 사이트 분류를 실험한 결과, 앞선 키워드 조합의 룰 기반 분류는 약 96.1% 정확도를 보였는데, 이와 대비하여 최대 98.4%로 정확도가 향상된 결과를 얻을 수 있었습니다. 또한, 일일이 키워드 조합 룰을 만들고 검증할 필요없이 머신러닝이 키워드 데이터를 스스로 학습하여 정상 혹은 도박 사이트인지 정확히 분류할 수 있도록 개선되었습니다.
그렇다면 과연 머신러닝이 만들어낸 결과를 신뢰할 수 있을까요? 또한 어떤 키워드를 활용하여 패턴이나 룰을 찾았는지, 어떤 키워드가 웹사이트를 분류하는데 중요한 속성으로 활용되었는지 확인할 수는 없을까 하는 의문점이 생기게 됩니다. 그리고 차후에 웹사이트가 탈바꿈하게 되어 완전히 새로운 키워드들이 다수 등장하게 된다면, 이를 제대로 도박 사이트로 분류할 수 있을까하는 우려가 생길 수 있습니다. 이러한 의문과 우려를 해결할 수 있는 방안이 있을까요?
키워드 기여도 분석을 통한 머신러닝 신뢰 및 활용 방안
결정트리 기반의 XGBoost는 데이터의 분류 규칙을 나타내는 정성적 평가 방법으로, 이를 수치화할 수 있는 정량적 평가 방법이 제안된다면 머신러닝 결과를 더욱 신뢰할 수 있을 것입니다. 관련 기술로 SHAP[3]는 설명가능한 인공지능(eXplainable AI)의 한 분야로, 머신러닝의 분류 결과에 대하여 어떠한 특징 값이 중요한지 수치화 할 수 있는 기술입니다.
[그림 2]는 SHAP를 이용하여 머신러닝이 웹사이트를 도박 사이트로 분류할 때 키워드의 기여도를 수치적으로 계산화하여 순서화한 그래프입니다. 이때 기여도가 높을수록 ‘도박’의 결과 값에 중요한 키워드로 의미하며, 향후 도박 사이트를 효과적으로 탐지하는데 중요한 역할을 하는 키워드입니다. 여러 개의 키워드 중 기여도가 가장 높은 ‘검증’과 ‘먹튀’는 흔히 도박 사이트에서 사람들로 하여금 신뢰감을 주고자 많이 사용되는 키워드이며, ‘토토’는 실제 도박 사이트에서 다수 확인할 수 있는 게임 용어입니다.
이러한 기여도는 시간의 흐름에 따라 키워드 트렌드 분석에도 활용할 수 있습니다. 예를 들어 ‘도박’과 같은 키워드는 시간이 변화하여도 지속적으로 사용될 수 있지만, ‘갑분싸’, ‘코로나’와 같은 유행어나 신조어는 어느 순간 사용이 줄어들거나 혹은 새로 등장할 수 있습니다.
[그림 3] 은 실제 도박 사이트에서 사용되는 키워드가 변화된 내용을 나타내는 그림입니다. 과거에는 은행 계좌의 거래방식을 사용하였지만, 최근 가상 계좌나 코인 계좌로 거래방식이 변경된 것을 확인할 수 있습니다. [그림 4]는 장기간 수집된 도박 사이트의 키워드 트렌드 변화를 나타내는 기여도 그래프이며, 앞선 [그림 3]에서 보이는 것처럼 거래 방식의 변화에 따른 키워드의 등장에 따라 도박 사이트를 분류하는데 영향을 미치는 기여도가 상승한 것을 확인할 수 있습니다.
| 22년 03월 | 22년 05월 |
- 토토: 키워드 기여도 유지, 향후 미래에 재 사용될 가능성이 높음
- 갑분싸: 키워드 기여도 삭제, 향후 미래에 재 등장 가능성이 극히 낮음
- 은행 계좌: 키워드 기여도 순위 하락, 향후 미래에 재 사용될 가능성이 낮음
- 가상 계좌: 키워드 기여도 순위 증가, 향후 미래에 재 사용될 가능성이 높음
- 코인 계좌: 키워드 기여도 신규 생성, 새로운 키워드로 향후 미래에 주목해 볼 키워드
결론
지금까지 머신러닝을 활용하여 도박 사이트 내에 있는 ‘키워드’라는 중요 특징점을 토대로 효과적으로 탐색하고 분류할 수 있는 방법에 대해서 이야기하였습니다. 단순히 키워드의 존재 유무만으로 도박 사이트를 판단할 수는 없기 때문에 키워드 조합이라는 룰을 만들었고, 머신러닝을 학습시켜 도박 사이트를 판단하는 결정트리를 토대로 높은 정확도의 분류 모델을 생성하였습니다. 마지막으로 도박 사이트의 분류 성능을 향상시키고 키워드 트렌드의 흐름을 파악할 수 있는 XAI 기술의 활용법에 대해 간단히 살펴 보았습니다. 다음 포스팅에서는 계속 변화하고 탈바꿈하는 도박 사이트에 대해 대비하고자 AI/XAI 기술을 활용하여 새로이 추가된 키워드 트렌드를 반영할 수 있는 ‘자가학습’에 대한 방법과 효과적이고 효율적인 추적 및 탐지 기술에 대하여 살펴보고자 합니다.
[1] 이경석, 외 2, “키워드 조합 기반 불법 도박 사이트 분류 기법), 한국정보과학회 학술발표 논문집 Vol.2021 No.6
[2] https://en.wikipedia.org/wiki/XGBoost
[3] Scott M. Lundberg, Su-In Lee, “A Unified Approach to Interpreting Model Predictions.” NIPS 2017: 4764-4774
임규민 연구원은 정보보호학부를 졸업하고, 한양대학교 정보보안학과 석사과정을 졸업했다. 현재 카이스트 사이버보안연구센터 AI보안 팀원으로 XAI를 활용한 인공지능의 보안 연구를 진행하고 있다.