Thuậttoán chỉsốhoá các khung nhìn trong xử lý phân tích trực

Một phần của tài liệu Tiểu luận môn hệ hỗ trợ quyết định TÌM HIỂU PHƯƠNG PHÁP XỬ LÝ PHÂN TÍCH TRỰC TUYẾN VÀ ÁP DỤNG XÂY DỰNG HỆ HỖ TRỢ QUYẾT ĐỊNH (Trang 54)

kho dữ liệu

Có hai cách thường được sử dụng đểtruy nhập trực tiếp vào kho dữ liệu. Cách thứnhấtthông qua các khung nhìn (View) nhiều chiều và thểhiện nó nhưlà cấu trúc nhiều chiều phục vụcho việc phân tích và lập báo cáo ở các trạm làm việc. Đểthực hiện hiệu quảxử lý phân tích trực tuyến trên các khung nhìn dữ liệu, ngườita thường tập trung xây dựng các thuật toán để chọn tựđộng các bảng tổng hợp và chỉsốhóa các khung nhìn. Cách thứhai là phân tích trực tiếp các khối dữ liệu nhiều chiều đượctạo lập từcác kho dữ liệu và tạo ra khả năng tổng hợp, gộp chung, hỗ trợcho việc ra quyết định về dự báo, phân tích xu thếphát triển và phân tích thống kê.

Trong luận văn này tôi xin giới thiệu thuật toán chọn tựđộng các Subcubes và các chỉsốtương ứng đểxử lý trướcsao cho hợp lý nhất.

Xét ví dụ(1), khi quan sát kho dữ liệu quản lý các thông tin kinh doanh từcác cửa hàng của một tổng công ty, ngườita nhận thấy những câu hỏi cần xử lý OLAP thường có dạng:

• Sốcác Mặt_hàng bán ra hàng tuần của mỗi Cửa_hàng? • Sốlượng bán ra của từng Mặt_hàng là bao nhiêu?

Đểtrảlời cho đượcnhững câu hỏi trên thì các chương trình ứng dụng OLAP phảinhìn vào kho dữ liệu theo nhiều chiều (phương diện) khác nhau.

Ởví dụtrên, các thuộc tính xác định chiều là Cửa_hàng và Mặt_hàng. Đơnvị của chiều mà chúng ta quan tâm nhiều nhấtởđây là: sốhàng bán ra. Hệ thống xử lý OLAP cần biểu diễn dữ liệu cho người sử dụng các View nhiều chiều ở dạng hình khối (Data Cube). Trong ví dụtrên, Data Cube sẽbao gồm 4 Subcube nhưsau:

• Sốlượng bán ra của mỗi Mặt_hàng ởtừng cửa_hàng, • Sốlượng bán ra của mỗi Mặt_hàng ởtất cả các Cửa_hàng, • Sốlượng bán ra các Mặt_hàng trong từng Cửa_hàng, • Sốlượng bán ra các Mặt_hàng ởtất cả các Cửa_hàng. 3.4.2.Một sốkhái niệm cơ bản

3.4.1.1. Các khối dữ liệu con (Subcubes)

Subcube là một bộphận của khối dữ liệu (Data Cube). Nói cách khác, mỗi phần tửcủa tập các tập con của các chiều kho dữ liệu sẽlà một Subcube. Xét tiếp ví dụ(1) ởtrên, mỗi cặp {Mặt_hàng, Khách_hàng} sẽtương ứng với một Subcube chứa Mặt_hàng bán ra cho từng Khách_hàng. Trong SQL các Subcube chỉkhác nhau bởi câu lệnh gộp (Groupby Clause). Ởđây chúng ta cũng cho Subcube tương ứng với một tập các thuộc tính có thểgộp đượcvới nhau. Nhưvậy {Mặt_hàng, Khách_hàng} sẽtương ứng với một Subcube đượcxác định bởi câu lệnh trong SQL nhưsau:

SELECT Mặt_hàng, Khách_hàng, SUM(Hàng_bán) AS TotalSales FROM R

GROUP BY Mặt_hàng, Khách_hàng 3.4.1.2. Câu truy vấn (Queries)

