Intro to Machine Learning (Ep.1/2)

Intro to Machine Learning (Ep.1/2)
Created by Leonardo.ai

เนื้อหา

  • ทำไมถึงต้องมี Machine Learning (ML)  
  • Part 1 : Classical Machine Learning (Traditional ML)
    • 1.1) Supervised       I) Classification   II) Regression
    • 1.2) Unsupervised   I)  Clustering   II) Dimensionality Reduction   III) Association Rule
  • Part 2 : Reinforcement Learning (RL) 
  • Part 3 : Ensemble Methods  
    • I) Stacking   II) Bagging   III) Boosting
  • Part 4 : Neural Network (NN) & Deep Learning (DL)

ทำไมถึงต้องมี Machine Learning (ML)  

  • หากเราต้องการซื้อรถ และ คำนวณว่า ต้องเก็บเงินเท่าไร ต่อ เดือน ราคารถใหม่ คือ 1,000,000 แต่ราคารถมือสอง 1 ปี คือ 800,000 ใช้แล้ว 2 ปี 750,000 
  • ทำให้เห็นรูปแบบว่า ราคารถขึ้นอยู่กับอายุของมัน และ ลดลง 50,000 ทุกปี แต่จะไม่ต่ำกว่า  300,000 บาท
  • ใน ML จะเรียกว่า "การถดถอย (Regression)" เราทำนายค่า (ราคา) จากข้อมูลที่เรารู้ในอดีต เช่น เมื่อต้องการประเมินราคาที่เหมาะสมของ iPhone มือสอง หรือ จะซื้อเบียร์กี่ขวด สำหรับงานปาร์ตี้?
  • เป็นเรื่องที่ดี  หากมีสูตรง่าย ๆ สำหรับทุก ๆ ปัญหาบนโลก แต่ความจริงไม่ใช่อย่างนั้น 
  • กรณีของรถยนต์ ปัญหานี้มีหลายปัจจัยที่เกี่ยวข้อง เช่น วันผลิต Options ที่แตกต่างกัน เงื่อนไขทางเทคนิค ความต้องการ (อุปสงค์) ของตลาด และ ปัจจัยอื่น ๆ ที่ซ่อนไว้อีกมากมาย 
  • เราไม่สามารถเก็บข้อมูลทั้งหมดไว้ในหัว และคำนวณ "ราคารถ"
  • คนมีข้อจำกัด เราต้องการให้หุ่นยนต์ทำงานเรื่องคณิตศาสตร์แทนเรา หากให้ข้อมูลกับ Machine และ ขอให้ค้นหา Patterns (รูปแบบ) ที่ซ่อนอยู่ทั้งหมดที่เกี่ยวข้องกับ "ราคารถ"
  • Machine สามารถทำงานแบบนี้ได้ และยิ่งไปกว่านั้น คือ มันทำได้ดีกว่าคน เป็น "จุดกำเนิด ของ  ML"

3 องค์ประกอบของ ML

  • เป้าหมายเดียวของ ML คือ การทำนายผลลัพธ์ ตามข้อมูล Input (งาน ML ทั้งหมด สามารถแสดงได้ด้วยวิธีนี้)
  • ความหลากหลายในข้อมูลตัวอย่างที่มี ทำให้เราสามารถหา Patterns ที่เกี่ยวข้อง และทำนายผลลัพธ์
  • มี 3 องค์ประกอบของ ML

1) Data

  • หากต้องการตรวจจับ Spam email >> ต้องมีข้อมูลตัวอย่าง Spam
  • หากต้องการทำนายราคาหุ้น >> ต้องมีข้อมูลราคาในอดีต
  • หากต้องการตั้งค่าผู้ใช้ตามความชอบ >> อาจวิเคราะห์ข้อมูลจากกิจกรรมบน Facebook

ยิ่งข้อมูลมีความหลากหลายมากขึ้นเท่าไร ผลลัพธ์จะดีขึ้นเท่านั้น (ใน ML ที่มีข้อมูลน้อย ก็ควรจะมีเป็นหลักหมื่น)

2 วิธี ในการได้มาซึ่งข้อมูล (Manual, Auto)

    • Manual : ความผิดพลาดน้อย แต่ต้องใช้เวลา และ มีต้นทุนสูง
    • Auto : ต้นทุนต่ำกว่า เช่น Google ให้ลูกค้า ช่วย label ผ่าน ReCaptcha
ตัวอย่างของ ReCaptcha

