ทำงานด้วยการเรียนรู้ - การฝึก/การทดสอบ
- หน้าก่อน ย่อย
- หน้าต่อไป ต้นไม้ตัดต่อ
การประเมินโมเดล
ในการเรียนรู้ทางคอมพิวเตอร์ เราสร้างโมเดลเพื่อทำนายผลลัพธ์ของเหตุการณ์บางอย่าง อย่างเช่น ในบทที่แล้ว เมื่อเราเข้าใจน้ำหนักและปริมาณเครื่องยนต์เครื่องยนต์ แล้วทำนายปริมาณการปล่อยก๊าซคาร์บอนไดออกไซด์ของรถยนต์
เพื่อวัดว่าโมเดลมีความเหมาะสมเพียงพอหรือไม่ เราสามารถใช้วิธีที่เรียกว่าฝึก/ทดสอบ
อะไรคือฝึก/ทดสอบ
ฝึก/ทดสอบเป็นวิธีที่ใช้วัดความเหมาะสมของโมเดล
เรียกว่าฝึก/ทดสอบเพราะเราแบ่งตัวข้อมูลเป็นสองกลุ่ม: ตัวข้อมูลฝึกและตัวข้อมูลทดสอบ
80% ใช้ฝึก 20% ใช้ทดสอบ
คุณสามารถใช้ตัวข้อมูลฝึกเพื่อฝึกโมเดล
คุณสามารถใช้ตัวข้อมูลทดสอบเพื่อทดสอบโมเดล
การฝึกโมเดลหมายถึงการสร้างโมเดล
การทดสอบโมเดลหมายถึงการทดสอบความเหมาะสมของโมเดล
เริ่มจากตัวข้อมูล
เริ่มจากตัวข้อมูลที่ต้องทดสอบ
ข้อมูลของเราแสดงให้เห็น 100 ลูกค้าในร้านค้าและประสงค์การซื้อของพวกเขา
ตัวอย่าง
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x plt.scatter(x, y) plt.show()
ผลลัพธ์:
ตัวสิ้นสุดแบบโครงสร้างแสดงเวลาก่อนการซื้อ
ตัวเริ่มต้นแบบโครงสร้างแสดงค่าเงินที่มีค่าใช้จ่าย

การแบ่งชุดฝึก/ทดสอบ
ชุดฝึกควรเป็นการเลือกสุ่ม 80% ของข้อมูลต้นตอ
ชุดทดสอบควรเป็น 20% ของข้อมูลต้นตอ
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
แสดงชุดฝึก
แสดงกราฟจากชุดทดสอบที่เหมือนกับชุดฝึก
ตัวอย่าง
plt.scatter(train_x, train_y) plt.show()
ผลลัพธ์:
มันดูเหมือนข้อมูลต้นตอ ดังนั้นน่าจะเป็นทางเลือกที่เหมาะสม

แสดงชุดทดสอบ
เพื่อให้มั่นใจว่าชุดทดสอบไม่ได้แตกต่างจากข้อมูลต้นตอ พวกเรายังต้องดูชุดทดสอบ
ตัวอย่าง
plt.scatter(test_x, test_y) plt.show()
ผลลัพธ์:
ชุดทดสอบดูเหมือนข้อมูลตัวอย่างต้นตอ

การทำงานข้อมูลตัวอย่าง
ข้อมูลตัวอย่างเหมือนไร? ฉันคิดว่าการทำงานที่เหมาะสมที่สุดคือการทำงานโปรแกรมความรู้เลขเบส ดังนั้น ขอให้เราวาดเส้นโปรแกรมความรู้เลขเบส
เพื่อวาดเส้นผ่านข้อมูลจากข้อมูลตัวอย่าง พวกเราใช้มอดูล matplotlib plott()
วิธี:
ตัวอย่าง
วาดแบบโครงสร้างที่ผ่านข้อมูลตัวอย่าง
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) myline = numpy.linspace(0, 6, 100) plt.scatter(train_x, train_y) plt.plot(myline, mymodel(myline)) plt.show()
ผลลัพธ์:

