การแก้ปัญหาการถดถอยด้วย TensorFlow: เส้นทางแห่งการเรียนรู้อย่างลึกซึ้ง
เรียนรู้วิธีสร้างและปรับแต่งเครือข่ายประสาทเทียมอย่างละเอียดโดยใช้ TensorFlow

การแนะนำ
การวิเคราะห์การถดถอยในแมชชีนเลิร์นนิงเป็นเทคนิคที่ใช้ในการทำนายค่าของตัวแปรตามตามตัวแปรอิสระตั้งแต่หนึ่งตัวขึ้นไป เป็นเทคนิคการเรียนรู้ภายใต้การดูแลที่อยู่ภายใต้การสร้างแบบจำลองเชิงทำนาย
คุณกำลังตามหาคู่มือสำหรับผู้เริ่มต้นเพื่อเรียนรู้ข้อมูลเชิงลึกของการวิเคราะห์การถดถอยและอาการคันศีรษะของคุณเกี่ยวกับแนวคิดทางคณิตศาสตร์ที่ซับซ้อนเหล่านั้นหรือไม่? อย่ากลัวเลยเพื่อนเอ๋ย! ฉันได้เขียนบล็อกโพสต์ที่แบ่งแนวคิดในลักษณะที่เรียบง่ายและเข้าใจง่าย วางถ้วยกาแฟลง คว้าเครื่องคิดเลขของคุณ และเตรียมพร้อมที่จะดำดิ่งสู่โลกแห่งการวิเคราะห์การถดถอยที่แปลกประหลาด! แทบรอไม่ไหวที่จะพบคุณที่นั่น
พื้นฐานของการถดถอยเชิงเส้นอย่างง่ายในทำนองเดียวกัน ในการเรียนรู้เชิงลึก แบบจำลองการถดถอยสามารถสร้างขึ้นได้โดยใช้โครงข่ายประสาทเทียม ซึ่งเป็นแบบจำลองการคำนวณที่เลียนแบบวิธีการทำงานของสมองมนุษย์ แบบจำลองเหล่านี้ประกอบด้วยเซลล์ประสาทที่เชื่อมต่อกันหลายชั้นหรือที่เรียกว่า perceptron และเรียกรวมกันว่า MLP (Multi-Layer Perceptron) ที่สามารถเรียนรู้ที่จะดึงคุณสมบัติที่มีประโยชน์จากข้อมูลอินพุตและทำการทำนายที่แม่นยำ
ฉันจะแบ่งบล็อกโพสต์สั้น ๆ นี้ออกเป็นส่วน ๆ ต่อไปนี้:
- การประมวลผลข้อมูลล่วงหน้า
- สถาปัตยกรรมแบบจำลอง
- การฝึกอบรมและการประเมินผล
- บทสรุป.
ในขอบเขตของแมชชีนเลิร์นนิง ขั้นตอนการประมวลผลข้อมูลล่วงหน้ามีบทบาทสำคัญในความสำเร็จของโมเดล ขั้นตอนนี้เกี่ยวข้องกับการเตรียมข้อมูลอินพุตสำหรับการฝึกอบรมและทดสอบโมเดล ขั้นตอนนี้ประกอบด้วยหลายขั้นตอน เช่น การทำความสะอาด การสำรวจ การทำให้เป็นมาตรฐาน การเลือกคุณสมบัติ การเข้ารหัส การเสริม ฯลฯ
- การล้างข้อมูล:การลบข้อมูลที่ไม่สมบูรณ์ ไม่เกี่ยวข้อง หรือไม่ถูกต้องออกจากชุดข้อมูล เพื่อให้แน่ใจว่าข้อมูลที่ป้อนเข้ามีคุณภาพสูงและไม่มีค่าผิดปกติหรือข้อผิดพลาดใดๆ ที่อาจส่งผลต่อประสิทธิภาพของโครงข่ายประสาทเทียม
- การสำรวจข้อมูล:การวิเคราะห์ชุดข้อมูลเพื่อรับข้อมูลเชิงลึกเกี่ยวกับการกระจายและความสัมพันธ์ระหว่างคุณลักษณะต่างๆ ขั้นตอนนี้ช่วยในการระบุรูปแบบหรือแนวโน้มในข้อมูลที่สามารถใช้เพื่อปรับปรุงประสิทธิภาพของโครงข่ายประสาทเทียม
- การทำให้เป็นมาตรฐานของข้อมูล:การปรับขนาดข้อมูลเพื่อให้ฟีเจอร์ทั้งหมดมีขนาดใกล้เคียงกัน ขั้นตอนนี้เป็นขั้นตอนที่สำคัญเนื่องจากช่วยให้แน่ใจว่าโครงข่ายประสาทเทียมไม่ให้น้ำหนักเกินควรแก่คุณลักษณะที่มีค่ามากกว่า
- การเลือกคุณสมบัติ:การเลือกคุณสมบัติที่สำคัญที่สุดที่จะใช้ในการฝึกโครงข่ายประสาทเทียม
- การเข้ารหัสข้อมูล:การแปลงตัวแปรหมวดหมู่เป็นตัวแปรตัวเลขเนื่องจากเครื่องยอมรับเฉพาะข้อมูลที่เป็นตัวเลขเท่านั้น
- การเพิ่มข้อมูล:การสร้างข้อมูลการฝึกอบรมเพิ่มเติมเพื่อเพิ่มความหลากหลายของชุดข้อมูล
ในที่นี้เราจะข้ามขั้นตอนการสำรวจข้อมูลและทำความสะอาดเพื่อมุ่งเน้นไปที่วัตถุประสงค์หลักของเรา แต่เราจะโหลดชุดข้อมูลอย่างรวดเร็วและจัดเตรียมสำหรับโมเดลด้วยขั้นตอนง่ายๆ เพียงไม่กี่ขั้นตอน แม้ว่าการสำรวจและล้างข้อมูลจะเป็นหัวข้อที่สำคัญ แต่การเจาะลึกที่นี่จะทำให้เราออกนอกลู่นอกทางจากเป้าหมายหลักของเรา ดังนั้นมาจดจ่อและเริ่มกันเลย ⚡⚡
สำหรับการสร้างแบบจำลองการถดถอย เราจะใช้US Health Insurance Datasetซึ่งมักจะใช้ในการทำนายค่ารักษาพยาบาลตามลักษณะเฉพาะและนโยบายการประกันของแต่ละบุคคล