2) Features : รู้จักกันในชื่อว่า (Parameters) พารามิเตอร์ หรือ (Variables) ตัวแปร สิ่งเหล่านี้อาจเป็น ไมล์รถยนต์ เพศของผู้ใช้งาน ราคาหุ้น จำนวนคำในข้อความ อีกนัยหนึ่ง คือ เป็นตัวแปร เพื่อให้ Machine ใช้ในการพิจารณา

    • เป็นเรื่องง่าย ที่พิจารณา ข้อมูลที่ถูกเก็บไว้ในตาราง เพราะ Features คือ ชื่อคอลัมน์
    • แต่หากเรามีรูปแมวขนาด 100 GB ? เราไม่สามารถพิจารณาแต่ละพิกเซลเป็น Features เป็นเหตุผลว่า การเลือก Features ที่เหมาะสม ใช้เวลานานกว่าขั้นตอนอื่น ๆ และอาจเกิดข้อผิดพลาดได้ ควรหลีกเลี่ยงการเลือกด้วยสัญชาตญาณมนุษย์ เพราะอาจจะเลือกเฉพาะ Features ที่เราสนใจ (มี Bias)

3) Algorithms : ในแต่ละปัญหา สามารถแก้ไขด้วยวิธีต่างกัน วิธีที่เลือกใช้ ต้องมีความเที่ยงตรง (Precision) มีประสิทธิภาพ และ มีขนาดของ Model ที่จะใช้งาน เหมาะสม สิ่งสำคัญอันหนึ่ง คือ หากข้อมูล Input ไม่ดี แม้แต่ Algorithm ที่ดีที่สุดก็ช่วยอะไรไม่ได้ "garbage in - garbage-out" ดังนั้น ไม่ควรให้ความสำคัญกับ ค่าความแม่นยำ (Accuracy) มากเกินไป ควรหาข้อมูล Input มาใส่เพิ่มเติม

“การเรียนรู้” กับ “สติปัญญา” 

  • Artificial Intelligence (AI) : เป็นชื่อขอบเขตความรู้ทั้งหมด
  • Machine Learning (ML) : เป็นส่วนหนึ่งของ AI
  • Neural Network (NN) : หนึ่งในประเภทของ ML ที่นิยม แต่ยังมีวิธีที่ดีกว่า คือ DL 
  • Deep Learning (DL) : วิธีการใหม่ โดย Train NN ด้วยสถาปัตยกรรมใหม่ 

Note : กฎ คือ การเปรียบเทียบ ควรจะต้องเป็นสิ่งที่อยู่ระดับเดียวกัน การเปรียบเทียบว่า นำเอา NN มาแทน ML ก็เหมือนเอา "ล้อรถ" มาแทน "รถยนต์" (เปรียบเทียบกันไม่ได้)  

Diagram ของ ML

Reference : https://vas3k.com/blog/machine_learning/

Reference : https://vas3k.com/blog/machine_learning/

Part 1 : Classical ML

  • วิธีการแรกมาจากสถิติ ในยุค 1950 อยู่ในหลักของคณิตศาสตร์ เช่น ค้นหารูปแบบ (Pattern) จากตัวเลข ประเมินความใกล้ของจุดข้อมูล คำนวณทิศทางเวคเตอร์
  • เช่น เมื่อเราเห็นรายการของบทความเพื่อ "อ่านต่อ" ธนาคารบล็อคบัตรของเรา ขณะที่เติมน้ำมันในปั้ม ซึ่งไกลมากแห่งหนึ่ง
  • บริษัท Tech ขนาดใหญ่ ชอบที่จะใช้ NN เพราะว่า การเพิ่ม 2% ของ ความแม่นยำ หมายถึง รายได้ที่เพิ่มขึ้น 2,000 ล้าน แต่จะไม่สมเหตุสมผล หากเราอยู่ใน บริษัท (หรือ ข้อมูล) ขนาดเล็กกว่า มีเรื่อง เกี่ยวกับทีมที่ใช้เวลา 1 ปี พัฒนา Recommendation Algorithm ใหม่ สำหรับเว็บไซต์อีคอมเมิร์ซ ก่อนที่จะพบว่า 99% ของการเข้าชมมาจาก Search Engine ดังนั้น Algorithm ที่ทำขึ้น ไม่มีประโยชน์ เพราะผู้ใช้ส่วนใหญ่ไม่ได้เปิดหน้าเว็ปไซต์หลัก
  • ข้อดีอีกอย่าง ของ "ML ดั้งเดิม" คือ เราอธิบายได้ง่าย เพราะมันเป็นวิธีพื้นฐานที่ใคร ๆ ก็เข้าใจได้
