Tiểu luận môn Hệ hỗ trợ quyết định ỨNG DỤNG THUẬT TOÁN NAVIE BAYES ĐỂ DỰ ĐOÁN KHẢ NĂNG SINH VIÊN TỐT NGHIỆP - Pdf 27

H h tr ra quyt nh GVHD: PGS.TS Phỳc
MC LC

MC LC 1
LI M U 2
T VN 3
PHN I: TNG QUAN V THUT TON NAẽVE BAYES 4
I. Gi i thi u thu t toỏn Naive Bayes 4
II. nh lý Bayes v s phõn ho ch 4
1. nh lý Bayes 4
2. S phõn ho ch 5
III. B phõn l p v cỏc b c tớnh toỏn 6
1. B phõn l p Naùve Bayes 6
2. Cỏc b c tớnh toỏn 7
IV. S v c u trỳc d li u 7
1. S th c hi n 7
2. S kh i c a thu t toỏn 8
3. C u trỳc d li u 9
PHN II: DEMO NG DNG THUT TON NAẽVE BAYES D
ON KH NNG SINH VIấN TT NGHIP 10
1. Tớnh xỏc xu t 10
2. Cỏc thu t toỏn chớnh c s d ng t o Demo 11
3. Ch ng trỡnh Demo: 24
1. Túm t t k t qu t c 29
2. H ng phỏt tri n 29
TI LIU THAM KHO 30
HVTH: Nguyn Hunh Thuý Nga_MSSV: CH1301041_Lp Cao hc khúa 8Trang
1/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
LỜI MỞ ĐẦU

2/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
ĐẶT VẤN ĐỀ

Hiện nay, ở các trường Đại học, Cao đẳng tình trạng sinh viên ra trường trễ
hạn rất nhiều. Thậm chí không thể ra trường. Các giảng viên cố vấn học tập
cũng không biết căn cứ vào đâu để tư vấn cho các em về vấn đề này thật chính
xác và hiệu quả.
Ví dụ: Một sinh viên học năm cuối mà tổng điểm trung bình chỉ 1,6, nợ
môn , học lực kém ….
Một sinh viên năm cuối điểm trung bình 1,85, học lực trung bình, hình
thức đào tạo liên thông…
Những trường hợp này có thể ra trường không? Giảng viên cố vấn phải
quyết định tư vấn thế nào? Sinh viên phải quyết định ra sao? Học tiếp hay
chuyển điểm sang hình thức đào tạo thấp hơn phù hợp với năng lực?
Từ thực tế đó đòi hỏi phải có 1 phần mềm dự đoán tương đối chính xác khả
năng sinh viên tốt nghiệp. Để góp phần cho giảng viên cố vấn học tập có thể đưa
ra quyết định tư vấn chính xác, sinh viên có thể đưa ra quyết định đúng đắn hơn.
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
3/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
PHẦN I: TỔNG QUAN VỀ THUẬT TOÁN NAÏVE BAYES
I. Giới thiệu thuật toán Naive Bayes
Naive Bayes (NB) là phương pháp phân loại dựa vào xác suất được sử
dụng rộng rãi trong lĩnh vực máy học của [Good,1965] [Mitchell, 1996]
[Joachims, 1997] [Jason, 2001], được sử dụng lần đầu tiên trong lĩnh vực phân
loại bởi Maron vào năm 1961 [Maron, 1961] sau đó trở nên phổ biến dùng
trong nhiều lĩnh vực như trong các công cụ tìm kiếm [Rijsbergen et al, 1970],

P(E|H): Xác suất có điều kiện của việc quan sát được dữ liệu E nếu biết
giả thuyết (phân loại) H là đúng.
Với một tập giải thuyết các (phân lớp) H, là hệ thống học sẽ tìm ra giả
thuyết có thể xảy ra nhất.
Giả thuyết h này là giải thuyết có xác suất hậu nghiệm cực đại được tính
theo định lý Bayes như sau:
Do P(E) là như nhau với giả thuyết h
2. Sự phân hoạch
Cho H1, H2, …, Hn là một phân hoạch không gian mẫu M và A là biến cố
bất kỳ trong M. Ta có:
( )
0
( )( | )
n
i
P A P Hi A Hi
=
=

