220 likes | 360 Views
Artificial Intelligence (AI). สัปดาห์ที่ 5 Clustering Algorithms อ.เทพฤทธิ์ สินธำรงรักษ์ เรียบเรียง. Topics. Supervised Learning Unsupervised Learning What’s Clustering? Clustering for game. Matlab. Clustering.
E N D
Artificial Intelligence (AI) สัปดาห์ที่ 5 Clustering Algorithms อ.เทพฤทธิ์ สินธำรงรักษ์เรียบเรียง
Topics • Supervised Learning • Unsupervised Learning • What’s Clustering? • Clustering for game. • Matlab
Clustering • Clustering หรือ การจัดกลุ่มข้อมูล เป็นปัญญาประดิษฐ์ฟังก์ชั่นหนึ่งที่ปัจจุบันนิยมนำมาใช้เพื่อวิเคราะห์ข้อมูล • เป็น Learning Machines ประเภท Unsupervised Learning • มีหลายตัวที่นิยมมาใช้ในปัจจุบัน เช่น K-mean, Fuzzy C-mean,Self Organizing Mapping Neural Network (SOM) และอื่นๆ
SupervisedLearning • Supervised Learning คือ การเขียนโปรแกรมที่ใช้อัลกอริทึมทางปัญญาประดิษฐ์เพื่อเรียนรู้ข้อมูลที่มีคำตอบอยู่แล้ว • กำหนดให้ x1,x2,…,xNเป็น Input ของโปรแกรม • y หรือ Target คือ Output ของโปรแกรม • เราต้องการเขียนโปรแกรมเรียนรู้ผลลัพธ์จาก ปัญหานี้ เราจะทำอย่างไร X1 X2 Y 0 0 1 1 0 1 0 1 0 1 1 0
Supervised • ให้เรามอง 1 คือ การเปิดไฟ • 0 คือ การปิดไฟ • จะได้ภาพดังนี้ Machine
XOR หรือ Exclusive-OR X1 X2 Y Machine X1 0 0 1 1 0 1 1 0 0 1 0 1 Y X2 การ Learn ของเราจะส่งตัวแปร X1 และ X2 เข้าไปในแบบจำลองเพื่อหาค่า Y ที่ละแถว โดยต้อง Random แถวเข้าไปเพื่อเรียนรู้ด้วย เพื่อหาค่าแบบจำลองที่สามารถดำค่าได้ ซึ่งเราจะเรียนอย่างละเอียดในสัปหาด์หน้านะครับ
Supervised • จากปัญหาที่นักศึกษาในรูปข้างบน นศ.บางคนจะคิดว่า มันก็ไม่อยากที่จะเขียนโปรแกรมนี่ค๊ะ • ใช่ มันเขียนโปรแกรมได้ แต่ถ้าปัญหาที่ยากกว่านี้หละทำไง ตัวอย่าง • ให้ดาวน์โหลดไฟล์ excel ที่ชื่อว่า DatasetForWeek8.xlsx มาดู
Unsupervised Learning • เป็นการเรียนรู้แบบไม่มีค่า Target • อ้าวแล้วเราจะเรียนรู้เพื่ออะไร • คำตอบคือ เราต้องการเรียนรู้ว่า Input ของเรามีลักษณะอย่างไรบ้าง • ยกตัวอย่าง บริษัทผลิตรถแห่งหนึ่งต้องการวิเคราะห์ว่ากลุ่มของลูกค้ามีอะไรเภทไหนบ้าง • มีตัวแปร x1 คือ อายุ แบ่งเป็น 1.อายุน้อย 2.อายุปานกลาง 3.อายุมาก • ตัวแปร x2 คือ ภูมิลำเนา แบ่งเป็น 1.อยู่ในกทม. 2.อยู่ต่างจังหวัด • คำถามคือเราจะแบ่งกลุ่มของลูกค้าเป็นอย่างไร
Unsupervised Machine X1 Y X2 ผลลัพธ์ของ Input Machine X1 X X2 ค่ากลางของ Input
รูปเริ่มต้น จุดศูนย์กลางของสองกลุ่ม
Matlab • เป็นภาษาคอมพิวเตอร์ภาษาหนึ่ง • ข้อดี • Syntax ง่าย ไว้สร้าง Prototype Code สำหรับอัลกอริทึม แล้วเอาไปแปลงเป็นภาษาอื่น เพราะการทำงานจะเป็น Matrix • มี function สำหรับการสุ่มครบถ้วนที่สุด • มีความสามรถในการเชื่อมต่อกับ code ภาษาอื่นๆ เช่น JAVA, C#, C++ ,HTML , Google map • ต่อฐานข้อมูลได้ • ทำ server ได้ • สามารถหาค่า Difference และ Integrate ได้ด้วย • และที่สำคัญสามารถเป็นใช้งาน Parallel Computing ได้*
คำสั่งใน ภาษา Matlab • ประกาศตัวแปร A1=1; A2=3.5; A3=‘Love’; • สร้าง Matrix s1=zeros(2,2) %แสดงว่าต้องการสร้าง Matrix ขนาด 2*2 s2=[1 2 3 4]; s3=[1 2;3 4];
คำสั่งใน ภาษา Matlab • For Loop for i=1:4 disp(i); end • While i=3; while (i>0) disp(i); i=i-1; end • randperm(10) • คำสังสุ่มลำดับตั้งแต่ 1-10 แล้วสร้างเป็น array เก็บค่าไว้ • [m n]=size(A); • คือการหาขนาดของ Matrix โดยจะรีเทิร์น • ค่าแถวเป็น m • ค่าหลักเป็น n
function:Distance • function [ Distance ] = Distance( x1,y1,x2,y2 ) Distance= sqrt(((abs(x1-x2)^2))+((abs(y1-y2)^2))); • end
function:plotScatter • functionplotScatter(X1, Y1, X2,Y2,X3, Y3) • figure1 = figure; • % Create axes • axes1 = axes('Parent',figure1); • hold(axes1,'all'); • % Create scatterDataset • scatter(X1,Y1,'o'); • % Create scatterCentroid1 • scatter(X2,Y2,100,'x'); • scatter(X2,Y2,10000,'o'); • % Create scatterCentroid2 • scatter(X3,Y3,100,'o','filled'); • scatter(X3,Y3,10000,'o');