Mỗi câu truy vấn có thểsửdụng chiều nhưlà thuộc tính đểlựa chọn (trong SQL chiều là thuộc tính trong Groupby Clause - câu lệnh gộp lạihoặc tương ứng với Where Clause - câu lệnh mà ởđó thỏa mãn điều kiện nào đó).

Sửdụng cách viếtrút gọn của mô hình, ta có thểviếtcâu truy vấn Q dướidạng: γcδps trong đó γxác định những thuộc tính gộp lại(Groupby); δ xác định các thuộc tính chọn đểtập hợp lại(Selection) của từng câu hỏi; c: Khách_hàng (customer); p: Mặt_hàng (part) và s: Hàng_bán (sales). Tấtnhiên thứtựcác thuộc tính là không quan trọng, câu truy vấn γpδsc cũng hoàn toàn giống nhưγpδcs.

Mỗi câu truy vấn dạng γc(δp = constant(R)) là yêu cầu vềlát cắtthông qua Subcube(customer, part). Ta qui định câu truy vấn tổng quát: γcδp và gọi nó là câu truy vấn vềlát cắt(Slice Query) đối với Subcube(customer, part). Dạng tổng quát γG1, ..., Gkδcho Subcube(G1, ..., Gk, S1, ..., Sl) là những Subcube nhỏnhấttham gia trảlời cho câu hỏi trên với k và l là những thứ nguyên của kho dữ liệu.

3.4.1.3. Chỉsố(Indexes)

Đểtăng tốc độxử lý các câu truy vấn, ta có thểsửdụng cấu trúc chỉsố B- cây (B-Tree: Balance-Tree). Ví dụđối với Subcube(p,s), ta có thểxây dựng đánh chỉsốnhưsau:

• Ips: Tìm những chỉsốmà nó đượcghép lạitừchiều p (part) với chiều s (sales).

• Isp: Tìm những chỉsốmà nó đượcghép lạitừhai chiều s và p

Ởđây thứtựcác chiều là quan trọng. Cho trướcmột giá trịcủa p, ta có thểsửdụng Ips đểtìm tất cả các hàng trong Subcube(p,s) mà nó có giá trịp. Tương tự, cho trướccặp (p,s) ta sửdụng Ips đểtìm trong Subcube(p,s) những hàng, cột có cặp giá trịđó.

Sửdụng chỉsốB-cây sẽgiúp rút ngắn đượcthời gian trảlời cho các câu truy vấn. Đối với mỗi View ta có một sốcách chỉsốhóa. Ví dụvới Subcube(p,s) ta có thểxây dựng 4 cách đánh chỉsốnhưsau: Ip(ps), Is(ps),

Ips(ps), Isp(ps).

Trong mỗi trường hợp ta liệtkê các thuộc tính khóa tìm kiếm nhưlà chỉ sốvới Subcube(p,s) mà trong đó Index được xây dựng. Mỗi tập con các thuộc tính của một quan sát View, ta có thểxác định một chỉsốtheo một thứtựnào đó. Nhưvậy các chỉsốcó thểcủa một khung nhìn View với m thuộc tính là:

m

m r r r=0!

Nhưvậy, sốcác chỉsốlà quá lớn. Nói chung, chỉsốcó thểhỗ trợtrảlời các câu truy vấn. Đểxử lý dữ liệu nhanh, chính xác thì phảixử lý trướcvềcác lát cắtkhi một tiền tố(Prefix) của các thuộc tính đượcchỉsốhóa tương ứng những thuộc tính lựa chọn (Selection Attribute) trong câu truy vấn hay chỉsố hóa các khung nhìn vào kho dữ liệu.

3.4.1.4. Quan hệtính toán và phụthuộc

Giữa các câu truy vấn (Queries) và các khung nhìn (Views), ta định nghĩaquan hệtính toán << nhưsau:

Với mỗi câu hỏi Q và khung nhìn V:

Q << V nếu kếtquảcủa Q (câu trảlời) tính toán đượcmà chỉsửdụng các bộ(Tuples) có trong V. Q đượctrảlời trong V.

