Two-Class Boosted Decision Tree

บทที่ 18-Two Class Boosted Decision Tree Boosted Decision Tree เป็นโมเดลแบบ Supervised Learning method และเป็นโมเดลแบบ Ensamble แบบ Boosting หรือการนำ Weak Classifier (แม่นยำต่ำ) มาทำนายข้อมูลที่เรามีจากนั้นให้ weak ตัวใหม่แก้ไข error เรื่อย ๆ เป็น Decision Tree ต่อกันเป็นลำดับหลาย ๆ ต้น ซึ่งวิธีการนี้จะทำนายความซับซ้อนได้ดีกว่าแบบ Bagging ที่นำผลจาก Decision Tree มาโหวตกัน แต่มีข้อเสียคือใช้เวลานานกว่านั้นเองค่ะ Dataset ที่เราต้องการจะทำ Classification ในวันนี้คือ Bank Telemarketing หรือการทำการตลาดทางโทรศัพท์ของธนาคาร ซึ่งข้อมูลมีจำนวน 41188 แถว 21 คอลัมน์ และเป้าหมายที่เราต้องการคาดการณ์หรือ Classify คือลูกค้าที่ทางธนาคารโทรไปเสนอขายสินค้าทางโทรศัพท์จะสมัครรับสินค้าหรือไม่…

Multiclass Logistic Regression

บทที่ 17-Multiclass Logistic Regression วิธีการ Classification คุณภาพของไวน์ด้วยโมเดล Multiclass Logistic Regression โดย AzureML Logistic Regression คือหนึ่งในโมเดลทาง Machine Learning และเป็นโมเดลแบบ Supervised Leaning ที่มีประสิทธิภาพในการการทำ Classification โมเดลหนึ่งที่สามารถแยกประเภทข้อมูลออกจากกันโดยใช้ feature ต่าง ๆ ที่เกี่ยวข้องโดยสามารถแยกข้อมูล 2 ประเภทออกจากกันใน AzureML ได้โดยใช้ module ที่มีชื่อว่า Two-Class Logistic Regression แต่ในบทความนี้เราจะไม่ได้ทำการ Classification ข้อมูลเป็นสองกลุ่มแต่เราจะทำการแยกประเภทมากกว่าสองกลุ่มโดยใช้  Multiclass Logistic Regression   ข้อมูลที่เราต้องการจะทำ Classification โดยใช้ Multiclass Logistic Regression ใน AzureML มาช่วยในการแยกคุณภาพของไวน์ที่เราต้องการซึ่ง มีจำนวนข้อมูล 1599 แถวและ…

Apple SQL Transformation

บทที่ 15-Apple SQL Transformation วิธีการแปลงให้ข้อมูลอยู่ในรูปที่เราต้องการโดยใช้ Apple SQL Transformation ใน AzureML เมื่อเรามีชุดข้อมูลชุดหนึ่งที่ต้องการจะเปลี่ยนข้อมูลให้มีรูปแบบตามที่เราต้องการและ module ที่มีอยู่ไม่สามารถแปลงให้อยู่ในรูปแบบที่เราต้องการได้ เช่นเรามีข้อมูลของไวน์ชนิดหนึ่งที่มีข้อมูลหลายคอลัมน์ที่ส่งผลต่อผลของคุณภาพและมีเป้าหมายที่เราต้องการ classification คุณภาพของไวน์ออกมาแต่คุณภาพของไวน์ใน target ของเรามีอยู่ได้ถูกกำหนดคุณภาพของไวน์โดยให้ค่าเป็นเลข 3-8 โดย 3 หมายถึงไวน์ที่มีคุณภาพต่ำ และ 8  หมายถึงไวน์ที่มีคุณภาพสูง ซึ่งคุณภาพเหล่านี้ถูกแบ่งเป็น 6 กลุ่ม ดังรูป   เมื่อเราจะ  classification ออกเป็น 6 กลุ่มอาจทำให้ค่าความถูกต้องและผลของการ classification ไม่ดีเท่าที่ควร เราจึงต้องการจัดกลุ่มของคุณภาพไวน์ใหม่โดยกำหนดให้ 3 และ 4 คือคุณภาพต่ำ, 5 และ 6 คือมาตรฐาน, 7 และ 8 คือคุณภาพสูง สิ่งที่เราต้องการเหล่านี้สามารถทำได้โดยใช้ module ที่มีชื่อว่า Apply SQL…

