สไลด์บางส่วนจากการอบรม Practical Data Mining with RapidMiner Studio 7

ตัวอย่างสไลด์การอบรม Practical Data Mining with RapidMiner Studio 7 รุ่นที่ 17 ครับ ท่านใดสนใจดูรายละเอียดการอบรมรุ่นถัดไปได้ที่ http://dataminingtrend.com/2014/training/rapidminer-training-18/

หนังสือ Introduction to Data Mining Techniques (ภาษาไทย)

IMG_20150524_095848

ย้อนหลังไปเมื่อ 12 ปีก่อน การวิเคราะห์ข้อมูลด้วยเทคนิค ดาต้า ไมน์นิง (data mining) ยังรู้จักกันในวงแคบส่วนใหญ่จะเป็นนักศึกษาปริญญาโทและเอกที่สนใจทำงานวิจัยทางด้านนี้ ผมเองเริ่มต้นรู้จักกับดาต้า ไมน์นิงเมื่อประมาณ 12 ปีก่อนเช่นกัน ในสมัยที่เป็นนักศึกษาปริญญาตรีตัวเล็กๆ ในห้องปฏิบัติการวิจัยการค้นหาความรู้จากฐานข้อมูลขนาดใหญ่ (Knowledge Discovery Laboratory) ในภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์ ในช่วงเวลาที่ผ่านมาผมได้เห็นการเปลี่ยนแปลงเกี่ยวกับความสนใจของผู้คนต่างๆ ในเรื่องดาต้า ไมน์นิงอย่างมากมาย ตั้งแต่ตอนแรกที่ความสนใจจะอยู่ในวงแคบดังที่ได้กล่าวมาแล้วจนมาถึงปัจจุบันที่มีผู้สนใจเพิ่มขึ้นเป็นวงกว้าง เช่น บริษัทเอกชนหรือธนาคารต่างๆ เริ่มให้ความสนใจนำการวิเคราะห์ข้อมูลด้วยเทคนิคดาต้า ไมน์นิงไปใช้งานกันมากขึ้นหรือมหาวิทยาลัยบางแห่งเริ่มจัดให้การเรียนการสอนเกี่ยวกับเรื่องนี้ในระดับชั้นปริญญาตรี จากความนิยมที่เพิ่มขึ้นและการเก็บเกี่ยวประสบการณ์ต่างๆ ในการวิเคราะห์ข้อมูลทางด้านดาต้า ไมน์นิงทำให้ผมคิดอยากจะเขียนหนังสือสักเล่มที่เกี่ยวกับการแนะนำเทคนิคการวิเคราะห์ข้อมูลทางดาต้า ไมน์นิงเบื้องต้นสำหรับนักศึกษาและผู้สนใจขึ้นมาและนั่นเองคือที่มาของหนังสือเล่มนี้ที่ชื่อว่า An Introduction to Data Mining Techniques ซึ่งในหนังสือเล่มนี้ผมจะแสดงหลักการทำงานของวิธีการต่างๆ ทางด้านดาต้า ไมน์นิงไม่ว่าจะเป็น การหากฏความสัมพันธ์ (association rules discovery) การแบ่งกลุ่มข้อมูล (clustering) และ การจำแนกประเภทข้อมูล (classification) พร้อมทั้งตัวอย่างการทำงานของวิธีการเหล่านี้เพื่อให้ผู้อ่านเข้าใจได้ง่ายโดยที่ไม่ต้องมีความรู้พื้นฐานทางด้านคณิตศาสตร์ขั้นสูง

หนังสือเล่มนี้คงไม่สามารถเกิดขึ้นได้ถ้าผมไม่ได้เรียนรู้ Data Mining จาก

  • รศ.ดร. กฤษณะ ไวยมัย มหาวิทยาลัยเกษตรศาสตร์
  • ดร. สุภาวดี อิงศรีสว่าง ศูนย์พันธุวิศวกรรมและเทคโนโลยีชีวภาพ
  • ศ. ดร. ธนารักษ์ ธีระมั่นคง สถาบันเทคโนโลยีนานาชาติสิรินธร (SIIT) มหาวิทยาลัยธรรมศาสตร์
  • ศ. ดร. นิค เซอร์โคน (Nick Cercone) มหาวิทยาลัย ยอร์ค (York University) ประเทศแคนาดา

