Đại Học Quốc Gia TP.HCM
Trường Đại Học Công Nghệ Thông Tin
BÁO CÁO THU HOẠCH CHUYÊN ĐỀ:
HỆ HỖ TRỢ RA QUYẾT ĐỊNH
ĐỀ TÀI:
TÌM HIỂU LUẬT KẾT HỢP & ỨNG DỤNG TRỢGIÚP NHÀ ĐẦU TƯ
RA QUYẾT ĐỊNH TRONG THỊTRƯỜNG CHỨNG KHOÁN VIỆT NAM
GVHD: PGS.TS. Đỗ Phúc
HV thực hiện: Phan Tử Ánh
MSSV: CH1301080
TP.HCM – 2014
Báo cáo môn Hệ hỗ trợ ra quyết định Trang 2
MỤC LỤC
CHƯƠNG I. LỜI GIỚI THIỆU
Sự phát triển của công nghệ thông tin và việc ứng dụng công nghệ thông tin trong nhiều
lĩnh vực của đời sống, kinh tế xã hội trong nhiều năm qua cũng đồng nghĩa với lượng dữ
liệu đã được các cơ quan thu thập và lưu trữ ngày một tích luỹ nhiều lên,họlưu trữ các dữ
liệu này vì cho rằng trong nó ẩn chứa những giá trị nhất định nào đó. Tuy nhiên, theo
thống kê thì chỉ có một lượng nhỏ của những dữ liệu này (khoảng từ 5% đến 10%) là
luôn được phân tích, số còn lại họ không biết sẽ phải làm gì hoặc có thể làm gì với chúng
nhưng họ vẫn tiếp tục thu thập rất tốn kém với ý nghĩ lo sợ rằng sẽ có cái gì đó quan
trọng đã bị bỏ qua sau này có lúc cần đến nó. Mặt khác, trong môi trường cạnh tranh,
người ta ngày càng cần có nhiều thông tin với tốc độ nhanh để trợ giúp việc ra quyết định
và ngày càng có nhiều câu hỏi mang tính chất định tính cần phải trả lời dựa trên một khối
lượng dữ liệu khổng lồ đã có. Với những lý do như vậy, các phương pháp quản trị và khai
thác dữ liệu truyền thống ngày càng không đáp ứng được thực tế đã làm phát triển một
khuynh hướng kỹ thuật mới đó là kỹ thuật phát hiện tri thức và khai phá dữ liệu (KDD -
Knowledge Discovery and Data Mining)
Kỹ thuật phát hiện tri thức và khai phá dữ liệu đã và đang được nghiên cứu, ứng dụng
trong nhiều lĩnh vực khác nhau ở các nước trên thế giới, tại Việt Nam kỹ thuật này tương
đối còn mới mẻ tuy nhiên cũng đang được nghiên cứu và dần đưa vào ứng dụng. Bước
t
e
r
n
e
t
,
.
.
.
Dữ liệu đã chuyển đổi
Trích lọc dữ liệu
khai phá dữ liệu chỉ là một bước thiết yếu trong quá trình phát hiện tri thức trong CSDL.
Có thể nói Data Mining là giai đoạn quan trọng nhất trong tiến trình phát hiện tri thức từ
cơ sở dữ liệu, các tri thức này hỗ trợ trong việc ra quyết định trong khoa học và kinh
doanh, quá trình phát hiện tri thức tiến hành qua 6 giai đoạn như sau hình 1.1:
Hình 1.1 quá trình phát hiện tri thức
II.2. Luật kết hợp trong khai phá dữ liệu
Mục tiêu chính của khai phá dữ liệu (KPDL) là lấy được những thông tin hữu ích từ
lượng dữ liệu khổng lồ các bước chính của quá trình KPDL bao gồm:
Gom dữ liệu (Gathering): tập hợp dữ liệu là bước đầu tiên trong quá trình KPDL đây là
bước được khai thác trong một CSDL, một kho dữ liệu và thậm chí các dữ liệu từ các
nguồn ứng dụng Web.
Báo cáo môn Hệ hỗ trợ ra quyết định Trang 5
Trích lọc dữ liệu (Selection): ở giai đoạn này dữ liệu được lựa chon hoặc phân chia theo
một số tiêu chuẩn nào đó, ví dụ chon tất cả những người có tuổi đời từ hai lăm đến ba
lăm và có trình độ đại học.
Làm sạch, tiền xử lý và chuẩn bị trước dữ liệu (Cleansing, Pre-processing and
Preparation): giai đoạn thứ ba này là giai đoạn hay bị sao lãng, nhưng thực tế nó là một
bước rất quan trọng trong quá trình KPDLmột số lỗi thường mắc phải trong khi gom dữ
dữ liệu được phân loại vào hai lớp: những người không có khả năng trả nợ và những
người tình trạng vay nợ đang ở trạng thái tốt (tức là tại thời điểm đó có khả năng trả nợ
ngân hàng).
Hai mục đích chính của khai phá dữ liệu trong thực tế là dự báo và mô tả.
NîThu nhËp
Kh«ng cã kh¶
n¨ng tr¶ nî
Cã kh¶ n¨ng
tr¶ nî
Hình 1.2: Tập dữ liệu với 2 lớp: có và không có khả năng trả nợ
II.3.1 Khai phá dữ liệu dự đoán
Nhiệm vụ của khai phá dữ liệu dự đoán là đưa ra các dự đoán dựa vào các suy diễn trên
dữ liệu hiện thời,nó sử dụng các biến hay các trường trong cơ sở dữ liệu để dự đoán các
Báo cáo môn Hệ hỗ trợ ra quyết định Trang 7
giá trị không biết hay các giá trị tương laibao gồm các kỹ thuật phân loại (classification),
hồi quy (regression).
Phân loại
Mục tiêu của phương pháp phân loại dữ liệu là dự đoán nhãn lớp cho các mẫu dữ liệu,quá
trình phân loại dữ liệu thường gồm hai bước xây dựng mô hình và sử dụng mô hình để
phân loại dữ liệu.
Bước 1: Xây dựng mô hình dựa trên việc phân tích các mẫu dữ liệu cho trước mỗi mẫu
thuộc về một lớp, được xác định bởi một thuộc tính gọi là thuộc tính lớp các mẫu dữ liệu
này còn được gọi là tập dữ liệu huấn luyện. Các nhãn lớp của tập dữ liệu huấn luyện đều
Phân cụm
Mục tiêu chính của phương pháp phân cụm dữ liệu là nhóm các đối tượng tương tự nhau
trong tập dữ liệu vào các cụm sao cho các đối tượng thuộc cùng một cụm là tương đồng
còn các đối tượng thuộc các cụm khác nhau sẽ không tương đồngphân cụm dữ liệu là một
ví dụ của phương pháp học không giám sátkhông giống như phân loại dữ liệu, phân cụm
dữ liệu không đòi hỏi phải định nghĩa trước các mẫu dữ liệu huấn luyện. Vì thế, có thể
coi phân cụm dữ liệu là một cách học bằng quan sát (learning by observation), trong khi
phân loại dữ liệu là học bằng ví dụ (learning by example). Trong phương pháp này bạn sẽ
không thể biết kết quả các cụm thu được sẽ như thế nào khi bắt đầu quá trình vì vậy,
thông thường cần có một chuyên gia về lĩnh vực đó để đánh giá các cụm thu được. Phân
cụm dữ liệu được sử dụng nhiều trong các ứng dụng về phân đoạn thị trường, phân đoạn
khách hàng, nhận dạng mẫu, phân loại trang Web… ngoài ra phân cụm dữ liệu còn có thể
được sử dụng như một bước tiền xử lí cho các thuật toán khai phá dữ liệu khác.
Hình 1.4 cho thấy sự phân cụm tập dữ liệu cho vay vào trong 3 cụm: lưu ý rằng các cụm
chồng lên nhau cho phép các điểm dữ liệu thuộc về nhiều hơn một cụm.
Báo cáo môn Hệ hỗ trợ ra quyết định Trang 9Thu nhËp
Nî
Côm
1
Côm
2
Côm
3
Hình 1.4: Phân cụm tập dữ liệu cho vay vào trong 3 cụm
Tính chất 3: Các tập con của tập phổ biến cũng là tập phổ biến, nếu mục B là mục phổ
biến trên D, nghĩa là support(B)≥minsup thì mọi tập con A của B là tập phổ biến trên D
vì support(A)support(B)>minsup.
Phát hiện luật kết hợp trên hệ thống nhị phân: Độ hỗ trợ các vecto chỉ báo nhị phân cho
x1D, độ hỗ trợ của vB(X1) biểu diễn supB(vB(X1)) được định nghĩa:
Dễ thấy rằng: card(supB(vBX1))) = card(rB(X1))
Tính card(rB(S)) (lực lượng của tập hợp) cho S= {s1, s2,…,sk} là tập con của D. Trong
đó sj là bọ chỉ báo của SB, j=1k mỗi sj tương ứng với vecto chỉ báo nhị phân vB({sj})
các yếu tố của ρB(S) được tính bằng: card(ρB(S))=card(supB(vB{s1}) …supB(vB{sk})).
Phương pháp này được sử dụng rất hiệu quả trong các lĩnh vực như marketing có chủ
đích, phân tích quyết định, quản lý kinh doanh….
Báo cáo môn Hệ hỗ trợ ra quyết định Trang 11
CHƯƠNG III. MỘT SỐTHUẬT TOÁN SINH LUẬT KẾT
HỢP
III.1. Thuật toán AIS
Thuật toán do Agrwal đề nghị năm 1993. Thuật toán này chú trọng khai phá luật kết hợp
có dạng X->Y, với Y là tập hợp chỉ bao gồm một tính chất (tập hợp một phần tử) thuật
toán tìm cách xây dựng dần dần các tập ứng cử viên cho tập mục phổ biến, với cách đánh
số thứ tự tự điển cho từng tính chất, việc bổ sung phần tử cho tập ứng cử viên tránh được
trùng lặp, do vậy tiết kiệm tối đa thời gian tính toán.
Thuật toán
Input: CSDL D, minsup
Output: các tập mục phổ biến
L
1
= {các tập mục phổ biến};
for (k=2; luật kết hợp
k-1
# 0; k++) do begin
C
End
L
k
= {c C
k
|c.count minsup}
End
Trả lời =
k
L
k
;
III.2. Thuật toán SETM
Thuật toán do Houtsma đề nghị năm 1995. Thuật toán này cũng sử dụng kỹ thuật bổ sung
dần dần từng phần tử (từ tập hợp 1 phần tử) nhằm tìm kiếm các tập hợp ứng cử viên một
cải tiến đáng kể là thuật toán đề nghị lưu lại cả ID của giao dịch cùng với tập hợp ứng cử
viên. Agrwal đã chỉ ra thuật toán này không những không có phương án quản lý bộ nhớ
mà nó còn giả định nhét toàn bộ tập hợp ứng cử viên của bước trước vào bộ nhớ để bước
sau tiền bề sử dụng.
Thuật toán
Input: CSDL D, minsup
Output: Các tập mục phổ biến
L
1
= {các tập mục phổ biển};
L
’
1
= {các tập mục phổ biến cùng các TID của nó được sắp xếp theo TID};
for (k=2; luật kết hợp
End
Sort C
’
k
theo các tập mục;
Delete các mục c C
’
k
có c.count<minsup đưa vào L
’
k
;
L
k
= {<l.itemset, countof l in L
’
k
>|l L
’
k
}; // kết hợp với bước l3
Sort L
’
k
theo TID;
End
Trả lời =
k
L
k
= apriori_gen(L
k-1
, minsup);// các ứng cử mới theo chương trình con ở dưới đây.
for( ∀ giao dịch t∈ D)
{C
t
=Subset (C
k
,t);// ứng cử viên được chứa trong t
for (∀ứng cử c ∈ C
t
)
c.count ++;
}
L
k
={ c
∈
C
k
c.count
≥
minsup}
k++;}
Return L=
∪
k
L
k'
(2)&& && L
1
(k-2) == L
2
(k-2)) &&L
1
(k-1) == L
2
(k-1))
{ c= L
1
kết nối L
2
;
if( has_inrequent_subset(c,L
k-1
)) delete c;
else add c to C
k
;
}
return C
k
.}
Boolean has_infrequent_subset(c,L
k-1
)
{ for(
∀
(k-1)-subset s
k
với độ
hỗ trợ tối thiểu thì các tập con kích cỡ (k-1) cũng có độ hỗ trợ tối thiểu, do đó nếu ta mở
rộng mỗi tập trong L
k-1
với tất cả các tập mục có thể và sau đó xoá tất cả các tập mà (k-1)
– tập con của nó không nằm trong L
k-1
, ta sẽ nhận được tập các tập trong L
k.
Việc kết nối là tương đương với việc mở rộng L
k-1
với mỗi mục nằm trong CSDL và sau
đó xoá bỏ các tập này mà đối với nó (k-1) –itemset nhận được bằng việc xoá đi mục thứ
(k-1) không nằm trong L
k-1
. Ở giai đoạn này C
k
⊇
L
k
với lập luận như vậy, giai đoạn tỉa là
giai đoạn người ta xoá khỏi C
k
tấtcả các tập mà các (k-1) tập con của nó không nằm trong
L
k-1
, cũng không xoá bất kỳ một tập nào có thể nằm trong L
k
.
.
for (∀ tập mục c ∈ C
k
)
for (∀ (k-1) – tập con s của c)
if(s ∉ L
k-1
)
delete c khỏi C
k
;
Nhận xét: Thuật toán Apriori với n là độ dài lớn nhất của tập được sinh ra vậy thì thuật
toán sẽ thực hiện duyệt toàn bộ các giao tác n+1 lần. Như vậy, nếu bỏ qua thời gian so
sánh tìm sự xuất hiện của một mẫu trong một giao tác thì độ phức tạp của thuật toán
Apriori là O(A) > O(n*L) trong đó L là kích thước CSDL còn n là độ dài cần đạt được
của các mẫu.
Ngoài ra, nếu độ hỗ trợ tối thiểu minsup bị thay đổi thì thuật toán sẽ phải thực hiện lại từ
đầu, điều này sẽ rất mất thời gian,thuật toán Apriori được xây dựng nhằm phát hiện các
luật kết hợp giữa các đối tượng với độ hỗ trợ và độ tin cậy tối thiểu.
III.4. Thuật toán FP-Growth
Ý tưởng của thuật toán khai thác tập phổ biến không dùng hàm tạo ứng viên nén cơ sở dữ
liệu thành cấu trúc dạng cây sau đó duyệt cây để tao ra tập phổ biến
Thiết lập cây FP thiết lập cơ sở mẫu điều kiện cho mỗi hạng mục (là mỗi nút trên cây FP)
Báo cáo môn Hệ hỗ trợ ra quyết định Trang 18
Thiết lập cây FP điều kiện từ mỗi cơ sở mẫu điều kiện khai thác đệ quy cây FP điều kiện
và phát triển mẫu phổ biến cho đến khi cây Fp điều kiện chỉ chưa 1 đường dẫn duy nhất –
tạo ra tất cả các tổ hợp của mẫu phổ biến
Thuật toán
Đầu tiên, thuật toán duyệt CSDL lần thứ nhất để tính độ hỗ trợ của các tập mục (đếm số
lần xuất hiện của từng mục).
gọi thủ tục insert_tree(P,N);
Tìm tập mục phổ biến:
Sau khi xây dựng xong FP-tree cho CSDL, việc khai phá tìm các mẫu phổ biến chỉ thực
hiện trên cây FP-tree mà không cần duyệt CSDL nữa.
Thuật toán FP-growth như sau:
Bắt đầu từ dưới lên của bảng header và cây, với mỗi mục A: dùng n liên kết duỵêt qua tất
cả các nút trên cây mà xuất hiện A, với mỗi nút mà n.itemname=A, xác định các tập phổ
biến có xuất hiện A, thực hiện bằng cách chỉ cần tìm các đường đi từ gốc tới n.
Thuật toán FP – growth.
Báo cáo môn Hệ hỗ trợ ra quyết định Trang 20
Khai phá Fp-tree được thực hiện bởi gọi lần đầu FP-growth (Fp-tree, null), thực hiện
như sau:
Procedure FP-growth(Tree,
α
)
Nếu cây Tree chứa một đường đơn P thì
Với tất cả các tổ hợp (ký hiệu
β
) của các nút trong đường đi P
Sinh ra mẫu
β∪α
với support=độ hỗ trợ nhỏ nhất của các nút trong
β
;
Ngược lại: với mỗi mục ai trong header table của Tree{
Sinh ra
β
:= ai
∪α
với support=ai.count;
tính thanh khoản thấp, rủi ro từ thông tin, rủi ro từ các quy định và chất lượng dịch vụ của
sàn giao dịch, rủi ro từ biến động thị trường. Hiện nay các nhà đầu tư sử dụng các
phương pháp phân tích hiện nay chủ yếu dựa vào bốn cách chính: dựa vào các phân tích
kỹ thuật để đưa ra tư vấn, dưa vào các phân tích cơ sở để đưa ra tư vấn, dựa vào phương
pháp dự báo chuỗi thời gian quá khứ và dưa vào phương pháp máy học,tuy nhiên cho đến
nay thì sự biến động của thị trường vẫn chưa nằm trong tính toán của các nhà đầu tư, rủi
ro vẫn tồn đọng.
IV.2. Phân tích và ứng dụng luật kết hợp để khai phá
Vơi số lượng giao dịch hằng ngày tăng, bình quân 80.650.490 lượt/ngày cơ sở dữ liệu của
giao dịch ngày càng tăngvới mỗi ngày thay đổi, mỗi loại cổ phiếu sẽ tăng thêm một dòng
trong cơ sở dữ liệu ngoài ra các thông tin khác cũng tăng thêm 1 dòng/ 1 ngày. Lượng có
sở dữ liệu mỗi lần phân tích có thể chia theo khoảng thời gian (1 tuần, 1 tháng, 3 tháng,
6 tháng…)tất cả CSDL này hoàn toàn được truy xuất.
Các dữ liệu được thu thập về sẽ được phân tích, định dạng và chứa trong data warehouse,
là loại dữ liệu được sử dụng để khai phá sau giai đoạn khai phá, ta sử dụng thuật toán
Apriori để đưa ra các mẫu phân tích dùng cho dự đoán.
Các dữ liệu dự đoán sẽ bao gồm chỉ số cổ phiếu biến động theo ngày và các khả năng
mua/bán/chuyển nhượng (gọichung là giao dịch) hằng ngày sẻ được đưa vào dự đoán các
khả năng sẽ diễn ra của các cổ phiếu trong những ngày tiếp theo.
IV.3. Một số hàm của chương trình
privatevoid Solve()
{
double dMinSupport = double.Parse(txt_Support.Text) / 100;
double dMinConfidence = double.Parse(txt_Confidence.Text) / 100;
{
dic_Candidates = GenerateCandidates(dic_FrequentItems);
dic_FrequentItems = GetFrequentItems(dic_Candidates, dMinSupport);
Báo cáo môn Hệ hỗ trợ ra quyết định Trang 22
}
while (dic_Candidates.Count != 0);
{
DataGridViewRow dr=newDataGridViewRow();
try
{
dr = dataGridView1.SelectedRows[0];
}
if ((high - open) > (open - low))
{
h1 = "T";
}
else
{
h1 = "F";
}
string h2 = "";
if (close > open)
{
h2 = "H";
}
else
Báo cáo môn Hệ hỗ trợ ra quyết định Trang 23
{
h2 = "L";
}
dr = dataGridView1.SelectedRows[1];
IV.4. Mô phỏng chương trình
Chạy chương trình Apriori sau đóload dữ liệu chứng khoán tăng giảm theo ngày để ta
chọn được loại cổ phiếu phân tích dựa vào thời điểm giá cao, thấp hoặc thời điểm mở cửa
và đóng cửa của thị trường giao dịch
Khi chọn loại cổ phiểu chọn add rules để đưa vào phân tích dự đoán.