Xét ví dụ(2): Xét câu truy vấn Q1 = γcδs từkho dữ liệu ởví dụ(1). Câu truy vấn này có thểtính toán trong View V1 = sc và cũng có thểtrong View V2 = psc. Vậy: Q1 << V1 và Q1 << V2. (adsbygoogle = window.adsbygoogle || []).push({});

Nhưng V1 sẽkhông có câu trảlời trong V3 = pc. Ta định nghĩaquan hệthứtựbộphận ≤đối với các View nhưsau:

V1 ≤V2 khi và chỉkhi tập các thuộc tính của V1 là tập con của tập các thuộc tính của V2. V1 hẹp hơn V2.

customer), nhưng part ≤customer và ngượclạicũng vậy.

Tập hợp các Subcube của Data Cube tạo ra các xác định trên ≤sẽđược gọi là quan hệphụthuộc của các View. Ví dụcác Subcube của Data Cube đã nêu ởví dụ(1) cùng với quan hệ≤tạo thành các Subcube của một CSDL như sau:

trong đó ‘non’ là tập rỗng

Chúng ta dễdàng nhận thấy nếu V1 ≤V2 và Q1 << V1 thì Q1 << V2, nghĩalà tồn tạiquan hệphụthuộc giữa V1 với V2 và quan hệtính toán giữa Q1 với các View đó. Có thểsửdụng đồthịđểmô tảcho quan hệtính toán đượcđịnh nghĩaởtrên, trong đó tập đỉnh là tất cả các câu truy vấn và các View của một Data Cube. Nếu câu truy vấn Q tính toán đượctrong View V thì ta vẽcạnh nối Q với V và bổsung cạnh đó vào trong E. Mỗi cạnh (Q,V) lạicó thểcó trọng sốf chính là phí tổn (thường là thời gian) đểtrảlời Q trong View V.

Vấn đềlà ta tìm cách xây dựng cách đánh chỉsốtrên khung nhìn V để sao cho có đượccâu trảlời nhanh hơn khi phân tích dữ liệu trực tuyến. Chỉsố đó phảikhông ảnh hưởng đếnkếtquảtính toán trong mọi cách, nhưng nó làm tăng tốc độtính toán đểxác định câu trảlời.

Đểtiện lợi cho ký hiệu và xử lý, ta có thểgộp chỉsối vào cùng với phí tổn phảimấtđểtrảlời câu truy vấn Q khi sửdụng V thành một cặp nhãn cho

mỗi cạnh (Q,V). Từnhững phân tích trên, ta có thểtổng quát hóa công thức đánh giá phí tổn những câu trảlời cho câu truy vấn Q khi sửdụng View V và chỉsốJ.

GiảthiếtQ là câu truy vấn γAδB trong đó A và B là các tập vềchiều. B = ∅ khi và chỉkhi Q là câu truy vấn vềSubcube và B = ∅ nghĩalà đềcập đến tất cả các chiều.

GiảthiếtV là View C. Nếu Q << V thì A ∪ B ⊆C, C = ∅ ký hiệu cho View rỗng (phần tửnhỏnhấttrong các View).

GiảthiếtJ là chỉsốID(V) và D là một thứtựcủa các thuộc tính. D =<> (dãy trống) ký hiệu trường hợp không sửdụng chỉsố.

Ký hiệu E là tập con lớn nhấtcủa B sao cho các thuộc tính của E tạo thành tiền tố(Prefix) của D. Phí tổn của câu trảlời cho Q khi sửdụng V có sử dụng chỉsốJ sẽđượcxác định nhưsau:

C (Q, V , J ) =|

| ((CE))|| (*)

trong đó |(C)| và |(E)| ký hiệu sốcác dòng của các bảng dữ liệu tương ứng với View C và E

Công thức trên luôn tính đượctrong mọi trường hợp. Trường hợp E = ∅, nghĩa là không có chỉsốđượcđánh với V hoặc Q là câu truy vấn về Subcube, khi đó |∅| = 1 do vậy C(Q,V,J) = |V|, nghĩalà chúng ta phảixử lý tất cả các dòng trong V mới có đượccâu trảlời cho Q.

