การแปลความโมเดล 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 นี้ครับ

หลักสูตร Data Science จากมหาวิทยาลัย Harvard

สำหรับท่านที่สนใจหลักสูตร Data Science ผมขอแนะนำหลักสูตรนี้ครับ เป็นหลักสูตรที่เปิดสอนในมหาวิทยาลัย Harvard ซึ่งได้ผ่านไปแล้ว แต่เราสามารถดู VDO การสอนย้อนหลังได้จากเว็บ http://cm.dce.harvard.edu/2014/01/14328/publicationListing.shtml โดยมีทั้งหมด 22 vdo ดังนี้ครับ

  1. Introduction to Data Science
  2. Process, Data, and Visual Attributes
  3. Statisical Graphs
  4. Data Munging
  5. Statistical Models
  6. Bias and Sampling
  7. Regression
  8. High-dimensional data
  9. Classification and Clustering
  10. How to Think Like a Bayesian
  11. Bias, Variance and Cross Validation
  12. Bayesian computation continued, Monte Carlo methods
  13. Basic machine learning
  14. Amazon EC2, AWS Datastore, MapReduce, MRJob
  15. Guest Lecture: Katie Harris, Fathom
  16. Trees, Networks and Databases
  17. Guest Lecture: Margo Seltzer, Databases
  18. Network Visualization. Node-Link Graphs. Matrix Views. Gephi
  19. Network Models II
  20. Visual Story Telling. Messaging. Effective Presentations.
  21. Wrap-up & Outlook
  22. Guest Lecture: Yair Livne, Data Science at Quora

ตัวอย่างหนังสือ RapidMiner: Data Mining Use Cases and Business Analytics Applications

9781482205497ตัวอย่างบางบทจากในหนังสือ RapidMiner: Data Mining Use Cases and Business Analytics Applications ครับ เล่มนี้เป็นหนังสืออีกเล่มที่น่าสนใจสำหรับผู้สนใจอยากใช้ RapidMiner ดูรายละเอียดเพิ่มเติมได้ที่ หลักสูตรการวิเคราะห์ข้อมูลด้วยเทคนิค Data Mining โดยซอฟต์แวร์ RapidMiner Studio 6 (ขั้นพื้นฐานและปานกลาง) ครับ ^^

บทที่ 1 What This Book is About and What It is Not
บทที่ 2 Getting Used to RapidMiner
บทที่ 6 Naive Bayes Classificaton II
บทที่ 14 Robust Language Identification with RapidMiner: A Text Mining Use Case

การหา optimize parameter สำหรับ libsvm ด้วย RapidMiner Studio 6

ในปัจจุบันนี้เทคนิคการทำ classification ที่นิยมและให้ผลที่ดีก็คือ Support Vector Machine หรือ SVM แต่ไอเดียการทำงานของ SVM ค่อนข้างจะยุ่งยากในการจะนำมา implement เอง จึงได้มีอาจารย์จากมหาวิทยาลัยที่ประเทศไต้หวันได้พัฒนาโปรแกรมที่ชื่อว่า libsvm ขึ้นมาด้วยภาษา C/C++ และแจกจ่ายให้ผู้สนใจไปใช้งานได้ฟรี จนเป็นที่นิยมอย่างแพร่หลายในการทำงานวิจัย แต่การใช้ libsvm จำเป็นต้องทำการกำหนดค่า parameter ของ SVM ให้เหมาะสมถึงจะทำงานได้อย่างมีประสิทธิภาพ เพื่อให้การหา parameter นี้ได้ง่ายขึ้นในชุดของ libsvm จึงมีโปรแกรมที่ชื่อว่า grid.py ที่เป็นภาษา Python เตรียมไว้ให้ โปรแกรมนี้จะทำการเลือก parameter ที่เหมาะสมให้แต่ต้องรันบนระบบปฏิบัติการ Linux หรือต้องติดตั้งซอฟต์แวร์ cygwin สำหรับ Windows เสียก่อน ซึ่งก็ยุ่งยากพอควร