ดูตัวอย่างหนังสือได้จากที่นี่ครับ หนังสือราคาเล่มละ 400 บาทรวมค่าจัดส่งแล้วครับ ^^

Continue reading

การแปลความโมเดล Neural Network (ตอนที่ 2)

ในบทความที่ผ่านมาเราได้สร้างโมเดล Neural Network ด้วย Weka กันไปแล้วนะครับ และเราได้โมเดลดังแสดงในตารางที่ 1 และ 2 ดังนี้

ตารางที่ 1 แสดงข้อมูลน้ำหนักระหว่าง Input node และ Hidden node

List of input nodeNode 1Node 2Node 3
houseSize0.470.640.65
lotSize-1.26-0.97-1.02
bedrooms-1.54-0.80-0.84
granite0.34-0.21-0.20
bathroom-0.94-0.26-0.32
Threshold-0.34-0.78-0.79

ตารางที่ 2 แสดงข้อมูลน้ำหนักระหว่าง Hidden node และ Output node

List of Hidden nodeOutput
Node 1-1.40
Node 2-1.04
Node 3-1.08
Threshold1.16

แม้ว่าก่อนหน้านี้ผมเคยเขียนบทความการนำโมเดลที่ได้จาก Weka ไปใช้งานแล้ว แต่บางท่านอาจจะอยากเข้าใจการทำงานของโมเดล Neural Network นี้หรือนำไปเขียนในระบบของตนเองที่จะพัฒนาขึ้นมาใช้งาน ดังนั้นในบทความนี้ผมจะแสดงตัวอย่างการนำโมเดลที่ได้ไปใช้ในการคำนวณเพื่อหาราคาบ้าน โดยผมจะขอใช้ข้อมูลอินแสตนซ์แรกจากในไฟล์ training ดังแสดงในตารางที่ 3

ตารางที่ 3 แสดงข้อมูลรายละเอียดของบ้านที่จะใช้ในการทดสอบโมเดล

houseSizelotSizeBedroomsgranitebathroomsellingprice
35299191600205000

