---
# System prepended metadata

title: Semi-Supervised Learning combining Graph-based with Feature-based for SPIT

---

![downloads](https://img.shields.io/github/downloads/atom/atom/total.svg)
![build](https://img.shields.io/appveyor/ci/:user/:repo.svg)
![chat](https://img.shields.io/discord/:serverId.svg)


Semi-Supervised Learning combining Graph-based with Feature-based for SPIT
===
## Table of Contents
[TOC]


## ABSTRACT
Spam over Internet Telephony (SPIT) ngày càng trở nên nghiêm trọng và đã thu hút sự chú ý đáng kể từ các nhà cung cấp viễn thông do tác hại rất lớn của nó đối với tài chính và sự trải nghiệm của người dùng. Các hệ thống chống Spam hiện tại phải đối mặt với hai thách thức lớn: khả năng mở rộng dữ liệu và hành vi cheating. Trong bài báo này, chúng tôi trình bày các giải pháp kỹ thuật để cố gắng giải quyết thách thức này. Chúng tôi đề xuất một phương pháp dựa trên đồ thị, sử dụng kiến trúc GNN phức tạp hơn phù hợp với loại dữ liệu SĐT Spam, cho kết quả tốt hơn so với GCN. Sau đó, chúng tôi đề xuất một thuật toán semi supervised learning kết hợp cotrain và active learning để cải thiện hiệu suất phân loại cho grapbased. Triển khai trên tập dữ liệu được thu thập từ một ứng dụng chặn cuộc gọi spam có tên là Icaller. Kết quả của việc triển khai thể hiện tính hiệu quả của phương pháp được đề xuất.


## INTRODUCTION

Những năm gần đây, nỗ lực trong việc cố gắng phát hiện SĐT Spam đã được nhiều nghiên cứu lớn, các nghiên cứu chủ yếu dựa trên các thuật toán machine learning trên dữ liệu lịch sử cuộc gọi mà chúng tôi gội là phương pháp feature based, một số công trình có thể kể đến như [1], [2] sử dụng thuật toán SVM, semi-supervised clustering. [1], [2], [3], [4],[5] các ngiên cứu này chỉ ra rằng một số tính năng nổi bật phân biệt SĐT Spam và Notspam bao gồm: tỷ lệ cuộc gọi đã trả lời ,tỷ lệ cuộc gọi không thành công ; số lần thực hiện cuộc gọi, thời lượng cuộc gọi .

Hầu hết các phương pháp phát hiện spam đều tập trung vào việc trích xuất các tính năng từ lịch sử cuộc gọi. Các phương pháp này bỏ qua mối quan hệ giữa người gọi và người nhận. Tuy nhiên dựa trên quan sát của chúng tôi, các mối quan hệ cũng đóng một vai trò quan trọng trong việc phát hiện spam. Xuất phát từ quan sát đó, phương pháp phát hiện spam dựa trên đồ thị được quan tâm những năm gần đây.


Một trong những tiến bộ nổi bật trong phương pháp dựa trên đồ thị có thể kể đến đó là GCN - một phương pháp mà các tính năng của các nút được tổng hợp từ các nút lân cận bằng toán tử "graph convolution" [6]. William và cộng sự đề xuất GraphSAGE [7], một phương pháp tận dụng kỹ thuật lấy mẫu nút và tổng hợp tính năng để embedding node hiệu quả hơn. [9] trình bày một phương pháp chống thư rác dựa trên mạng GCN, được gọi là GCN-based Anti-Spam method (GAS).

Trong công trình của chúng tôi, chúng tôi đề xuất một kiến trúc GNN phức tạp hơn, gọi là Ultra Instinct GNN.
 

Bên cạnh đó, sự mở rộng dữ liệu luôn là một vấn đề lớn đối với bài toán SPIT, một số thuật toán học bán giám sát sử dụng cả dữ liệu được gắn nhãn và không được gắn nhãn để làm giàu dữ liệu huấn luyện, nhiều thuật toán học tập bán giám sát đã được để xuất có thể sử dụng dữ liệu không gắn nhãn, hai trong số những ý tưởng này là Cotraining và Active learning. 

– Cotrain là một phương pháp được Blum và Mitchell đề xuất vào năm 1998, ý tưởng cơ bản của Cotrain là sử dụng nhiều chế độ xem (multi-view) với dữ liệu đã gán nhãn để đào tạo ra các bộ phân loại. Việc triển khai thuật toán Cotrain ban đầu được thực hiện đối với vấn đề phân loại trang web, họ đã sử dụng hai bộ tính năng khác nhau làm hai bộ phân loại cho mỗi trang web và các dự đoán của một trong hai bộ phân lọai trên các cá thể không được gắn nhãn được sử dụng để tăng cường tập huấn luyện cho nhau. Hai bộ tính năng này phải thỏa mãn:

    ∗ Mỗi bộ tính năng phải đủ mạnh để đào tạo một mô hình 

    ∗ Mỗi tập dữ liệu phải độc lập với tập dữ liệu khác

-Active learning:  là một thuật toán học máy bán giám sát tương tác với truy vấn của người dùng (hoặc một số nguồn khác) để gán nhãn các điểm dữ liệu mới với kết quả đầu ra mong muốn. Thách thức chính của Active learning chính là tìm ra truy vấn tối ưu để đạt được sự cải thiện mô hình tốt nhất. Thách thức chính của Active Learning là tìm ra truy vấn tối ưu. Truy vấn tối ưu là quá trình tìm kiếm một cá thể mà việc có nhãn của nó sẽ làm giảm nhiều nhất Lỗi tổng quát hóa. Nói cách khác, chúng tôi cố gắng tìm các trường hợp thông tin nhất để truy vấn nhằm đạt được nhiều cải tiến nhất trong mô hình của chúng tôi với số lượng truy vấn ít nhất. Cải tiến này có thể là giảm thiểu lỗi chung, tối đa hóa điểm F chung hoặc bất kỳ chỉ số chất lượng nào khác của mô hình quan trọng đối với chúng tôi.

Tuy nhiên, đối với Cotrain, trên thực tế việc lấy dữ liệu để thỏa mãn 2 điều kiện khá khó khăn, còn đối với Active learning, việc lấy nhãn từ một nhà tiên tri rất tốn kém (mất nhiều thời gian, hoặc bị hạn chế quyền truy cập,...). Để giải quyết vấn đề này, Zhang và cộng sự đã đề xuất một thuật toán mới được gọi là SSCLA [11], họ kết hợp song song cotrain và active learning và tách 1 chế độ xem thành 2 chế độ xem để cải thiện cả hai cùng nhau. 

Điểm khác biệt ở công trình của chúng tôi chính là sử dụng 2 view khác nhau phù hợp với 2 bộ phân lớp với phương pháp khác nhau: feature based và graph based

 Trong bài báo này, một kiến trúc GNN phù hợp cho dữ liệu bài toán phân loại spam, đồng thời kết hợp một số phương pháp học bán giám sát để cải thiện mô hình GNN, những đóng góp quan trọng của chúng tôi trong bài báo này được liệt kê như sau:
- Chúng tôi triển khai phương pháp dựa trên đồ thị sử dụng GNN. Đặc biệt chúng tôi đề xuất một kiến trúc Ultra Instinct GNN cho kết quả rất tốt so với một số kiến trúc GNN khác đối với dữ liệu đặc trưng của bài toán phân loại sđt spam.
- Chúng tôi cung cấp cái nhìn sâu sắc hơn về phương pháp kết hợp graph based và feature based sử dụng cotrain và active learning với một số sửa đổi và cung cấp bằng chứng về tính hiệu quả đối với nghiên cứu / phương pháp luận của chúng tôi.
## OVERVIEW
### Icaller:  Icaller app overview.

Icaller là ứng dụng chặn cuộc gọi Spam được phát triển bởi Grooo International Jsc. Cuộc gọi spam được chia thành các loại bao gồm cuộc gọi lừa đảo, cho vay nợ, quảng cáo, bất động sản và các hoạt động kích động khác. Cách thức hoạt động cơ bản của ứng dụng là dựa trên các báo cáo trực tiếp từ người dùng trên khắp thế giới. Cụ thể hơn, giả sử người dùng A vừa nhận được cuộc gọi làm phiền từ người dùng B, người đã quảng cáo quyền lợi bảo hiểm của họ. Sau cuộc gọi đó, A cho rằng B là người gửi thư rác, sau đó A đánh dấu số điện thoại của B là người gửi thư rác quảng cáo trong giao diện người dùng ứng dụng một cách dễ dàng. Kể từ đó, bất cứ khi nào B bắt đầu cuộc gọi tới A, ứng dụng sẽ đẩy một cảnh báo về danh tính của B trên điện thoại của A và hỏi liệu A có muốn trả lời cuộc gọi đó hay không.

Để loại bỏ tất cả các hạn chế, chúng tôi có một ý định là áp dụng các thuật toán học máy trong hệ thống để kiểm tra tự động. Hơn nữa, phương pháp luận của chúng tôi có khả năng tăng độ chính xác trong phân loại vì trên thực tế, rất có thể người dùng đánh dấu nhầm người gọi là người gửi thư rác. Chúng tôi cũng nhấn mạnh việc làm rõ danh tính của người dùng sẽ giúp những người nhận cuộc gọi quyết định có trả lời cuộc gọi hay không. Hơn nữa, iCaller không có quyền truy cập vào cơ sở hạ tầng viễn thông của các nhà cung cấp dịch vụ viễn thông, điều này khiến các phương pháp SPIT trước đây trở nên bất lực trong việc sử dụng thực tế. Tuy nhiên, chúng tôi có một giải pháp sử dụng máy chủ để thu thập chéo các số điện thoại trong mạng, giúp chúng tôi thu thập và lưu trữ dữ liệu cần thiết để thực hiện các phương pháp mà chúng tôi sẽ đề xuất trong bài báo này.

Như chúng tôi đã đề cập ở trên, iCaller cho phép người dùng đánh dấu nhãn cho một số điện thoại dựa trên 6 loại người gửi spam được báo cáo là report \ _advertising, report \ _loan, report \ _debt, report \ _cheat, report \ _real \ _estate, report \ _other và trong trường hợp xác nhận người dùng hợp pháp, báo cáo \ _not \ _spam được đưa vào sử dụng (xem hình 2). Hãy để chúng tôi tiết lộ mô tả của tập dữ liệu được trích xuất từ ​​cơ sở dữ liệu của iCaller. Đối với mỗi cuộc gọi liên quan đến từng bản ghi, chúng tôi thu thập dữ liệu về cuộc gọi đó, loại người dùng là thành viên, người gửi spam hoặc không được gắn nhãn. iCaller không có quyền truy cập vào cơ sở hạ tầng viễn thông của các nhà cung cấp viễn thông, điều này làm cho các phương pháp SPIT trước đây trở nên bất lực trong sử dụng thực tế. Tuy nhiên, chúng tôi có một giải pháp sử dụng máy chủ để thu thập chéo các số điện thoại trong mạng, giúp chúng tôi thu thập và lưu trữ dữ liệu cần thiết để thực hiện các phương pháp mà chúng tôi sẽ đề xuất trong bài báo này. Nhớ lại rằng A gọi B. Thông tin như vậy có thể được giải thích như trong bảng I.


### Malicious calls in VietNam: Data log description, distinguishing features between spam and notspam

Trong bài báo này, kết hợp với các tiêu chí đã được các nhà nghiên cứu cũ sử dụng, chúng tôi phát triển một bộ tiêu chí được chứng minh là hữu ích sau khi xem xét công tâm. Ở đây, chúng tôi sẽ hiển thị các biểu đồ để cung cấp thêm kiến ​​thức về các tính năng đã chọn của chúng tôi.

Hình ~ \ ref {fig2} và Hình ~ \ ref {fig3} trình bày số lượng cuộc gọi do người gửi spam thực hiện trong giờ làm việc cao hơn so với cuộc gọi của các thành viên. Các số điện thoại spam có số lượng cuộc gọi giảm dần vào các ngày cuối tuần (thứ bảy, chủ nhật), không giống như các số bình thường. Điều này có ý nghĩa vì hầu hết những người gửi thư rác đều làm việc cho các tổ chức, hầu hết trong số họ có lịch trình làm việc bắt đầu từ khoảng 7 giờ sáng đến 5 giờ chiều.

Chúng tôi thực sự tin rằng các số được lưu trữ trong danh bạ của thành viên có thể có mối quan hệ với thành viên và do đó không có khả năng là người gửi thư rác, vì vậy chúng tôi xem xét bằng cách gán biến nhị phân [0,1], trong đó 0 có nghĩa là số này không có trong danh bạ của thành viên, 1 ngược lại. Tuy nhiên, chúng tôi nhận thấy rằng một số số SPIT đã tồn tại trong danh bạ của thành viên, chúng tôi phỏng đoán rằng có trường hợp thành viên đã thực hiện hành động thêm liên hệ đó để ghi nhớ những người gửi thư rác hoặc đó là mối quan hệ giữa người bán - người mua. Để làm cho việc quan sát có ý nghĩa hơn, chúng tôi đã tính trung bình tổng số cuộc gọi. Chúng tôi cũng quan sát thấy rằng tỷ lệ số điện thoại tồn tại trong danh bạ của các thành viên hợp pháp cao hơn rõ rệt so với số điện thoại của những người gửi thư rác (xem Hình ~ \ ref {fig4}), đây là một tiêu chí tốt trong mô hình phân loại.


## METHOD
### Features
Trong phần này, chúng tôi cung cấp mô tả chi tiết về thuật toán của chúng tôi như hình 1.
![](https://i.imgur.com/7Q5iDuQ.png)

Thuật toán của chúng tôi là một sự thay đổi từ SSLCA, sự khác biệt chính đó là chúng tôi không sử dụng kiến trúc song song giữa cotrain và active learning, thay vào đó là sự tiếp nối cotrain và active learning, ngoài ra thay vì chia 1 tập dữ liệu thành 2 view nhỏ, chúng tôi kết hợp 2 loại dữ liệu khác nhau cho 2 phương pháp khác nhau: feature based và graph based.

Thuật toán của chúng tôi được chia thành 3 bước chính như sau:
1. Đào tạo 2 bộ phân loại trên 2 view sử dụng 2 phương pháp: feature based và graphbased, Do đó, sẽ thu được hai tập dữ liệu có nhãn $ L_1 $ và $ L_2 $ và dữ liệu chưa gắn nhãn $ U_1 $ và $ U_2 $, đó là $ || U || >> || L || $ ($ || U || $ và $ || L || $ là số cá thể trong tập hợp không được gắn nhãn và
tập hợp có nhãn).
2. Triển khai hai bộ phân loại ở bước trước cho 2 view không được gắn nhãn và thu được xác suất của mỗi cá thể thuộc một trong các lớp P(C_i|U_j). C_i là class i, U_j là unlabeled instance thứ j
3. Sử dụng các xác suất đã tính ở bước trước để tìm ra các cá thể không chắc chắn nhất và gửi nó đến oracle để gán nhãn cho nó,sau đó các cá thể được gán nhãn thêm vào tập dữ liệu đã được gán nhãn. Quá trình được lặp lại
### Feature based
Đối với feature based, chúng tôi sử dụng thuật toán Xgboost [12] làm bộ phân loại cơ sở, XGBoost là một triển khai của cây quyết định tăng cường gradient được thiết kế để cải thiện tốc độ và hiệu suất, đây là một thuật toán nổi tiếng đã đạt nhiều giải thưởng ở các cuộc thi ứng dụng của Machine learning và Kaggle cho dữ liệu có cấu trúc hoặc bảng.  
### Ultra Instinct GNNs
Đối với graph based, dữ liệu đầu vào của GNN yêu cầu một ma trận kề thể hiện mối quan hệ giữa các node, đối với SPIT chính là người gọi và người nhận, định nghĩa như sau:
* G là đồ thị
* V là tập hợp các node của đồ thị
* E là tập hợp các cạnh kết nối của đồ thị

...

### Co2AL
Thuật toán Cotrain yêu cầu hai bộ dữ liệu độc lập, Zhang và cộng sự đã cố gắng phân vùng dữ liệu thành 2 tập hợp khác nhau và giả định rằng chúng độc lập. Đối với dữ liệu của chúng tôi, như đã trình bày ở trên, chúng tôi sử dụng 2 bộ dữ liệu khác nhau. Sử dụng 2 bộ phân lớp đã đề cập ở trên cho 2 bộ dữ liệu không được gán nhãn, chúng tôi thu được độ tin cậy và mức độ chắc chắn của mỗi dự đoán.
Active learning truy vấn những cá thể được dự đoán không chắc chắn, những cá thể này chứa nhiều thông tin ảnh hưởng đến perfomance của mô hình.
. Đối với bài toán phân lớp nhị phân, phương pháp truy vấn phổ biến nhất là chọn những cá thể có độ chắc chắn thấp, là những cá thể mà xác suất của chúng gần 0.5. Ngoài ra chúng tôi kết hợp thêm một phương pháp truy vấn sử dụng entropy. 
Entropy có thể được coi là thước đo của sự rối loạn hoặc tạp chất trong hệ thống. Trong học máy, nó được sử dụng rộng rãi như một thước đo độ không đảm bảo của một mô hình. Giá trị entropy cao hơn chỉ ra rằng mô hình không chắc chắn cao về thành viên lớp. Phương trình tìm entropy được biểu diễn như sau:
![](https://i.imgur.com/BmBJZVd.png)

Các cá thể sau khi được truy vấn sẽ được gửi đến oracle để gán nhãn, nhãn mới được thêm vào tập dữ liệu có nhãn. Quy trình đào tạo được lặp đi lặp lại theo lô, lô đầu tiên là tập dữ liệu được gắn nhãn và các lô tiếp theo là các phiên bản được chọn từ tập dữ liệu không được gắn nhãn bằng thuật toán active learning. Thuật toán Co2Al bao gồm bốn bước, quy trình này diễn ra tự động được biểu diễn ở hình 3:



## EXPERIMENTS AND DISCUSSION
Các thử nghiệm được thực hiện trên 2 bộ dữ liệu được chúng tôi thu thập từ ứng dụng Icaller. Ứng dụng này cho phép người dùng báo cáo trực tiếp các SĐT là spam hay không spam. Kể từ đó chúng tôi được phép sử dụng dữ liệu được gán nhãn bởi người dùng để đào tạo bộ phân lớp. Để phân lớp, chúng tôi sử dụng bộ tính năng đã được chỉ ra ở các nghiên cứu [1], [2], [3], [4],[5]. Ngoài ra, dựa theo quan sát và chứng minh ở phần II, chúng tôi đề xuất thêm một số tính năng giúp cải thiện bộ phân loại gồm: 
* Frequency call: số lượng cuộc gọi được thực hiện từ điện thoại cho thuê trong một khoảng thời gian. Ví dụ: tối thiểu 200 cuộc gọi đi mỗi ngày từ 8 giờ sáng đến 6 giờ chiều.
* The rate of calls which have short duration: Ví dụ: hơn 80% cuộc gọi có thời lượng dưới 25 giây
* The rate of calls with have in contact with members: Là tỷ lệ cuộc gọi có trong danh bạ của members.

Hai loại dữ liệu gồm:
1. Dữ liệu lịch sử cuộc gọi của 5000 SĐT Spam và 5000 SĐT NotSpam với 11 feature được trình bày ở trên
2. Đối với graph based, đầu vào gồm một tập node chính là tập dữ liệu lịch sử cuộc gọi như feature based, ngoài ra một tập cạnh gồm đặc điểm của mối quan hệ giữa người gọi và người nhận
### Ultra Instinct GNNs algorithm results.

### Cotrain2Activelearning algorithm results.
Hiệu suất thuật toán của chúng tôi được so sánh với thuật toán Active Learning, SSLCA, tuy nhiên đối với chiến lược truy vấn, chúng tôi sử dụng 2 kỹ thuật thuật truy vấn như đã trình bày ở phần method.

![](https://i.imgur.com/56F2jYd.png)
Kết quả cho thấy SSLCA có xu hướng làm giảm chất lượng mô hình sau một vài vòng lặp, điều này chủ yếu là do bước Cotrain của thuật toán này. Kết quả tốt nhất nhận được từ thuật toán của chúng tôi. Như vậy, thuật toán của chúng tôi làm cải thiện chất lượng mô hình graph based so với Active learning và SSLCA 

## SYSTEM IMPLEMENTATION AND DEPLOYMENT
Trong phần này, chúng tôi trình bày trình tự phát hiện số điện thoại spam gồm 6 bước (xem Hình fig7) như sau:

![](https://i.imgur.com/TwOHseI.png)


     \ item Nhận thông tin báo cáo vào cuối ngày
     \ item hệ thống lấy dữ liệu lịch sử của từng số điện thoại
     \ item Yêu cầu phân loại số điện thoại: Spam / NotSpam / Unknow
     \ item Hiển thị kết quả của dịch vụ AI cho 70 \% thành viên:
    
     Thành viên VIP và thành viên mới luôn nhận được kết quả.

     Thành viên còn lại được xếp ngẫu nhiên theo chu kỳ.
     \ item Mỗi khi có một báo cáo mới, hãy lưu vào PhoneReport.
     \ item Tìm kiếm tại Phone AI Dự đoán để lấy dữ liệu đánh giá và đào tạo lại mô hình.

Để đánh giá kết quả của mô hình khi triển khai lên hệ thống, chúng tôi tạo ra một bộ điều kiện để đánh giá mô hình, bao gồm:

     \ item Các kết quả dự đoán tương tự như báo cáo gần đây nhất.
     \ item Dự đoán sai với báo cáo gần đây nhất (báo cáo gốc và báo cáo sau giống nhau + 2 người khác nhau)
     \ item Dự đoán sai với các báo cáo tiếp theo (hơn 1 dự đoán được báo cáo sau khi được AI dự đoán)



Đào tạo lại:

Đào tạo lại sử dụng dữ liệu của các con số được sử dụng để đánh giá ở bước trước

Số điện thoại được sử dụng để đào tạo lại sẽ bị xóa khỏi bảng Dự đoán AI của điện thoại


## CONCLUSION
Việc sử dụng graph based, đặc biệt với thuật toán graph mà chúng tôi đề xuất đã tận dụng mối quan hệ giữa người nhận và người gọi, điều mà hầu hết các phương pháp phát hiện spam trước đây đã không đề cập đến. ICaller không có quyền truy cập vào cơ sở hạ tầng viễn thông của các nhà cung cấp viễn thông, điều này làm cho việc thu thập dữ liệu đồ thị bị thiếu hụt các mối quan hệ cuộc gọi giữa những phone number không phải là member, dẫn đến đồ thị quá thưa khiến chất lượng phân loại không tốt hơn feature based. Tuy nhiên kết quả cho thấy việc tiếp cận bằng graph based rất triển vọng cần nỗ lực nghiên cứu và thảo luận thêm. Bên cạnh đó, trong bài báo này chúng tôi trình bày một thuật toán semi supervised learning để khai thác dữ liệu không gán nhãn, giải quyết thách thức về khả năng mở rộng dữ liệu. Kết quả thí nghiệm chứng minh rằng thuật toán của chúng tôi có khả năng cải thiện chất lượng mô hình graph và cho kết quả tốt hơn so với Active learning và SSLCA. 
## REFERENCES
[1] M. Nassar, O. Dabbebi, R. Badonnel, and O. Festor, “Risk management
in voip infrastructures using support vector machines,” 11 2010, pp. 48
– 55.
[2] Y.-S. Wu, S. Bagchi, N. Singh, and R. Wita, “Spam detection in voiceover-ip calls through semi-supervised clustering,” 06 2009, pp. 307–316.
[3] T. Kusumoto, E. Chen, and M. Itoh, “Using call patterns to detect
unwanted communication callers,” 07 2009, pp. 64–70.
[4] R. J. Ben Chikha, T. Abbes, and A. Bouhoula, “A spit detection
algorithm based on user’s call behavior,” in 2013 21st International
Conference on Software, Telecommunications and Computer Networks - (SoftCOM 2013), 2013, pp. 1–5.
[5] R. jabeur ben chikha, T. Abbes, W. Chikha, and A. Bouhoula, “Behaviorbased approach to detect spam over ip telephony attacks,” International
Journal of Information Security, vol. 15, 03 2015.
[6] Thomas N Kipf and Max Welling. 2017. Semi-supervised classification with graph
convolutional networks. In 5th International Conference on Learning Representations, ICLR
[7] Will Hamilton, Zhitao Ying, and Jure Leskovec. 2017. Inductive representation
learning on large graphs. In Advances in Neural Information Processing Systems,
NIPS. 1024–1034
[8] Petar Veličković, Guillem Cucurull, Arantxa Casanova, Adriana Romero, Pietro
Liò, and Yoshua Bengio. 2018. Graph Attention Networks. International Conference on Learning Representations, ICLR (2018)
[9] @article{Li2019SpamRD,
  title={Spam Review Detection with Graph Convolutional Networks},
  author={Ao Li and Zhou Qin and Runshi Liu and Yiqun Yang and Dong Li},
  journal={Proceedings of the 28th ACM International Conference on Information and Knowledge Management},
  year={2019}
}
[10] Blum, A., & Mitchell, T. (1998). Combining labeled and unlabeled data with cotraining [C]. In Proceeding of the 11th annual conference on computational
learning theory (pp. 92–100).
[11] Y. Zhang, J. Wen, X. Wang, and Z. Jiang, “Semi-supervised learning
combining co-training with active learning,” Expert Systems with Applications, vol. 41, no. 5, pp. 2372–2378, 2014.
[12] @article{Chen2016XGBoostAS,
  title={XGBoost: A Scalable Tree Boosting System},
  author={Tianqi Chen and Carlos Guestrin},
  journal={Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining},
  year={2016}
}