Các xác suất P(Hi) và P(A|Hi) thường được biết trước khi thực hiện phép
thử và được gọi là xác suất tiền nghiệm ( apriori probability). Xác suất P(A|Hi)
cho biết khả năng tham gia của Hi vào việc xảy ra biến cố A. Xác suất P(A|Hi)
được gọi là xác suất hậu nghiệm ( a posteriori probability). Có thể tính các xác
suất hậu nghiệm từ các xác suất tiền nghiệm theo công thức sau:
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
5/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
( ) ( | )
( | )

i n i
MAP v V
n
P v P a a a v
V
P a a a

=

1 2
max ( ) ( , , , | )
i n i
P v P a a a v=
(4.1)
Trong công thức trên có hai số hạng cần quan tâm là P(v1) và P(a1,a2,…,an).
Ta tính P(vj) bằng cách đếm số lần xuất hiện của giá trị đích vj trong tập học. Để
tính P(a1,a2,…,an) ta giả thuyết ban đầu các thuộc tính là độc lập. Nói cách
khác, xác suất của một thể hiện quan sát được <a1, a2, …, an> trên mỗi lớp vj là
tích của các khả năng của từng thuộc tính riêng biệt trên vj.
1 2
( , , , | ) ( | )
n
i i i
i
P a a a v P a v=

Do vậy, công thức (4.1) được viết lại là:
max ( ) ( | )
NB vi V i i i
i

Tính xác suất của mẩu tin trong tập dữ liệu kiểm thử theo phân lớp Yes (Có)
và tinh xác suất của mẩu tin trong tập dữ liệu kiểm thử theo phân lớp No
(Không).
So sánh 2 kết quả:
Nếu xác suất dự báo mẩu tin cho lớp Yes (Có) lớn hơn lớp No (Không) thì
Naive Bayes gán cho lớp Yes (Có).
Nếu xác suất dự báo mẩu tin cho lớp No(Không) lớn hơn lớp Yes(Có) thì
Naive Bayes gán cho lớp No(Không).
IV. Sơ đồ và cấu trúc dữ liệu
1. Sơ đồ thực hiện
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
7/30

CÁC BƯỚC XỬ LÝ
ĐẦU
VÀO
ĐẦU
RA
Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
2. Sơ đồ khối của thuật toán
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
8/30

X=(x1,x2, , xn)…
P(y), P(N)
P(X/P(Y)) P(X/P(N))
P(X/P(Y)) >
P(X/P(N)) = ?
P(X/P(Y))=0
hoặc


Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
PHẦN II: DEMO ỨNG DỤNG THUẬT TOÁN NAÏVE BAYES ĐỂ DỰ
ĐOÁN KHẢ NĂNG SINH VIÊN TỐT NGHIỆP
1. Tính xác xuất
Xét bảng dữ liệu sau đây thông qua việc xét một sinh viên đại học năm 4 có
khả năng tốt nghiệp không?
Cho tập dữ liệu traning như sau:
Hoc_luc_nam_HT Loai_hinh_DT Do_Tuoi no_mon Tot_nghiep
Gioi Chinh_Quy Dung_Tuoi Co No
Gioi Chinh_Quy Dung_Tuoi Khong No
Kha Chinh_Quy Dung_Tuoi Co Yes
Trung_Binh Lien_Thong Dung_Tuoi Co Yes
Trung_Binh
Lien_thong_tu_x
a Lon_tuoi Co Yes
Trung_Binh
Lien_thong_tu_x
a Lon_tuoi Khong No
Kha
Lien_thong_tu_x
a Lon_tuoi Khong Yes
Gioi Lien_Thong Dung_Tuoi Co No
Gioi
Lien_thong_tu_x
a Lon_tuoi Co Yes
Trung_Binh Lien_Thong Lon_tuoi Co Yes
Gioi Lien_Thong Lon_tuoi Khong Yes
Kha Lien_Thong Dung_Tuoi Khong Yes
Kha Chinh_Quy Lon_tuoi Co Yes