ก่อนหน้านี้ผมยอมรับว่าเข้าใจผิดเรื่องการใช้งานโมเดล Neural Network ซึ่งจริงๆ แล้วเราไม่สามารถนำค่าข้อมูลไปแทนในสมการของโมเดล Neural Network ได้โดยตรงได้ เพราะว่าค่าน้ำหนักที่แสดงออกมาเกิดจากการที่แอตทริบิวต์ของเราถูกทำ normalization หรือการแปลงค่าข้อมูลให้อยู่ในช่วง -1 ถึง 1 ไปแล้วครับ ผมจะขออธิบายเป็นขั้นตอนดังนี้

  1. ข้อมูลในตารางที่ 3 จะต้องทำการแปลงค่าให้อยู่ในช่วง -1 ถึง 1 เสียก่อนโดยใช้สมการดังนี้
    • range = (max-min)/2 โดยที่ค่า max คือค่าที่มากที่สุด และ min คือค่าที่น้อยสุดของแต่ละแอตทริบิวต์
    • base = (max+min)/2
    • norm_attribute = (attribute-base)/range
  2. ทำการแปลงค่าในแอตทริบิวต์ houseSize (ขอเขียนย่อเป็น a1) ได้เป็น
    • range = (4032-2200)/2 = 916
    • base   = (4032+2200)/2 = 3116
    • norm_a1 = (3529-3116)/916 = 0.45
  3. ทำการแปลงค่าในแอตทริบิวต์ lotSize (ขอเขียนย่อเป็น a2) ได้เป็น
    • range = (19994-9191)/2 = 5401.5
    • base   = (19994+9191)/2 = 14592.5
    • norm_a2 = (9191-14592.5)/5401.5 = -1
  4. ทำการแปลงค่าในแอตทริบิวต์ bedrooms (ขอเขียนย่อเป็น a3) ได้เป็น
    • range = (6-4)/2 = 1
    • base   = (6+4)/2 = 5
    • norm_a3 = (6-5)/1 = 1
  5. ทำการแปลงค่าในแอตทริบิวต์ granite (ขอเขียนย่อเป็น a4) ได้เป็น
    • range = (1-0)/2 = 0.5
    • base   = (1+0)/2 = 0.5
    • norm_a4 = (0-0.5)/0.5 = -1
  6. ทำการแปลงค่าในแอตทริบิวต์ bathroom (ขอเขียนย่อเป็น a5) ได้เป็น
    • range = (1-0)/2 = 0.5
    • base   = (1+0)/2 = 0.5
    • norm_a5 = (0-0.5)/0.5 = -1
  7. หลังจากนั้นเราจะนำค่าแอตทริบิวต์ต่างๆ ที่แปลงแล้วมาใส่ในสมการเพื่อส่งไปยัง activate function ต่อไปดังในรูปที่ 1 ซึ่งเป็นโหนดใน hidden layer
    Screen Shot 2557-03-12 at 9.48.17 AM
    รูปที่ 1 แสดงการคำนวณค่าในโหนดที่ 1 ใน Hidden layer ของโมเดล Neural Network

    • x1 = (0.45*0.47) + (-1*-1.26) * (1*-1.54) + (-1*0.34) + (-1*-0.94) -0.34
      x1 = 0.19
    • f(x1) = 1/1+e-x = 1/1+e-0.19 = 0.55
  8. คำนวณค่า f(x) ของโหนดที่ 2 ในโมเดล
    • x2 = (0.45*0.64) + (-1*-0.97) * (1*-0.80) + (-1*-0.21) + (-1*-0.26) -0.78
      x2 = 0.15
    • f(x2) = 1/1+e-x = 1/1+e-0.15 = 0.54
  9. คำนวณค่า f(x) ของโหนดที่ 3 ในโมเดล
    • x3 = (0.45*0.65) + (-1*-1.02) * (1*-0.84) + (-1*-0.20) + (-1*-0.32) -0.79
      x3 = 0.20
    • f(x3) = 1/1+e-x = 1/1+e-0.20 = 0.55
  10. แสดงการคำนวณค่าในโหนด Output  ดังแสดงในรูปที่ 2
    Screen Shot 2557-03-12 at 9.54.07 AM
    รูปที่ 2 แสดงการคำนวณค่าในโหนดที่ 0 ใน Output layer ของโมเดล Neural Network

    • x0 = (0.55*-1.40)+(0.54*-1.04)+(0.55*-1.08)+1.16
      x0 = -0.77
    • f(x0) = -0.77
  11. ค่าคำตอบที่ได้คือ -0.77 เอ๊ะราคาบ้านคือ -0.77 หรอ จริงๆ ไม่ใช่นะครับ เราต้องทำการแปลงค่ากลับให้ไปอยู่ในช่วงของข้อมูลของแอตทริบิวต์ใน training ก่อนครับ โดยมีวิธีการทำดังนี้
    • range = (325000-189900)/2 = 67550
    • base   = (325000+189900)/2 = 257450
    • sellingPrice = -0.77*67550 + 257450 = 205436.5

สรุปแล้วค่าที่โมเดล Neural Network ทำนายออกมาได้คือ 205436.5 ซึ่งมีค่า error เกิดขึ้น 436.5 US dollar ครับ ^^ หวังว่าบทความนี้จะช่วยให้เข้าใจการใช้งานโมเดล Neural Network ได้มากขึ้นครับ ในครั้งถัดไปผมจะพูดถึงเทคนิคยอดฮิตของการทำ classification นั่นคือ Support Vector Machines (SVM) ครับ