ผลลัพธ์นี้สามารถสนับสนุนว่าเราควรใช้การทำงานเพื่อทำโมเดลที่สอดคล้องกับข้อมูล แม้ว่าเมื่อพยายามทำนายค่าที่นอกข้อมูลของแนวทางนี้จะทำให้เกิดผลลัพธ์ที่บนไปบนลง ตัวอย่างเช่น: บรรทัดนี้แสดงว่าลูกค้าที่มาซื้อของที่ร้านเป็นเวลา 6 นาที จะทำการซื้อที่มีมูลค่า 200 บาท นี่อาจเป็นสัญญาณของการขาดการเรียบเรียง
แต่อะไรคือ R-squared score มันแสดงให้เห็นว่าข้อมูลของฉันมีความสอดคล้องกับโมเดลได้ดีหรือไม่
R2
คุณจำไหม R2 หรือที่เรียกว่า R square (R-squared) หรือไม่
มันวัดความสัมพันธ์ระหว่างตัวเริ่มต้นและตัวสิ้นสุดของแบบโครงสร้าง x และ y ในระบบที่มีค่าระหว่าง 0 ถึง 1 โดย 0 หมายถึงไม่มีความสัมพันธ์ และ 1 หมายถึงความสัมพันธ์ที่สมบูรณ์
มอดูล sklearn มีชื่อ rs_score()
ของวิธีนี้ วิธีนี้จะช่วยเราหาความสัมพันธ์นี้
ที่นี่ เราต้องการวัดความสัมพันธ์ระหว่างเวลาที่ลูกค้าอยู่ในร้านและจำนวนเงินที่ลูกค้ามีค่าใช้จ่าย
ตัวอย่าง
ข้อมูลการฝึกของเรามีความสอดคล้องดีเพียงไรในการทำงานเหมือนโมเดลโปรแกรมความรู้เลขเบส
import numpy from sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(train_y, mymodel(train_x)) print(r2)
หมายเหตุ:ผลลัพธ์ 0.799 แสดงว่าความสัมพันธ์ดี
การนำเข้าชุดทดสอบ
ตอนนี้ อย่างน้อยที่แน่นอนว่าในข้อมูลการฝึก พวกเราได้สร้างโมเดลที่ดีขึ้น
หลังจากนั้น พวกเราต้องการใช้ข้อมูลทดสอบเพื่อทดสอบโมเดล เพื่อตรวจสอบว่าจะได้ผลลัพธ์ที่เหมือนกันหรือไม่
ตัวอย่าง
จะต้องการที่จะระบุค่า R2 ในขณะที่ใช้ข้อมูลทดสอบมากันหรือ
import numpy from sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(test_y, mymodel(test_x)) print(r2)
หมายเหตุ:ผลลัพธ์ 0.809 แสดงว่าโมเดลนี้เหมาะสมกับตัวอย่างทดสอบด้วย และเรามั่นใจว่าจะสามารถใช้โมเดลนี้ทำนายค่าในอนาคตได้
ค่าทำนาย
เราได้ทบทวนแล้วว่าโมเดลของเราดี จึงสามารถเริ่มทำการทำนายค่าใหม่ได้แล้ว。
ตัวอย่าง
หากลูกค้าที่ซื้อหาเชื่อมโยงอยู่ในร้านเป็นเวลา 5 นาที,เขา/เธอจะมีค่าใช้จ่ายเท่าไหร่?
print(mymodel(5))
ตัวอย่างนี้คาดการณ์ว่าลูกค้าจะมีค่าใช้จ่าย 22.88 ดอลลาร์สหรัฐ,ดูเหมือนจะตรงกับกราฟนี้:

- หน้าก่อน ย่อย
- หน้าต่อไป ต้นไม้ตัดต่อ