How to use Tune Hyperparameter by AzureML

บทที่ 14-How to use Tune Hyperparameter by AzureML วิธีการใช้ Tune Hyperparameter ใน AzureML ในบทความนี้หลาย ๆ คนคงสงสัย  Tune Hyperparameter หรือตัว Hyperparameter นั้นคืออะไรและมีผลอะไรในการสร้างโมเดลของเรา และวิธีการใช้เป็นอย่างไร ในบทความนี้สามารถช่วยไขข้อสงสัยนี้ได้ค่ะ จากหลาย ๆ บทความที่ผ่านมาเราคงจะได้เห็นว่าทุกโมเดลที่เราใช้มีการปรับ parameter มากมายที่เราต้องกำหนดค่าให้เหมาะกับข้อมูลของเรา แล้วเราจะรู้ได้อย่างไรว่า ค่า Parameter ต่าง ๆ ต้องเป็นค่าเท่าไหร่ถึงจะเหมาะสมกับข้อมูลของเรา ปัญหาเหล่านี้สามารถแก้ไขได้ด้วยการใช้ module ที่ชื่อว่า Tune Model Hyperparameters ค่ะ Tune Model Hyperparameters ช่วยให้เราสามารถเลือกส่วนประกอบหรือเลือก parameter ที่ดีที่สุด นั่นคือช่วยในการกำหนดค่า parameter ที่หลากหลายที่สุดเท่าที่จะเป็นไปได้ หรือเราเรียกว่า Hyperparameter optimization โดย Tune…

SMOTE with AzureML

บทที่ 13-SMOTE with AzureML วิธีการจัดการกับ Dataset ที่ไม่สมดุลกันด้วย SMOTE โดยใช้ AzureML ในกระบวนการเตรียมข้อมูลปัญหาที่เราสามารถพบได้และเราควรทำการแก้ไขมันคือ การที่ dataset มีจำนวนไม่สมดุลกัน เช่น ข้อมูลแรกมี 99 % และอีกข้อมูลมี 1%  ซึ่งการที่จำนวนข้อมูล  2 class ทำให้ผลจากการ classify เกิดการทำนายที่ลำเอียด และความแม่นยำที่อาจทำให้เราเข้าใจผิดได้ ซึ่งข้อมูลที่เป็นแบบนี้ตัวอย่างเช่น การฉ้อโกงบัตรเครดิต ข้อบกพร่องในการผลิต การวินิจฉัยโรคที่หาอยาก ภัยพิบัติทางธรรมชาติ  การลงทะเบียนกับสถาบันชั้นนำ ซึ่งวิธีการแก้ปัญหาเล่านี้เราจะทำได้โดยการเพิ่มเสียงส่วนน้อยหรือลดเสียงส่วนใหญ่ซึ่งวิธีการเพิ่มเสียงส่วนน้อยเราสามารถทำได้โดยการใช้วิธีที่เรียกว่า Synthetic Minority  Oversampling Technique (SMOTE) ซึ่งมีวิธีการคือ ระบุ feature vector และ จุดที่ใกล้ที่สุด ใช้ความแตกต่างระหว่างทั้งสอง คูณความแตกต่างด้วยตัวเลขสุ่มระหว่าง 0 ถึง 1 ระบุจุดใหม่บนส่วนของเส้นตรงโดยการเพิ่มหมายเลขสุ่มลงใน feature vector ทำซ้ำขั้นตอนสำหรับ feature…

Outliers