phân phối chuẩn (GAUSS). Công thức tính xác suất dựa trên hàm mật độ xác
suất.
2. Các thuật toán chính được sử dụng để tạo Demo
 Thuật toán tính xác xuất No cho dữ liệu liên tục
public double TinhNoNumFc (int _va,
DevExpress.XtraGrid.Views.Grid.GridView gvi)
{
double[] countStr; double[] countNum;
int k; double f;
int tlyes = 0;
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
11/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
int m = gvi.Columns.Count;
int n = dt.Rows.Count;
countStr = new double[arrM_Str.Count];
for (int i = 0; i < arrM_Str.Count; i++)
{
k = 0; tlyes = 0;
for (int j = 0; j < n; j++)
{
if (((RemoveSign4VietnameseString(CutStr(dt.Rows[j][m -
1].ToString())) == "khong") ||
(RemoveSign4VietnameseString(CutStr(dt.Rows[j][m - 1].ToString())) ==
"no")) && (RemoveSign4VietnameseString(CutStr(dt.Rows[j]
[(int)arrM_Str[i]].ToString())) ==
(RemoveSign4VietnameseString(CutStr(gvi.GetRowCellDisplayText(_va,
gvi.Columns[(int)arrM_Str[i]]).ToString())))))
{


Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
{
tlyes_Num++;
_total += double.Parse(dt.Rows[j]
[(int)arrM_Num[i]].ToString());
}
}

_mi = (double)_total / tlyes_Num;
for (int j = 0; j < n; j++)
{
if ((RemoveSign4VietnameseString(CutStr(dt.Rows[j][m -
1].ToString())) == "khong") ||
(RemoveSign4VietnameseString(CutStr(dt.Rows[j][m - 1].ToString()))==
"no"))
{
_tamro += (Math.Abs((double.Parse(dt.Rows[j]
[(int)arrM_Num[i]].ToString()) - _mi)) * Math.Abs((double.Parse(dt.Rows[j]
[(int)arrM_Num[i]].ToString()) - _mi)));
}
}
_ro = Math.Sqrt((double)_tamro / (tlyes_Num - 1));
// f = (1 / (Math.Sqrt(2 * Math.PI) * _ro)) * (Math.Pow(Math.E, ((-
(66 - _mi) * (double.Parse(gvi.GetRowCellDisplayText(_va,
gvi.Columns[(int)arrM_Num[i]]).ToString()) - _mi)) / (2 * _ro * _ro))));
f = (1 / (Math.Sqrt(2 * Math.PI) * _ro)) * (Math.Pow(Math.E, (-
((double.Parse(gvi.GetRowCellDisplayText(_va,
gvi.Columns[(int)arrM_Num[i]]).ToString()) - _mi) *
(double.Parse(gvi.GetRowCellDisplayText(_va,

double[] count;
int k;
int tlyes = 0;
int m = gvi.Columns.Count;//số cột của test
int n = dt1.Rows.Count;
count = new double[m];
for (int i = 0; i < m - 1; i++)
{
k = 0; tlyes = 0;
for (int j = 0; j < n; j++)
{
if (((RemoveSign4VietnameseString(CutStr(dt1.Rows[j][m -
1].ToString()))== "khong") ||
(RemoveSign4VietnameseString(CutStr(dt1.Rows[j][m - 1].ToString())) ==
"no")) && (RemoveSign4VietnameseString(CutStr(dt1.Rows[j]
[i].ToString()))==
(RemoveSign4VietnameseString(CutStr(gvi.GetRowCellDisplayText(_va,
gvi.Columns[i]).ToString())))))
{
k++;
}
if ((RemoveSign4VietnameseString(CutStr(dt1.Rows[j][m -
1].ToString())) == "khong") ||
(RemoveSign4VietnameseString(CutStr(dt1.Rows[j][m - 1].ToString())) ==
"no"))
{
tlyes++;
}
}
count[i] = (double)k / tlyes;

for (int j = 0; j < n; j++)
{
if (((RemoveSign4VietnameseString(CutStr(dt.Rows[j][m -
1].ToString()))== "co") || (RemoveSign4VietnameseString(CutStr(dt.Rows[j]
[m - 1].ToString())) == "yes")) &&
(RemoveSign4VietnameseString(CutStr(dt.Rows[j]
[(int)arrM_Str[i]].ToString())) ==
(RemoveSign4VietnameseString(CutStr(gvi.GetRowCellDisplayText(_va,
gvi.Columns[(int)arrM_Str[i]]).ToString())))))
{
k++;
}
if ((RemoveSign4VietnameseString(CutStr(dt.Rows[j][m -
1].ToString())) == "co") ||
(RemoveSign4VietnameseString(CutStr(dt.Rows[j][m - 1].ToString())) ==
"yes"))
{
tlyes++;
}
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
15/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
}
countStr[i] = (double)k / tlyes;
}
int t = tlyes;
int tlyes_Num;
double _total;
double _mi = 1;

}
_ro = Math.Sqrt((double)_tamro / (tlyes_Num - 1));
f = (1 / (Math.Sqrt(2 * Math.PI) * _ro)) * (Math.Pow(Math.E, (-
((double.Parse(gvi.GetRowCellDisplayText(_va,
gvi.Columns[(int)arrM_Num[i]]).ToString()) - _mi) *
(double.Parse(gvi.GetRowCellDisplayText(_va,
gvi.Columns[(int)arrM_Num[i]]).ToString()) - _mi)) / (2 * _ro * _ro))));
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
16/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
// MessageBox.Show("tim '-66-' " +
gvi.GetRowCellDisplayText(_va,
gvi.Columns[(int)arrM_Num[i]]).ToString());
// MessageBox.Show("Yes" + f);
countNum[i] = f;
}
double gtyes = 1;
for (int i = 0; i < arrM_Str.Count; i++)
{
gtyes = (double)gtyes * (double)countStr[i];
}
gtyes = (double)gtyes * (double)((double)t / dt.Rows.Count);
for (int i = 0; i < arrM_Num.Count; i++)
{
gtyes = (double)gtyes * (double)countNum[i];
} //MessageBox.Show("Yes"+gtyes);
if (!IsNumber(gtyes.ToString()))
{
gtyes = 0;

(RemoveSign4VietnameseString(CutStr(gvi.GetRowCellDisplayText(_va,
gvi.Columns[i]).ToString())))))
{
k++;
}
if ((RemoveSign4VietnameseString(CutStr(dt1.Rows[j][m -
1].ToString()) )== "co") ||
(RemoveSign4VietnameseString(CutStr(dt1.Rows[j][m - 1].ToString())) ==
"yes"))
{
tlyes++;
}
}
// MessageBox.Show(""+(double)k / tlyes);
count[i] = (double)k / tlyes;
}
int t = tlyes;
double gtyes = 1;
for (int i = 0; i < m - 1; i++)
{
gtyes = (double)gtyes * (double)count[i];
}
// MessageBox.Show("Là yes" + gtyes);
gtyes = (double)gtyes * (double)((double)t / dt1.Rows.Count);
// MessageBox.Show("Là yes"+gtyes);
//lblpyes.Text = String.Format("{0:0.000000000000}", gtyes);
return gtyes;
}
 Thuật toán xãc định phân lớp Yes(Có) No(Không) cho từng
