Translate

Views

Friday, May 24, 2024

Pram formula RNN, LSTM, BiLSTM, Dense

pram formula 

RNN = in * out + out * out + out 

LSTM = 4 * (in * out + out * out + out) 

biLSTM= 2 * (4 * (in * out + out * out + out)) 

dense = in * out + out



Wednesday, May 22, 2024

Phân cụm K-Means (học máy không giám sát)

Thuật toán K-means:
<1> Chọn ngẫu nhiên K điểm làm trung tâm của K cụm
<2> Gán các điểm gần với mỗi cụm, nếu không có phép gán nào thì dừng
<3> Tính lại trung tâm của mỗi cụm
<4> Lặp lại bước 2

Khoảng cách euclid: 

A(a1, a2) và B(b1, b2) => AB = sqrt(sqr(a1-b1) + sqr(a2-b2))

Khoảng cách manhattan:

A(a1, a2) và B(b1, b2) => AB = abs(a1-b1) + abs(a2-b2)


Đề bài – Example

Giả sử có 4 sinh viên A, B, C, D. Mỗi sinh viên được biểu diễn bởi hai đặc trưng X, Y.

Sinh viên

Sở thích (X)

Quê quán (Y)

A

1

1

B

2

1

C

4

3

D

5

4

 Mục đích là nhóm các sinh viên đã cho vào 2 nhóm/phòng (K=2) dựa vào các đặc trưng của chúng. 


Giải

Chọn điểm A là tâm của cụm 1, điểm B là tâm của cụm 2. 

Khoảng cách euclid các điểm đến tâm của mỗi cụm:

                A    B    C    D

Cụm 1     0    1    3.6    5

Cụm 2     1    0    2.8    4.2

Gán các điểm cho gần với mỗi cụm:

Cụm 1 (A)

Cụm 2 (B, C, D)


Tính tâm của mỗi cụm:

Cụm 1 tâm (1,1)

Cụm 2 tâm ((2+4+5)/3 , (1+3+4)/3 )  = (3.6 , 2.6)

Khoảng cách euclid các điểm đến tâm của mỗi cụm:

                A    B    C    D

Cụm 1     0    1    3.6    5

Cụm 2     3.05    2.2    0.5    1.9

Gán các điểm cho gần với mỗi cụm:

Cụm 1 (A, B)

Cụm 2 (C, D)


Tính tâm của mỗi cụm:

Cụm 1 tâm (1.5, 1)

Cụm 2 tâm (4.5, 3.5)

Khoảng cách euclid các điểm đến tâm của mỗi cụm:

                A    B    C    D

Cụm 1     0.5    0.5    3.2    4.6

Cụm 2     4.3    3.5    0.7    0.7

Gán các điểm cho gần với mỗi cụm:

Cụm 1 (A, B)

Cụm 2 (C, D)

Vì phép gán lần này giống với lần trước nên thuật toán dừng 

Vậy ta được 2 cụm (A, B) và (C, D)




  


 


 


Thuật toán xây dựng cây quyết định (bằng tập thô)

Ví dụ 1

POSoutlook(PlayTennis) = {D3, D7, D12, D13}

POStemp(PlayTennis) = POShumidity(PlayTennis) = POSwind(PlayTennis) = {null}

=> Chọn thuộc tính chia là Outlook, xây dựng 3 bảng quyết định (root Outlook)

T0 (brand overcast)

U1

Temp

Humidity

Wind

Playtennis

D3

Hot

High

Weak

Yes

D7

Cool

Normal

Strong

Yes

D12

Mild

High

Strong

Yes

D13

Hot

Normal

Weak

Yes

 T1 (brand sunny)

U0

Temp

Humidity

Wind

Playtennis

D1

Hot

High

Weak

No

D2

Hot

High

Strong

No

D8

Mild

High

Weak

No

D9

Cool

Normal

Weak

Yes

D11

Mild

Normal

Strong

Yes



 T2 (brand rain)

U1

Temp

Humidity

Wind

Playtennis

D4

Mild

High

Weak

Yes

D5

Cool

Normal

Weak

Yes

D6

Cool

Normal

Strong

No

D10

Mild

Normal

Weak

Yes

D14

Mild

High

Strong

No



                                  Outlook
           /                          |                            \
overcast                      sunny                        rain

Xét bảng T0: 
Là hệ quyết định thuần khiết vì các đối tượng đều có kết quả là Yes (Brand Overcast have leaf is YES)

overcast                  
       /                             
    YES

Xét bảng T1:
Từ bảng T1 ta có
- POSwind(Playtennis) = {null}
- POStemp(Playtennis) = {D1, D2, D9}
- POShumidity(Playtennis) = {D1, D2, D8, D9, D11}
=> Chọn thuộc tính chia chính là Humidity, chia 2 bảng quyết định T10 và T11 (brand sunny have node Humidity)

Bảng T10:

U1

Temp

Humidity

Wind

Playtennis

D1

Hot

High

Weak

No

D2

Hot

High

Strong

No

D8

Mild

High

Weak

No

Bảng T11:

U1

Temp

Humidity

Wind

Playtennis

D9

Cool

Normal

Weak

Yes

D11

Mild

Normal

Strong

Yes


=> T10 là hệ thuần khiết vì các đối tượng có Humidity = High đều cho kết quả PlayTennis là No (brand High have leaf NO)