บทที่ 12-Outliers วิธีการจัดการกับ Outliers ด้วย AzureML เมื่อเราต้องการวิเคราะห์หรือสร้างโมเดลเพื่อใช้ในการทำนายนั้น เรามักจะมีปัญหาที่พบบ่อย ๆ และต้องจัดการกับมัน คือ Outliers คือข้อมูลที่มีระยะห่างจากข้อมูลตัวอื่น ๆ มากและส่งผลต่อผลการทำนายของเรา ซึ่งทำให้ผลการทำนายของเรามีความคาดเคลื่อนมาก โดยวิธีการแก้ปัญหานี้ คือ การ visualize เพื่อดูข้อมูลจากกราฟ การกำหนดไม่ให้มีค่าเกิน Percentile ที่เราต้องการ ซึ่งวิธีการเหล่านี้สามารถทำได้โดยใช้ module ที่ชื่อว่า Clip Values โดยตัวอย่างที่เราจะแสดงให้เห็นการจัดการกับ outliers คือ Employee Dataset เมื่อเรา visualize ดู  ข้อมูลคอลัมน์ Years of Experience กับ Monthly Income เราจะได้กราฟดังนี้     จากกราฟข้างต้นเราจะพบว่ามี จำนวน 4 ข้อมูลในวงกลมสีแดง ซึ่งเป็นข้อมูลที่เราต้องการจะจัดการโดยในข้อมูลนี้วิธีการดังนี้   นำข้อมูล Employee…

How to join data

บทที่ 11-How to join data วิธีการ ง่าย ๆ ด้วย AzureML เมื่อเราต้องการนำข้อมูลของเรามารวมกันทั้งรวมกัน 2 dataset หรือการรวมกันมากกว่านั้นเราคงหนีไม่พ้นที่จะต้องค้นหาวิธีการ join data หรือการเอาข้อมูลมารวมกันตามอินเทอร์เน็ตใช่ไหมล่ะคะ ในบทความนี้จึงมานำเสนอวิธีการ join data ที่สามารถทำได้ง่าย ๆ ผ่าน AzureML ค่ะ ก่อนที่เราจะไปถึงวิธีการ เราต้องมาทำความเข้าใจในรูปแบบต่าง ๆ กันก่อนค่ะ Dataset ที่เราจะนำมาเชื่อมต่อกันได้นั้นต้องมีคอลัมน์ key ที่เกี่ยวข้องกัน เช่นมีเลข ID เดียวกันเป็นต้นค่ะ โดยวิธีการ join ใน AzureML สามารถทำได้จะมีด้วยกัน 4 แบบ ดังนี้ค่ะ Inner Join : เป็นการ join เฉพาะตัวที่มี key เหมือนกัน Left Outer Join…

How to clean missing data by AzureML

บทที่ 9-How to clean missing data by AzureML วิธีการ Clean Missing Data โดยใช้ AzureML เมื่อเราทำงานกับข้อมูลปัญหาที่เรามักพบบ่อย ๆ ในกระบวนการจัดการกับข้อมูลคือ มีข้อมูลบางส่วนขาดหายไปนั้นคือ missing data นั้นเอง แล้วเราจะมีวิธีจัดการกับปัญหานี้อย่างไร บทความนี้จะมาไขข้อสงสัยนี้ค่ะ การที่เราจะทำการ clean missing data นั้นเราต้องรู้ก่อนว่าข้อมูลอะไรที่หายไปบ้าง หายไปจำนวนเท่าไหร่ และชนิดของข้อมูลที่หายไปคือข้อมูลชนิดไหน สามารถทำได้ง่าย ๆ ดังนี้เลยค่ะ ลากข้อมูลที่เราต้องการ Clean หรือต้องการสร้างโมเดลมาไว้บน Workspace โดยนำข้อมูลที่เรานำเข้ามาจาก Saved Dataset เลือก My Datasets จากนั้นลากชุดข้อมูลที่เราต้องการมาไว้บน Workspace และหากเราต้องการนำเข้าข้อมูลในรูปแบบอื่น เช่น นำเข้าข้อมูลจากเว็บ เราก็เลือก module นั้นมาวางได้เลย   จากนั้นเราจะดูรายละเอียดของจำนวน Missing และชนิดของแต่ละคอลัมน์โดยการคลิกขวาที่วงกลมเล็ก…