ในบทความนี้ผมจะแนะนำการหา parameter ที่เหมาะสมของ SVM โดยใช้ RapidMiner Studio 6 (ดังในรูปที่ 1)

optimize libsvm process

รูปที่ 1 process แสดงการหาพารามิเตอร์ที่เหมาะสมสำหรับ libsvm

ซึ่งข้อดีอย่างหนึ่งของ RapidMiner Studio 6 คือเราสามารถดาวน์โหลด process ที่เตรียมไว้ให้แล้วไปเปลี่ยนเฉพาะข้อมูลที่เราจะนำมาใช้ก็พอ ซึ่งผมจะแสดงตัวอย่างการใช้งาน process ดังกล่าวให้ดูในบทความนี้ครับ (ดาวน์โหลด process และข้อมูลไฟล์ Excel ได้จากที่นี่ครับ) สำหรับการใช้งาน RapidMiner Studio 6 เบื้องต้นติดตามได้ที่นี่
Continue reading

ทุนศึกษาต่อระดับปริญาเอกแบบ Dual Degree

วันนี้ขอแนะนำทุนศึกษาต่อระดับปริญญาเอกแบบ Dual Degree ครับเรียนจบจะได้ปริญญาเอก 2 ใบครับโดยได้รับจาก

  • สถาบันเทคโนโลยีนานาชาติสิรินธร (SIIT) มหาวิทยาลัยธรรมศาสตร์
  • สถาบัน Japan Advanced Institute of Science and Technology (JAIST) ประเทศญี่ปุ่น

หลักสูตรนี้เป็นหลักสูตร 4 ปีครับ นักศึกษาจะได้มีโอกาสเดินทางไปศึกษาที่ประเทศญี่ปุ่นเป็นเวลา 2 ปี โดยมีรายละเอียดดังนี้

  • ปีที่ 1 และ 3 เรียนที่ประเทศไทย
  • ปีที่ 2 และ 4 เรียนที่ประเทศญี่ปุ่น

ทุนนี้เปิดรับสมัครทุกปี ปีนี้เปิดรับสมัครตั้งแต่วันนี้ถึงวันที่ 16 พฤษภาคม 2557 รายละเอียดเพิ่มเติมดูได้จาก http://www2.siit.tu.ac.th/ictprojects/siitjaist/

ดาวน์โหลดฟรี หนังสือ Practical Machine Learning

สำนักพิมพ์ O’REILLY ได้แจกหนังสือเรื่อง Practical Machine Learning: Innovation in Recommendations ฟรี ผู้สนใจสามารถดาวน์โหลดได้ที่
http://www.mapr.com/practical-machine-learning?imm_mid=0b7b85&cmp=em-strata-na-na-newsltr_free_report_20140219_elist

practical-machine-learning-cover

แนะนำ conference เกี่ยวกับ Big Data