Reference : https://vas3k.com/blog/machine_learning/

ML แบบดั้งเดิม แบ่งได้เป็น 2 ประเภท คือ 1.1) Supervised 1.2) Unsupervised 

1.1)  Supervised กรณีแรก Machine มี "Supervisor" หรือ "ครู" ที่ให้คำตอบทั้งหมด เช่น แมวหรือสุนัขในภาพ ครูได้แบ่ง / ติดป้าย - "Label" ข้อมูลออกเป็นแมวและสุนัข และ Machine ใช้ตัวอย่างเหล่านี้เพื่อเรียนรู้

1.2)  Unsupervised คือ Machine ถูกทิ้งให้อยู่กับตัวเอง พร้อมรูปภาพสัตว์ โดยข้อมูลไม่ได้ระบุคำตอบ Machine พยายามหารูปแบบ (Patterns) ต่าง ๆ ด้วยตนเอง ซึ่งจะพูดถึงวิธีการนี้ในส่วนถัด ๆ ไป

1.1) Supervised Learning

  • แน่นอนว่า Machine จะเรียนรู้ได้เร็วขึ้นด้วย Supervisor ดังนั้น มันจึงถูกนำไปใช้ในงานจำนวนมาก แบ่งงานได้ 2 ประเภท 

I) Classification - ทำนายหมวดหมู่ของวัตถุ  

II) Regression - ทำนายค่าตัวเลข

I) Classification

  • แยกวัตถุตามคุณลักษณะอย่างใดอย่างหนึ่ง ที่รู้ก่อนล่วงหน้า เช่น แยกถุงเท้าด้วยสี แยกเอกสารตามภาษา แยกเพลงตามประเภท

ตัวอย่างที่นำไปใช้

    • การกรองสแปม (Spam Filtering)
    • ตรวจจับภาษา (Language Detection) 
    • ค้นหาเอกสารที่คล้ายกัน (Search of Similar Documents)
    • การวิเคราะห์ความรู้สึก (Sentiment Analysis)
    • จำแนกตัวอักษรและตัวเลขที่เขียนด้วยลายมือ (Recognition of Handwritten Characters & Numbers)
    • ตรวจจับการโกง (Fraud Detection)
  • Algorithms ที่นิยม : Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbors, Support Vector Machine

การตรวจจับ Spam (Naive Bayes)

Reference : https://vas3k.com/blog/machine_learning/

การให้เงินกู้ (Decision Tree)

Reference : https://vas3k.com/blog/machine_learning/

การแยกประเภทเครื่องดื่ม (Support Vector Machine)

Reference : https://vas3k.com/blog/machine_learning/

II) Regression

มันคือ การลากเส้นหนึ่งผ่านจุดทั้งหมดเหล่านี้

ตัวอย่างที่นำไปใช้

    • ทำนายราคาหุ้น
    • การวิเคราะห์ อุปสงค์ & ปริมาณการขาย  
    • การวินิจฉัยทางการแพทย์
    • อะไรก็ตาม .. ที่เกี่ยวกับ ตัวเลข - เวลา 
  • Algorithms ที่นิยม : Linear & Polynomial Regression

ทำนายการจราจร (Linear and Polynomial Regression)

Reference : https://vas3k.com/blog/machine_learning/

1.2) Unsupervised Learning

  • Unsupervised ถูกคิดค้นขึ้นช่วง 1990 ถูกนำไปใช้น้อยกว่า เพราะบางครั้งเราไม่มีทางเลือก
  • ข้อมูลที่มากับ Label เป็นเรื่องที่ดี หากเราต้องการจำแนกรถเมล์ การถ่ายรูปรถเมล์ ล้านรูป บนถนน แล้วบอกว่าเป็นรูปรถเมล์ อาจต้องใช้เวลาทั้งชีวิต
  • ดังนั้น เราอาจจะให้คนช่วย Label ด้วยค่าแรงที่ถูก $0.05  หรือ ใช้วิธีการแบบ Crowdsourcing  หรือ เราอาจใช้ Unsupervised แต่ไม่ค่อยเห็นใช้เป็น Algorithm หลัก ในทางปฏิบัติมากนัก ส่วนใหญ่จะใช้ในการทำ EDA (Exploratory Data Analysis)

