[ML] Setup Python สำหรับ Machine Learning ใน Anaconda

บทความนี้ ทดสอบบน Windows นะครับ โดยตอนนี้เป็นการ Setup Python ใช้พร้อมกับการทำ Machine Learning ใน Anaconda ครับ

สิ่งที่ต้องเตรียม

  • Download Anaconda (อันนี้ผมใช้ Python 3.x) ครับ
  • ติดตั้ง Anaconda ใช้เรียบร้อย
  • ทดสอบเปิด Anaconda  Navigator ดังรูป

ทดสอบ Conda

  • ตัว Conda คือ Anaconda command line
  • เปิดตัว Anaconda Prompt โดยเรียกจาก Start Menu ดังรูป อย่าลืม Run As Administrator
  • ลองมาดู Conda ว่า version อะไร โดยใช้คำสั่ง
  • ลองมาดู Python ที่ติดกับ Anaconda เป็น Version อะไร โดยใช้คำสั่ง
  • ผลที่ได้จาก 2 คำสั่งข้างต้น ดังรูป

Update Conda และ Anaconda

  • Update Conda โดยใช้คำสั่ง ดังนี้
  • ผลลัพธ์ที่ได้ ดังรูป
  • Update Anaconda โดยใช้คำสั่ง ดังนี้
  • ผลลัพธ์ที่ได้ ดังรูป
  • Tip: ถ้าหากลิมเปิด Anaconda Prompt โดยลืม Run As Administrator มันจะด่าเรา ดังรูป

Update Machine Learning Library scikit-learn

  • scikit-learn – เป็น Library สำหรับทำ Machine Learning ของ Python ครับ
  • Update scikit-learn โดยใช้คำสั่ง
  • ผลลัพธ์ที่ได้ ดังรูป (กรณีนี้ Package เป็นอันล่าสุดแล้ว)
  • Tip: หากต้องการระบุ Version เฉพาะเจาะจงลงไป สามารถใช้คำสั่ง ดังนี้

Testing: scikit-learn และ Library ที่จำเป็นสำหรับ Machine Learning

  • ทดสอบโดยการเปิด jupyter และใส่คำสั่งลงไป ดังนี้
  • ลอง Execute ดูผลลัพธ์ครับ

เดี๋ยว Blog ตอนถัดไป อาจจะลองทำเรื่อง Setup Envirosment สำหรับ Deep Learning นะครับ (ถ้าว่าง)

 

[ML] SOM-Machine Learning

แล้ว SOM มัน คือ อะไร คนคิดวิธีการนี้ชื่อว้ม หรือป่าว ? ตอบเลยว่ามันไม่ใช้ครับ SOM เป็นตัวย่อมาจาก Self-Organizing Map ครับ โดยสามารถเรียกอีกชื่อนึงด้นะว่าเป็น Kohonen Map (Network) คิดค้นโดย Dr.Teuvo Kohonen และ Dr. Timo Honkela ส่วนตัวผมคุ้นชื่อหลังมากกว่านะ เพราะเคยเรียน AI มาตอนปริญญาตรี

พอมันมี Network และ AI เช้ามาเกี่ยวข้องแล้ว อ่าช่ายใช่แล้วครับ มันเป็นมันเป็น AI ดูตอบแบบกำปั้นทุบดินมากๆ โดยเจ้า SOM มันเป็น Neural Network แบบหนึ่งครับ โดยถูกจัดอยู่ในกลุ่ม Unsupervise Learning ครับ