วันนี้ผมขอแนะนำ 2 conference ที่เกี่ยวกับ Big Data

  1. 2014 IEEE International Conference on Big Data (IEEE BigData 2014)
    มีรายละเอียดดังนี้
    In recent years, “Big Data” has become a new ubiquitous term. Big Data is transforming science, engineering, medicine, healthcare, finance, business, and ultimately society itself. The IEEE International Conference on Big Data 2014 (IEEE BigData 2014) provides a leading forum for disseminating the latest research in Big Data Research, Development, and Applications.We solicit high-quality original research papers (including significant work-in-progress) in any aspect of Big Data with emphasis on 5Vs (Volume, Velocity, Variety, Value and Veracity) relevant to variety of data (scientific and engineering, social, sensor/IoT/IoE, and multimedia-audio, video, image, etc) that contribute to the Big Data challenges. This includes but is not limited to the following:

    1. Big Data Science and Foundations
    2. Big Data Infrastructure
    3. Big Data Management
    4. Big Data Search and Mining
    5. Big Data Security & Privacy
    6. Big Data Applications

    วันสุดท้ายของการส่ง paper (submission deadline): 6 กรกฏาคม 2557 (July 6, 2014)
    รายละเอียดเพิ่มเติมติดตามได้ที่ http://cci.drexel.edu/bigdata/bigdata2014/

  2. The 3rd IEEE International Conference on Big Data Science and Engineering (BDSE 2014) มีรายละเอียดดังนี้
    Big data is an emerging paradigm applied to datasets whose size is beyond the ability of commonly used software tools to capture, manage, and process the data within a tolerable elapsed time. Such datasets are often from various sources (Variety) yet unstructured such as social media, sensors, scientific applications, surveillance, video and image archives, Internet texts and documents, Internet search indexing, medical records, business transactions and web logs; and are of large size (Volume) with fast data in/out (Velocity). More importantly, big data has to be of high value (Value) and establish trust in it for business decision making (Veracity). Various technologies are being discussed to support the handling of big data such as massively parallel processing databases, scalable storage systems, cloud computing platforms, and MapReduce. Big data is more than simply a matter of size; it is an opportunity to find insights in new and emerging types of data and content, to make business more agile, and to answer questions that were previously considered beyond our reach. Distributed systems is a classical research discipline investigating various distributed computing technologies and applications such as cloud computing and MapReduce. With new paradigms and technologies, distributed systems research keeps going with new innovative outcomes from both industry and academia. For example, wide deployment of MapReduce is a distributed programming paradigm and an associated implementation to support distributed computing over large big datasets on cloud.BDSE (Big Data Science and Engineering) is created to provide a prime international forum for both researchers, industry practitioners and environment experts to exchange the latest fundamental advances in the state of the art and practice of Big Data and broadly related areas.

    BDSE 2014 is the next event in a series of highly successful International Conferences, previously held as BDSE2013 (Sydney Australia), BigDataMR-12 (Xiangtan, China November 2012), AHPCN-12 (Bradford, UK, June 2012), AHPCN-11 (Banff, Canada, September 2011), AHPCN-10 (Melbourne, Australia, September 2010), AHPCN-09 (Seoul, Korea, June 2009), AHPCN-08 (Dalian, China, September 2008).

    วันสุดท้ายของการส่ง paper (submission deadline): 5 พฤษภาคม 2557 (May 5, 2014)
    รายละเอียดเพิ่มเติมติดตามได้ที่ http://www.swinflow.org/confs/bdse2014/index.htm

ฟรี!! หลักสูตรการเรียนออนไลน์หลักสูตร Machine Learning ของมหาวิทยาลัย Stanford เปิดรับสมัครแล้ว

ก่อนหน้านี้ผมเคยแนะนำหลักสูตร More Data Mining with Weka ที่เป็นการเรียนออนไลน์จากมหาวิทยาลัย Waikato ไปแล้ว วันนี้ผมขอแนะนำอีกหลักสูตรหนึ่งนั่นคือหลักสูตร Machine Learning ของมหาวิทยาลัย Stanford ซึ่งเป็นการเรียนแแบบออนไลน์ได้เปิดรับสมัครแล้ว โดยจะเริ่มเรียนวันที่ 3 มีนาคม 2557 สามารถลงทะเบียนเรียนได้ที่ https://www.coursera.org/course/ml โดยไม่มีค่าใช้จ่าย

การนำโมเดล classification ไปใช้งานใน Weka Explorer

หลังจากที่เราได้สร้างโมเดล classification กันไปแล้วในบทความ “การสร้างโมเดล classification ด้วย Weka Explorer” ที่ผ่านมา วันนี้เราจะนำโมเดลที่ได้มาใช้ในการทำนายข้อมูลใหม่กันครับ โดยมีขั้นตอนดังต่อไปนี้

1.  โหลดไฟล์โมเดลเข้ามาใช้งาน โดยการคลิกขวาในส่วนของ Result list และเลือกเมนู load model ดังในรูปที่ 1

weka_explorer7

รูปที่ 1 การโหลดโมเดลที่สร้างไว้เข้ามาใช้งาน
Continue reading