Chúng ta hãy xét ví dụvềCSDL quản lý hàng bán ra với View V = (p,s,c) bao gồm 6 triệu dòng, câu hỏi Q = γcδps và chỉsốJ = Iscp trên Subcube (p,s,c). Khi đó C = (p,s,c) và E = (s) bởi vì tập con lớn nhấttạo thành tiền tốcủa scp là s. Giảthiếtbảng s có 0.01 triệu dòng. Theo công thức thì:

C (Q , V , J ) =0,016trtr..

3.4.2.Thuật toán chọn View và Index

Đểthực hiện thuậttoán ta cần biếtcụthểnhững thông tin sau: • Kích thướccủa các View,

• Kích thướccủa từng chỉsố,

• Với mỗi bộ3 (Query, View, Index), phí tổn của câu trảlời C(Q,V,Y) là bao nhiêu.

Ởtrên ta đã đưa ra công thức (*) đểtính C(Q,V,J). Vấn đềcòn lạiởđây là cần xác định cụthểkích thướccủa từng View và từng Index. Đây không phảilà vấn đềđơngiản vì kích thướccủa chúng thường rấtlớn.

3.4.2.1. Ướctính kích thướccủa mỗi View

Có nhiều cách xác định kích thướccủa View mà không cần thiếtphải cụthểcụthểhóa tất cả các View. Ta có thểsửdụng phương pháp phân tích và lấy mẫu đểxác định kích thướccủa View từnhiều View khác mà chúng ta chỉcần cụthểhóa phần tửV1 lớn nhất(View chứa tất cả các chiều) trong các View. Với một View, nếu các thuộc tính nhóm lạimà độc lập tĩnh thì ta có thể xác định theo phương pháp giảitích theo kích thướccủa View. Ngượclạicó thểdùng mẫu V1 đểtính kích thướccủa các View khác. Kích thướccủa một View là sốcác giá trịkhác nhau của các thuộc tính mà chúng đượcnhóm lại.

3.4.2.2. Ướctính kích thướccủa chỉsốIndex

Cho trướckích thướccủa mỗi View, ta hãy tính kích thướccủa chỉsố Index tương ứng. Thông thường kích thướccủa View trong mô hình là số dòng trong View đó. Kích thướccủa Index (B-cây) là sốcác lá của B-cây theo cách đánh chỉsốIndex. Mặtkhác sốcác nút lá của B-cây cho một Index xấp xỉsốdòng của một View tương ứng. Vậy ta có Kết luận: kích thướccủa

một chỉsốIndex trên View V cũng là kích thướccủa bản thân View V.

Ta hãy xét hai Index J1 = IA(V) và J2 = TB(V) đối với cùng một View V. Nếu B là tiền tốthực sựcủa A thì C(Q,V,J1) ≤C(Q,V,J2) với mọi câu truy vấn Q. (adsbygoogle = window.adsbygoogle || []).push({});

Mặtkhác, kích thướccủa J1 và J2 là cùng xấp xỉvới kích thướccủa một View theo cùng một độchính xác nên ta có thểbỏJ2 mà chỉxét J1. Nhưvậy là với từng View, ta chỉcần chọn chỉsốdài nhấtđểxử lý, đó là những chỉsốmà các thuộc tính khóa tìm kiếm của nó không phảilà tiền tốthực sựcủa các thuộc tính tìm kiếm của các Index khác trong cùng một View.

Nếu V là View (C) thì tập các chỉsốIndex sẽlà {ID(V) D là một hoán vịcủa C}.

3.4.2.3. Xác định bài toán

Nhưởtrên đã nêu, nhiệm vụcủa ta là xây dựng các thuậttoán đểchọn các View và Index cụthểđểtrảlời cho những câu truy vấn đối với một Data Cube cho trước. Ta có thểphát biểu một cách không hình thức: cho trướcmột tập các View, mỗi View lạixác định một tập các Index và một tập các câu truy vấn mà hệ thống cần phảitrảlời. Mục đích của ta là chọn View và Index trong sốđó đểcó đượccâu trảlời cho các câu truy vấn với phí tổn thấp nhất với một điều kiện ràng buộc là tập các View và tập các Index không chiếm nhiều không gian hơn một không gian cho trướcS, đây là bài toán NP_đầy đủ.Do vậy đểgiảiquyếtđượcbài toán trên, ta phảixây dựng những thuật toán có tính Heuristic, nhưng phảiđảmbảo thuậttoán thực hiện hiệu quả.