โค้ดจะโหลดไลบรารี่ที่จำเป็น รวมทั้งpandas
, MinMaxScaler
make_column_transformer
และOneHotEncoder
. จากนั้นจะระบุคอลัมน์ที่เป็นตัวเลขและหมวดหมู่ในชุดข้อมูล และสร้างตัวแปลงคอลัมน์ ( ct
) เพื่อใช้MinMaxScalerกับฟีเจอร์ที่เป็นตัวเลข และOneHotEncoderกับฟีเจอร์ที่เป็นหมวดหมู่

สุดท้าย หม้อแปลงถูกใช้เพื่อแปลงรถไฟและทดสอบข้อมูล และข้อมูลที่แปลงแล้วจะถูกจัดเก็บไว้ในx_train_transformed
และ x_test_transformed
ชุดข้อมูลที่แปลงแล้วเหล่านี้พร้อมที่จะใช้เป็นอินพุตสำหรับโครงข่ายประสาทเทียม ซึ่งเป็นขั้นตอนต่อไปของกระบวนการ
สถาปัตยกรรมแบบจำลอง
สถาปัตยกรรมแบบจำลองหมายถึงโครงสร้างของโครงข่ายประสาทเทียมที่แมปคุณลักษณะอินพุตกับคุณลักษณะเอาต์พุตหรือตัวแปรเป้าหมาย ประกอบด้วยเซลล์ประสาทหลายชั้นที่ดำเนินการทางคณิตศาสตร์กับข้อมูลอินพุต
แบบจำลองสถาปัตยกรรมการถดถอยโดยทั่วไปจะมีพารามิเตอร์ดังต่อไปนี้:


