การทำเหมืองข้อมูล (Data Mining) 322475 การทำเหมืองข้อมูล (Data Mining) บทที่ 6: การจำแนกประเภทโดยใช้กฎของเบย์ (Bayesian Learning) สอนโดย ผศ.ดร.วรารัตน์ สงฆ์แป้น ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์มหาวิทยาลัยขอนแก่น
การจำแนกประเภทโดยใช้กฎของเบย์ เป็นการจำแนกประเภทโดยใช้หลักสถิติในการพยากรณ์ความน่าจะ เป็นของสมาชิก เรียกว่า ทฤษฎีของเบย์ (Bayesian theorem) เป็นการเรียนรู้เพิ่มได้ : ตัวอย่างใหม่ที่ได้มาถูกนำมาปรับเปลี่ยนการแจก แจงซึ่งมีผลต่อการเพิ่ม / ลดความน่าจะเป็น ทำให้มีการเรียนรู้ที่เปลี่ยนไป วิธีการนี้ตัวแบบจะถูกปรับเปลี่ยนไปตามตัวอย่างใหม่ที่ได้โดยผนวกกับ ความรู้เดิมที่มี การทำนายค่าคลาสเป้าหมายของตัวอย่างใช้ความน่าจะเป็นมากที่สุดของ ทุกสมมติฐาน
ทฤษฎีของเบย์ (Bayesian theorem) ให้ D แทนข้อมูลที่นำมาใช้ในการคำนวณการแจกแจงความน่าจะเป็น posteriori probability ของสมมติฐาน h คือ P(h|D) ตามทฤษฎี P(h) คือ ความน่าจะเป็นก่อนหน้าของสมมติฐาน h P(D) คือ ความน่าจะเป็นก่อนหน้าของชุดข้อมูลตัวอย่าง D P(h|D) คือ ความน่าจะเป็นของ h ขึ้นต่อ D P(D|h) คือ ความน่าจะเป็นของ D ขึ้นต่อ h
ตัวอย่าง:: การพยากรณ์อากาศ การพยากรณ์อากาศ (Weather forecast) ความน่าจะเป็นที่เกิดเฮอร์ริเคนในชิคาโก้ คือ 0.008 ทอมมีทักษะในการพยากรณ์ถูกต้องประมาณ 98% ของการทำนายทั้งหมด (Predict-hur) แต่ทอมก็มีการทำนายถูกว่าไม่เกิดเฮอร์ริเคนถูกต้อง 97% เช่นกัน (Predict- nohur) P(~h) = 1- P(h) P(h) + P(~h) = 1 P(hurricane) = 0.008 P(~h) P(~hurricane) = 1 – P(hurricane) = 0.992 P(h)
ตัวอย่าง:: การพยากรณ์อากาศ การพยากรณ์อากาศ (Weather forecast) ความน่าจะเป็นที่เกิดเฮอร์ริเคนในชิคาโก้ คือ 0.008 ทอมมีทักษะในการพยากรณ์ถูกต้องประมาณ 98% ของการทำนายทั้งหมด (Predict-hur) แต่ทอมก็มีการทำนายถูกว่าไม่เกิดเฮอร์ริเคนถูกต้อง 97% เช่นกัน (Predict-nh) P(hurricane) = 0.008 P(~hurricane) = 0.992 P(hurricane) P(predict-hur | hurricane) = 0.98 P(predict-nh) = 0.02 P(predict-h) = 0.98 P(predict-nohur | hurricane) = 0.02
ตัวอย่าง:: การพยากรณ์อากาศ การพยากรณ์อากาศ (Weather forecast) ความน่าจะเป็นที่เกิดเฮอร์ริเคนในชิคาโก้ คือ 0.008 ทอมมีทักษะในการพยากรณ์ถูกต้องประมาณ 98% ของการทำนายทั้งหมด (Predict-hur) แต่ทอมก็มีการทำนายถูกว่าไม่เกิดเฮอร์ริเคนถูกต้อง 97% (Predict-nohur) P(~hurricane) P(predict-nh) = 0.97 P(predict-h) = 0.03 P(hurricane) = 0.008 P(~hurricane) = 0.992 P(predict-hur|hurricane) = 0.98 P(predict-hur|~hurricane) = 0.03 P(predict-nohur|hurricane) = 0.02 P(predict-nohur| ~hurricane) = 0.97
ตัวอย่าง:: การพยากรณ์อากาศ ถ้าสุ่มวันขึ้นมา จากทักษะที่ทอมทำนายการเกิดเฮอร์ริเคน จะเชื่อเขาหรือไม่?? ความน่าจะเป็นที่เขาทำนายถูกต้อง? ความน่าจะเป็นที่เขาทำนายผิด? P(hurricane) = 0.008 P(~hurricane) = 0.992 P(predict-hur|hurricane) = 0.98 P(predict-hur|~hurricane) = 0.03 P(predict-nohur|hurricane) = 0.02 P(predict-nohur| ~hurricane) = 0.97 P(hurricane|predict-hur) = P(predict-hur|hurricane)P(hurricane) = 0.98*0.008 = 0.0078 P(predict-hur) P(predict-hur|~hurricane)P(~hurricane) = 0.03*0.992 = 0.0298 P(~hurricane|predict-hur) = P(predict-hur)
ตัวอย่าง:: มะเร็ง (Cancer) คนไข้คนหนึ่งไปตรวจหามะเร็ง ผลการตรวจเป็นบวก(+) อยากทราบว่า เราควร วินิจฉัยโรคคนไขคนนี้ว่าเป็นมะเร็งจริงหรือไม่? ความเป็นจริง คือ ผลการตรวจเมื่อเป็นบวกจะให้ความถูกต้อง 98% กรณีที่มีโรคนั้นอยู่จริง ผลการตรวจเมื่อเป็นลบจะให้ความถูกต้อง 97% กรณีที่ไม่มีโรคนั้น 0.008 ของประชากรทั้งหมดเป็นโรคมะเร็ง จากความน่าจะเป็นข้างต้น เราจะทราบว่าความน่าจะเป็นต่อไปนี้ P(cancer) = P(~cancer) = P(+ | cancer) = P(- | cancer) = P(+ |~ cancer) = P(- |~ cancer) =
ตัวอย่าง:: มะเร็ง (Cancer) เราสามารถคำนวณค่าความน่าจะเป็นของสมมติฐานว่าคนไข้เป็น / ไม่เป็น โรคมะเร็ง เมื่อทราบผลตรวจเป็นบวก โดยใช้กฎของเบย์ ดังนี้ ความน่าจะเป็นที่คนไข้คนนี้จะเป็นโรคมะเร็งเมื่อผลตรวจเป็นบวก เท่ากับ P(cancer |+) = ความน่าจะเป็นที่คนไข้คนนี้จะไม่เป็นโรคมะเร็งเมื่อผลตรวจเป็นบวก เท่ากับ P(~cancer |+) = P(+|cancer)P(cancer) = P(+|~cancer)P(~cancer) =
วิธีการเรียนรู้เบย์อย่างง่าย (Naïve Bayesian Learning) โดยแต่ละ instance x มี n แอททริบิวต์ หรือ x= {A1, …, An} และมี Ci เป็น class label Naïve Bayes Classifier = Max (P(Ci) P(Aj |Ci) ) P(A1,…, An) Max P’(Ci) P’(Aj |Ci) n i=1 m j=1 C =
ตัวอย่าง: ผิวไหม้ (sunburn) Sample ID Hair color Eye Color Weight Apply lotion Sun burn S1 black Dark overweight No - S2 red normal + S3 Blonde light Overweight S4 Red underweight S5 Black Yes S6 S7 S8 Normal S9 S10 S11 S12 Underweight S13 S14 no
ตัวอย่าง: ผิวไหม้ (sunburn) Instance x = <hair color= red, eye color = dark, weight= overweight, apply lotion = no> เพราะฉะนั้น เมื่อ instance ใหม่เข้ามาถามว่า ผิวจะไหม้หรือไม่ C1 : sun burn is + : P(+).P(red|+).P(dark|+).P(overweight|+).P(apply lotion|+) C2 : sun burn is - : P(-).P(red|-).P(dark|-).P(overweight|-).P(apply lotion|-) X belongs to class (“sunburn = -”)
ตัวอย่าง: เล่นเทนนิส (Play tennis) No Strong High Mild Rain D14 Yes Weak Normal Hot Overcast D13 D12 Sunny D11 D10 Cool D9 D8 D7 D6 D5 D4 D3 D2 D1 PlayTennis Wind Humidity Temp. Outlook Day
ตัวอย่าง: เล่นเทนนิส (Play tennis) ออกไปเล่นเทนนิสได้หรือไม่ New instance x = <Sunny, Cool, High, Strong> P(yes)P(sunny|yes)P(cool|yes)P(high|yes)P(strong|yes) P(yes) = 9/14 = 0.64 P(sunny|yes) = 2/9 = 0.22 P(cool|yes) = 3/9 = 0.33 P(high|yes) = 3/9 = 0.33 P(strong|yes) = 3/9 = 0.33 = 0.0051 C = Max P’(Ci) P’(Aj |Ci) n i=1 m j=1
ตัวอย่าง: เล่นเทนนิส (Play tennis) ออกไปเล่นเทนนิสได้หรือไม่ New instance x = <Sunny, Cool, High, Strong> P(no)P(sunny|no)P(cool|no)P(high|no)P(strong|no) P(no) = 5/14 = 0.36 P(sunny|no) = 3/5 = 0.6 P(cool|no) = 1/5 = 0.2 P(high|no) = 4/5 = 0.8 P(strong|no) = 3/5 = 0.6 = 0.0207 C = Max P’(Ci) P’(Aj |Ci) n i=1 m j=1 New instance is “play tennis = no”
จุดอ่อนของ Naïve Bayses 322 756 Data Mining จุดอ่อนของ Naïve Bayses New Instance : <Overcast, Cool, Low, Strong> P(no)P(overcast|no)P(cool|no)P(low|no)P(strong|no) So, P(no|<overcase,cool,low,strong>) = 0 ? Solve: m-estimate of probability n is number of training examples with C = Ci nc number of example with C= Ci and a = aj p prior estimate for P(aj |Ci) -> 1/(number-of-attribute-values) m number of virtual example (weight) -> |values| P(overcast|no) = = 0.125 0 + 3*1/3 5 + 3
วิธีการเรียนรู้เบย์อย่างง่าย (Naïve Bayesian Learning) ข้อดี ง่ายต่อการนำไปใช้ เพราะใช้การคำนวณที่ง่าย ได้ผลลัพธ์ที่สามารถนำไปประยุกต์ใช้ได้ดี ข้อเสีย ใช้ได้กับ attribute ที่เป็นอิสระกันเท่านั้น
วิธีการเรียนรู้เครือข่ายความเชื่อเบย์ (Baysian Belief Network Learning) เป็นแบบจำลองที่แสดงความสัมพันธ์ระหว่างแอตทริบิวส์แบบขึ้นต่อกันได้ นิยาม P(X|Y, Z) = P(X|Z) ตัวอย่าง: P(ฟ้าผ่า| ฝนตก, ฟ้าแลป) = P(ฟ้าผ่า | ฝนตก) การทำแบบจำลอง 1. Directed Acyclic Graph (DAG) 2. Conditional Probability Tables (CPT)
Example: DAG Storm (S) พายุ Lightning (L) ฟ้าแลป Thunder(T) ฟ้าร้อง ForestFire (F) ไฟป่า
ข้อมูลตัวอย่าง Thunder(T) ForestFire(F) Lightning(L) Strom(S) instances T 54 F 1 7 27 3 2 4 SUM 100
Calculation of CPT P(Vi = vi |Parent (Vi) = pi) = number of example Vi = vi number of example Parent (Vi) = pi P(L=T) = (54+1+7+27+3+2)/100 = 0.94 P(~ L= F) = 1-0.94 =0.06 Storm (S) พายุ Lightning (L) ฟ้าแลป Lightning T 0.94 F 0.06 Thunder(T) ฟ้าร้อง ForestFire (F) ไฟป่า
Calculation of CPT Lightning T 0.94 F 0.06 Strom T 0.68 F 0.32 Storm (S) พายุ Lightning T 0.94 F 0.06 Strom T 0.68 F 0.32 Lightning (L) ฟ้าแลป L ~L T 0.95 0.00 F 0.05 1.00 Thunder(T) ฟ้าร้อง ForestFire (F) ไฟป่า P(T| ~L) = (0)/(0) = 0.0 P(T| L) = (54+1+7+27)/(54+1+7+27+3+2) = 0.95 P(~T|L) = (3+2)/(54+1+7+27+3+2) = 0.05 P(~T| ~L) = (4+2)/(4+2) = 1.0
Calculation of CPT Lightning T 0.94 F 0.06 Strom T 0.68 F 0.32 Storm (S) พายุ Lightning T 0.94 F 0.06 Strom T 0.68 F 0.32 Lightning (L) ฟ้าแลป L ~L T 0.95 0.00 F 0.05 1.00 Thunder(T) ฟ้าร้อง ForestFire (F) ไฟป่า L,S L,~S ~L,S ~L,~S T 0.89 0.03 0.00 0.00 F 0.11 0.97 1.00 1.00 P(F| L, S) = (54+3)/ (54+7+3) = 0.89 P(F| L,~S) = 1/(1+27+2) = 0.03 P(~F| ~L, S) = 4/4 = 1 P(~F| ~L,~S) = 2/2 = 1
Example: เพราะฉะนั้นก็จะไม่เกิดไฟป่า X = < Lightning= False, Strom= True> จะเกิดไฟป่า (ForestFire) หรือไม่ (True หรือ False) P(ForestFire = True| Lightning = False, Strom = true ) = P(F|~L,S) = 0.00 P(ForestFire = False| Lightning = False, Strom = true ) = P(~F|~L,S) = 1.00 เพราะฉะนั้นก็จะไม่เกิดไฟป่า