3.3.1. Biểu đồ phân rã chức năng
Hình 19: Biểu đồ phân rã chức năng
Với một hệ thống có khả năng học, suy diễn, mà trong khuôn khổ luận văn đó là bài toán hỗ trợ chẩn đoán bệnh về tuyến giáp. Chương trình được thiết kế với 3 chức năng chính đó là: chức năng huấn luyện tham số, chức năng kiểm tra và chức năng chẩn đoán bệnh dựa trên các chỉ số xét nghiệm của bệnh nhân.
Hệ thống được phân rã với 3 chức năng chính nhằm mục đích: + Mô tả tường minh các chức năng
+ Các chức năng được vận hành độc lập, thể hiện được mục đích của luận văn + Xây dựng tri thức từ chức năng huấn luyện
+ Đánh giá được khả năng xử lý của hệ thống thông qua chức năng kiểm tra. + Chẩn đoán bệnh qua chức năng thứ ba.
Cụ thể nhƣ sau:
57
Mục đích: Dựa vào bộ dữ liệu đầu vào, hệ thống thực hiện sinh các tập luật và các độ thuộc tương ứng
- Chức năng kiểm tra: Từ bộ dữ liệu cần chẩn đoán, dựa vào các luật đã có, thực hiện quá trình suy diễn đưa ra kết quả đầu ra, để trợ giúp chẩn đoán bệnh và đánh giá mức độ tính toán chính xác của ứng dụng.
- Chức năng Chẩn đoán 1 mẫu bệnh: Người dùng nhập các chỉ số xét nghiệm làm đầu vào. Ứng dụng sẽ thực hiện suy diễn để đưa ra gợi ý chẩn đoán bệnh.
58
3.3.2. Biểu đồ mức khung cảnh
Tương tác giữa người dùng với hệ thống được thể hiện qua biểu đồ tương tác sau đây:
Hình 20: Biểu đồ mức khung cảnh:
3.3.3. Xây dựng các Module của chƣơng trình
Phần này mô tả các modul trong chương trình đã được cài đặt.
Dựa trên sơ đồ khối trong hình 9. Luận văn sẽ trình bày chi tiết việc xây dựng các Module chương trình theo các mục sau:
3.3.3.1. Pha 1.
Chuẩn hoá dữ liệu đầu vào: sử dụng lớp
public class standard
{
public struct BoundValues
{
public BoundValues( decimal maxTshIndex, decimal minTshIndex,
decimal maxT3Index, decimal minT3Index, decimal maxT4Index,
decimal minT4Index): this(){} ...
}
public standard( decimal w_TshIndex, decimal w_T3Index,
decimal w_T4Index) {
59
}
public Pattern[] Normalize( Pattern[] patterns ) { ... return normalizedPatterns.ToArray(); } } Sinh luật: Lớp Rule
public class Rule
{ ....
public Rule( int i, int j, int m, int n, Categories c, decimal cf ) { ... } } Lớp sinh luật
public static class RuleCreator
{
public static Rule[] Create(Pattern[] patterns, int k) {
...
List<Rule> rules = new List<Rule>(); ...
return rules.ToArray(); }
public static decimal CalculateDependencyValue(int k, int i,
decimal propertyValue) {
....
return dothuoc > 0 ? dothuoc : 0; }
}
3.3.3.2. Pha 2
Xây dựng cấu trúc đại số gia tử
Hàm dấu
private string getSign(string newHedge, string nextHedge, string Sign) { string result = ""; switch (newHedge) { ... return result; }
60
}
Chuyển tập mờ loại 1 thành tập mờ loại hai Đại số gia tử
private HI convertToHA(double l, double r) { HI tmpHI=new HI(); double v = 0; string FinalHA = ""; ... return tmpHI; } ...
Suy diễn trên HaT2FS
public static class HedgeAlgrbra
{
public void initVOL() {
double alpha = 0;
for (int i = 0; i < numNegative; i++) alpha += hedge[i].measure;
//calculate vol[0] negativew
VOL* temp = (VOL*)malloc(sizeof(VOL));
temp->sig = false; temp->fm = generator[0].fm; temp->fmLeft = 0; temp->fmRight = generator[0].fm;
temp->v = (1 - alpha) * generator[0].fm; //temp->next = NULL;
temp->length = 0; temp->generator = false; volFalse[0] = temp;
//calculate vol[1] positive
temp = (VOL*)malloc(sizeof(VOL));
temp->sig = true; temp->fm = generator[1].fm; temp->fmLeft = generator[0].fm; temp->fmRight = 1;
temp->v = (1 + alpha) * generator[0].fm; //temp->next = NULL;
temp->length = 0; temp->generator = true; volTrue[0] = temp;
... }
}
3.4. Môi trƣờng và công cụ phát triển
- Môi trường .NET 3.5 SP1
- Ngôn ngữ lập trình C# (Xây dựng ứng dụng Version 1.0) và C++ (Xây dựng Version 2.0) được lựa chọn để tiến hành cài đặt chương trình.
- Môi trường .NET có nhiều ưu điểm nổi bật:
Cung cấp môi trường phát triển ứng dụng nhanh Thư viện hỗ trợ đa dạng đầy đủ.
61 Mã nguồn rõ ràng, dễ bảo trì Cơ chế quản lý tài nguyên an toàn Giao diện thân thiện với người sử dụng.
- Chương trình ứng dụng được xây dựng trên cơ sở lập trình ứng dụng Windows Forms Application.
- Nền tảng giao diện người dùng của chương trình là các Form
- Các thiết kế sử dụng giao diện đồ họa thân thiện – dễ sử dụng với người dùng.
3.5. Thiết kế giao diện, hệ thống tab chức năng của chƣơng trình trình
3.5.1. Giao diện chính
Ứng dụng gồm 2 cửa sổ chính:
Màn hình xây dựng các luật
62
Hình 20: Màn hình chẩn đoán bệnh
3.5.2. Các chức năng của hệ thống
63
Bƣớc 1: Nhấn nút chọn file huấn luyên, có thể sử dụng chức năng tương tự trong
Menu File
Bƣớc 2: Đọc dữ liệu đầu vào ( Có thể sử dụng chức năng trong Menu Option
Bƣớc 3: Tạo tập luật ( Cũng có thể sử dụng chức năng Genrule trong Menu Option
để tạo luật)
(ii) Chức năng chẩn đoán bệnh, phân loại các mẫu bệnh
Sau khi tạo xong các tập luật, hệ thống thực hiện chuyển sang cửa sổ chẩn đoán bệnh.
Người dùng có thể thực hiện được 2 chức năng, một là có thể thực hiện phân loại các mẫu bệnh đầu vào để xác định bệnh của tập dữ liệu test. Hai là người dùng có thể thực hiện việc chẩn đoán bệnh cho 01 bệnh nhân dựa trên việc nhập các thông số xét nghiệm của người bệnh này vào rồi thực hiện việc chẩn đoán
64
Hình 21(b)
Hình 21(a) và Hình 21(b): Các Tab trong chức năng chẩn đoán.
[1A]: Nhập File dữ liệu đầu vào cần chẩn đoán
[2A]: Phân loại bệnh, hệ thống sẽ thực hiện tính toán và đưa ra các chẩn đoán với tập các mẫu bệnh đầu vào
[1B]: Nhập các chỉ số xét nghiệm của 1 bệnh nhân
[2B]: Nhấn nút chẩn đoán để đưa ra hỗ trợ chẩn đoán của hệ thống.
3.6. Kết luận
Chương này đã trình bày những kiến thức về bệnh tuyến giáp, tính thời sự của nó, đó là điều thôi thúc tác giả xây dựng ứng dụng dựa trên các nghiên cứu. Bộ dữ được nêu rõ nguồn gốc và cách thức xác định nên nó. Trong chương này cũng trình bày chi tiết các biểu đồ chức năng, biểu đồ mức khung cảnh, phân tích và thiết kế giao diện người dùng và các chức năng của ứng dụng cũng như các hàm tính toán tiêu biểu trong ứng dụng. Giao diện chương trình được thiết kế đơn giản, dễ thao tác, thân thiện với người dùng. Trong chương tiếp theo, luận văn sẽ trình bày các kết quả đạt được và đánh giá, những tồn đọng cũng như định hướng phát triển.
65
CHƢƠNG 4: KẾT QUẢ VÀ ĐÁNH GIÁ 4.1. Các kết quả đạt đƣợc
Bộ dữ liệu: Bộ dữ liệu đầu vào gồm 03 thuộc tính là các chỉ số xét nghiệm tuyến giáp: TSH, T3, T4.
Xây dựng được thành công ứng dụng thử nghiệm vào thực tế nơi tác giả công tác để hỗ trợ công tác chẩn đoán bệnh tuyến giáp dựa trên hệ logic mờ loại hai đại số gia tử. Hệ thống có khả năng học tri thức từ bộ dữ liệu huấn luyện. Xây dựng chức năng phân loại nhóm bệnh dựa trên các giải thuật phân loại. Từ đó đánh giá khả năng phân loại của hệ thống so với hệ thống phân loại dựa trên hệ logic mờ loại 1.
4.2. Đánh giá kết quả
Với một ứng dụng trong thực tế, để triển khai hệ thống, trước hết hệ thống cần phải được kiểm thử, đánh giá các sai số cũng như hiệu năng của hệ thống có đáp ứng được nhu cầu thực tế hay không, các sai số có trong giới hạn cho phép hay không.
Do đó, để đánh giá khả năng khái quát hóa của hệ thống với các mẫu test độc lập ta dựa trên 3 phương pháp:
- 2-fold cross validation (ký hiệu 2CV): Dữ liệu được chia ngẫu nhiên thành 2 phần, 1 phần training, 1 phần test lặp lại với cả 2 phần.
- Leave One Out (L1O): Dữ liệu có tổng cộng N mẫu, lấy N-1 mẫu làm training, 1 mẫu làm test. Lặp lại N lần với N mẫu test.
- Full Training, Full Test: Toàn bộ dữ liệu được lấy làm training, sau đó test cũng chính toàn bộ dữ liệu đó.
Đối với 3 kịch bản đánh giá đó, em tiến hành đánh giá sai số của hệ thống chẩn đoán cài đặt dựa trên hệ logic mờ loại 1 so với hệ logic mờ loại hai đại số gia tử.
Từ đó, đưa ra các thống kê sai số của hệ logic mờ loại hai đại số gia tử so với hệ logic mờ loại 1. Cuối cùng là chỉ ra những điểm mà hệ logic mờ loại hai đại số gia tử đã khắc phục so với hệ logic mờ loại 1.
66
4.2.1. Đánh giá dựa trên kịch bản 2CV:
Bước 1: Chia ngẫu nhiên 180 mẫu ra 2 phần, mỗi phần 90 mẫu: 90 mẫu
training, 90 mẫu test.
Bước 2: Tạo và điều chỉnh tập luật bằng 90 mẫu training, rồi thực hiện phân loại 90 mẫu test.
Bước 3: Đổi vai trò và lặp lại các thủ tục ở bước 2.
Bước 4: Tính trung bình hiệu suất phân loại Kết quả đánh giá được biểu diễn trong Bảng
Phương
pháp K=2 K=3 K=4 K=5 K=6 K=7 T1FS 67.222% 70.556% 72.778% 78.333% 81.667% 83.889% HaT2FS 84.444% 86.667% 93.889% 95.556% 94.444% 96.667%
Bảng 3: Đánh giá hiệu suất của ứng dụng dựa trên 2CV
Dựa vào bảng kết quả trên, ta thấy khả năng phân loại của hệ thống dựa trên tập mờ loại hai đại số gia tử được cải thiện đáng kể so với sử dụng tập mờ loại 1. Hiệu suất tính toán đúng của ứng dụng trên HaT2FS có thể lớn hơn trên 14% so với trên T1FS với k=2.
4.2.2. Đánh giá dựa trên kịch bản L1O:
Chọn 1 mẫu test và dùng 179 mẫu còn lại làm mẫu training.
Lặp lại quá trình này 180 lần với lựa chọn mẫu test khác nhau. Thực hiện tính hiệu suất phân loại trung bình cho những mẫu kiểm tra đó
Kết quả đánh giá được biểu diễn trong Bảng
Phương
67
T1FS 65.556% 71.667% 72.222% 75.556% 84.444% 86.111% HaT2FS 87.222% 89.444% 93.889% 97.222% 95% 96.111%
Bảng 4: Đánh giá hiệu suất của ứng dụng dựa trên L1O
Nhận thấy, hiệu suất hoạt động của hệ thống dựa trên HaT2FS là tốt hơn khi cài đặt dựa trên tập mờ loại 1. Đặt biệt, với phân vùng mờ thô (k=2,3,4) thì hiêu suất phân loại của tập mờ loại hai đại số gia tử là lớn hơn rất nhiều so với tập mờ loại 1 (k=2, hiệu suất lớn hơn ~22%).
4.2.3. Đánh giá dựa trên kịch bản Full Training, Full Test:
Toàn bộ 180 mẫu dữ liệu được lấy làm dữ liệu traning và cũng dùng luôn 180 mẫu này làm dữ liệu test.
Phương
pháp K=2 K=3 K=4 K=5 K=6 K=7 T1FS 66,667 69,444% 75% 86.111% 88.333% 89.444% HaT2FS 71.667% 83.889% 92.778% 95% 96.667% 97.222%
Số luật 8 25 44 72 89 133
Bảng 5: Đánh giá hiệu suất của ứng dụng dựa trên kịch bản Full Training, Full Test
Trong Bảng cho biết số lượng các luật không bao gồm các luật giả (những luật có kết quả phân loại là ). Dựa vào bảng trên ta rút ra kết luận hoàn toàn tương tự như hai kịch bản thử nghiệm ở trên
4.2.4. Đánh giá tổng thể
Qua 3 kịch bản thử nghiệm ta có một số nhận xét sau:
Phương pháp học dựa trên HaT2FS có khả năng học cao hơn phương pháp T1FS với tất cả các giá trị của k.
68
Hiệu suất phân loại của hệ thống được cải thiện đáng kể khi xây dựng dựa trên hệ logic mờ loại hai đại số gia tử so với tập mờ loại một. Vì thế khả năng chẩn đoán sẽ tốt hơn.
Biểu đồ dưới đây sẽ thể hiện điều đó:
Hệ logic mờ loại hai đại số gia tử đã khắc phục đươc các vấn đề của hệ logic mờ loại 1 như: Các độ thuộc trong hệ logic mờ loại hai đại số gia tử là các giá trị chân lý ngôn ngữ, với true được coi là hoàn toàn đúng, false là hoàn toàn sai, đo đó một giá trị ngôn ngữ bất kỳ được xác định tương ứng là một miền giá trị trên đoạn [0..1].
Trong suy diễn, hệ logic mờ loại hai đại số gia tử thực hiện suy diễn với các phép toán trên giá trị ngôn ngữ, do đó quá trình suy diễn là mờ, khắc phục được nhược điểm suy diễn hoàn toàn rõ trên T1FS.
Biểu diễn của HaT2FS gần với suy nghĩ của con người hơn T1FS, do đó nó dễ hiểu và trực quan.
Hệ thống trên thực tế đã hỗ trợ được người dùng (phần lớn là bác sĩ chuyên khoa nội,...) có thể chẩn đoán được loại bệnh tuyến giáp của người bệnh, trên thực tế đã được đưa vào vận hành thử nghiệm tại khoa nội tiết Bệnh viện Hữu Nghị.
60 70 80 90 100 k=2 k=3 k=4 k=5 k=6 k=7 T1FS- 2CV
69
4.3. Tồn đọng và hƣớng phát triển
Vấn đề thứ nhất, việc xây dựng tập mờ và các tập luật trong ứng dụng dựa trên phương pháp lưới mờ đơn của Ishibuchi. Nếu có nhiều lớp giá trị Max trong (2- 17) thì kết quả K
ij
C của luật mờ tương ứng với không gian con mờ K j K i A
A không được xác định duy nhất. Vì vậy K
ij
C được xác định bằng (rỗng) và thủ tục kết thúc. Những luật này được gọi là luật giả và không được sử dụng.
Xem xét thủ tục sinh luật này, ta có thể mở rộng những luật mờ ở (2-12) khi nhiều Classes có giá trị Max của CT. Giả sử Class 1 và Class 3 có giá trị Max của
CT
, trong trường hợp này chúng ta có thể tạo một luật mờ với kết quả Class 1 hoặc Class 3 thay cho một „luật giả‟. Một luật mờ với đa lớp trong kết quả có thể đem lại nhiều thông tin hữu ích. Đó có thể là hướng phát triển để xây dựng một tập luật chính xác hơn.
Hiệu năng của hệ thống vẫn chưa đạt được mức độ chính xác tuyệt đối với k=<7. Khi k ~ 14, 15 thì hiệu suất mới đạt được 100% đối với kịch bản Full test, và thời gian xử lý là tương đối lâu.
Nguyên nhân ở đây có thể do tập dữ liệu huấn luyện chưa được phong phú, vì thế hệ thống sẽ cần bổ sung thêm các mẫu huấn luyện để xây dựng tập luật chính xác hơn. Đưa ra kết quả chẩn đoán đúng 100% ở ngay những giá trị k nhỏ.
Vấn đề tiếp theo, ứng dụng hiện tại chạy độc lập, khi người dùng cần chẩn đoán bệnh thì phải thực hiện khởi tạo quá trình học dữ liệu, sau đó mới chẩn đoán bệnh được. Ứng dụng chưa kết nối được đến các hệ thống quản lý bệnh viện để lấy trực tiếp thông tin bệnh nhân, kết quả xét nghiệm về để khi cần thiết, chỉ cần nhập tên hoặc mã số bệnh nhân là có thể lấy được thông tin xét nghiệm và đưa ra được chẩn đoán
Vì vậy, hướng nghiên cứu để có thể phát triển tiếp theo đó là xây dựng được một hệ thống Client-server, để máy chủ sẽ đảm nhiệm toàn bộ chức năng học dữ liệu, lưu trữ và xử lý dữ liệu. Các máy trạm khi cần chẩn đoán bệnh chỉ cần truy cập vào User của mình để thực hiện thao tác chẩn đoán.
70
Hệ thống hoàn toàn có thể xây dựng thành một hệ chuyên gia, khi bổ sung thêm vào cơ sở dữ liệu những kiến thức cơ bản về bệnh tuyến giáp, những triệu chứng lâm sàng để hỗ trợ thêm người dùng.
Hệ thống khi được xây dựng hoàn chỉnh hoàn toàn có thể ứng dụng trên quy mô rộng, không chỉ giới hạn trong Bệnh viện Hưu Nghị, vì số lượng người mắc Bệnh về tuyến giáp là rất phổ biến, trong khi việc chẩn đoán bệnh lại gặp khá nhiều khó khăn do triệu chứng lâm sàng thường bị nhầm lẫn với các bệnh khác, cũng như số lượng bác sĩ khám bệnh am hiểu về bệnh tuyến giáp còn hạn chế.
4.4. Kết luận
Ngày nay, việc áp dụng các kỹ thuật mờ vào xây dựng các hệ thống thực tế đã giúp con người phân tích, xử lý, trích xuất ra những thông tin mới, hữu dụng trong rất nhiều lĩnh vực. Với mong muốn tìm hiểu về tập mờ, hệ logic mờ loại hai