Trướctiên chúng ta tiến hành hình thức hóa bài toán nêu trên. Xét đồ thịlưỡng phân, G = (V ∪ Q, E) đượcgọi là đồthịcâu truy vấn - khung nhìn (Query - View Graph), V là tập các View còn Q chứa các câu truy vấn. Với mỗi vi∈V xác định tương ứng một bộ(Si, Ii) trong đó Si là không gian mà vi

chiếm và Ii là tập các chỉsốtrên vi. Ký hiệu Iik là chỉsốthứk của vi.

• Với mỗi qi∈Q xác định tương ứng phí tổn Ti trảlời cho câu truy vấn qi. • Mỗi cạnh (qi, vj) có nhãn đượcgán tương ứng là (k, tijk), trong đó tijk là

phí tổn câu trảlời cho câu truy vấn qi sửdụng View vj và chỉsốthứk của nó. Khi k = 0, tijk là phí tổn của câu trảlời cho qi mà chỉsửdụng vj.

Bài toán: Cho tập các View V và tập các câu hỏi Q, cần xác định M ⊆ V, tập các View và các chỉsốcụthểsao cho không gian mà các View và các chỉsốđó chiếm không vượtquá S (không gian giới hạn) đồng thời với cách chọn M cũng đảmbảo đượccực tiểu hóa phí tổn toàn bộđểcó đượccâu trả lời cho câu truy vấn Q từmột trong các View của M.

Nghĩalà ta cần cực tiểu hóa đạilượng sau sao cho tổng không gian mà các cấu trúc đượclựa chọn từM nhỏhơn S:

|Q|

τ(G , M ) =∑min(Ti ,min tijk) (**)

i=1

V j, I jkM

Bài toán trên dễdàng tổng quát hóa thành bài toán xác định các View và Index trong Data Cube.

3.4.2.4. Giải quyếtbài toán

Trướctiên chúng ta hãy định nghĩamột sốký hiệu. C - tệp bấtkỳcác View và Index trong đồthịG. S(C) là không gian các cấu trúc chiếm trong C. B(C,M) là sinh lợi của C so với M và: B(C,M) = τ(G, M) - τ(G, M ∪ C); B(C, ∅) là sinh lợi tuyệtđốicủa C.

a. Thuậttoán r - cấu trúc

Cho trước: Đồthịcâu hỏi - khung nhìn G Không gian hạn chếS BEGIN

M = ; /* M = tập các cấu trúc đã đượcchọn */ While (S(M) < S)

BEGIN

Tìm tất cảcác tập View và Index của một trong các dạng sau: {vi, Iij1, Iij2, ..., Iijp} sao cho viM,IijlM với 1 ≤l, 0 ≤p < r

hoặc

{Iij} sao cho vi ứng với IijM và IijM.

Chọn C là một trong sốcác tệp trên mà sinh lợi vềkhông gian so với M là cực đại.

ĐặtM = M

C; END while Return M; END;

Thuậttoán r - cấu trúc thực hiện trong một sốbướcmà mỗi bướcthì chọn tập con của C chứa nhiều nhấtr cấu trúc. C là tập hợp gồm:

• Một View và một sốchỉsốtương ứng của nó hoặc • Một chỉsốmà View đã đượcchọn ởbướctrước.

Vấn đềchính của thuậttoán là chọn C ởmỗi bướcsao cho sinh lợi của nó so với M là cực đại. (adsbygoogle = window.adsbygoogle || []).push({});

Đánh giá thuậttoán: Giảthiếtcó n View trong Data Cube và mỗi View có nhiều nhất1 chỉsố. Khi đó thuậttoán r - cấu trúc phảithực hiện ởmỗi bướccần tính toán sinh lợi của n*1+n* (1/r-1) tập hợp. Nhưvậy độphức tạp của thuậttoán 1 sẽlà θ(kmr) trong đó m là sốcấu trúc cho trướccủa đồthịG và k là sốcấu trúc đượcchọn trong thuậttoán, trường hợp xấu nhấtlà bằng S.

