Ứng dụng thuật toán phân loại Random Forest trong hỗ trợ chẩn đoán bệnh tim mạch
1.2. Thuật toán Random Forest và ứng dụng trong chẩn đoán bệnh tim mạch
Bệnh tim mạch là một nhóm bệnh liên quan đến tim hoặc mạch máu. Nguyên nhân có thể gây ra từ nhiều yếu tố như bẩm sinh, huyết áp cao, hút thuốc, đái tháo đường, thiếu tập thể dục, béo phì, cholesterol trong máu cao, chế độ ăn uống kém và uống quá nhiều rượu. Người ta ước tính rằng có thể ngăn chặn tới 90% bệnh tim mạch. Phòng ngừa bệnh tim mạch liên quan đến việc cải thiện các yếu tố rủi ro thông qua ăn uống lành mạnh, tập thể dục, tránh khói thuốc lá và hạn chế uống rượu và điều trị các yếu tố nguy cơ như huyết áp cao, lipid máu và tiểu đường.
Bệnh tim mạch là nguyên nhân hàng đầu gây tử vong trên toàn cầu ở hầu hết tất cả các khu vực trên thế giới. Vì số lượng bệnh nhân ngày càng tăng nên cần phải nhanh chóng phát hiện và điều trị kịp thời. Đồng thời những người không có dấu hiệu mắc bệnh tim mạch cũng nên kiểm tra sức khỏe. Với các xét nghiệm thông thường, phải mất khá nhiều thời gian để có kết quả trong khi đó bằng cách sử dụng thuật toán RF chúng ta có thể nhận được những dự báo kết quả của không chỉ một bệnh nhân mà còn nhiều bệnh nhân trong thời gian ngắn. Có nhiều trường hợp khẩn cấp bệnh nhân phải được kiểm tra xem họ có bị ảnh hưởng từ các vấn đề tim mạch hay không để tiếp tục điều trị. Vì vậy, sẽ rất lãng phí thời gian trong việc kiểm tra tình trạng của bệnh nhân và có thể làm ảnh hưởng đến tính mạng. Thay vào đó, sử dụng thuật toán Random Forest, chúng ta cũng sẽ thu được kết quả nhất định ngay lập tức bằng cách nhập dữ liệu y tế của bệnh nhân vào mô hình.
File đính kèm:
ung_dung_thuat_toan_phan_loai_random_forest_trong_ho_tro_cha.pdf
Nội dung text: Ứng dụng thuật toán phân loại Random Forest trong hỗ trợ chẩn đoán bệnh tim mạch
- 547 ỨNG DỤNG THUẬT TOÁN PHÂN LOẠI RANDOM FOREST TRONG HỖ TRỢ CHẨN ĐOÁN BỆNH TIM MẠCH ThS. Nguyễn Quỳnh Mai, ThS. Tống Thị Minh Ngọc, Sv. Trần Thị Hoa Viện Công nghệ thông tin và Kinh tế số, Trường Đại học Kinh tế Quốc dân TÓM TẮT Random Forest (RF) là sự kết hợp của nhiều cây quyết định được sử dụng để dự đoán hiệu quả của các thuật toán và kỹ thuật học máy. Chúng được sử dụng trong bảo mật Internet, y học, dự báo thời tiết, v.v. Đây là một thuật toán tương đối phức tạp nhưng hiệu quả. Trong nghiên cứu này chúng tôi tìm hiểu về thuật toán Random Forest và ứng dụng của nó trong lĩnh vực y tế. Hiện nay, một trong những bệnh đáng lo ngại đang được quan tâm nhiều trong y tế là tim mạch. Bằng việc nhập hồ sơ sức khỏe của các bệnh nhân và xây dựng cây quyết định dựa trên các thông số như: tuổi, giới tính, cấp độ đau lồng ngực, huyết áp, cholesterol trong máu, tiểu đường, kết quả điện tim, nhịp tim, chế độ tập luyện, chúng tôi đã sử dụng thuật toán Random Forest để đưa ra dự báo liệu một người nào đó có khả năng bị các bệnh về tim mạch hay không. Thực tế đã có rất nhiều thuật toán được nghiên cứu và triển khai dựa trên sự phân loại như cây quyết định, Naïve-Bayes nhưng Random Forest là thuật toán thực hiện nhanh chóng và mang lại kết quả tương đối chính xác. Từ khóa: Học máy, Cây quyết định, Thuật toán, Phân loại, Random Forest, Dự đoán 1. GIỚI THIỆU Thế giới chúng ta đang phải đối mặt với rất nhiều nguy cơ và thách thức về các vấn đề liên quan đến sự gia tăng dân số, dịch bệnh bùng phát. Đặc biệt chăm sóc sức khỏe và kiểm soát bệnh tật đã và đang trở thành một nhiệm vụ khó khăn cho các chuyên gia trong lĩnh vực y tế (Sisodia & Sisodia, 2018). Vì vậy, chúng ta cần đưa ra một phương pháp hiệu quả và tối ưu trong việc chẩn đoán và điều trị bệnh nhằm làm giảm thời gian cũng như công sức của con người. Theo đó, các công nghệ tiên tiến như trí tuệ nhân tạo, học máy, khoa học dữ liệu, dữ liệu lớn, đã được nghiên cứu và áp dụng để giải quyết các vấn đề thực tế trên. Bài viết này tập trung mô tả về thuật toán phân loại Random Forest trong học máy và giải thích trường hợp sử dụng nó trong lĩnh vực y tế (Rajkomar, Dean, & Kohane, 2019). Cụ thể là, chúng tôi sẽ đưa ra những thảo luận về dự đoán bệnh tim mạch dựa trên việc sử dụng thuật
- 548 toán Random Forest nhằm làm giảm bớt sức người mà vẫn đảm bảo đạt được hiệu quả cao hơn trong khoảng thời gian ngắn nhất. Lý do mà chúng tôi lựa chọn bệnh tim mạch làm trường hợp thử nghiệm vì hiện tại tim mạch là một trong những căn bệnh phổ biến và đáng lo ngại trên thế giới. Số lượng người mắc bệnh ngày càng tăng và người khám bệnh tim mạch cũng ngày càng nhiều. Vì vậy, chúng ta cần tìm một giải pháp dự đoán nhanh hơn về bệnh tim mạch ở các bệnh nhân và Random Forest là thuật toán được nhóm tác giả lựa chọn để thực hiện bài toán dự báo này. 1.1. Giới thiệu về học máy Học máy là một phần của trí tuệ nhân tạo cho phép máy tính khả năng học mà không phải lập trình, từ dữ liệu để giải quyết những vấn đề cụ thể. Học máy có liên quan lớn đến thống kê, dữ liệu lớn vì cả hai lĩnh vực đều nghiên cứu việc phân tích dữ liệu, nhưng khác với thống kê, học máy tập trung vào sự phức tạp của các giải thuật trong việc thực thi tính toán. Theo phương thức học, các thuật toán học máy được chia thành ba loại là học có giám sát, học không giám sát và học tăng cường. ● Học có giám sát: là một kĩ thuật của học máy để xây dựng một hàm từ dữ liệu huấn luyện. Học có giám sát là thuật toán dự đoán đầu ra của một dữ liệu mới dựa trên các cặp dữ liệu đầu vào và nhãn (kết quả) đã biết từ trước. Học giám sát là nhóm phổ biến nhất trong các thuật toán học máy. (Kotsiantis, Zaharakis, & Pintelas, 2007) ● Học không giám sát: Trong phương thức học không giám sát, chúng ta không biết được nhãn mà chỉ có dữ liệu đầu vào. Thuật toán này sẽ dựa vào cấu trúc của dữ liệu để thực hiện một công việc, ví dụ như phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán. ● Học tăng cường: Đây là phương thức hoàn toàn khác với hai loại trên. Học tăng cường là các bài toán giúp cho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất. Hiện nay phương pháp học tăng cường chủ yếu được áp dụng vào lý thuyết trò chơi, các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất. 1.2. Thuật toán Random Forest và ứng dụng trong chẩn đoán bệnh tim mạch Bệnh tim mạch là một nhóm bệnh liên quan đến tim hoặc mạch máu. Nguyên nhân có thể gây ra từ nhiều yếu tố như bẩm sinh, huyết áp cao, hút thuốc, đái tháo đường, thiếu tập thể dục, béo phì, cholesterol trong máu cao, chế độ ăn uống kém và uống quá nhiều
- 549 rượu. Người ta ước tính rằng có thể ngăn chặn tới 90% bệnh tim mạch. Phòng ngừa bệnh tim mạch liên quan đến việc cải thiện các yếu tố rủi ro thông qua ăn uống lành mạnh, tập thể dục, tránh khói thuốc lá và hạn chế uống rượu và điều trị các yếu tố nguy cơ như huyết áp cao, lipid máu và tiểu đường. Bệnh tim mạch là nguyên nhân hàng đầu gây tử vong trên toàn cầu ở hầu hết tất cả các khu vực trên thế giới. Vì số lượng bệnh nhân ngày càng tăng nên cần phải nhanh chóng phát hiện và điều trị kịp thời. Đồng thời những người không có dấu hiệu mắc bệnh tim mạch cũng nên kiểm tra sức khỏe. Với các xét nghiệm thông thường, phải mất khá nhiều thời gian để có kết quả trong khi đó bằng cách sử dụng thuật toán RF chúng ta có thể nhận được những dự báo kết quả của không chỉ một bệnh nhân mà còn nhiều bệnh nhân trong thời gian ngắn. Có nhiều trường hợp khẩn cấp bệnh nhân phải được kiểm tra xem họ có bị ảnh hưởng từ các vấn đề tim mạch hay không để tiếp tục điều trị. Vì vậy, sẽ rất lãng phí thời gian trong việc kiểm tra tình trạng của bệnh nhân và có thể làm ảnh hưởng đến tính mạng. Thay vào đó, sử dụng thuật toán Random Forest, chúng ta cũng sẽ thu được kết quả nhất định ngay lập tức bằng cách nhập dữ liệu y tế của bệnh nhân vào mô hình. 2. MÔ TẢ THUẬT TOÁN RANDOM FOREST Random Forest là phương pháp xây dựng một tập hợp nhiều cây quyết định và sử dụng phương pháp bỏ phiếu (voting) để đưa ra quyết định về biến cần được dự báo. Đây là thuật toán học có giám sát, có thể được sử dụng cho cả bài toán phân lớp và hồi quy. Thuật toán này có tínhlinh hoạt và dễ sử dụng. Random Forest tạo ra cây quyết định trên các mẫu dữ liệu được chọn ngẫu nhiên, được dự đoán từ mỗi cây và chọn giải pháp tốt nhất bằng cách bỏ phiếu. Thuật toán này có nhiều ứng dụng điển hình như là công cụ đề xuất, phân loại hình ảnh và lựa chọn đặc điểm. (Brown, 2016). Về mặt kỹ thuật, RF là một phương pháp tổng hợp của các cây quyết định được tạo ra trên một tập dữ liệu được chia ngẫu nhiên. Bộ sưu tập phân loại cây quyết định này còn được gọi là rừng. Cây quyết định riêng lẻ được tạo ra bằng cách sử dụng chỉ báo chọn thuộc tính như tăng thông tin, tỷ lệ tăng và chỉ số Gini cho từng thuộc tính. Mỗi cây phụ thuộc vào một mẫu ngẫu nhiên độc lập. Trong bài toán phân loại, mỗi phiếu bầu chọn và lớp phổ biến nhất được chọn là kết quả cuối cùng (Louppe, 2014). Quy trình thực hiện thuật toán: Giả sử ta có 3 biến: T, D và V. Trong đó:
- 550 T: Số đặc điểm D: Số cây được xây dựng − Bước 1: Trước tiên, chúng ta cần chọn m trong T đặc điểm với điều kiện m < T. Vì nếu chúng ta chọn tất cả các đặc điểm thì Random Forest sẽ tạo ra tất cả các cây quyết định giống nhau. Đó là lý do tại sao chúng ta chọn một vài đặc điểm ngẫu nhiên để tạo ra các cây quyết định khác nhau. Đặt M1, M2, ..Mn là tập hợp các đặc điểm của cây quyết định D1, D2,.., DN tương ứng, M1 U M2 U M3 U U Mn = T. − Bước 2: Sau khi lựa chọn một tập hợp các đặc điểm và xây dựng một cây quyết định, ta chỉ ra các nút phân chia tốt nhất và các nút còn lại của cây quyết định. − Bước 3: Chia nút được lựa chọn tốt nhất thành hai nút con. − Bước 4: Lặp lại các bước 1, 2, 3 cho đến khi tất cả các nút được xét − Bước 5: Xây dựng rừng bằng cách lặp lại các bước 1, 2, 3, 4 D lần. 3. THỰC HIỆN THUẬT TOÁN RANDOM FOREST Thuật toán Random Forest có thể được thực hiện trên ngôn ngữ R hoặc ngôn ngữ Python (King, 2009). Nhưng Python được sử dụng phổ biến hơn bởi cú pháp dễ dàng. Để triển khai Random Forest bằng ngôn ngữ Python, chúng ta cần phải sử dụng một số thư viện mà Python hỗ trợ học máy như Scikit-learn, Matplotlib, Pandas, Numpy. Trong đó: • Pandas được sử dụng để chuyển đổi bộ dữ liệu được cung cấp thành dữ liệu khung (data frame). Nói cách khác Pandas chuyển đổi dữ liệu thô thành một dữ liệu có cấu trúc và có tổ chức bằng cách loại bỏ những hàng và cột của những dữ liệu không đầy đủ. Sau khi chuyển đổi thành một data frame, chúng ta có thể thực hiện thuật toán trên bộ dữ liệu đó. • Matplotlib là thư viện được sử dụng để thực hiện các suy luận thống kê cần thiết cần phải trực quan hóa dữ liệu. • NumPy là một thư viện hữu ích cho việc tính toán các mảng nhiều chiều, có kích thước lớn với các hàm số đã được tối ưu áp dụng lên các mảng nhiều chiều đó, đặc biệt là các hàm số liên quan tới đại số tuyến tính. • Scikit-learn là thư viện mạnh nhất dành cho các thuật toán học máy . Thư viện này cung cấp các công cụ xử lý bài toán học máy (Garreta & Moncecchi, 2013); ( Pedregosa
- 551 et al., 2011). Trong nghiên cứu này chúng tôi sử dụng Scikit-learn trong việc phân chia bộ dữ liệu và đánh giá kết quả dự báo. • Random Forest Classifier là một chức năng tích hợp trong Scikit-learn, được sử dụng để xây dựng rừng cây quyết định. Để mô tả thuật toán, chúng ta có thể lập trình trên bất cứ nền tảng nào hỗ trợ Python như Jupyter Notebook, Anaconda Chúng tôi đã lựa chọn, sử dụng Google Colab trong nghiên cứu của mình. Về quy mô dữ liệu Lượng dữ liệu sức khỏe điện tử của các bệnh nhân là khá lớn nên việc lưu dữ liệu gặp nhiều khó khăn. Vì vậy trong trường hợp này, Big Data được áp dụng. Sử dụng những lợi thế của Big Data, chúng ta có thể xử lý số lượng lớn các bộ dữ liệu một cách hiệu quả với sự giúp đỡ của các Framework như Apache, Spark, Hadoop bằng cách sử dụng các kỹ thuật như MapReduce. Nếu có thể xử lý dữ liệu đúng cách và làm cho dữ liệu có cấu trúc thì chúng ta có thể nhập trực tiếp dữ liệu đó vào thuật toán Random Forest (Krishna Chaitanya Velagapudi, 2019) . Về khả năng dự đoán Như đã đề cập ở trên, Random Forest có thể xử lý số lượng lớn các bộ dữ liệu một cách hiệu quả. Các cây quyết định khác nhau được tạo ra dựa trên các chỉ số như: tuổi, giới tính, cấp độ đau lồng ngực, huyết áp, cholesterol trong máu, tiểu đường, kết quả điện tim, nhịp tim, chế độ tập luyện,... Các bước thực hiện thuật toán - Tập dữ liệu ban đầu được chuyển đổi thành khung dữ liệu (data frame), từ khung dữ liệu này ta chia chúng thành 2 tập là dữ liệu huấn luyện (training data) và dữ liệu thử nghiệm (testing data). - Sử dụng dữ liệu đào tạo, chúng ta huấn luyện mô hình với sự giúp đỡ của các cây quyết định. Kết quả thu được từ một số cây quyết định bằng cách xem xét tất cả các kết quả từ cây khác nhau, kết quả là giá trị được xuất hiện nhiều nhất. - Theo quy trình này, mô hình được huấn luyện. Và với tập dữ liệu thử nghiệm, chúng ta có thể kiểm tra mô hình và biết được độ chính xác. Trong trường hợp đạt được độ chính xác hơn 90% là một kết quả tuyệt vời để khẳng định mô hình là tốt.
- 552 Bài toán thử nghiệm: Để có cái nhìn cụ thể và trực quan hơn về thuật toán RF, nhóm tác giả đã tiến hành mô tả các bước thực hiện của thuật toán này dựa trên thông tin về hồ sơ điện tử của các bệnh nhân nhằm đưa ra những dự báo y tế liên quan đến bệnh tim mạch. Dữ liệu ban đầu được sử dụng trong nghiên cứu này là tệp “Heart.csv” - bộ dữ liệu liên quan đến hồ sơ y khoa được cung cấp tại (Kaggle, 2020). Bước 1: Lựa chọn và sử dụng thư viện Như đã đề cập ở trên, trong bước này chúng tôi lựa chọn và sử dụng các thư viện Numpy, Pandas, Matplotlib với sẵn có của Python. Ngoài ra, từ thư viện Scikit-learn, chúng tôi sử dụng các module có sẵn là train_test_split với mục đích chia tập dữ liệu thành 2 tập là dữ liệu huấn luyện và dữ liệu thử nghiệm và module accuracy_score để đánh giá độ chính xác của mô hình. Bước 2: Nhập dữ liệu Dữ liệu được sử dụng tại bước này là tệp “Heart.csv” - bộ dữ liệu liên quan đến hồ sơ y khoa của các bệnh nhân với các thông tin như: tuổi, giới tính, cấp độ đau lồng ngực, huyết áp, cholesterol trong máu, tiểu đường, kết quả điện tim, nhịp tim, chế độ tập luyện, Thực hiện câu lệnh pd.read_csv() để đọc file dữ liệu và câu lệnh sample() chọn ra các bản ghi ngẫu nhiên.
- 553 Bước 3: Kiểm tra dữ liệu thiếu Trong quá trình thu thập dữ liệu, không tránh khỏi việc dữ liệu bị thiếu và trống, do đó trước khi thực hiện các tính toán, ta cần kiểm tra dữ liệu hiện tại bằng câu lệnh isnull(). Lệnh này sẽ trả về True nếu dữ liệu còn thiếu và False trong trường hợp ngược lại. Khi kết hợp sử dụng với sum() kết quả trả về sẽ cho ta giá trị là số ô thiếu dữ liệu của từng cột. Ở đây, trường hợp bộ dữ liệu mà chúng ta đang xem xét thì không có cột nào bị thiếu. Bước 4: Chia tệp dữ liệu Chia tập dữ liệu thành 2 tệp, giả sử X là tệp dữ liệu huấn luyện và y là tệp dữ liệu thử nghiệm với tỷ lệ 60% và 40 % Bước 5: Sử dụng module Random Forest Classifier() Từ thư viện Scikit-learn, chúng tôi sử dụng module Random Forest Classifier() để huấn luyện mô hình.
- 554 Bước 6: Dự đoán mô hình Bằng lệnh predict() với tập dữ liệu X_test, ta sẽ thu được kết quả. Cụ thể, kết quả là 0 - ít khả năng mắc bệnh tim và kết quả 1 - nhiều khả năng mắc bệnh tim. Bước 7: Kiểm tra độ chính xác Để kiểm tra độ chính xác của mô hình, ta cần so sánh kết quả nhận được từ việc huấn luyện mô hình với kết quả trong tệp dữ liệu thử nghiệm bằng cách thực hiện câu lệnh accuracy_score() từ thư viện Scikit-learn. Kết quả mà chúng tôi thu được ở bước này rất khả quan được đánh giá thông qua độ chính xác của mô hình lên đến trên 99 % Bước 8: Dự báo kết quả với dữ liệu được nhập Từ dữ liệu ban đầu và mô hình thu được ở trên, chúng ta có thể đưa ra những dự đoán về khả năng mắc bệnh hay không của các hồ sơ y tế đã có sẵn. Hơn thế nưa, chúng ta cũng có thể đưa ra các dự đoán tiếp theo với những bộ dữ liệu được nhập mới như mô tả dưới đây:
- 555 4. KẾT LUẬN Với sự phát triển không ngừng của công nghệ, ngày càng có nhiều phương pháp để phân tích và xử lý dữ liệu lớn một cách hiệu quả và tối ưu. Học có giám sát bao gồm phân loại và hồi quy. Phân loại chỉ là một quá trình phân dữ liệu vào các cụm khác nhau trên cơ sở cụ thể trong khi hồi quy là quá trình thu thập mối quan hệ giữa các biến độc lập và phụ thuộc. Trong nghiên cứu này, các tác giả tập trung vào thuật toán học có giám sát Random Forest. Đây là một thuật toán tuyệt vời cho bài toán dự báo cả hai mô hình phân loại và hồi quy. Đặc biệt thuật toán này cũng được sử dụng trong nhiều lĩnh vực như phân loại hình ảnh, phân loại đối tượng, bảo mật Internet, y học, hệ hỗ trợ ra quyết định và dự đoán. Bằng việc tiến hành thử nghiệm trên dữ liệu về hồ sơ y khoa, thuật toán đã cho ta những dự đoán cần thiết trong việc hỗ trợ chẩn đoán những bệnh nhân có liên quan đến các vấn đề về tim mạch. TÀI LIỆU THAM KHẢO Brown, J. (2016, August 15, 2020). Bagging and Random Forest Ensemble Algorithms for Machine Learning. Retrieved from and-random-forest-ensemble-algorithms-for-machine-learning/ Garreta, R., & Moncecchi, G. (2013). Learning scikit-learn: Machine learning in Python: Packt Publishing Ltd. King, D. E. (2009). Dlib-ml: A machine learning toolkit. The Journal of Machine Learning Research, 10, 1755-1758. Kotsiantis, S. B., Zaharakis, I., & Pintelas, P. (2007). Supervised machine learning: A review of classification techniques. Emerging artificial intelligence applications in computer engineering, 160(1), 3-24. Krishna Chaitanya Velagapudi, Sreenivasarao Devavarapu, Khasim Saheb Shaik (2019). Random Forest Algorithm of Classification in Prediction of Diabetes. Journal of Information and Computational Science, 9(10). Louppe, G. (2014). Understanding random forests: From theory to practice. arXiv preprint arXiv:1407.7502. Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., . . . Dubourg, V. (2011). Scikit-learn: Machine learning in Python. The Journal of Machine Learning Research, 12, 2825-2830.
- 556 Rajkomar, A., Dean, J., & Kohane, I. (2019). Machine learning in medicine. New England Journal of Medicine, 380(14), 1347-1358. Scikit learn - Machine Learning in Python. Retrieved from Sisodia, D., & Sisodia, D. S. (2018). Prediction of diabetes using classification algorithms. Procedia computer science, 132, 1578-1585.