การแปลความโมเดล Neural Network ใน Weka (ตอนที่ 1)

ช่วงที่ผ่านมาผมได้รับคำถามที่น่าสนใจจากหลายๆ ท่านทำให้ผมต้องไปค้นคว้าหาข้อมูลเพื่อมาตอบคำถาม และทำให้เข้าใจมากขึ้น วันนี้ผมขอนำสิ่งที่ผมไปค้นหาเกี่ยวกับการแปลความหมายในโมเดลของ Neural Network มาเล่าสู่กันฟัง (share) ครับ ^^

    1. ก่อนที่เราจะสร้างโมเดล Neural Network หรือใน Weka จะเรียกว่า Multi Layer Perceptron (MLP) ได้นั้นเราต้องมีข้อมูลเสียก่อน ในตอนนี้ผมจะใช้ข้อมูลสมมุติเกี่ยวกับราคาขายบ้านในประเทศสหรัฐอเมริกา ซึ่งมีทั้งหมด 6 แอตทริบิวต์ โดยมีค่าข้อมูลต่างๆ ดังแสดงในตารางที่ 1 และไฟล์ ARFF แสดงในรูปที่ 1ตารางที่ 1

       แสดงข้อมูลรายละเอียดของบ้านพร้อมทั้งราคา

      houseSizelotSizebedroomsgranitebathroomsellingPrice
      35299191600205000
      324710061511224900
      403210150501197900
      239714156410189900
      22009600401195000
      353619994611325000
      29839365501230000
      @RELATION house@ATTRIBUTE houseSize NUMERIC
      @ATTRIBUTE lotSize NUMERIC
      @ATTRIBUTE bedrooms NUMERIC
      @ATTRIBUTE granite NUMERIC
      @ATTRIBUTE bathroom NUMERIC
      @ATTRIBUTE sellingPrice NUMERIC@DATA
      3529,9191,6,0,0,205000
      3247,10061,5,1,1,224900
      4032,10150,5,0,1,197900
      2397,14156,4,1,0,189900
      2200,9600,4,0,1,195000
      3536,19994,6,1,1,325000
      2983,9365,5,0,1,230000รูปที่ 1

      แสดงข้อมูลในไฟล์ ARFF

    2. หลังจากที่เราได้เตรียมข้อมูลเรียบร้อยแล้ว เราก็จะโหลดข้อมูลเข้าไปใช้งานใน Weka กันครับ ขั้นแรกให้เราเลือกที่เมนู Open File ในแท็บ Preprocess และเลือกไฟล์ house.arff รายละเอียดของแอตทริบิวต์ต่างๆ จะแสดงในรูปที่ 2
      Screen Shot 2557-03-11 at 6.21.05 AM
      รูปที่ 2 แสดงข้อมูลที่โหลดเข้ามาใน Weka Explorer

 

    1. ถัดจากนั้นคลิกที่แท็บ Classify เพื่อเตรียมตัวสร้างโมเดล Neural Network โดยคลิกที่ปุ่ม Choose เลือกคลิกที่กลุ่ม functions และเลือก MultiLayerPerceptron และกดปุ่ม Start โมเดลของ Neural Network จะแสดงในส่วนของ Classifier Output  ดังในรูปที่ 3
      Screen Shot 2557-03-11 at 7.16.05 AM
      รูปที่ 3 แสดงโมเดลของ Neural Network ที่หาได้ในส่วนของ Classifier Output

 

  1. โมเดลที่แสดงออกมานี้เป็นค่าน้ำหนัก (weight) ของเส้นที่เชื่อมระหว่างแต่ละโหนดใน Neural Network เพื่อให้เข้าใจมากขึ้นขออธิบายโครงสร้างของ Neural Network คร่าวๆ ดังในรูปที่ 4 และ 5 ครับScreen Shot 2557-03-11 at 8.13.41 AM
    รูปที่ 4 แสดงโครงสร้าง Neural Network ของไฟล์ที่โหลดเข้าไป
    node in nuron network
    รูปที่ 5 แสดงการคำนวณภายในแต่ละโหนดของ Neural Network

    จากรูปที่ 4 ซึ่งแสดงโครงสร้างของ Neural Network ซึ่งประกอบด้วยโหนด (รูปวงกลมสีเขียว สีแดง และสีเหลือง) และเส้นเชื่อมโยงแต่ละโหนด เมื่อเราพิจารณาการวางตัวของโหนดแล้วจะแบ่งออกได้เป็น 3 ชั้น (layer) คือ

      • ชั้นที่ 1 จะเรียกว่า Input layer ประกอบด้วยโหนดสีเขียวซึ่งแสดงแอตทริบิวต์ต่างๆ ในไฟล์ที่เราโหลดเข้าไป (ถ้าจะพูดให้ง่ายๆ จำนวนโหนดในชั้นนี้จะเท่ากับจำนวนแอตทริบิวต์ซึ่งก็คือ 5 แอตทริบิวต์นั่นเอง)
      • ชั้นที่ 2 จะเรียกว่า Hidden layer ประกอบด้วยโหนดสีแดง ซึ่งจำนวนของโหนดในชั้นนี้นั้นโดยปกติ (default) จะเท่ากับจำนวนแอตทริบิวต์ทั้งหมด (5 แอตทริบิวต์ทั่วไปและ 1 คลาส) หารด้วย 2 ดังนั้นจึงได้เป็น 3 โหนด
      • ชั้นที่ 3 จะเรียกว่า Output layer ประกอบด้วยโหนดสีเหลือง

    ในแต่ละโหนดที่อยู่ในชั้น Hidden และ Output จะมีการคำนวณดังในรูปที่ 5 โดยจะแบ่งเป็น 2 ขั้นตอนย่อย คือ

      • การคำนวณค่าผลรวม (Sum) ในขั้นนี้จะนำค่าของโหนดต่างๆ คูณกับค่าน้ำหนักในแต่ละเส้นเชื่อมแล้วจึงนำมารวมกันเป็นค่าสุดท้าย
      • การคำนวณค่าที่ส่งออกโดยผ่านฟังก์ชัน activate (activate function) ฟังก์ชันส่วนใหญ่ที่ใช้ คือ sigmoid funcion ซึ่งมีลักษณะเป็นเหมือนรูปอักษร S โดยมีฟังก์ชันคือ 1/(1+e-x)

    ผมจะแสดงตัวอย่างการคำนวณให้ดูในขั้นถัดไป

  2. จากโมเดลของ Neural Network ที่สร้างได้เราสามารถนำมาสร้างเป็นตารางได้ดังตารางที่ 2 ซึ่งแสดงค่าน้ำหนักระหว่าง Input node และ Hidden node (เพื่อให้ดูได้ง่ายขึ้นจะแสดงเพียงแค่ทศนิยม 2 หลักเท่านั้น) ส่วนตารางที่ 3 แสดงค่าน้ำหนักระหว่าง Hidden node ไปยัง Output node

    ตารางที่ 2 แสดงข้อมูลน้ำหนักระหว่าง Input node และ Hidden node

    List of input nodeNode 1Node 2Node 3
    houseSize0.470.640.65
    lotSize-1.26-0.97-1.02
    bedrooms-1.54-0.80-0.84
    granite0.34-0.21-0.20
    bathroom-0.94-0.26-0.32
    Threshold-0.34-0.78-0.79
    ตารางที่ 3 แสดงข้อมูลน้ำหนักระหว่าง Hidden node และ Output node
    List of Hidden nodeOutput
    Node 1-1.40
    Node 2-1.04
    Node 3-1.08
    Threshold1.16

ถึงขั้นนี้คงจะพอเข้าใจความหมายของโมเดล Neural Network ใน Weka กันบ้างแล้วนะครับ ในวันถัดไปผมจะแสดงการทำนายโดยเอาข้อมูลใส่ในโมเดลของ Neural Network นี้ครับ