เกริ่นมาซะนานแล้ว เรามาดูกันดีกว่า ว่าเจ้า SOM ทำอย่างไรบ้าง

  • Step 0: แปลงข้อมูลอยู่อยู่ในรูปของตัวเลขก่อนครับ เพราะเครื่องมันไม่สามารถรู้ได้ หรอกว่า สิ่งที่ส่งเข้าไป คือ อะไร โดยสิ่งที่เราทำจะเรียกว่า Feature Map
  • Step 1: Initialization – กำหนดค่า Weight ใน Feature Map
  • Step 2: Sampling – สร้าง Input Vector ใส่เข้าไป
  • Step 3: Matching – หา Neuron Node ที่เรียกว่าเป็น Winner Node ที่มีค่าใช้เคียงกับ Input Vector โดยเราต้อง
    • ดูความใกล้เคียงของ Node ที่เป็น โดยใช้ Euclidean Distance
    • หา Node ที่ชนะ โดยดูว่า Node ไหนมีระยะใกล้ที่สุด
  • Step 4: Updating – ปรับค่า Weight ใน Feature Map ให้สอดคล้องกับ Winner Node ที่เปลี่ยนไป อันนี้มีได้หลายสูตร เช่น
  • Step 5: วนทำข้อที่ 2 จนครบทุกๆ Input Vector
  • Step 6: ปรับค่า Learning Rate(α) โดยตัว Learning Rate หรือ อัตราการเรียนรู้ คือ
    • อัตราการเรียนรู้สูงของ neural network ถ้ามีค่าสูงเกินไปจะทำให้การเรียนรู้ไม่มีประสิทธิภาพ และถ้าต่ำเกินไปก็จะใช้เวลาในการเรียนรู้นานแต่จะสามารถเรียนรู้ได้มีประสิทธิภาพมากกว่า ซึ่งปกติจะมีค่า 0.1 แต่เราสามารถเพื่มขึ้นได้ขึ้นกับลักษณะปัญหาของเรา กำหนดเป็นสมการอันนึง
    • ที่มีการกำหนดค่า Learning Rate สูง เพราะใช้หลักการ Greedy คือ เอามามากที่สูงก่อน จากนั้นค่อยไปปรับจูนกับค่า weight ที่ที่เราได้สุ่มขึ้นมา จนได้ค่าที่มีประสิทธิภาพที่ แต่ละ Model ต้องการ
    • โดยทั่วไปมักจะกำหนดค่า Learning Rate ไม่เกิน 1
  • Step 7 : ลดขนาดพื้นที่ลงตาม Neighbor กับ node ลง โดยมีหลายวิธีจำกัดขนาดพื้นที่แบบสามเหลี่ยม สีเหลี่ยม
  • Step 8: Repeat ทำ Step 2-7 ซ้ำไปเรื่อยๆ ถึง Stop Condition
    • จนกว่า Feature Map จะไม่มีการเปลี่ยนแปลง
    • หรือ Learning Rate  เข้าใกล้ 0

รู้ Step แล้ว แล้วมันเอาไปใช้อะไรได้บ้าง

  • จัดกลุ่มไง – Clustering ทั้งหลาย งานไหนที่แบ่งกลุ่งได้ ก็เข้าข่ายที่อาจจะนำไปใช้ได้ เช่น คัดเลือก Project ที่เหมาะสม ตาม Feature ที่กำหนดให้

สิ่งที่ SOM มันทำ คือ ทำให้ข้อมูลที่มีหลายมิติ มันแบนลง มิติน้อยลง เพื่อให้คนทั่วๆไป สามารถทำความเข้าใจได้ง่ายครับ

เอ๊ะ มันดูคล้ายๆกับ K-Mean Clustering นะ แล้ว 2 ตัวนี้มันแตกต่างกันตรงไหน ?

  • ถ้าถามผม ผมคิดว่า K-Mean เหมือน Concept คล้ายกัน เป้าหมายคล้ายกัน แต่จะไปดูที่จุด Centroid แต่ SOM หา Winner Node
  • แต่การเลือกใช้ น่าจะขึ้นกับลักษณะของข้อมูลที่ได้มานะ โดยส่วนตัวเช้าใจว่า SOM ใช้พลังในการคำนวณ มากกว่า K-Mean นะ

Reference

Introduction to Machine Learning

ภาพจากเว็บ https://pixabay.com/p-503588/?no_redirect

สำหรับ Blog นี้เป็นการสรุปจากที่ได้ฟัง ได้อ่านมาจากหลายๆที่นะครับ และเนื่องด้วย ผมไม่เก่ง Math ฉะนั้นบางอย่างจะข้ามไป 5555

คำว่า Artificial Intelligence(AI) และ Machine Learning(ML) มันเหมือน หรือต่างกันอย่างไร

  • Artificial Intelligence(AL) – ระบบอะไรก็ได้ที่มันดูฉลาด ตอบสนองได้ตรงความความต้องการ ไม่ได้มองว่ามันฉลาดมาจากอะไร ฉลาด เพราะ มีการเก็บช้อมูลดี พอ Search มา Query where แล้วเจอ มีตรรกะตรงไป ตรงมา หรือ มันฉลาดจากการให้เครื่องเรียนรู้ข้อมูลที่ส่งเข้าไป  (AI – ดูเป็นคำว่ากว้างๆเน้อ)
  • Machine Learning(ML) – มองว่าเป็น Subset ของ Artificial Intelligence(AL) เป็นที่มาของความฉลาดของตัว AI

แล้ว Programming กับ Machine Learning(ML)

  • Programming – เขียนคำสั่งให้มันทำงาน ทำความต้องการ (Requirement) ที่ได้รับ เช่น ทำหน้าจอ Function คำนวณภาษีมูลค่าเพิ่ม 7% ผมส่ง Input เข้าไปกี่ครั้ง มันทำงานแบบเดิมแหละ
  • Machine Learning – เขียนให้มันเรียนรู้จากข้อมูล และสร้างกฏขึ้นมา จาก Model ที่เราปั้นออกมา

