Trong thuật toán này, chúng ta sẽ vẽ đồ thị dữ liệu là các điểm trong n chiều ở đây n là số lượng các tínhnăng hiện có với giá trị của mỗi tính năng sẽ là một phần liên kết.. Hình 1.1 Bi
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN MÔN
Hà Nội, tháng 5 năm 2024
Trang 2PHIẾU CHẤM ĐIỂM Sinh viên thực hiện:
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 1
CHƯƠNG 1: GIỚI THIỆU MÔ HÌNH SVM 2
1.1 Khái niệm về mô hình SVM 2
1.2 Các bước thực hiện của mô hình SVM 3
1.3 Cách thức hoạt động của mô hình SVM 3
1.4 Margin trong SVM 10
1.5 Kết luận về thuật toán 10
CHƯƠNG 2: ỨNG DỤNG MÔ HÌNH SVM VÀO GIẢI QUYẾT BÀI TOÁN .12
2.1 Giới thiệu bài toán 12
2.2 Giải quyết bài toán 12
2.2.1 Phân tích dữ liệu dataset 12
2.2.2 Áp dụng mô hình vào biến đổi dữ liệu 15
2.2.2.1 Cột tuổi (age) 15
2.2.2.2 Cột giới tính 16
2.2.2.3 Cột loại đau ngực 16
2.2.2.4 Cột huyết áp lúc nghỉ 17
2.2.2.5 Cột cholesterol 17
2.2.2.6 Cột lượng đường trong máu 18
2.2.2.7 Cột kết quả điện tâm đồ lúc nghỉ ngơi 18
2.2.2.8 Cột nhịp tim tối đa đạt được 19
2.2.2.9 Cột tập thể dục có gây đau thắt ngực không 19
2.2.2.10 Cột chênh lệch đoạn ST khi tập thể dục so với lúc nghỉ 20
2.2.2.11 Cột độ dốc tại đỉnh của đoạn ST khi tập thể dục 20
2.2.2.12 Cột số lượng đoạn mạch chính 21
2.2.2.13 Cột dấu hiệu của sóng 21
Trang 4LỜI NÓI ĐẦU
Bệnh tim mạch là một trong những nguyên nhân gây tử vong hàng đầu trênthế giới, ảnh hưởng đến sức khỏe và chất lượng cuộc sống con người: số ngườichết hàng năm do bệnh tim mạch cao hơn bất kì nguyên nhân nào khác Nhữngngười mắc bệnh tim mạch hoặc có nguy cơ cao mắc bệnh tim mạch nếu được theodõi và phát hiện sớm sẽ làm giảm được tỉ lệ tử vong Tuy nhiên, vấn đề là việc theodõi và giám sát bệnh nhân liên tục và xuyên suốt đòi hỏi nhiều thời gian, kinhnghiệm, chuyên môn cao và nguồn nhân lực rất lớn
Với sự phát triển vũ bão của công nghệ, nhất là trong lĩnh vực trí tuệ nhântạo AI, hiện nay người ta đã và đang liên tục phát triển các giải pháp của cac vấn
đề trong mọi lĩnh vực, trong đó có các giải pháp kết hợp AI để tăng khả năng điềutrị trong lĩnh vực y tế, một ví dụ cụ thể hơn đó là mô hình chẩn đoán khả năng mắcbệnh tim dựa trên các số liệu theo dõi mà máy móc có thể tự động ghi nhận với tầnsuất cao trong thời gian dài
Qua những phân tích trên, chúng em quyết định chọn đề tài: “SỬ DỤNG
MÔ HÌNH MÁY VECTOR HỖ TRỢ (SVM) ĐỂ DỰ ĐOÁN KHẢ NĂNG MẮCBỆNH TIM MẠCH” để làm báo cáo chuyên đề cuối môn
Chúng em xin chân thành gửi lời cảm ơn đến các thầy cô giáo trong TrườngĐại học Điện Lực nói chung và các thầy cô trong Khoa Công nghệ thông tin nóiriêng đã tận tình giảng dạy, truyền đạt cho chúng em những kiến thức cũng nhưkinh nghiệm quý báu trong suốt quá trình học Đặc biệt, chúng em gửi lời cảm ơnđến thầy Vũ Văn Định đã tận tình theo sát giúp đỡ, trực tiếp chỉ bảo, hướng dẫntrong suốt quá trình nghiên cứu và học tập của chúng em
Trang 5CHƯƠNG 1: GIỚI THIỆU MÔ HÌNH SVM
1.1 Khái niệm về mô hình SVM
Support Vector Machine (SVM) hay Mô hình Máy Vector hỗ trợ là mộtthuật toán giám sát, nó có thể sử dụng cho cả việc phân loại hoặc đệ quy Tuynhiên nó được sử dụng chủ yếu cho việc phân loại Trong thuật toán này, chúng
ta sẽ vẽ đồ thị dữ liệu là các điểm trong n chiều (ở đây n là số lượng các tínhnăng hiện có) với giá trị của mỗi tính năng sẽ là một phần liên kết Sau đóchúng ta thực hiện tìm “đường bay” (hyper-plane) phân chia các lớp Hyper- plane có thể hiểu đơn giản là một đường thẳng có thể phân chia các lớp ra hai
phần riêng biệt
Hình 1.1 Biểu đồ Vector hỗ trợ (SVM) phân loại dữ liệu
Ví dụ, ở hình 1.1 mô tả một biểu đồ SVM được sử dụng để phân loại hai lớp
dữ liệu khác nhau:
Biểu đồ phân tán: Hình ảnh là một trục X và Y.
Hai nhóm dữ liệu: Có hai nhóm dữ liệu rõ ràng được biểu diễn bằng các chấm
màu đỏ và xanh lá
Đường biên quyết định: Một đường nét đứt biểu thị đường biên quyết định,
tác biệt hai nhóm dữ liệu này
Trang 6 Vector hỗ trợ: “Support Vectors” được gán nhãn trên ba chấm xanh lá gầnđường biên quyết định nhất, chỉ ra rằng những điểm này được sử dụng để xácđịnh vị trí và hướng của đường biên quyết định.
Tóm lại, Support Vector có thể hiểu một cách đơn giản là các đối tượngtrên đồ thị tọa độ quan sát, Support Vector Machine là một biên giới đểchia ranh giới giữa các lớp được tốt nhất
1.2 Các bước thực hiện của mô hình SVM
Để thực hiện thuật toán của mô hình SVM, chúng ta thực hiện các bước sau:
- Xây dựng bài toán tối ưu cho SVM: Bài toán tối ưu của SVM nhằm tìm ravector trọng số (w) và hệ số dẫn (b) sao cho được tối ưu hóa một hàm mụctiêu nhất định Hàm mục tiêu thường là tối ưu hóa khoảng cách giữa cácđiểm dữ liệu và lề phân tách, đồng thời giữ cho lề càng rộng càng tốt để cácđiểm khác vẫn có thể được phân loại chính xác
- Bài toán đối ngẫu cho SVM: SVM là một bài toán lồi, và nếu một bài toánlồi thoả mãn tiêu chuẩn Slater, thì strong duality thoả mãn Nếu strongduality thoả mãn, nghiệm của bài toán chính là nghiệm của hệ điều kiệnKKT (Karush-Kuhn-Tucker)
- Điều kiện KKT: Điều kiện KKT là một tập hợp các điều kiện cần thiết đểmột bài toán tối ưu có nghiệm tối ưu Trong SVM, điều kiện KKT bao gồmcác điều kiện về vector trọng số (w), hệ số dẫn (b), và các giá trị của hàmmục tiêu
- Lập trình tìm nghiệm cho SVM: Có hai cách chính để tìm nghiệm cho SVM:một là tính toán trực tiếp dựa trên công thức, và cách khác là sử dụng thưviện sklearn Cách sử dụng thư viện sklearn thường được ưa chuộng vì nótiết kiệm thời gian và công sức
- Sử dụng kernel: Kernel là một kỹ thuật quan trọng trong SVM, giúp mởrộng không gian đặc trưng của dữ liệu, cho phép SVM giải quyết các bàitoán phân loại có Decision Boundary phức tạp
- Chọn siêu tham số C: Siêu tham số C trong SVM đóng vai trò như một tham
số phạt, quyết định mức độ chấp nhận lỗi phân loại Càng lớn giá trị C, SVMcàng bị phạt nặng khi thực hiện phân loại sai, dẫn đến việc lề phân tách cànghẹp và càng ít vectơ hỗ trợ được sử dụng
Trang 71.3 Cách thức hoạt động của mô hình SVM
Ở nội dung trước đã minh họa việc chia hyper-plane Phần hiện tại sẽ làm rõvấn đề “Làm sao để vẽ - xác định đúng hyper-plane” Việc xác định đúng hyper- plane sẽ đi theo các tiêu chí sau:
Quy tắc số 1:
Ở đây chúng ta có 3 đường hyper-plane (A, B và C)
Hình 1.2 Biểu đồ SVM với đường phân cách B đúng
Ta xét từng đường phân cách như sau:
- Đường A và C: Không phân tách hiệu quả hai nhóm hình dạng vì một
số ngôi sao và hình tròn chồng lên nhau
- Đường B: Phân tách hoàn hảo ngôi sao khỏi hình tròn, do đó ta chọnđường B là một phân loại hiệu quả
Do đó, quy tắc số một để chọn hyper-plane, chọn một hyper-plane đểphân chia hai lớp tốt nhất
Quy tắc số 2:
Hình ảnh bên dưới cũng mô tả ba đường hyper-plane (A, B và C).Theo quy tắc số 1, chúng đều thỏa mãn
Trang 8Hình 1.3 Biểu đồ SVM với khoảng cách “Margin” từ các vector
hỗ trợ đến đường hyper-plane
Quy tắc thứ hai chính là xác định khoảng cách lớn nhất từ điểm gầnnhất của một lớp nào đó đến đường hyper-plane Khoảng cách từ cácđiểm này của mỗi lớp đến đường hyper-plane được gọi là “Margin”.Khoảng cách “Margin” là yếu tố quan trọng trong việc xác định mô hìnhSVM, giúp tối ưu hóa sự phân loại và đảm bảo độ chính xác cao Đườnghyper-plane tối ưu sẽ là đường có “Margin” lớn nhất, tạo khoảng trống rõràng giữa các lớp dữ liệu
Xét hình 1.3, có thể thấy khoảng cách margin lớn nhất là đường C.Cần nhớ nếu chọn sai đường hyper-plane có margin thấp hơn thì sau nàykhi dữ liệu tăng lên thì sẽ sinh ra nguy cơ cao về việc xác định nhầm lớpcho dữ liệu
Quy tắc số 3:
Chúng ta tiếp tục xét hình sau:
Trang 9Hình 1.4 Biểu đồ SVM với đường phân cách A đúng giữa 2 lớp dữ
liệu
Mặc dù đường B có margin lớn hơn đường A, nhưng nó không có sựphân loại chính xác các điểm dữ liệu vì có sự chồng chéo giữa các lớp Theonguyên tắc số 1, chúng ta cần chọn hyper-plane để phân chia các lớp riêngbiệt Do đó, chúng ta chọn đường A vì nó không có sự chồng chéo và phânloại dữ liệu một cách rõ ràng, tuân thủ theo nguyên tắc đầu tiên
Quy tắc số 4:
Tiếp tục với hình bên dưới, câu hỏi đặt ra là chúng ta có thể phân loạihai lớp trong trường hợp này không? Theo như mô tả, phần chỉ chứa cácđiểm tròn có ngôi sao, cho nên ta không thể chia thành hai lớp riêng biệtchỉ với một đường thẳng
Trang 10Hình 1.5 Biểu đồ SVM với một ngôi sao nằm bên vùng của hình
tròn đỏ
Ở đây ta sẽ chấp nhận, một ngôi sao ở bên ngoài cuối được xem nhưmột ngôi sao phía ngoài hơn, SVM có khả năng mạnh trong việc chấpnhận ngoại lệ bằng cách tìm ra hyper-plane có biên giới tối đa, cho phépmột số ngoại lệ mà không làm giảm hiệu suất phân loại tổng thể Điềunày giúp SVM trở thành một công cụ linh hoạt và mạnh mẽ trong việcphân loại dữ liệu
Hình 1.6 Biểu đồ SVM với đường phân cách và ngoại lệ được xác
định
Trang 11 Quy tắc số 5:
Trong trường hợp dưới đây, chúng ta không thể tìm ra một đườnghyper-plane tương đối để chia các lớp, vậy làm thế nào để SVM phântách dữ liệu thành hai lớp riêng biệt? Cho đến bây giờ chúng ta chỉ nhìnvào các đường tuyến tính hyper-plane
Hình 1.7 Biểu đồ SVM với dữ liệu không tách biệt tuyến tính
SVM có thể giải quyết được vấn đề này Trong trường hợp này, chúng
ta thêm một tính năng mới là z = x^2 + y^2, biến đổi không gian dữ liệu
từ 2D (với trục x và y) thành 3D, (với trục x, y và z mới) Trong khônggian 3D này, các lớp dữ liệu có thể được phân tách một cách rõ ràng bởimột siêu phẳng, giúp việc phân loại trở nên chính xác hơn Bây giờ, dữliệu sẽ được biến đổi như sau:
Trang 12Hình 1.8 Biểu đồ SVM sau khi được biến đổi
Trong sơ đồ trên, các điểm cần xem xét là:
o Tất cả dữ liệu trên trục z sẽ là số dương vì nó là tổng bình phương
x và y
o Trên biểu đồ các điểm tròn đỏ xuất hiện gần trục x và y hơn, vì thế
z sẽ nhỏ hơn => nằm gần trục x hơn trong đồ thị (z,x)
Trong SVM, rất dễ dàng để có một siêu phẳng tuyến tính (linearhyper-plane) để chia thành hai lớp Câu hỏi được đặt ra là chúng ta có cầnphải thêm một tính năng phân chia này bằng tay hay không SVM có một kĩthuật được gọi là kernel trick (kỹ thuật hạt nhân), đây là tính năng có khônggian đầu vào có chiều sâu thấm và biến đổi nó thành không gian có chiềucao hơn, nơi có thể tìm được một phân loại siêu phẳng tốt hơn, giúp phânloại dễ dàng hơn Tức là nó không phân chia các vấn đề thành cac vấn đềriêng biệt, các tính năng này được gọi là kernel Nói một cách đơn giản nóthực hiện một số biến đổi dữ liệu phức tạp, sau đó tìm ra quá trình tách dữliệu dựa trên các nhãn hoặc đầu ra mà chúng ta đã xác định trước
Qua đó, SVM có thể giải quyết các vấn đề phân loại phức tạp màkhông cần phải can thiệp thủ công vào dữ liệu
Trang 131.4 Margin trong SVM
Hình 1.9 Margin trong SVM
Margin là khoảng cách giữa siêu phẳng đến 2 điểm dữ liệu gần nhất tương ứngvới các phân lớp Trong ví dụ quả táo quả lê đặt trên mặt bán, margin chính làkhoảng cách giữa cây que và hai quả táo và lê gần nó nhất Điều quan trọng ở đây
đó là phương pháp SVM luôn cố gắng cực đại hóa margin này, từ đó thu được mộtsiêu phẳng tạo khoảng cách xa nhất so với 2 quả táo và lê Nhờ vậy, SVM có thểgiảm thiểu việc phân lớp sai (misclassification) đối với điểm dữ liệu mới đưa vào
1.5 Kết luận về thuật toán
Là một kĩ thuật phân lớp khá phổ biến, SVM thể hiện được nhiều ưu điểmtrong số đó có việc tính toán hiệu quả trên các tập dữ liệu lớn Có thể kể thêm một
số ưu điểm của phương pháp này như:
Xử lý trên không gian số chiều cao: SVM là một công cụ tính toán hiệu quảtrong không gian chiều cao, trong đó đặc biệt áp dụng cho các bài toán phânloại văn bản và phân tích quan điểm nơi chiều có thể cực kỳ lớn
Tiết kiệm bộ nhớ: Do chỉ có một tập hợp con của các điểm được sử dụng trongquá trình huấn luyện và ra quyết định thực tế cho các điểm dữ liệu mới nên chỉ
có những điểm cần thiết mới được lưu trữ trong bộ nhớ khi ra quyết định
Tính linh hoạt - phân lớp thường là phi tuyến tính Khả năng áp dụng Kernelmới cho phép linh động giữa các phương pháp tuyến tính và phi tuyến tính từ
đó khiến cho hiệu suất phân loại lớn hơn
Trang 14 Bài toán số chiều cao: Trong trường hợp số lượng thuộc tính (p) của tập dữ liệulớn hơn rất nhiều so với số lượng dữ liệu (n) thì SVM cho kết quả khá tồi.
Chưa thể hiện rõ tính xác suất: Việc phân lớp của SVM chỉ là việc cố gắng táchcác đối tượng vào hai lớp được phân tách bởi siêu phẳng SVM Điều này chưagiải thích được xác suất xuất hiện của một thành viên trong một nhóm là nhưthế nào Tuy nhiên hiệu quả của việc phân lớp có thể được xác định dựa vàokhái niệm margin từ điểm dữ liệu mới đến siêu phẳng phân lớp mà chúng ta đãbàn luận ở trên
Kết luận: SVM là một phương pháp hiệu quả cho bài toán phân lớp dữ liệu Nó
là một công cụ đắc lực cho các bài toán về xử lý ảnh, phân loại văn bản, phân tíchquan điểm Một yếu tố làm nên hiệu quả của SVM đó là việc sử dụng Kernelfunction khiến cho các phương pháp chuyển không gian trở nên linh hoạt hơn
Trang 15CHƯƠNG 2: ỨNG DỤNG MÔ HÌNH SVM VÀO GIẢI QUYẾT BÀI TOÁN 2.1 Giới thiệu bài toán
Tệp dữ liệu là file mở rộng heart.csv Trong tệp dữ liệu này có 14 cột và
1026 hàng gồm:
Age: tuổi của từng bệnh nhân
Sex: giới tính của từng bệnh nhân
CP: loại đau ngực của từng bệnh nhân (chest pain type)
- Giá trị 0: đau ngực không điển hình (asymptomatic)
- Giá trị 1: đau ngực không phải do angina (non-anginal pain)
- Giá trị 3: đau ngực điển hình (typical angina)
Trestbps: huyết áp nghỉ cảu bệnh nhân khi nhập viện (resting blood pressure,đơn vị là mm Hg)
Chol: lượng cholesterol trong máu (đơn vị là mg/dl)
Fbs: chỉ số đường huyết sau khi nhịn ăn (fasting blood sugar)
Restecg: kết quả điện tâm đồ nghỉ ngơi
Thalach: tốc độ nhịp tim tối đa của bệnh nhân
Exang: đau thắt ngực do tập thể dục
Oldpeak: sự giảm của đường cong ST trên đồ thị điện tâm đồ (ECG) khi bệnhnhân tập thể dục so với khi nghỉ
Slope: độ dốc của đoạn ST trong quá trình tập luyện cao nhất
Ca: số lượng các đường dẫn chính
Thal: đại diện cho rối loạn máu
Target: xác định bệnh nhân có bị bệnh tim hay không
2.2 Giải quyết bài toán
2.2.1 Phân tích dữ liệu dataset
Chúng ta sẽ sử dụng một số thư viện cần thiết để xử lí và phân tích trực quanhóa dữ liệu:
Trang 16Tiếp theo chúng ta sẽ load tệp dữ liệu có đuôi csv:
Trang 17Để có thể xem tổng quát về dataset này ta có thể sử dụng các lệnh sau:
Trang 182.2.2 Áp dụng mô hình vào biến đổi dữ liệu
Ta sử dụng mô hình máy vector hỗ trợ (svm) để dự đoán khả năng mắc bệnh timmạch dựa trên giá trị các cột Bây giờ chúng ta sẽ sử dụng hàm distplot() từ thưviện Seaborn để vẽ các biểu đồ của các cột:
2.2.2.1 Cột tuổi (age)
=> Ta có thể thấy bệnh nhân chiếm đa số ở độ tuổi khoảng 60 tuổi
Trang 192.2.2.2 Cột giới tính
=> Ở đây, dữ liệu ghi nhận số bệnh nhân nữ khoảng 301, số bệnh nhân nam là trên
700
2.2.2.3 Cột loại đau ngực
Trang 202.2.2.4 Cột huyết áp lúc nghỉ
2.2.2.5 Cột cholesterol
Trang 212.2.2.6 Cột lượng đường trong máu
2.2.2.7 Cột kết quả điện tâm đồ lúc nghỉ ngơi
Trang 222.2.2.8 Cột nhịp tim tối đa đạt được
2.2.2.9 Cột tập thể dục có gây đau thắt ngực không
Trang 232.2.2.10 Cột chênh lệch đoạn ST khi tập thể dục so với lúc nghỉ
2.2.2.11 Cột độ dốc tại đỉnh của đoạn ST khi tập thể dục
Trang 242.2.2.12 Cột số lượng đoạn mạch chính
2.2.2.13 Cột dấu hiệu của sóng
Trang 252.2.2.14 Cột chuẩn đoán
Quan sát dữ liệu, ta thấy các thông số trên các cột 'sex', 'cp', 'fbs', 'restecg', 'exang', 'slope', 'ca', 'thal' là các categorical (ví dụ cp là loại triệu chứng đau ngực chẳng hạn), nếu ta để nguyên các số này thì sẽ không hợp lý, ta cần trải phẳng nó ra (sử dụng pandas.get_dummies) Thêm nữa là các cột 'age', 'trestbps', 'chol', 'thalach', 'oldpeak' là các numerical, ta cần scale nó lại, ở đây sử dụng một scaler cơ bản của pandas Code cụ thể :