Mục đích của báo cáo: phân tích bộ dữ liệu chẩn đoán ung thư vú Wisconsin để cải thiện chẩn đoán Bộ dữ liệu chẩn đoán ung thư vú Wisconsin là một tập dữ liệu công khaibao gồm thông tin v
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CNTT
-
-BÁO CÁO THỰC TẬP CƠ SỞ
Đề tài: Phát hiện ung thư vú bằng học máy
Sinh viên thực hiện:
Lại Nguyên Nam B21DCCN094
Phạm Viết Tài Anh B21DCCN012
Giảng viên hướng dẫn: TS Đỗ Tiến Dũng
Hà Nội, 2024
Trang 2LỜI MỞ ĐẦU
2
Trang 3LỜI CẢM ƠN
Để hoàn thành được báo cáo thực tập tốt nghiệp này thì em xin cảm ơn tớiphía ban lãnh đạo - đã tạo điều kiện cho em được thực tập tại đây.Ngoài ra, em cảm ơn - đã luôn nhiệt tình chỉ dẫn, giảng dạy cho em nhữngkiến thức về - để em có thể hoàn thiện hơn
Em xin gửi lời cảm ơn tới ban lãnh đạo Học viện, Khoa đào tạo đã thiếtlập khung chương trình có môn học “Thực tập” để em có thể vận dụng nhữngkiến thức học được trên giảng đường áp dụng vào công việc và được tham quan,tìm hiểu về môi trường doanh nghiệp
Em xin gửi lời cảm ơn sâu sắc và chân thành tới giảng viên hướng dẫn - Nhờ luôn dìu dắt, giúp đỡ và chỉ bảo tận tình cho em để hoàn thành tốtThực tập
Em xin chân thành cảm ơn!
Hà Nội, ngày - tháng năm
-I Giới thiệu
3
Trang 41 Tầm quan trọng của việc phát hiện sớm ung thư vú
Ung thư vú, một trong những loại ung thư ác tính nhất, đang đe dọa nghiêm trọngđến sức khỏe thể chất và tinh thần của phụ nữ trên thế giới Tuy nhiên, bệnh này cóthể chữa được nếu được phát hiện ở giai đoạn đầu vì bệnh không di căn, do đó, tầmquan trọng của việc phát hiện sớm và cần tiến hành nghiên cứu về các dòng này.Việc phát hiện sớm ung thư mang lại nhiều lợi ích:
Tăng khả năng điều trị thành công: Khi được phát hiện ở giai đoạn đầu,
ung thư vú thường có thể được điều trị hiệu quả bằng các phương pháp nhưphẫu thuật, xạ trị, hóa trị, liệu pháp hormone
Giảm nguy cơ di căn: Ung thư vú giai đoạn đầu thường chưa di căn sang
các bộ phận khác của cơ thể, do đó, việc điều trị sẽ có hiệu quả cao hơn
Cải thiện chất lượng cuộc sống: Phát hiện sớm ung thư vú giúp giảm bớt
gánh nặng tâm lý cho người bệnh và gia đình, đồng thời giúp họ có thể tiếptục sống một cuộc sống bình thường
2 Mục đích của báo cáo: phân tích bộ dữ liệu chẩn đoán ung thư vú Wisconsin để cải thiện chẩn đoán
Bộ dữ liệu chẩn đoán ung thư vú Wisconsin là một tập dữ liệu công khaibao gồm thông tin về các bệnh nhân ung thư vú và các đặc điểm mô họccủa khối u Bộ dữ liệu này là một công cụ có giá trị cho các nhà nghiêncứu nhằm phát triển và đánh giá các phương pháp chẩn đoán và điều trịung thư vú
Mục đích của báo cáo này là sử dụng các kỹ thuật Phân tích dữ liệu khámphá (EDA) để phân tích Bộ dữ liệu chẩn đoán ung thư vú Wisconsin Việcphân tích này sẽ giúp:
Hiểu rõ hơn về các đặc điểm của ung thư vú
Xác định các yếu tố nguy cơ ung thư vú
Phát triển các mô hình dự đoán ung thư vú
Cải thiện độ chính xác của chẩn đoán ung thư vú
II Tổng quan về Bộ dữ liệu chẩn đoán ung thư vú
1 Mô tả các tính năng và biến trong bộ dữ liệu
4
Trang 5a) Khám phá dữ liệu
Bộ dữ liệu này có được bằng cách phân tích các đặc điểm nhân tế bào của 569hình ảnh thu được bằng phương pháp chọc hút bằng kim mịn đối với khối vú.Mỗi hình ảnh được phân loại (chẩn đoán) là “Lành tính - Benign” hoặc “Ác tính
- Malignant”
Để có thể tiến hành phân tích được bộ dữ liệu trên chúng ta cần dùng một số thưviện trong Python giúp chúng ta có thể phân tích dễ dàng phân tích dữ liệu vàtrực quan hóa, từ đó chúng ta có thể thực hiện quá trình tiền xử lí dữ liệu và sau
đó là xây dựng các model trong Machine Learning
Các thư viện thường được dùng bao gồm:
Thư viện Numpy: NumPy cung cấp các hàm và công cụ để làm việc vớimảng và ma trận đa chiều, và được sử dụng rộng rãi trong tính toán khoahọc
Thư viện Pandas: Pandas cung cấp các cấu trúc dữ liệu và công cụ để
làm việc với dữ liệu dạng bảng (như DataFrame), giúp dễ dàng thực hiệncác thao tác xử lý dữ liệu và phân tích
Thư viện Matplotlib: Matplotlib là một thư viện trực quan hóa dữ liệu
mạnh mẽ trong Python, giúp vẽ đồ thị và biểu đồ
Thư viện Seaborn: Seaborn là một thư viện trực quan hóa dữ liệu dựa
trên Matplotlib, cung cấp các giao diện cao cấp để vẽ các biểu đồ thống
kê phức tạp một cách dễ dàng và thuận tiện
Chú thích : %matplotlib inline: câu lệnh này chỉ định rằng các biểu đồ được vẽbằng Matplotlib sẽ được hiển thị trực tiếp trong notebook (hoặc môi trường sửdụng Jupyter) mà không cần gọi hàm plt.show()
Dữ liệu chẩn đoán ung thư vú Wisconsin được lưu dưới file “data.csv”Tập dữ liệu mô tả: Có mười đặc điểm có giá trị thực được tính toán cho mỗinhân tế bào ung thư:
radius (mean of distances from center to points on the perimeter):
texture (standard deviation of gray-scale values)
perimeter
area
5
Trang 6 smoothness (local variation in radius lengths)
compactness (perimeter² / area — 1.0)
concavity (severity of concave portions of the contour)
concave points (number of concave portions of the contour)
symmetry
fractal dimension (“coastline approximation” — 1)
Để tiến hành phân tích tập dữ liệu đã cho chúng ta làm theo các bước:
Bước 1: Đọc dữ liệu vào DataFrame
df = pd.read_csv(' /input/breast-cancer-wisconsin-data/data.csv')
Bước 2: Hiển thị dữ liệu dưới dạng bảng
df.head() –không chỉ định tham số cho hàm head() mặc định sẽ hiển thị
Trang 7Các kiểu dữ liệu trả về cho các cột bao gồm: float(31), int(1),object(1)
Bước 5: Lấy tên các cột có trong tệp dữ liệu
df.columns
Chú thích:
diagnosis: Kết quả chẩn đoán (lành tính hoặc ác tính)
radius_mean: Bán kính trung bình của nhân
texture_mean: Kết cấu trung bình của nhân
perimeter_mean: Chu vi trung bình của nhân
area_mean: Diện tích trung bình của nhân
7
Trang 8 smoothness_mean: Độ mịn trung bình của nhân.
compactness_mean: Độ chặt chẽ trung bình của nhân
concavity_mean: Độ lõm trung bình của nhân
concave points_mean: Số điểm lõm trung bình của nhân
symmetry_mean: Độ đối xứng trung bình của nhân
fractal_dimension_mean: Kích thước phân số trung bình củanhân
Trong bộ dữ liệu Diagnostic DataSet Wisconsin, các cột "mean", "se" và
"worst" đại diện cho ba phần khác nhau của các đặc trưng liên quan đếnbiểu hiện của tế bào ung thư vú
"mean" (trung bình): Đây là giá trị trung bình của một đặc trưng đượctính toán từ các giá trị đo lường của nó trên một tập hợp các tế bàoung thư và cung cấp thông tin về trung tâm của phân bố các đặc trưng
"se" (độ lệch chuẩn): Đây là độ lệch chuẩn của một đặc trưng đượctính toán từ các giá trị đo lường của nó trên một tập hợp các tế bàoung thư và cung cấp thông tin về mức độ biến thiên của các đặctrưng, được sử dụng để đánh giá sự đồng đều trong dữ liệu
"worst" (tệ nhất): Đây là giá trị tệ nhất của một đặc trưng được tínhtoán từ các giá trị đo lường của nó trên một tập hợp các tế bào ungthư và cung cấp thông tin về giá trị lớn nhất của các đặc trưng trongmỗi mẫu và đánh giá tình trạng nghiêm trọng của tế bào ung thư
Bước 6: Kiểm tra các giá trị bị thiếu
df.isnull().sum()
8
Trang 9Bước 7: Xóa cột “Unamed 32” và cột “id”
Cột “ Unnamed: 32” và “id” dường như không có bất kỳ dữ liệu hữu ích
9
Trang 10nào có thể hữu ích cho việc xây dựng mô hình học máy Do đó, sẽ loại bỏ
nó trước khi phân tích sâu hơn
# dropping 'Unnamed: 32' column.
df.drop("Unnamed: 32", axis=1, inplace=True)
# dropping id column
df.drop('id',axis=1, inplace=True)
chú thích:
axis=1: chỉ định cột là giá trị cần xóa.
inplace=True: Sửa đổi DataFrame gốc tại chỗ.
Bước 8: Thống kê mô tả về dữ liệu
df.describe()
Hàm df.describe() trả về một DataFrame mới với số hàng được hiển thị ra
các thông số như giá trị trung bình, độ lệch chuẩn, min, max và tỷ lệ phần trăm của các cột.
Tóm lại sau bước khám phá và làm quen với dữ liệu, ta có thể biết được:
Hiểu biết về dữ liệu: Mô tả ngắn gọn về tập dữ liệu, bao gồm số
lượng hàng, cột, loại dữ liệu và bất kỳ đặc điểm quan trọng nào khác.
Phân phối dữ liệu: Mô tả cách dữ liệu được phân phối, bao gồm các
giá trị trung bình, trung vị, tứ phân vị và bất kỳ giá trị ngoại lệ nào.
Mối quan hệ giữa các biến: Xác định bất kỳ mối quan hệ hoặc
tương quan nào giữa các biến khác nhau trong dữ liệu.
10
Trang 11 Thiếu dữ liệu và giá trị bất thường: Ghi nhận bất kỳ giá trị thiếu
hoặc bất thường nào trong dữ liệu và đánh giá tác động tiềm ẩn của chúng đối với phân tích.
b) Trực quan hóa dữ liệu
Sau khi khám phá dữ liệu, bước tiếp theo là trực quan hóa dữ liệu Trực quanhóa dữ liệu là quá trình đại diện cho dữ liệu dưới dạng đồ họa hoặc biểu đồ để
dễ hiểu và diễn giải hơn
Trực quan hóa dữ liệu về số lượng các ca nhiễm bệnh là lành tính (B) hay
ác tính (M), sử dụng thư viện Seaborn và hàm đếm countplot():
Chú thích: M – malignant , B – Benign
Từ biểu này ta có thể thấy được trong tập dữ liệu mẫu số lượng các khối ulành tính chiếm số lượng gần gấp đôi số lượng các khối u ác tính
Trực quan hóa dữ liệu bằng Ma trận tương quan - Correlation Matrix : có thể
trực quan hóa toàn bộ dữ liệu thông qua biểu đồ nhiệt hay ma trận tương quan
thông qua hàm heatmap()
Ma trận tương quan thể hiện mối quan hệ giữa hai biến cho trước dưới dạng
ma trận Một ma trận được tô màu bằng bản đồ nhiệt như vậy sẽ giúp dễ đọchơn
Ma trận tương quan đường chéo: Vì ma trận tương quan là đối xứng nên một
11
Trang 12nửa số hệ số là dư thừa Vì vậy, ma trận tương quan đường chéo có thể được
Trang 13 Từ ma trận tương quan ta có thể thấy được:
Radius, Area and Perimeter có mối tương quan với nhau (corr>0,9), điều này
rõ ràng vì diện tích và chu vi được tính bằng các giá trị bán kính
Texture_mean and texture_worst có mối tương quan chặt chẽ với corr_value = 0,98 (texture_worst là giá trị lớn nhất trong tất cả các kết cấu).
Compactness_mean,concavity_mean,concave_points_mean cũng có mối tương quan cao với các giá trị trong phạm vi 0,7 đến 0,9.
Symmetry_mean and symmetry_worst cũng tương quan với nhau bởi các giá trị 0,7.
Fractural_dimension_mean and fractural_dimension_worst tương quan với nhau bởi giá trị 0,77
Ta tiến hành tách dữ liệu các cột thành 3 thành phần: mean, se và worst
Sau đó trực quan hóa dữ liệu cho từng thành phần:
13
Trang 15Quá trình tiền xử lý dữ liệu là một bước quan trọng trong bất kỳ dự án học máynào Nó giúp đảm bảo rằng dữ liệu ở trong một định dạng phù hợp để mô hìnhhọc máy có thể sử dụng
Quá trình tiền xử lí dữ liệu được thực hiện như sau:
- Xử lý dữ liệu đầu ra về dạng 0, 1
Xử lý dữ liệu ra là cột diagnosis có 2 dạng là B và M về 0 và 1
- Phân chia dữ liệu: chia dữ liệu thành các tập huấn luyện và tập kiểm tra
Chia bộ ra liệu thành 2 phần, 1 phần để train và 1 phần để test
Công thức chuẩn của phương pháp standardization như sau:
z = (x – u ) / s
Trong đó:
z : là giá trị mới
x : là giá trị gốc ban đầu
u : là giá trị trung bình (mean)
s : là độ lệch chuẩn
fit_transform : là sự kết hợp giữa fit và transform
+ fit: tìm hiểu các trọng số và tham số của mô hình từ
dữ liệu tập huấn luyện như là giá trí trung bình, độ lệchchuẩn
15
Trang 16+ transform: áp dụng các thông tin từ phương thức fit
để áp dụng biến đổi cho tập dữ liệu
- Các giá trị X_train và X_test được lấy từ bộ dữ liệu khi loại bỏ cột mục tiêudiagnosis bằng lệnh df.drop(‘diagnosis’, axis = 1) (trong đó axis = 1 có nghĩaxóa cột)
- Các gái trị y_train, y_test được lấy từ cột diagnosis trong bộ dữ liệu
df[‘diagnosis’]
- Ta chia bộ dữ liệu thành tỷ lệ 8:2 trong đó 80% dùng để train và 20% dùng
để test biến test_size = 0.2
- Giá trị random_state = 42: dùng để ta đánh dấu bộ dữ liệu khi chia ra sao chosau mỗi lần chạy lại đảm bảo dữ liệu chia vẫn giống nhau
16
Trang 17III Xây dựng các mô hình phân loại
1 Đánh giá hiệu suất của các mô hình phân loại:
a) K Nearest Neighbors
1 Giới thiệu:
KNN (K-Nearest Neighbors) là một trong những thuật toán học cógiám sát đơn giản nhất được sử dụng nhiều trong khai phá dữ liệu vàhọc máy Ý tưởng của thuật toán này là nó không học một điều gì từtập dữ liệu học (nên KNN được xếp vào loại lazy learning), mọi tínhtoán được thực hiện khi nó cần dự đoán nhãn của dữ liệu mới Lớp (nhãn) của một đối tượng dữ liệu mới có thể dự đoán từ cáclớp (nhãn) của k hàng xóm gần nó nhất
Giả sử ta có D là tập các dữ liệu đã được phân loại thành 2 nhãn(+) và (-) được biểu diễn trên trục tọa độ như hình vẽ và một điểm dữliệu mới A chưa biết nhãn Vậy làm cách nào để chúng ta có thể xácđịnh được nhãn của A là (+) hay (-)?
17
Trang 18Có thể thấy cách đơn giản nhất là so sánh tất cả các đặc điểm của
dữ liệu A với tất cả tập dữ liệu học đã được gắn nhãn và xem nó giốngcái nào nhất, nếu dữ liệu (đặc điểm) của A giống với dữ liệu của điểmmang nhãn (+) thì điểm A mang nhãn (+), nếu dữ liệu A giống với dữliệu nhãn (-) hơn thì nó mang nhãn (-), trông có vẻ rất đơn giản nhưng
đó là những gì mà KNN làm
Trong trường hợp của KNN, thực tế nó không so sánh dữ liệu mới(không được phân lớp) với tất cả các dữ liệu khác, thực tế nó thực hiệnmột phép tính toán học để đo khoảng cách giữa dữ liệu mới với tất cảcác điểm trong tập dữ liệu học D để thực hiện phân lớp Phép tínhkhoảng cách giữa 2 điểm có thể là Euclidian, Manhattan, trọng số,Minkowski, …
Trong báo cáo này sẽ tính khoảng cách theo công thức Euclidian:
18
Trang 19Các bước xây dựng thuật toán KNN:
1 Ta có D là tập các điểm dữ liệu đã được gắn nhãn và A là dữ liệu chưa được phân loại
2 Đo khoảng cách Euclidian từ dữ liệu mới A đến tất cả các dữ liệu khác đã được phân loại trong D
3 Chọn K (K là tham số mà bạn định nghĩa) khoảng cách nhỏ nhất
4 Kiểm tra danh sách các lớp có khoảng cách ngắn nhất và đếm số lượng của mỗi lớp xuất hiện
5 Lấy đúng lớp (lớp xuất hiện nhiều lần nhất)
6 Lớp của dữ liệu mới là lớp mà bạn đã nhận được ở bước 5
Ví dụ :
19
Trang 20Giả sử ta có tập dữ liệu D có gắn nhãn gồm 15 điểm như trên ảnh.
1 Điểm cần dự đoán nhãn A(3,9)
2 Ta tính khoảng cách từ điểm A đến các điểm dữ liệu trong D bằng công thức Euclidian
3 Ta chọn K= 5, và tìm ra 5 điểm có khoảng cách gần với điểm A nhất
4 Trong 5 điểm ta thấy có 4 điểm mang nhãn (+) và 1 điểm mang nhãn (-)
5 Vậy ta có thể đưa ra kết luận là điểm A cần dự đoán mang nhãn (+)
20
Trang 212 Triển khai:
Xây dựng model KNN tính khoảng cách bằng Euclidean:
Toàn bộ mã nguồn trên xây dựng một mô hình KNN có khả năng huấnluyện trên dữ liệu và dự đoán nhãn cho các điểm dữ liệu mới Phươngthức fit được sử dụng để đưa dữ liệu huấn luyện vào mô hình, sau đóphương thức predict được sử dụng để dự đoán nhãn cho các điểm dữ liệumới
21
Trang 22Hàm euclidean_distance để tính khoảng cách Euclidean giữa haiđiểm x1 và x2 Khoảng cách Euclidean được tính bằng cách lấy căn bậchai của tổng bình phương của hiệu của các thành phần tương ứngtrong x1 và x2.
Class KNN (K-Nearest Neighbors) triển khai thuật toán phân loại:
Phương thức init (self, k=3) được gọi khi một đối tượng KNN
được khởi tạo k là số lượng láng giềng gần nhất được sử dụngtrong quá trình dự đoán Giá trị mặc định của k là 3
Phương thức fit(self, X, y) được sử dụng để đưa dữ liệu huấn
luyện vào mô hình X là tập các điểm dữ liệu huấn luyện và y lànhãn tương ứng của các điểm dữ liệu đó
Phương thức predict(self, X) được sử dụng để dự đoán nhãn của
các điểm dữ liệu trong X Phương thức này trả về một danh sáchcác nhãn dự đoán tương ứng với các điểm dữ liệu trong X
Phương thức _predict(self, x) là một phương thức bên trong lớp
KNN và được sử dụng để dự đoán nhãn của một điểm dữ liệu x cụthể
Đầu tiên, phương thức tính toán khoảng cách giữa điểm dữ liệu x
và tất cả các điểm dữ liệu huấn luyện trong self.X_train bằng cách
số lần xuất hiện của mỗi nhãn trong k điểm gần nhất và chọn nhãn
có số lần xuất hiện nhiều nhất làm nhãn dự đoán cho x
Triển khai model KNN trên tập dữ liệu Diagnotic Wisconsin:
Bước 1: Tìm giá trị K (số láng giềng) gần nhất sao cho tỷ lệ lỗi trung bìnhthấp nhất, giá trị K này có thể được sử dụng để xây dựng mô hình KNNcuối cùng để dự đoán nhãn cho dữ liệu mới:
22