ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÁO CÁO THU HOẠCH HỆ HỖ TRỢ RA QUYẾT ĐỊNH
NEURAL NETWORK VÀ ỨNG DỤNG HỖ TRỢ RA QUYẾT
ĐỊNH DỰ BÁO
GVHD : PGS. TS. ĐỖ PHÚC
HVTH : NGÔ VĂN LINH
MSHV : CH1301021
TP.HCM - 2014
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
MỤC LỤC
HVTH: NGÔ VĂN LINH – CH1301021 Trang 2 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
PHẦN MỞ ĐẦU
Mạng nơ-ron nhân tạo được thiết kế để mô hình một số tính chất của mạng nơ-ron sinh
học, tuy nhiên, khác với các mô hình nhận thức, phần lớn các ứng dụng lại có bản chất kỹ thuật.
Vào cuối những năm 1950, Frank Rosenblatt và một số nhà nghiên cứu khác đã phát triển một
loại mạng neutron gọi là perceptron. Đóng góp quan trọng của Rosenblatt là giới thiệu một luật
học để huấn luyện các mạng perceptron để giải quyết vấn đề nhận dạng mẫu.
Nhờ các ưu điểm như có cấu trúc xử lý song song, khả năng học và ghi nhớ, khả năng tự
tổ chức và tổng quát hóa, mạng nơ-ron nhân tạo ANN (Artificial Newal Networks) đã được
nghiên cứu và ứng dụng thành công trong rất nhiều lĩnh vực như: xấp xỉ hàm nhận dạng mẫu, dự
báo. Bài toán nhận dạng với sự trợ giúp của mạng nơ-ron ngày nay đã không còn dừng ở mức độ
nghiên cứu nữa mà nó trở thành một lĩnh vực để áp dụng thực tế. Các bài toán nhận dạng được
nghiên cứu nhiều nhất hiện nay tập trung vào nhận dạng mẫu hình học (vân tay, mặt người, hình
khối, …), nhận dạng tiếng nói và nhận dạng chữ viết. Chúng được ứng dụng rất nhiều trong các
lĩnh vực như y học, dự báo thời tiết, dự báo cháy rừng, các lĩnh vực tự động hóa như điều khiển
robot, điều khiển thiết bị bằng giọng nói,
Trong bài báo cáo này ứng dụng đơn giản mạng nơ-ron vào việc dự báo thời tiết, giúp
người sử dụng có thể ra quyết định hợp lý cho công việc của mình.
phải làm như thế nào.
Các mạng nơron xử lý thông tin theo cách thức giống như bộ não con người. Mạng được
tạo nên từ một số lượng lớn các phần tử xử lý được kết nối với nhau làm việc song song để giải
quyết một vấn đề cụ thể. Các mạng nơron học theo mô hình, chúng không thể được lập trình để
thực hiện một nhiệm vụ cụ thể. Các mẫu phải được chọn lựa cẩn thận nếu không sẽ rất mất thời
gian, thậm chí mạng sẽ hoạt động không đúng. Điều hạn chế này là bởi vì mạng tự tìm ra cách
giải quyết vấn đề, thao tác của nó không thể dự đoán được.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 4 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Các mạng nơron và các máy tính truyền thống không cạnh tranh nhau mà bổ sung cho
nhau. Có những nhiệm vụ thích hợp hơn với máy tính truyền thống, ngược lại có những nhiệm vụ
lại thích hợp hơn với các mạng nơron. Thậm chí rất nhiều nhiệm vụ đòi hỏi các hệ thống sử dụng
tổ hợp cả hai cách tiếp cận để thực hiện được hiệu quả cao nhất. (thông thường một máy tính
truyền thống được sử dụng để giám sát mạng nơron).
1.1.3 – Neural sinh học và Neural nhân tạo
a. Neural sinh học
Qua quá trình nghiên cứu về bộ não, người ta thấy rằng: bộ não con người bao gồm
khoảng 1011 nơron tham gia vào khoảng 1015 kết nối trên các đường truyền. Mỗi đường truyền
này dài khoảng hơn một mét. Các nơron có nhiều đặc điểm chung với các tế bào khác trong cơ
thể, ngoài ra chúng còn có những khả năng mà các tế bào khác không có được, đó là khả năng
nhận, xử lý và truyền các tín hiệu điện hóa trên các đường mòn nơron, các con đường này tạo nên
hệ thống giao tiếp của bộ não.
Hình 1 – Neural sinh học
Mỗi nơron sinh học có 3 thành phần cơ bản:
• Các nhánh vào hình cây ( dendrites)
• Thân tế bào (cell body)
• Sợi trục ra (axon)
Các nhánh hình cây truyền tín hiệu vào đến thân tế bào. Thân tế bào tổng hợp và xử lý
cho tín hiệu đi ra. Sợi trục truyền tín hiệu ra từ thân tế bào này sang nơron khác. Điểm liên kết
giữa sợi trục của nơron này với nhánh hình cây của nơron khác gọi là synapse. Liên kết giữa các
thể là các hàm tuyến tính hoặc phi tuyến. Việc lựa chọn hàm truyền nào là tuỳ thuộc vào từng bài
toán và kinh nghiệm của người thiết kế mạng. Một số hàm truyền thường sử dụng trong các mô
hình mạng nơron được đưa ra trong bảng 1 .
♦ Đầu ra: Là tín hiệu đầu ra của một nơron, với mỗi nơron sẽ có tối đa là một đầu ra.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 6 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Xét về mặt toán học, cấu trúc của một nơron k, được mô tả bằng cặp biểu thức sau:
(x1, wk1), (x2, wk2),…, (xp, wkp)
trong đó: x1, x2, , xp: là các tín hiệu vào; (wk1, wk2, , wkp) là các trọng số liên kết
của nơron thứ k; uk là hàm tổng; bk là một ngưỡng; f là hàm truyền và yk là tín hiệu đầu ra của
nơron.
Như vậy tương tự như nơron sinh học, nơron nhân tạo cũng nhận các tín hiệu đầu vào, xử
lý ( nhân các tín hiệu này với trọng số liên kết, tính tổng các tích thu được rồi gửi kết quả tới hàm
truyền), và cho một tín hiệu đầu ra ( là kết quả của hàm truyền).
Hàm truyền Đồ thị Định nghĩa
Symmetrical Hard Limit
(hardlims)
Linear (purelin)
Saturating Linear (satlin)
Log-Sigmoid (logsig)
1.1.4 – Giới thiệu về mạng Perceptron
a. Giới thiệu
• Perceptron là mô hình đơn giản nhất của mạng nơ- ron (chỉ có một tầng)
HVTH: NGÔ VĂN LINH – CH1301021 Trang 7 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
• Perceptron bằng một nơ- ron nhân tạo.
• Perceptron nhận tín hiệu từ dữ liệu nhập , xử lý và truyền ký hiệu ra bên ngoài
Thuật toán huấn luyện Perceptron: Thuật toán ở dạng trực tuyến (online), ta lần lượt
cung cấp cho thuật toán các mẫu học trong P, có thể lặp lại nhiều lần. Mỗi lần có mẫu học mới,
thuật toán sẽ chỉnh sửa (w, b)để cố gắng phân lớp được mẫu học này
Ta đặt e = t- a
HVTH: NGÔ VĂN LINH – CH1301021 Trang 9 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Nếu e= 1 thì : w_n = w_0 + e.p
Nếu e = -1 : w_n = w_0 + e.p
Nếu e = 0 : w_n = w_0 + e.p;
Vậy:
W_n = w_0 + ( t – a ) p
b_n = b_0 + ( t – a ) * 1
Thuật giải:
Vào: (P1, t1) (P2, t2) , (P3, t3) …(Pq, tq)
Ra : a_i = t_i với mọi i
Bước 1: Khởi tạo giá trị w (ngẫu nhiên)
Bước 2: Với mọi tín hiệu vào p_i tính : a_i (đầu ra thực tế)
Bước 3: So sánh : a_i và t_i
If ( a_i = t_i) thì w_n = w_0 (giữ nguyên trọng số)
If (a_i ≠ t_i) thì
W_n = w_0 + ( t – a ) p
B_n = b_0 + ( t – a ) * 1
Bước 4: Lặp lại bước 2, bước 3 cho đến khi a_i = t_i với mọi i.
Ví dụ: Để nhận dạng hai loại quả táo và cam qua kích thước, vỏ và cân nặng
HVTH: NGÔ VĂN LINH – CH1301021 Trang 10 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Hình 5 - Ví dụ về huấn luyện perceptron
Khởi tạo giá trị w = (0, 0, 0); b=1;
Lần 1:
P1: n = wp1 + b = (0, 0, 0) * (1, -1, -1) + 1 = 1. => a1 = 1 ≠ t1= 0
=> w= w + (0-1) p1= (0, 0, 0 ) + (-1)(1, -1, -1) = (-1, 1, 1)
b = b + ( t- a) = 1-1 =0
P2: n = wp2 + b = (-1, 1, 1) * (1, 1, -1) + 0 = -1. => a1= 0 ≠ t1= 1
♦ Đầu vào là các vector (x1, x2, , xp) trong không gian p chiều, đầu ra là các vector (y1, y2, ,
yq) trong không gian q chiều. Đối với các bài toán phân loại, p chính là kích thước của mẫu đầu vào, q
chính là số lớp cần phân loại. Xét ví dụ trong bài toán nhận dạng chữ số: với mỗi mẫu ta lưu tọa độ (x,y)
của 8 điểm trên chữ số đó, và nhiệm vụ của mạng là phân loại các mẫu này vào một trong 10 lớp tương
ứng với 10 chữ số 0, 1, …, 9. Khi đó p là kích thước mẫu và bằng 8 x 2 = 16; q là số lớp và bằng 10.
♦ Mỗi nơron thuộc tầng sau liên kết với tất cả các nơron thuộc tầng liền trước nó.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 12 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
♦ Đầu ra của nơron tầng trước là đầu vào của nơron thuộc tầng liền sau nó.
Hoạt động của mạng MLP như sau: tại tầng đầu vào các nơron nhận tín hiệu vào xử lý (tính tổng
trọng số, gửi tới hàm truyền) rồi cho ra kết quả (là kết quả của hàm truyền); kết quả này sẽ được truyền tới
các nơron thuộc tầng ẩn thứ nhất; các nơron tại đây tiếp nhận như là tín hiệu đầu vào, xử lý và gửi kết quả
đến tầng ẩn thứ 2;…; quá trình tiếp tục cho đến khi các nơron thuộc tầng ra cho kết quả.
Một số kết quả đã được chứng minh:
♦ Bất kì một hàm Boolean nào cũng có thể biểu diễn được bởi một mạng MLP 2 tầng trong đó các
nơron sử dụng hàm truyền sigmoid.
♦ Tất cả các hàm liên tục đều có thể xấp xỉ bởi một mạng MLP 2 tầng sử dụng hàm truyền
sigmoid cho các nơron tầng ẩn và hàm truyền tuyến tính cho các nơron tầng ra với sai số nhỏ tùy
ý.
♦ Mọi hàm bất kỳ đều có thể xấp xỉ bởi một mạng MLP 3 tầng sử dụng hàm truyền sigmoid cho
các nơron tầng ẩn và hàm truyền tuyến tính cho các nơron tầng ra.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 13 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
CHƯƠNG 2 – HUẤN LUYỆN VÀ XÂY DỰNG MẠNG NƠRON
2.1 – HUẤN LUYỆN MẠNG NEURAL
2.1.1 – Các phương pháp học
Khái niệm: Học là quá trình thay đổi hành vi của các vật theo một cách nào đó làm cho
chúng có thể thực hiện tốt hơn trong tương lai.
Một mạng nơron được huyấn luyện sao cho với một tập các vector đầu vào X, mạng có
khả năng tạo ra tập các vector đầu ra mong muốn Y của nó. Tập X được sử dụng cho huấn luyện
giữa giá trị đầu ra thực sự của mạng và giá trị mục tiêu tương ứng là nhỏ nhất. Chẳng hạn mạng
có thể học để xấp xỉ một hàm t = f(x) biểu diễn mối quan hệ trên tập các mẫu huấn luyện (x, t).
Như vậy với học có giám sát, số lớp cần phân loại đã được biết trước. Nhiệm vụ của thuật
toán là phải xác định được một cách thức phân lớp sao cho với mỗi vector đầu vào sẽ được phân
loại chính xác vào lớp của nó.
♦ Học không giám sát: Là việc học không cần có bất kỳ một sự giám sát nào.
Trong bài toán học không giám sát, tập dữ liệu huấn luyện được cho dưới dạng: D = {(x
1
,
x
2
, , x
N
)}, với (x
1
, x
2
, , x
N
) là vector đặc trưng của mẫu huấn luyện. Nhiệm vụ của thuật
toán là phải phân chia tập dữ liệu D thành các nhóm con, mỗi nhóm chứa các vector đầu vào có
đặc trưng giống nhau.
Như vậy với học không giám sát, số lớp phân loại chưa được biết trước, và tùy theo tiêu
chuẩn đánh giá độ tương tự giữa các mẫu mà ta có thể có các lớp phân loại khác nhau.
♦ Học tăng cường: đôi khi còn được gọi là học thưởng-phạt (reward-penalty learning), là sự tổ
hợp của cả hai mô hình trên. Phương pháp này cụ thể như sau: với vector đầu vào, quan sát vector đầu ra
HVTH: NGÔ VĂN LINH – CH1301021 Trang 14 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
do mạng tính được. Nếu kết quả được xem là “tốt” thì mạng sẽ được thưởng theo nghĩa tăng các trọng số
kết nối lên; ngược lại mạng sẽ bị phạt, các trọng số kết nối không thích hợp sẽ được giảm xuống. Do đó
• X
j
: vector đầu vào của nút thứ j
• W
j
: vector trọng số của nút thứ j
• x
ji
: đầu vào của nút thứ j từ nút thứ i
HVTH: NGÔ VĂN LINH – CH1301021 Trang 15 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
• w
ji
: trọng số trên x
ji
• b
j
: ngưỡng tại nút thứ j
• o
j
: đầu ra của nút thứ j
• t
j
: đầu ra mong muốn của nút thứ j
• Downstream(j): Tập tất cả các nút nhận đầu ra của nút thứ j làm một giá trị đầu vào.
• η: tốc độ học
• f: hàm truyền với f(x) = 1 / (1 + e
-x
)
Thuật toán lan truyền ngược được mô tả như sau:
k
= (t
k
– o
k
)(1 – o
k
)o
k
2.3 Với mỗi nút h thuộc tầng ẩn, tính δ
h
theo công thức:
δ
h
= o
h
(1 – o
h
) Σδ
k
w
kh
với k ∈ Downstream(j)
2.4 Cập nhật: w
ji
= w
ji
+ Δw
ji
thuộc một lớp hay thuộc một loại nào thì điều ta mong muốn là các lớp có cùng ảnh hưởng lên
mạng, để đạt được điều này ta có thể sử dụng mẫu phân tầng. Xét ví dụ sau[1]:
Giả sử ta xây dựng mô hình nhận dạng chữ cái viết tay tiếng Anh, và nguồn dữ liệu của ta
có 100.000 ký tự mà mỗi ký tự được kèm theo một mã cho biết nó là chữ cái nào. Chữ cái xuất
hiện thường xuyên nhất là e, nó xuất hiện 11.668 lần chiếm khoảng 12%; chữ cái xuất hiện ít
nhất là chữ z, chỉ có 50 lần chiếm 0,05%.
Trước hết do giới hạn của bộ nhớ máy tính, giả sử bộ nhớ chỉ có thể xử lý được 1300
mẫu. Ta tạo hai dạng tập mẫu: tập mẫu đại diện và tập mẫu phân tầng. Với tập mẫu đại diện, chữ
e sẽ xuất hiện 152 lần (11,67% của 1300) trong khi đó chữ z chỉ xuất hiện một lần (0,05% của
1300). Ngược lại ta có thể tạo tập mẫu phân tầng để mỗi chữ có 50 mẫu. Ta thấy rằng nếu chỉ có
HVTH: NGÔ VĂN LINH – CH1301021 Trang 17 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
thể dùng 1300 mẫu thì tập mẫu phân tầng sẽ tạo ra mô hình tốt hơn. Việc tăng số mẫu của z từ 1
lên 50 sẽ cải thiện rất nhiều độ chính xác của z, trong khi nếu giảm số mẫu của e từ 152 xuống 50
sẽ chỉ giảm chút ít độ chính xác của e.
Bây giờ giả sử ta dùng máy tính khác có bộ nhớ đủ để xử lý một lượng mẫu gấp 10 lần,
như vậy số mẫu sẽ tăng lên 13000. Rõ ràng việc tăng kích thước mẫu sẽ giúp cho mô hình chính
xác hơn. Tuy nhiên ta không thể dùng tập mẫu phân tầng như trên nữa vì lúc này ta sẽ cần tới 500
mẫu cho chữ z trong khi ta chỉ có 50 mẫu trong nguồn dữ liệu. Để giải quyết điều này ta tạo tập
mẫu như sau: tập mẫu gồm tất cả các chữ hiếm với số lần xuất hiện của nó và kèm thêm thông tin
về chữ có nhiều mẫu nhất. Chẳng hạn ta tạo tập mẫu có 50 mẫu của chữ z (đó là tất cả) và 700
mẫu của chữ e (chữ mà ta có nhiều mẫu nhất).
Như vậy trong tập mẫu của ta, chữ e có nhiều hơn chữ z 14 lần. Nếu ta muốn các chữ z
cũng có nhiều ảnh hưởng như các chữ e, khi học chữ z ta cho chúng trọng số lớn hơn 14 lần. Để
làm được điều này ta có thể can thiệp chút ít vào quá trình lan truyền ngược trên mạng. Khi mẫu
học là chữ z, ta thêm vào 14 lần đạo hàm, nhưng khi mẫu là chữ e ta chỉ thêm vào 1 lần đạo hàm.
Ở cuối thế hệ, khi cập nhật các trọng số, mỗi chữ z sẽ có ảnh hưởng hơn mỗi chữ e là 14 lần, và
tất cả các chữ z gộp lại sẽ có bằng có ảnh hưởng bằng tất cả các chữ e.
d. Chọn biến
Khi tạo mẫu cần chọn các biến sử dụng trong mô hình. Có 2 vấn đề cần quan tâm:
nhiên thì đầu ra có phân bố đối xứng). Nếu một mạng nơron không đối xứng thì giá trị đầu ra sẽ
lệch sang một bên, không phân tán lên toàn bộ miền giá trị của output. Điều này có thể làm cho
mạng rơi vào trạng thái bão hòa, không thoát ra được.
Trong thực tế người ta thường sử dụng các hàm truyền dạng – S. Một hàm s(u) được gọi
là hàm truyền dạng – S nếu nó thỏa mãn 3 tính chất sau:
– s(u) là hàm bị chặn: tức là tồn tại các hằng số C1 ≤ C2 sao cho: C1 ≤ s(u) ≤ C2 với mọi
u.
– s(u) là hàm đơn điệu tăng: giá trị của s(u) luôn tăng khi u tăng. Do tính chất thứ nhất,
s(u) bị chặn, nên s(u) sẽ tiệm cận tới giá trị cận trên khi u dần tới dương vô cùng, và tiệm cận giá
trị cận dưới khi u dần tới âm vô cùng.
– s(u) là hàm khả vi: tức là s(u) liên tục và có đạo hàm trên toàn trục số.
Một hàm truyền dạng - S điển hình và được áp dụng rộng rãi là hàm Sigmoid.
b. Xác định số nơron tầng ẩn
Câu hỏi chọn số lượng noron trong tầng ẩn của một mạng MLP thế nào là khó, nó phụ
thuộc vào bài toán cụ thể và vào kinh nghiệm của nhà thiết kế mạng. Nếu tập dữ liệu huấn luyện
được chia thành các nhóm với các đặc tính tương tự nhau thì số lượng các nhóm này có thể được
sử dụng để chọn số lượng nơron ẩn. Trong trường hợp dữ liệu huấn luyện nằm rải rác và không
chứa các đặc tính chung, số lượng kết nối có thể gần bằng với số lượng các mẫu huấn luyện để
mạng có thể hội tụ. Có nhiều đề nghị cho việc chọn số lượng nơron tầng ẩn h trong một mạng
MLP. Chẳng hạn h phải thỏa mãn h>(p-1)/(n+2), trong đó p là số lượng mẫu huấn luyện và n là
số lượng đầu vào của mạng. Càng nhiều nút ẩn trong mạng, thì càng nhiều đặc tính của dữ liệu
huấn luyện sẽ được mạng nắm bắt, nhưng thời gian học sẽ càng tăng.
Một kinh nghiệm khác cho việc chọn số lượng nút ẩn là số lượng nút ẩn bằng với số tối
ưu các cụm mờ (fuzzy clusters)[8]. Phát biểu này đã được chứng minh bằng thực nghiệm. Việc
chọn số tầng ẩn cũng là một nhiệm vụ khó. Rất nhiều bài toán đòi hỏi nhiều hơn một tầng ẩn để
có thể giải quyết tốt.
Để tìm ra mô hình mạng nơron tốt nhất, Ishikawa and Moriyama (1995) sử dụng học cấu
trúc có quên (structural leanrning with forgetting), tức là trong thời gian học cắt bỏ đi các liên kết
có trọng số nhỏ. Sau khi huấn luyện, chỉ các noron có đóng góp vào giải quyết bài toán mới được
giữ lại, chúng sẽ tạo nên bộ xương cho mô hình mạng nơron.
- Lọc và phân loại dữ liệu
1. Chuẩn đoán bệnh
2. Tìm kiếm
HVTH: NGÔ VĂN LINH – CH1301021 Trang 20 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
HVTH: NGÔ VĂN LINH – CH1301021 Trang 21 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
CHƯƠNG 3 – ỨNG DỤNG MẠNG NEURAL TRONG DỰ BÁO
3.1 – GIỚI THIỆU BÀI TOÁN
Sản phẩm được xây dựng trên ngôn ngữ lập trình Visual C# 2012. Bằng việc áp dụng giải
thuật huấn luyện Perceptron của Frank Rosenblatt, phần mềm sẽ đưa ra những câu tư vấn giúp
bạn giải quyết những băn khoăn trong quyết định nên đi ra ngoài làm việc với thời tiết được đưa
ra hay không.
Dữ liệu huấn luyện: database.mdb
Hình 8 - Dữ liệu huấn luyện
Với quyết định (được check) nghĩa là phù hợp với việc đi ra ngoài làm việc, ngược lại là
không nên.
3.2 – CÀI ĐẶT CHƯƠNG TRÌNH
Chương trình trải qua 3 bước:
Bước 1: Đọc tập dữ liệu huấn luyện
Bước 2: Học các tập huấn luyện trên đưa ra trọng số
Bước 3: Kiểm tra kết quả đưa ra quyết định của máy tính với dữ liệu mẫu được
nhập vào.
Chương trình sẽ đọc tập dữ liệu huấn luyện trên để cho máy học, kết quả sẽ được lưu
trong DataTable dt.
System.Data.DataTable dt = new DataTable();
private void cmdNapDuLieu_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(() =>
{
trong mục 1.1.3 phần c)
private void cmdHoc_Click(object sender, EventArgs e)
{
System.Threading.Thread t1 = new System.Threading.Thread(() =>
{
//Tinh dau ra cua tat ca
int kiemtra = 0, n = 0;
int[] p = new int[4];
int t = 0, a = 0, istep1 = 0;
do
{
kiemtra = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
p[0] = int.Parse(dt.Rows[i][0].ToString());
p[1] = int.Parse(dt.Rows[i][1].ToString());
p[2] = int.Parse(dt.Rows[i][2].ToString());
p[3] = int.Parse(dt.Rows[i][3].ToString());
if (dt.Rows[i][4].ToString() == "False")
t = 0;
else
t = 1;
n = nhan2matran(trongso, p) + b;
if (n >= 0)
a = 1;
else
a = 0;
if (a != t)
{
trongso = cong2matran(trongso, nhansovoimatran((t - a), p));
{
string ketquachon = "("+ cmbThoiTiet.SelectedItem.ToString() +", " +
cmbNhietDo.SelectedItem.ToString() + ", "+ cmbDoAm.SelectedItem.ToString() +"," +
cmbGio.SelectedItem.ToString() +")";
int quyetdinh = 0;
quyetdinh = trongso[0] * (cmbThoiTiet.SelectedIndex + 1) + trongso[1] *
(cmbNhietDo.SelectedIndex + 1) + trongso[2] * (cmbDoAm.SelectedIndex + 1) + trongso[3] *
(cmbGio.SelectedIndex + 1) + b;
if (quyetdinh >= 0)
{
lblKetQua.ForeColor = System.Drawing.Color.Blue;
lblKetQua.Text = "Kết quả "+ ketquachon +": Bạn có thể ra ngoài!";
}
else
{
lblKetQua.ForeColor = System.Drawing.Color.Red;
lblKetQua.Text = "Kết quả "+ ketquachon +": Bạn không nên ra ngoài!";
}
}
3.3 – KẾT QUẢ THỬ NGHIỆM
Giao diện chính của chương trình:
HVTH: NGÔ VĂN LINH – CH1301021 Trang 24 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Thao tác:
Nhấn nút Nạp dữ liệu để đọc tập dữ liệu huấn luyện từ csdl database.mdb.
Nhấn nút Huấn luyện để máy đọc các tập luật và đưa ra trọng số tương ứng.
Ở phần Thông tin quyết định cho phép bạn chọn các thông số về tình hình thời tiết hiện
tại rồi nhấn Kiểm tra, chương trình sẽ đưa ra quyết định tương ứng.
Một số kết quả kiểm tra:
HVTH: NGÔ VĂN LINH – CH1301021 Trang 25 / 27