- เลเยอร์อินพุต:เลเยอร์นี้รับข้อมูลอินพุตซึ่งอาจอยู่ในรูปแบบของเทนเซอร์หรือเมทริกซ์
- เลเยอร์ที่ซ่อนอยู่:เป็นเลเยอร์ที่ทำการแปลงแบบไม่เชิงเส้นของข้อมูลอินพุต จำนวนเลเยอร์ที่ซ่อนอยู่และจำนวนเซลล์ประสาทในแต่ละเลเยอร์จะขึ้นอยู่กับความซับซ้อนของปัญหาและจำนวนข้อมูลที่มีอยู่
- เลเยอร์เอาต์พุต:เลเยอร์นี้สร้างการทำนายสุดท้ายของโมเดล ในแบบจำลองการถดถอย โดยปกติแล้ว เอาต์พุตเลเยอร์จะมีเซลล์ประสาทตัวเดียวที่ส่งออกค่าต่อเนื่อง
ที่นี่เราจะสร้างตาข่ายประสาทอย่างง่ายตามปัญหาของเรา โค้ดต่อไปนี้ตั้งค่าเมล็ดสุ่ม กำหนดสถาปัตยกรรมโมเดลด้วยสามเลเยอร์ คอมไพล์โมเดลด้วยฟังก์ชันการสูญเสียข้อผิดพลาดสัมบูรณ์เฉลี่ยและเครื่องมือเพิ่มประสิทธิภาพ Adam และฝึกโมเดลบนข้อมูลการฝึกสำหรับ 100 epochs ประวัติของกระบวนการฝึกอบรมจะถูกเก็บไว้ในhistory
ตัวแปร ซึ่งสามารถใช้ประเมินประสิทธิภาพของโมเดลได้

การใช้งานmodel.summary()
จะสรุป Model Architecture แบบนี้ครับ

รูปร่างอินพุตและเอาต์พุตมีความสำคัญในสถาปัตยกรรมแบบจำลองของโครงข่ายประสาทเทียม เนื่องจากเป็นตัวกำหนดรูปร่างของเมทริกซ์น้ำหนักและอคติที่เครือข่ายจะเรียนรู้ระหว่างการฝึกอบรม
การตั้งค่ารูปร่างไม่ถูกต้องอาจส่งผลให้เกิดข้อผิดพลาดระหว่างการฝึกและการคาดคะเน และข้อผิดพลาดด้านรูปร่างเป็นประเภทข้อผิดพลาดที่พบบ่อยที่สุด
กำลังมองหาเพื่อเสริมสร้างทักษะพื้นฐานของคุณ? นี่อาจคุ้มค่าที่จะอ่าน
สิ่งจำเป็นสำหรับการเรียนรู้เชิงลึกการฝึกอบรม & การประเมินผล
ตอนนี้เราได้ตั้งค่าสถาปัตยกรรมโมเดลแล้ว ก็ถึงเวลาฝึกฝนโมเดลและคาดการณ์เพื่อรับข้อมูลเชิงลึก มาฝึกกัน