I) Clustering

  • Clustering คือ การจำแนกประเภทวัตถุ ที่ไม่มี Class กำหนดไว้ล่วงหน้า Algorithm ทำการ Cluster โดยพยายามค้นหาวัตถุที่คล้ายกัน (โดยคุณสมบัติบางอย่าง) และรวมไว้ใน Cluster โดยใช้ Algorithm บางอย่าง เราสามารถระบุจำนวนกลุ่มที่ต้องการได้
  • ตัวอย่างของ Clustering เช่น การแสดงจุด (Markers) บนเว็ปแผนที่ เมื่อเรากำลังหาร้านอาหารมังสวิรัติ Clustering จะพยายามจัดกลุ่มเพื่อแสดงร้านที่เราน่าจะสนใจออกมา แทนที่จะแสดงร้านทั้งหมด 3 ล้านแห่ง ซึ่งอาจทำให้ Browser ค้างได้ 
  • Apple Photos และ Google Photos ใช้การ Cluster ที่ซับซ้อน เพื่อมองหาใบหน้าในภาพถ่าย และสร้างอัลบั้มรูปเพื่อนให้เรา 
  • อีกตัวอย่างที่นิยมใช้ คือ การบีบอัดภาพ เมื่อบันทึกภาพไฟล์ PNG หากเราตั้งค่า Palette เป็น 32 สี Clustering จะคำนวณ "ค่าเฉลี่ยสีแดง" และตั้งค่าสำหรับ Pixel สีแดงทั้งหมด หากใช้ สีน้อยลง จะทำให้ ขนาดไฟล์เล็กลง

วิธีการของ Algorithm แบบ K-Means

  • สุ่มตั้งค่า 32 จุดสีในจานสี ในทีนี้ คือ ศูนย์กลาง (Centroid) จุดทั้งหมด จะถูกกำหนดให้อยู่กับ Centroid ที่ใกล้ที่สุด ดังนั้น เราจึงได้ทั้งหมด 32 กลุ่ม จากนั้นเราจะย้าย Centroid ไปยังใจกลางของกลุ่ม (คำนวณ Mean ใหม่) และทำซ้ำ จนกระทั่ง Centroid หยุดเคลื่อนไหว
  • หรือ เราอาจมีปัญหากับสี เช่น สีที่เหมือนสีฟ้า มันเป็นสีเขียวหรือสีน้ำเงิน ?

ใช้ K-Means หาจุดขายกาแฟ ที่เหมาะสม

Reference : https://vas3k.com/blog/machine_learning/
  • การหา Centroid นั้น เป็นเรื่องง่าย แต่ในชีวิตจริง ทุก ๆ เรื่อง Cluster ไม่ใช่ รูปวงกลม เช่น นักธรณีวิทยา ต้องการหาแร่บนแผนที่ มันอาจเป็นรูปใด ๆ ก็ได้ และ เราไม่รู้จำนวนของมันว่ามีเท่าไร
  • Algorithm อันหนึ่ง คือ DBSCAN อาจนำมาใช้ได้ การทำงานของมัน เปรียบเทียบได้กับ ให้ 3 คนที่ยืนใกล้กันจับมือกันไว้ เป็นกลุ่ม จากนั้นหากลุ่มข้างเคียง ที่เอื้อมถึง เพื่อจับมือกันอีก จนกระทั่งไม่สามารถจับมือใครได้ ถือเป็น Cluster ที่ 1 และทำแบบนี้ไปเรื่อย ๆ .. จนกระทั่งทุกคนมี Cluster อยู่
Figure
Reference : https://www.digitalvidya.com/blog/the-top-5-clustering-algorithms-data-scientists-should-know/
DBSCAN Clustering คือ อะไร
ย่อจาก Density- Based Spatial Clustering of Applications with Noise ถือเป็น Machine Learning ประเภท Unsupervised Learning ใช้ในการจัด Cluster เป็น Density-based Clustering จัด Cluster โดยพิจารณาจากบริเวณที่มีความหนาแน่น โดยบริเวณที่มีความหนาแน่นน้อยอาจถูกพิจารณาเป็น Noise 🟢 ข้อดี * รูปร่างของ

II) Dimensionality Reduction

การรวบรวม Features ที่กำหนด ให้มีระดับสูงขึ้น (High-Level)

Dimensionality Reduction คือ อะไร
เป็นเทคนิคหนึ่งในทาง Data Science และ Machine Learning ที่ใช้ในการลด Input Features ของ Dataset นิยาม ทำ Dataset ที่มีความซับซ้อนให้ง่ายขึ้น โดยลดจำนวน Features (Dimensions) ลง และมีการสูญเสีย Information น้อยที่สุด เป้าหมาย เพื่อหลีกเลี่ยง Curse of Dimensionality