และตัวสุดท้าย พอดีถามอากู๋แล้วคนถามเยอะ Data Mining(DM) กับ Machine Learning(ML)

  • Data Mining – ทำเหมืองข้อมูล เพื่อสกัดสิ่งที่ซ่อนอยู่ (Insight) ฝั่ง Marketing ชอบเน้นคำนี้นะ โดยตัวแนวคิด หรือ Algorithm ผมมองว่ามันเป็นผลผลิต (Product) ที่ได้มาจาก Machine Learning(ML)
  • ตารางเปรีบเทียบรูปแบบของ Data Mining กับ Machine Learning(ML) ตามความเข้าใจผมนะ ไม่ได้ทำพวก Data Mining หลังจากเรียนจบไปแล้ว 2 ปี งานทับซ้อนกัน แต่จุดประสงค์ไม่เหมือนกัน
     Data MiningMachine Learning
    TypeAssociation rulesSupervised Learning
    ClusteringUnsupervised Learning
    ClassificationReinforcement Learning
    Sequencial Pattern
    Sequence Similarity

Machine Learning(ML) มัน คือ อะไร

  • มีหลายคนนิยามไว้ ผมขอยกที่เด่นๆมาจากที่ไปฟังหลายๆที่นะครับ
    • Tom Mitchell (1988) –
      “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.”
  • ในมุมของผมหละ – Machine Learning คือ การให้คอมพิวเตอร์เรียนรู้จากข้อมูล โดยต้องหาจุดเด่น (Features) ส่งให้มัน และระบบมี feedback กลับมา จนเป็นผ่านการประเมิน (จริงๆจะใส่ว่า “จนพอใจ” แต่มันดูแปลกๆ ดู Abstract ใช้คำว่า “ประเมิน”ดูน่าเชื่อถือกว่า)

รูปแบบหลักๆของ Machine Learning(ML) มีอะไรบ้าง

  • Supervised Learning : y = f(x)
    • รู้ Output ให้เครื่องช่วยแยกแยะ
    • รูปแบบงาน
      • Regression
      • Classification – k-Nearest Neighbors
      • Template Matching – Perceptron
      • Probability – Decision Tree, Naive Bayes
  • Unsupervised Learning : f(x)
    • ไม่รู้ Output ให้เครื่องมันหาให้
    • รูปแบบงาน
      • Clustering – ไม่รู้ว่าได้กี่กลุ่ม ตัวอย่าง Algorithm k-Means Clustering
  • Reinforcement Learning : y = f(x) และ มี z เป็นตัวเร่ง
    • อันนี้ผมไม่รู้ว่าตัวเองเข้าใจถูก หรือป่าวนะ ผมมักไปนึกถึงเรื่องที่เรียนในวิชาชีววิทยา ตอนมัธยม ที่มีการทดสอบเกี่ยวกับสุนัขน้ำลายไหล เมื่อเจออาหาร และปรับใหม่สั่นกระดิ่ง(เป็น z ตัวเร่ง) และให้อาหาร เรียนไปเรื่อยๆพบว่า เมื่อได้ยินเสียงกระดิ่ง สุนัขน้ำลายไหล พอไปถามอากู๋ได้คำตอบ ทฤษฎีการเรียนรู้ของพาฟลอฟ ( Ivan Petrovich Pavlov ) ครับ

      ภาพจากเว็บ http://psycologywithus.blogspot.com/2013/12/ivan-petrovich-pavlovs-theory-of.html
      ภาพจากเว็บ http://psycologywithus.blogspot.com/2013/12/ivan-petrovich-pavlovs-theory-of.html

การนำไปใช้จริงหละ – มันอยู่รอบตัวเราเลยแหละ

  • Search Engines
  • Financial Analysis
  • Image Processing – Object Recognition, Detection
  • Fraud Detection
  • Speech Recognition
  • Recommendation System – โดยมองจาก User Based, Item Based หรือ ปัจจัยแฝงอีกๆ เช่น มองจากโทนของหนัง หรือสภาพอากาศ เป็นต้น
  • Expert System – Medical Diagnosis

สำหรับผมหลังจากที่ไปฟังๆหลายๆงาน คือ ผมมองว่าตัวเองเป็นแนว Super User มากกว่า รู้ว่ามี และใช้ให้เหมาะกับงาน แต่คงไม่ได้สร้าง Algorithm ใหม่ๆ ขึ้นมาครับ อ่อนแอด้าน Math