ในระหว่างการสร้างโมเดล เราได้ตั้งค่าเมตริกและสามารถคำนวณได้โดยใช้ฟังก์ชันในตัวของ TensorFlow การตรวจสอบรูปร่างที่ถูกต้องของเทนเซอร์เป็นสิ่งสำคัญ โดยเฉพาะอย่างยิ่งในขณะที่ทำการเปรียบเทียบ
เทนเซอร์ที่ไม่ตรงกัน โดยเฉพาะรูปร่างอินพุตและเอาต์พุต อาจทำให้เกิดข้อผิดพลาดมากมาย แม้ว่าจะไม่จำเป็นเสมอไป แต่สิ่งสำคัญคือต้องระมัดระวังและตรวจสอบรูปร่างที่ไม่ตรงกัน
# Check the tensor shapes
y_test.shape, y_predicted.shape
>>> ((335,), (335, 1))
# Shape after squeeze()
y_predicted.squeeze().shape
>>> (335,)
# Calcuate the MAE
mae = tf.metrics.mean_absolute_error(y_true=y_test,
y_pred=y_predicted.squeeze())
# Calculate the MSE
mse = tf.metrics.mean_squared_error(y_true=y_test,
y_pred=y_predicted.squeeze())
mae, mse
>>> (<tf.Tensor: shape=(), dtype=float32, numpy=3687.7112>,
<tf.Tensor: shape=(), dtype=float32, numpy=50863628.0>)
นี่คือรหัสที่สมบูรณ์สำหรับสิ่งนี้
นอกจากนั้น ยังมีวิธีการอีกหลายวิธีในการเพิ่มประสิทธิภาพโครงข่ายประสาทเทียม เช่น การเพิ่มจำนวนเลเยอร์เพื่อให้ลึกขึ้น เพิ่มจำนวนยูนิตที่ซ่อนอยู่เพื่อให้กว้างขึ้น และปรับอัตราการเรียนรู้ พารามิเตอร์เหล่านี้ซึ่งมนุษย์สามารถปรับได้เรียกว่าไฮเปอร์พารามิเตอร์ และกระบวนการค้นหาไฮเปอร์พารามิเตอร์ที่เหมาะสมที่สุดเรียกว่าการปรับไฮเปอร์พารามิเตอร์ วิธีปฏิบัตินี้ใช้กันอย่างแพร่หลายในการเรียนรู้เชิงลึกเพื่อเพิ่มประสิทธิภาพการทำงานของโครงข่ายประสาทเทียม
ฉันจะปล่อยให้คุณทดลองด้วยวิธีการต่างๆ และพัฒนาความเข้าใจของคุณเอง
จะไปที่ไหนจากที่นี่?
เพื่อให้ได้ความเข้าใจที่ครอบคลุมมากขึ้น ฉันขอแนะนำให้สร้างชุดข้อมูลที่กำหนดเองและทดลองกับไฮเปอร์พารามิเตอร์ วิธีหนึ่งคือการสร้างรายการตัวเลขและใช้ฟังก์ชันสร้างแบบกำหนดเองกับรายการนั้น แนะนำอคติ และใช้ค่าผลลัพธ์เป็นตัวแปรเป้าหมาย จากนั้น ป้อนชุดข้อมูลนี้ลงในโครงข่ายประสาทเทียมและปรับแต่งอย่างละเอียดเพื่อปรับปรุงความแม่นยำ
ฉันได้สร้างพื้นที่เก็บข้อมูลที่ครอบคลุมสำหรับ TensorFlow ซึ่งฉันอัปเดตเป็นระยะๆ ด้วยการทดลองและตัวอย่างต่างๆ รู้สึกอิสระที่จะทำงานร่วมกันในพื้นที่นี้
สรุป
การสร้างแบบจำลองการถดถอยที่มีประสิทธิภาพโดยใช้ TensorFlow ไม่ใช่เรื่องง่าย แต่ด้วยเครื่องมือและเทคนิคที่เหมาะสม คุณสามารถทำได้ ในบล็อกนี้ เราได้สำรวจวิธีประมวลผลข้อมูลล่วงหน้า กำหนดสถาปัตยกรรมโครงข่ายประสาทเทียมเชิงลึก ฝึกโมเดล และประเมินประสิทธิภาพ ด้วยทักษะเหล่านี้ คุณจะสามารถสร้างแบบจำลองการถดถอยสำหรับปัญหาและชุดข้อมูลที่หลากหลายได้ โปรดจำไว้ว่าการฝึกฝนทำให้เกิดความสมบูรณ์แบบ ดังนั้นจงทำการทดลองและปรับแต่งโมเดลของคุณต่อไปจนกว่าคุณจะได้ความแม่นยำและประสิทธิภาพในระดับที่ต้องการ
และนี่คือจุดสิ้นสุดของโพสต์บล็อกนี้ ขอแสดงความยินดี
ฉันหวังว่าฉันจะไขปริศนาคำศัพท์เกี่ยวกับสถาปัตยกรรมของแบบจำลองการถดถอยได้โดยใช้ MLP (Multi-Layer Perceptron) หากคุณมีคำถามใด ๆ หรือฉันพลาดอะไรไปที่นี่ อย่าลังเลที่จะยิงพวกเขาในส่วนความคิดเห็น
ฉันจะพยายามนำแนวคิด M achine learning/Data science มาใช้ให้มากขึ้น และจะพยายามแยกคำศัพท์และแนวคิดที่ฟังดูแปลกๆ ให้เป็นคำง่ายๆ
ฉันหวังว่าคุณจะสนุกกับบทความนี้! คุณสามารถติดตามฉันAfaque Umerสำหรับบทความดังกล่าวเพิ่มเติม