011-How to join data
วิธีการ Join Data ง่าย ๆ ด้วย AzureML เมื่อเราต้องการนำข้อมูลของเรามารวมกันทั้งรวมกัน 2 dataset หรือการรวมกันมากกว่านั้นเราคงหนีไม่พ้นที่จะต้องค้นหาวิธีการ join data หรือการเอาข้อมูลมารวมกันตามอินเทอร์เน็ตใช่ไหมล่ะคะ ในบทความนี้จึงมานำเสนอวิธีการ join data ที่สามารถทำได้ง่าย ๆ ผ่าน AzureML ค่ะ ก่อนที่เราจะไปถึงวิธีการ join data เราต้องมาทำความเข้าใจการ join data ในรูปแบบต่าง ๆ กันก่อนค่ะ Dataset ที่เราจะนำมา join กันได้นั้นต้องมีคอลัมน์ key ที่เกี่ยวข้องกัน เช่นมีเลข ID เดียวกันเป็นต้นค่ะ โดยวิธีการ join ใน AzureML สามารถทำได้จะมีด้วยกัน 4 แบบ ดังนี้ค่ะ Inner Join : เป็นการ join เฉพาะตัวที่มี key เหมือนกัน Left Outer Join : เป็นการ join ที่ยึด key ของทางซ้ายเป็นหลัก Full Outer Join : เป็นการนำมารวมกันทั้งหมด Left Semi Join : เป็นการ join โดยมีแค่ข้อมูลของตัวซ้าย แต่จำนวนข้อข้อมูลจะมีเท่ากับจำนวน key ที่ dataset ทั้งสองมีเหมือนกัน โดยมีวิธีการ join ทั้งสีวิธีที่สามารถทำได้ง่าย ๆ ดังนี้ 1.ลาก dataset ทั้งสอง dataset หรือมากกว่านั้นมาวางไว้บน Workspace 2. ค้นหา module ที่ชื่อว่า Join [...]
012-Outliers
วิธีการจัดการกับ Outliers ด้วย AzureML เมื่อเราต้องการวิเคราะห์หรือสร้างโมเดลเพื่อใช้ในการทำนายนั้น เรามักจะมีปัญหาที่พบบ่อย ๆ และต้องจัดการกับมัน คือ Outliers Outliers คือข้อมูลที่มีระยะห่างจากข้อมูลตัวอื่น ๆ มากและส่งผลต่อผลการทำนายของเรา ซึ่งทำให้ผลการทำนายของเรามีความคาดเคลื่อนมาก โดยวิธีการแก้ปัญหานี้ คือ การ visualize เพื่อดูข้อมูลจากกราฟ การกำหนดไม่ให้มีค่าเกิน Percentile ที่เราต้องการ ซึ่งวิธีการเหล่านี้สามารถทำได้โดยใช้ module ที่ชื่อว่า Clip Values โดยตัวอย่างที่เราจะแสดงให้เห็นการจัดการกับ outliers คือ Employee Dataset เมื่อเรา visualize ดู ข้อมูลคอลัมน์ Years of Experience กับ Monthly Income เราจะได้กราฟดังนี้ จากกราฟข้างต้นเราจะพบว่ามี outliers จำนวน 4 ข้อมูลในวงกลมสีแดง ซึ่งเป็นข้อมูลที่เราต้องการจะจัดการโดยในข้อมูลนี้วิธีการดังนี้1. นำข้อมูล Employee Dataset มาวางบน workspace 2. นำ module ที่ชื่อว่า Clip values วางเชื่อมกับ dataset ของเรา 3. ในตัวอย่างนี้เราต้องการจะจัดการกับรายได้ต่อเดือน หรือ Monthly Income ที่มากกว่า 6000 ออกไปโดยเราจะตั้งค่า parameter ดังนี้ Set of thresholds : ClipPeak Upper threshold : Constant Constant value for upper threshold : 6000 Upper substitute value : Threshold เลือกคอลัมน์เป็น Monthly Income [...]
013-SMOTE with AzureML
วิธีการจัดการกับ Dataset ที่ไม่สมดุลกันด้วย SMOTE โดยใช้ AzureML ในกระบวนการเตรียมข้อมูลปัญหาที่เราสามารถพบได้และเราควรทำการแก้ไขมันคือ การที่ dataset มีจำนวนไม่สมดุลกัน เช่น ข้อมูลแรกมี 99 % และอีกข้อมูลมี 1% ซึ่งการที่จำนวนข้อมูล 2 class ทำให้ผลจากการ classify เกิดการทำนายที่ลำเอียด และความแม่นยำที่อาจทำให้เราเข้าใจผิดได้ ซึ่งข้อมูลที่เป็นแบบนี้ตัวอย่างเช่น การฉ้อโกงบัตรเครดิต ข้อบกพร่องในการผลิต การวินิจฉัยโรคที่หาอยาก ภัยพิบัติทางธรรมชาติ การลงทะเบียนกับสถาบันชั้นนำ ซึ่งวิธีการแก้ปัญหาเล่านี้เราจะทำได้โดยการเพิ่มเสียงส่วนน้อยหรือลดเสียงส่วนใหญ่ซึ่งวิธีการเพิ่มเสียงส่วนน้อยเราสามารถทำได้โดยการใช้วิธีที่เรียกว่า Synthetic Minority Oversampling Technique (SMOTE) ซึ่งมีวิธีการคือ ระบุ feature vector และ จุดที่ใกล้ที่สุด ใช้ความแตกต่างระหว่างทั้งสอง คูณความแตกต่างด้วยตัวเลขสุ่มระหว่าง 0 ถึง 1 ระบุจุดใหม่บนส่วนของเส้นตรงโดยการเพิ่มหมายเลขสุ่มลงใน feature vector ทำซ้ำขั้นตอนสำหรับ feature vector ที่ระบุ โดยตัวอย่างที่เราต้องการทำ SMOTE ในวันนี้คือ LoanSMOTE ซึ่งมีจำนวน 100 แถวและ 13 คอลัมน์ โดยที่คอลัมน์ Loan_Status มีค่า Y ถึง 89 ค่าหรือ 89% และมีค่า N แค่ 11 ค่าหรือ 11% ดังรูป โดยเราสามารถทำ SMOTE ได้ดังนี้ นำข้อมูล LoanSMOTE มาวางบน workspace นำ module ที่ชื่อว่า SMOTE วางเชื่อมกับ dataset ของเรา เลือกคอลัมน์ Loan_Status และทำการตั้งค่า parameter ต่าง [...]
014-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 Model Hyperparameters จะมี parameter ที่ใช้คือ Random Grid : จะสุ่มเลือก combination และ RUN อัลกอริทึมทุกตัวที่ที่สุ่มมา Entire Grid : RUN อัลกอริทึมทุกตัวที่เป็นไปได้ทุก combination Random Sweep : RUN อัลกอริทึมสำหรับจำนวนจุดหรือการทำซ้ำ โดยที่เราสามารถเข้าใจ Grid ได้ง่าย เช่น เรามี parameter 2 ตัว ตัวแรกมีค่า 1 2 4 และตัวที่ 2 มีค่า A B C D จะได้ทุก combination ดังตาราง 1 2 3 A A,1 [...]
015-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 Transformation โดยมีวิธีการดังนี้ ลากข้อมูลที่เราต้องการเปลี่ยนชนิดของข้อมูลหรือเปลี่ยนชื่อคอลัมน์มาไว้บน Workspace โดยนำข้อมูลที่เรานำเข้ามาจาก Saved Dataset เลือก My Datasets จากนั้นลากชุดข้อมูลที่เราต้องการมาไว้บน Workspace และหากเราต้องการนำเข้าข้อมูลในรูปแบบอื่น เช่น นำเข้าข้อมูลจากเว็บ เราก็เลือก module นั้นมาวางได้เลย ค้นหา Module ที่มีชื่อว่า Apply SQL Transformation แล้วลากมาวางบน Workspace จากนั้นลากเส้นเชื่อมจากชุดข้อมูลของเรามาเชื่อมกับ Module นี้ 3. พิมพ์โคดคำสั่ง SQL เพื่อแปลงข้อมูลให้อยู่ในรูปแบบที่เราต้องการ ดังรูป 4. คลิก RUN เมื่อ RUN เสร็จแล้วเมื่อเรา Visualize ดูผลลัพธ์เราจะพอว่ามีคอลัมน์ WineCategory ที่สร้างจากคอลัมน์ [...]
016-Two-Class Logistic Regession
วิธีการ Classification การอนุมัติเงินกู้ด้วยโมเดล Two-Class Logistic Regression โดยใช้ AzureML ในบทความนี้เราจะมาทำการ Classification โดยใช้โมเดลที่มีชื่อว่า Two-Class Logistic Regression ที่เราสามารถสร้างได้ง่าย ๆโดยใช้เครื่องมือที่มีชื่อว่า AzureML ค่ะ ซึ่งข้อมูลที่เราต้องการ Classify ในบทความนี้คือข้อมูลการอนุมัติเงินกู้ซึ่งมีจำนวน 614 แถว 13 คอลัมน์ โดยมี Target หรือเป้าหมายของการ Classification ของเราคือคอลัมน์ที่มีชื่อว่า Loan_Status โดยที่ Y แทนสถานะอนุมัติ และ N แทนสถานะไม่อนุมัติ ซึ่งมีวิธีการในการ Classification โดยใช้ AzureML ดังนี้ นำข้อมูลจากเครื่องเข้ามาที่ AzureML โดยกด NEW ตามด้วย DATASET คลิก From local File เพื่อเลือกข้อมูลที่อยู่ในเครื่องของเราเข้ามา จากนั้นเลือกนามสกุลไฟล์ และเลือกว่าไฟล์ที่เรานำเข้ามาต้องการให้มี header หรือชื่อคอลัมน์ไหมตามที่เราต้องการ และกดตรงเครื่องหมายถูก ลากข้อมูลที่เราต้องการ Clean หรือต้องการสร้างโมเดลมาไว้บน Workspace โดยนำข้อมูลที่เรานำเข้ามาจาก Saved Dataset เลือก My Datasets จากนั้นลากชุดข้อมูลที่เราต้องการมาไว้บน Workspace 3. จากนั้นเราจะดูรายละเอียดของชนิดของข้อมูลโดยการคลิกขวาที่วงกลมเล็ก ๆ ใต้ชุดข้อมูลที่เรานำมาวาง แล้วเลือก Visualize เพื่อดูรายละเอียดของข้อมูล พบว่า มี missing value เกือบทุกคอลัมน์ทั้งคอลัมนที่เป็น String และคอลัมน์ที่เป็น numeric มีคอลัมน์ที่ไม่มีผลต่อ Classification คือ Loan_ID 4. Clean missing data ของคอลัมน์ที่มีชนิดข้อมูลเป็น string โดยการค้นหา module [...]
017-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 แถวและ 12 คอลัมน์ โดย 11 คอลัมน์แรกเป็น feature ที่ช่วยในการแยกประเภทและ คอลัมน์ quality คือคอลัมน์ที่เราต้องการแยกประเภทไวน์ออกจากกัน โดยคุณภาพของไวน์จะถูกกำหนดให้เป็นเลขตั้งแต่ 3-8 โดย 3 แทนไวน์คุณภาพต่ำ และ 8 แทนไวน์คุณภาพสูง จากการแบ่งคุณภาพของไวน์แบบนี้ทำให้เราต้องทำการ Classification คุณภาพของข้อมูลออกเป็น 6 กลุ่มซึ่งอาจทำให้ผลของการทำ Classification ออกมาไม่ดีเท่าที่ควรซึ่งในความเป็นจริงคุณภาพของไวนเหล่านี้สามารถจักกลุ่มรวมกันใหม่ได้ดังนี้ คุณภาพไวน์ที่มีค่าเป็น 3 และ 4 แทนไวน์คุณภาพต่ำ คุณภาพไวน์ที่มีค่าเป็น 5 และ 6 แทนไวน์คุณภาพตามค่าเฉลี่ยทั่วไป คุณภาพไวน์ที่มีค่าเป็น 7 และ 8 แทนไวน์คุณภาพสูง การที่เราจัดกลุ่มแบบนี้ทำให้การทำ Classification ของเรามีประสิทธิภาพสูงมากยิ่งขึ้น โดยในบทความนี้นอกจากแสดงวิธีการทำ Multiclass Logistic [...]
018-Two-Class Boosted Decision Tree
วิธีการ Classification โดยใช้ Two-Class Boosted Decision Tree เพื่อคาดการณ์ว่าลูกค้าจะสมัครรับสินค้าหรือไม่ ด้วย AzureML Boosted Decision Tree เป็นโมเดลแบบ Supervised Learning method และเป็นโมเดลแบบ Ensamble แบบ Boosting หรือการนำ Weak Classifier (แม่นยำต่ำ) มาทำนายข้อมูลที่เรามีจากนั้นให้ weak ตัวใหม่แก้ไข error เรื่อย ๆ เป็น Decision Tree ต่อกันเป็นลำดับหลาย ๆ ต้น ซึ่งวิธีการนี้จะทำนายความซับซ้อนได้ดีกว่าแบบ Bagging ที่นำผลจาก Decision Tree มาโหวตกัน แต่มีข้อเสียคือใช้เวลานานกว่านั้นเองค่ะ Dataset ที่เราต้องการจะทำ Classification ในวันนี้คือ Bank Telemarketing หรือการทำการตลาดทางโทรศัพท์ของธนาคาร ซึ่งข้อมูลมีจำนวน 41188 แถว 21 คอลัมน์ และเป้าหมายที่เราต้องการคาดการณ์หรือ Classify คือ ลูกค้าที่ทางธนาคารโทรไปเสนอขายสินค้าทางโทรศัพท์จะสมัครรับสินค้าหรือไม่ นั้นคือ คอลัมน์ Y โดยที่ Yes คือลูกค้าสมัครรับสินค้า และ No คือลูกค้าไม่สนใจสมัครรับสินค้า โดยมีวิธีการ Classify ดังนี้ 1. นำข้อมูลของธนาคารที่เรานำเข้ามาไว้ที่ AzureML แล้วมาวางบน Workspace จากนั้นเราจะ Visualize ดูรายละเอียดต่าง ๆ ของข้อมูลว่าเราต้องทำการ Preprocess ก่อนหรือไม่ ซึ่งเราจะพบว่าข้อมูลของเราไม่ต้องทำ Preprocess แล้วค่ะ 2. จากนั้นเราจะแยกข้อมูลออกเป็น training set เพื่อใช้ในการ train ข้อมูลและ test set เพื่อทดสอบข้อมูลสามารถทำได้โดยการค้นหา module [...]
019-Two-Class Decision Forest
วิธีการ Classification รายได้ด้วยโมเดล Two-Class Decision Forest โดย AzureML วิธีการ Classification ข้อมูลนั้นมีหลากหลายวิธีการให้เราได้เลือกมาใช้ในการแยกข้อมูลของเราและหนึ่งในวิธีการที่นิยมถูกนำมาใช้ในการ Classification คือ Random Forest หรือ Decision Forest โมเดลที่เกิดจากการนำ Decision tree หลาย ๆ ต้นในการ Classify ข้อมูลของเราจากนั้นจะทำการโหวตผลลัพธ์ที่ได้มากที่สุดจากต้นไม้ทุกต้น ข้อมูลที่เราต้องการจะทำการ Classify วันนี้คือชุดข้อมูลที่ชื่อว่า Adult Census Income ที่มี 32561 แถว และ 15 คอลัมน์โดยมีเป้าหมายคือต้องการแยกประเภทของรายได้ของประชากร โดยการแยกเป็น 2 ประเภทคือ ผู้ที่มีรายได้น้อยกว่าหรือเท่ากับ 50000 และผู้ที่มีรายได้มากกว่า 50000 บาท โดยข้อมูลของเรามี feature ที่ช่วยในการทำ Classification ทั้งหมด 14 feature และมี target หรือคอลัมน์ที่เราต้องการทำ Classification คือ Income โดยเราสามารถทำ Classification ได้ง่ายโดยใช้ AzureML ได้ดังนี้ 1. ค้นหาข้อมูล Adult Census Income จาก Sample Dataset แล้วลากมาวางบน Workspace จากนั้น Visualize เพื่อดูรายละเอียดของข้อมูลพบว่า มี missing data ในคอลัมน์ Workclass, Occupation, Native Country มีคอลัมน์ที่เกี่ยวข้องกับการทำ Classification รายได้ในครั้งนี้คือ Fnlwgt และ Education-Num 2. เนื่องจากทุกคอลัมน์ที่มี missing data มีชนิดข้อมูลเป็น string [...]
020-Decision Forest Regression
วิธีการทำนายราคารถยนต์ด้วยโมเดล Decision Forest Regression ง่าย ๆ แค่ใช้ AzureML Decision tree และ Random Forest เป็นโมเดลในการทำ Classification ที่หลาย ๆ คนคงคุ้นเคยเป็นอย่างดีแต่ตัว Decision tree และ Random Forest ไม่ได้ทำได้แค่การทำ Classification เพียงเท่านั้นยังสามารถทำ Regression หรือการทำนายผลลัพธ์ในเชิงตัวเลขได้อีกด้วย โดยการแบ่งต้นไม้สามารถทำได้ดังรูป ผลลัพธ์ของ Decision Tree Regression จากมาจากค่าเฉลี่ยของแต่ละพื้นที่ในทุก ๆ พื้นที่หรือทุก ๆ ใบของ tree อาจเส้นการถดถอบสำหรับ data points ในแต่ละพื้นที่ และการนำ Decision tree หลาย ๆ ต้นมาวิเคราะห์แล้วหาค่าเฉลี่ยกันเราจะเรียกว่า Random Forest Regression หรือ Decision Forest Regression สำหรับ dataset ที่เราต้องการจะทำนายโดยใช้ Decision Forest Regression คือข้อมูลคุณสมบัติ หรือ feature ที่ส่งผลต่อราคาของรถยนต์ และสิ่งที่เราต้องการทำนายคือราคารถยนต์โดยใช้ feature ต่าง ๆ เหล่านี้มาใช้ในการทำนาย โดย dataset ของเรามีทั้งหมด 205 แถว 26 คอลัมน์ และมี missing data เกือบทุกคอลัมน์ และคอลัมน์ที่เป็นเป้าหมายที่เราต้องการทำนายคือ price ซึ่งเรามีวิธีการทำทายราคารถยนต์โดยใช้ AzureML ดังนี้ 1. ค้นหา dataset ที่ชื่อว่า Automobile price [...]