ตัวอย่างที่นำไปใช้

    • Recommender systems 
    • การแสดงผลที่มีประสิทธิภาพ
    • หาเอกสารที่ใกล้เคียงกัน
    • วิเคราะห์ภาพปลอม
    • บริหารความเสี่ยง
  • Algorithms ที่นิยม : Principle Component Analysis (PCA), Singular Value Decomposition (SVD), Latent Dirichlet allocation (LDA), Latent Semantic Analysis (LSA, pLSA, GLSA), t-SNE (สำหรับการแสดงผล)
  • การ Project ข้อมูล ไปยังเส้น PCA  เพื่อลดรูป Features ของข้อมูล อาจทำให้สูญเสียบางอย่างไป แต่สิ่งเกิดขึ้นใหม่ อาจนำไปใช้ประโยชน์ได้มากกว่า คือ ทำให้ Train model ได้เร็วกว่า โอกาสเกิด overfit น้อยกว่า ใช้จำนวน features น้อยกว่า 
  • Algorithms เหล่านี้ เป็นเครื่องมือที่สามารถสร้าง Topic modeling เราสามารถสรุป ความหมายจาก กลุ่มคำที่เฉพาะเจาะจง (เรียกว่า Latent Semantic Analysis - LSA) โดยขึ้นอยู่กับความถี่ของคำ ในแต่ละหัวข้อ เช่น มีคำศัพท์ทางเทคโนโลยี ในบทความเทคโนโลยี ชื่อของนักการเมือง จะพบในข่าวการเมือง ฯลฯ
  • เราสามารถสร้างกลุ่ม จากคำทั้งหมดในบทความ แต่เราจะสูญเสีย Connection ที่สำคัญทั้งหมด LSA จะจัดการให้อย่างเหมาะสม นั่นคือสาเหตุ ที่เรียกว่า "Latent Semantic"
  • เพื่อให้มีการรักษา Connection ไว้ Singular Value Decomposition (SVD) จะเป็นอีกอันที่ช่วยในภารกิจนี้

แยกประเภทเอกสารโดย Topics

Reference : https://vas3k.com/blog/machine_learning/

III) Association Rule

ค้นหารูปแบบลำดับในการสั่งซื้อ

Association Rules ทำงานอย่างไร?
Association Rules ถูกใช้บ่อยในการวิเคราะห์สินค้าที่ซื้อคู่กัน ตัวอย่างเช่น Apiori Algorithm * ลูกค้าที่ไป Supermarket มักมีรายการสิ่งที่ต้องซื้อเป็นมาตรฐาน แต่ละคนมีรายการที่แตกต่างกัน ขึ้นอยู่กับความต้องการและความชอบของแต่ละคน * แม่บ้าน 🧓🏻 อาจซื้อวั

ตัวอย่างที่นำไปใช้

    • เพื่อคาดการณ์ยอดขายและส่วนลด
    • เพื่อวิเคราะห์สินค้าที่ซื้อพร้อมกัน
    • เพื่อจัดตำแหน่งผลิตภัณฑ์บนชั้นวาง
    • เพื่อวิเคราะห์รูปแบบการท่องเว็บ
  • Algorithms ที่นิยม : Apriori, Euclat, FP-growth
  • เช่น วิเคราะห์สินค้าในตะกร้า กลยุทธ์การตลาดแบบอัตโนมัติ และ งานอื่น ๆ เมื่อเรามีลำดับของบางอย่าง และต้องการหารูปแบบในนั้น
  • นำไปใช้สำหรับ E-commerce Platform เพื่อคาดการณ์ว่า ลูกค้าจะซื้ออะไรในครั้งต่อไป?
  • จริง ๆ แล้ว ผู้ค้าปลีกรายใหญ่ สร้างวิธีการเป็นของตนเอง (Proprietary Solution) สำหรับระบบ ที่รู้จักกันในชื่อ - Recommender System

สมมติว่า ลูกค้านำเบียร์ 6 แพ็ค ไปที่จุดชำระเงิน เราควรวางถั่วลิสงระหว่างทางไหม ? มีคนซื้อด้วยกันบ่อยแค่ไหน ? นอกจากเบียร์และถั่วลิสง เรายังสามารถคาดเดาเรื่องอื่น ๆ ได้อีก การเปลี่ยนแปลงสินค้าที่จัดเรียงเล็กน้อย สามารถทำให้กำไรเพิ่มขึ้น ?

ตัวอย่างของ Association Rule

Reference : https://vas3k.com/blog/machine_learning/

ยังมีต่อ Ep.2


ข้อมูลอ้างอิง Machine Learning for Everyone https://vas3k.com/blog/machine_learning/