b. Thuậttoán tổng quát

Cũng nhưtrên, mỗi bướccủa thuậttoán cần chọn một tập con C bao gồm:

• Một View và một sốchỉsốđượcchọn không bịhạn chếvềsốlượng hoặc • Một chỉsốmà View tương ứng đã đượcchọn ởbướctrước.

Cần lưu ý là kích thướccủa C sẽkhông bịgiới hạn bởi r nhưthuậttoán trên. Mỗi bướccủa thuậttoán phảithực hiện hai phần:

• Với mỗi View vi chúng ta xây dựng tập IGi mà lúc đầuchỉchứa vi. Sau đó bổsung thêm dần các chỉsốvào IGi cho đếnkhi sinh lợi vềkhông gian của IGi, tập các cấu trúc đã đượcchọn đạttới cực đại.

• Tiếp theo là chọn chỉsốIndex mà sinh lợi vềkhông gian của View tương ứng so với M đạtđượccực đại.

So sánh sinh lợi trên với sinh lợi của C với M, cái nào tốt hơn thì bổ sung vào M.

Thuậttoán này đượcmô tảhình thức nhưsau:

Cho trước: Đồthịquery - view G Không gian khống chếS BEGIN M = ; /* M = tập các cấu trúc đã đượcchọn */ While (S(M) <S) BEGIN

C = ; /* tập tốt nhất chứa View và một sốIndex cho thời điểm xét */ For viM ∩ Vi

BEGIN

IG = {vi}; /* IG = tập chứa vi và các cấu trúc chọn ra */ While (S(IG) < S)

BEGIN

IG = IG

Iic; END while;

If (B(IG,M)/S(IG) > B(C,M)/|C| or C= then C = IG; END for

For Iij mà viM

If (B(Iij,M)/S(Iij) > B(C,M)/S(C) then C = {Iij}; M = M C;

END while Return M; END;

Đánh giá thuậttoán: Độphức tạp của thuậttoán là θ(k2mr), trong đó m là tổng sốcấu trúc của đồthịG và k là sốcấu trúc cực đạiđểhợp với không gian S, trường hợp xấu nhấtlà bằng S.

3.3.5 Kết luận

Việc thực hiện các câu hỏi theo OLAP phụthuộc rấtnhiều vào việc tạo lập bảng tổng hợp theo các View trong các kho dữ liệu. Đểtăng hiệu quảxử lý các câu hỏi, chúng ta có thểsửdụng chỉsốhóa (Index) trên các khung nhìn (View). Hai thuậttoán trên mô tảcách chọn các View (hay Subcube) và xác đinh chỉsốIndex cần phảitính toán trướcđểtăng hiệu quảxử lý các câu hỏi OLAP đối với kho dữ liệu.

Chương IV. Hệ trợ giúp quyết định dựa vào dữ liệu 4.1. Hệ trợ giúp quyết định

4.1.1. Giới thiệu

Ngay từnhững năm 60 của thếkỷtrước, việc sửdụng các phương tiện tin học đểtổ chức và khai thác các CSDL đã đượctập trung nghiên cứu phát triển. Kểtừđó rấtnhiều CSDL đã đượctổ chức, phát triển và khai thác ởmọi qui mô và ởkhắp các lĩnh vực hoạt động của con ngườivà xã hội. Nhiều hệ quản trịCSDL mạnh với các công cụphong phú và thuận tiện đã giúp cho con ngườikhai thác có hiệu quảcác nguồn tài nguyên dữ liệu. Mô hình CSDL quan hệvà ngôn ngữvấn đáp chuẩn (SQL) đã có vai trò hếtsức quan trọng trong việc tổ chức và

Một phần của tài liệu Tiểu luận môn hệ hỗ trợ quyết định TÌM HIỂU PHƯƠNG PHÁP XỬ LÝ PHÂN TÍCH TRỰC TUYẾN VÀ ÁP DỤNG XÂY DỰNG HỆ HỖ TRỢ QUYẾT ĐỊNH (Trang 54)