How to remove duplicate by AzureML

บทที่ 8-How to remove duplicate employee by AzureML วิธีการลบข้อมูลที่ซ้ำกันง่าย ๆ ด้วย AzureML กระบวนการเตรียมข้อมูลก่อนนำไปสร้างโมเดลนั้นเป็นกระบวนการที่ใช้เวลานานที่สุดเนื่องจากชุดข้อมูลที่เราได้มานั้นไม่ได้อยู่ในรูปแบบที่สมบูรณ์และหนึ่งในปัญหาของกระบวนการเตรียมข้อมูลคือ การที่มีข้อมูลซ้ำกันหรือที่เรียกว่า Duplication ซึ่งมีส่งผลกับกระบวนการผลของ Train ของโมเดล ทำให้เราต้องจัดการกับข้อมูลที่ซ้ำกันหล่านี้ก่อนการสร้างโมเดลนั้นเองค่ะ โดยมีตัวอย่างของข้อมูลที่ซ้ำกัน ดังรูป   โดยเราสามารถจัดการกับข้อมูลที่ Duplication ได้ง่าย ๆ โดยใช้ AzureML  ดังนี้ ลากข้อมูลที่เราต้องการลบแถวที่ซ้ำกันหรือต้องการสร้างโมเดลมาไว้บน Workspace โดยนำข้อมูลที่เรานำเข้ามาจาก Saved Dataset เลือก My Datasets หรือจากนั้นลากชุดข้อมูลที่เราต้องการมาไว้บน Workspace และหากเราต้องการนำเข้าข้อมูลในรูปแบบอื่น เช่น นำเข้าข้อมูลจากเว็บ เราก็เลือก module นั้นมาวางได้เลย หา Module ที่ชื่อว่า Remove Duplicate row แล้วลากมาวางบน Workspace จากนั้นลากเส้นเชื่อม Module…

How to change data type and change columns name

บทที่ 7-How to change data type and change columns name วิธีการเปลี่ยนชนิดของข้อมูลและชื่อคอลัมน์โดยใช้ AzureML ในกระบวนการเตรียมข้อมูล (Preprocess) นั้นปัญหาที่เรามักพบและต้องทำการแก้ไขในกระบวนการการเตรียมข้อมูลนี้คือชนิดของข้อมูลในแต่ละคอลัมน์ไม่ตรงกับที่เราต้องการเช่น เราต้องการข้อมูลแบบ category แต่ข้อมูลของเราดันเป็น numeric  หรือการที่เรานำเข้าข้อมูลมา หรือมีการเปลี่ยนแปลข้อมูลในกระบวนการก่อนหน้าทำให้เราต้องแก้ไขชื่อคอลัมน์เหล่านั้นซึ่งสิ่งเหล่านี้สามารถทำได้โดยใช้ module ที่ชื่อว่า Edit Metadata ซึ่งมีขั้นตอนใน AzureML ดังนี้ ลากข้อมูลที่เราต้องการเปลี่ยนชนิดของข้อมูลหรือเปลี่ยนชื่อคอลัมน์มาไว้บน Workspace โดยนำข้อมูลที่เรานำเข้ามาจาก Saved Dataset เลือก My Datasets จากนั้นลากชุดข้อมูลที่เราต้องการมาไว้บน Workspace  และหากเราต้องการนำเข้าข้อมูลในรูปแบบอื่น เช่น นำเข้าข้อมูลจากเว็บ เราก็เลือก module นั้นมาวางได้เลย   จากนั้นเราจะดูรายละเอียดของชนิดของข้อมูลโดยการคลิกขวาที่วงกลมเล็ก ๆ ใต้ชุดข้อมูลที่เรานำมาวาง แล้วเลือก Visualize เพื่อดูว่ามีคอลัมน์ไหนที่ชนิดของข้อมูลไม่ตรงหรือมีคอลัมน์ที่ต้องการเปลี่ยนชื่อหรือไม่ เช่นในตัวอย่างเราต้องการเปลี่ยนคอลัมน์ Income จาก string…