=> T11 là hệ thuần khiết vì các đối tượng có Humidity = Normal đều cho kết quả PlayTennis là Yes (brand Normal have leaf YES)

                                       sunny
                                        |                            
                               Humidity                       
                                    /    \                         
                               high    normal          
                                /            \                    

                            NO            YES

Xét bảng T2:

Từ bảng T2 ta có:

POSwind(playtennnis) = {D4, D5, D6, D10, D14}
POStemp(playtennnis) = {null}
POShumidity(playtennnis) = {null}
=> Chọn thuộc tính chia chính là Wind, chia 2 bảng quyết định T20 và T21 (brand rain have node Wind)

Bảng T20:

U1

Temp

Humidity

Wind

Playtennis

D4

Mild

High

Weak

Yes

D5

Cool

Normal

Weak

Yes

D10

Mild

Normal

Weak

Yes

 

Bảng T21:

U1

Temp

Humidity

Wind

Playtennis

D6

Cool

Normal

Strong

No

D14

Mild

High

Strong

No


=> T20 là hệ thuần khiết vì các đối tượng có Wind = Weak đều cho kết quả PlayTennis là Yes (brand weak have leaf YES)

=> T21 là hệ thuần khiết vì các đối tượng có Wind = Strong đều cho kết quả PlayTennis là No (brand strong have leaf  NO)


             rain
               
               wind
              /        \
     weak       strong 
       /                \

YES            NO

Do các hệ quyết định cuối cùng đều là các hệ thuần khiết nên thuật toán xây dựng cây quyết định RDT dừng.

                                  Outlook
           /                          |                            \
overcast                      sunny                        rain
       /                                |                                \ 
    YES                    Humidity                       wind
                                    /    \                            /        \
                               high    normal           weak       strong 
                                /            \                     /                \

                            NO            YES          YES            NO



Ví dụ 2Armatage Shanks

Cho tập dữ liệu huấn luyện như sau :

RID

age

income

student

credit_rating

Class: bugs_computer

1

youth

high

no

fair

no

2

youth

high

no

excellent

no

3

middle_aged

high

no

fair

yes

4

senior

medium

no

fair

yes

5

senior

low

yes

fair

yes

6

senior

low

yes

excellent

no

7

middle_aged

low

yes

excellent

yes

8

youth

medium

no

fair

no

9

youth

low

yes

fair

yes

10

senior

medium

yes

fair

yes

11

youth

medium

yes

excellent

yes

12

middle_aged

medium

no

excellent

yes

13

middle_aged

high

yes

fair

yes

14

senior

medium

no

excellent

no

Giải

POSage(bugs_computer) = {D3, D7, D12, D13}

POSincome(income) =  POSincome(student) = POS(credit_rating) = {null}

=> Chọn age làm thuộc tính chính và xây dựng các bảng quyết định (chọn age làm root)

T0: (middle_aged)

3

middle_aged

high

no

fair

yes

7

middle_aged

low

yes

excellent

yes

12

middle_aged

medium

no

excellent

yes

13

middle_aged

high

yes

fair

yes

T1: (youth)

1

youth

high

no

fair

no

2

youth

high

no

excellent

no

8

youth

medium

no

fair

no

9

youth

low

yes

fair

yes

11

youth

medium

yes

excellent

yes


T2: (senior)

4

senior

medium

no

fair

yes

5

senior

low

yes

fair

yes

6

senior

low

yes

excellent

no

10

senior

medium

yes

fair

yes

14

senior

medium

no

excellent

no


Xét T0:

 Toàn bộ đội tượng đều trả về kết quả YES nên đây là hệ thuần khiết (nhánh middle_aged sẽ trả về node lá YES)

Xét T1:
POSincome(bugs_computer) = {D1, D2, D9}
POSstudent(bugs_computer) = {D1, D2, D8, D9, D11}
POScredit_rating(bugs_computer) = {null}
=> Chọn student làm thuộc tính chính, và xây dựng các bản quyết định (node student)

T10: (no)

1

youth

high

no

fair

no

2

youth

high

no

excellent

no

8

youth

medium

no

fair

no

T11: (yes)
    

9

youth

low

yes

fair

yes

11

youth

medium

yes

excellent

yes


Xét T10:    
- Toàn bộ đối tượng đều trả về kết quả no => Đây là hệ thuần khiết (node student có node lá NO)
Xét T11:    
- Toàn bộ đối tượng đều trả về kết quả yes => Đây là hệ thuần khiết (node student có node lá ÝES)


Xét T2: 
POSincome(bug_computer) = {null}
POSstudent(bugs_computer) = {null}
POScredit_rating(bugs_computer) = {D4, D5, D6, D10, D14}
=> Chọn credit_card làm thuộc tính chính, và xây dựng các bản quyết định (node credit_card)
T20:

4

senior

medium

no

fair

yes

5

senior

low

yes

fair

yes

10

senior

medium

yes

fair

yes

T21:

6

senior

low

yes

excellent

no

14

senior

medium

no

excellent

no


Xét T20:    
- Toàn bộ đối tượng đều trả về kết quả yes => Đây là hệ thuần khiết (nhánh fair có leaf YES)
Xét T21:    
- Toàn bộ đối tượng đều trả về kết quả no => Đây là hệ thuần khiết (nhánh excellent có leaf  NO)


                                    Age
           /                          |                            \
Middle_aged              youth                    senior
       /                                |                                \ 
    YES                    Student                    credit_card
                                    /    \                            /    \
                               no        yes                fair       excellent 
                                /            \                     /            \
                            NO            YES          YES            NO