dòng dữ liệu dung trong tính Confusion Maxtrix

{
if (check_NumCol(dttemp, gridViLabel.FocusedRowHandle)
== false)
{
for (int i = 0; i < dt1.Rows.Count; i++)
{
count1 = 0; count2 = 0; count3 = 0; count4 = 0;
for (int k = 0; k < dttemp.Rows.Count; k++)
{
if
(((RemoveSign4VietnameseString(CutStr(dttemp.Rows[k][n -
1].ToString())) == "co") || (CutStr(dttemp.Rows[k][n - 1].ToString()) ==
"yes")) && (CutStr(dttemp.Rows[k]
[gridViLabel.FocusedRowHandle].ToString()) == CutStr(dt1.Rows[i]
[0].ToString())))
count1++;
if
((RemoveSign4VietnameseString(CutStr(dttemp.Rows[k][n - 1].ToString()))
== "co") || (CutStr(dttemp.Rows[k][n - 1].ToString()) == "yes"))
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
19/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
count3++;
if
((RemoveSign4VietnameseString(CutStr(dttemp.Rows[k][n - 1].ToString()))
== "khong") || (CutStr(dttemp.Rows[k][n - 1].ToString()) == "no"))
count4++;
}
s = int.Parse(dt1.Rows[i][1].ToString()) - count1;

}
}
_mi = (double)_total / tlyes_Num;
for (int l = 0; l < dttemp.Rows.Count; l++)
{
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
20/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
if
((RemoveSign4VietnameseString(CutStr(dttemp.Rows[l][n - 1].ToString()))
== "co") || (RemoveSign4VietnameseString(CutStr(dttemp.Rows[l][n -
1].ToString())) == "yes"))
{
_tamro +=
(Math.Abs((double.Parse(dttemp.Rows[l]
[gridViLabel.FocusedRowHandle].ToString()) - _mi)) *
Math.Abs((double.Parse(dttemp.Rows[l]
[gridViLabel.FocusedRowHandle].ToString()) - _mi)));
}//MessageBox.Show("ro" + (double)_tamro);
}
if (tlyes_Num - 1 != 0)
_ro = Math.Sqrt((double)_tamro / (tlyes_Num -
1));
else
_ro = 0;

int tlyes_NumNo;
double _totalNo;
double _mino;

Math.Abs((double.Parse(dttemp.Rows[l]
[gridViLabel.FocusedRowHandle].ToString()) - _mino)));
}
}
ro_no = Math.Sqrt((double)_tamro_no /
(tlyes_NumNo - 1));
// nếu chữ có hoặc ko thì chưa làm được
if
((RemoveSign4VietnameseString(gridVi_InPut.GetRowCellDisplayText(0,
gridVi_InPut.Columns[0])) == "no") ||
((RemoveSign4VietnameseString(gridVi_InPut.GetRowCellDisplayText(0,
gridVi_InPut.Columns[0])) == "yes")))
{
dtnum.Rows.Add("Minimum",
TimMin(gridVi_InPut, dt.Rows.Count, gridViLabel.FocusedRowHandle),
TimMinDK(gridVi_InPut, dt.Rows.Count, gridViLabel.FocusedRowHandle,
"yes"), TimMinDK(gridVi_InPut, dt.Rows.Count,
gridViLabel.FocusedRowHandle, "no"));
dtnum.Rows.Add("Maximum",
TimMax(gridVi_InPut, dt.Rows.Count, gridViLabel.FocusedRowHandle),
TimMaxDK(gridVi_InPut, dt.Rows.Count, gridViLabel.FocusedRowHandle,
"yes"), TimMaxDK(gridVi_InPut, dt.Rows.Count,
gridViLabel.FocusedRowHandle, "no"));
}
else
{
dtnum.Rows.Add("Minimum",
TimMin(gridVi_InPut, dt.Rows.Count, gridViLabel.FocusedRowHandle),
TimMinDK(gridVi_InPut, dt.Rows.Count, gridViLabel.FocusedRowHandle,
"Co"), TimMinDK(gridVi_InPut, dt.Rows.Count,

[n - 1].ToString())) == "khong") ||
(RemoveSign4VietnameseString(CutStr(dt.Rows[k][n - 1].ToString())) ==
"no")))
count2++;
}
s = int.Parse(dt1.Rows[dt1.Rows.Count - 1][1].ToString())
- count1;
dt2.Rows.Add("YES(CÓ)", count1, count1, "", count1 + "/"
+ dttemp.Rows.Count, "");
dt2.Rows.Add("NO(KHÔNG)", count2, "", count2, "",
count2 + "/" + +dttemp.Rows.Count);
gridView3.Columns.Clear();
grid_child_label.DataSource = dt2.DefaultView;
}
catch
{
MessageBox.Show("vui lòng kiểm tra lại kiểu dữ liệu! ");
}
}
}
catch (Exception ex)
{
HVTH: Nguyễn Huỳnh Thuý Nga_MSSV: CH1301041_Lớp Cao học khóa 8Trang
23/30

Hợ hỗ trợ ra quyết định GVHD: PGS.TS Đỗ Phúc
MessageBox.Show(ex.Message.ToString());
}
}
}


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status