Skip to main content
0
Artificial Intelligence / Data scienceMachine learning

ทำความรู้จัก “Linear Regression” Algorithm ที่คนทำ Machine Learning ยังไงก็ต้องได้ใช้!

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

Machine Learning คืออะไร?

“Machine Learning” หรือแปลไทยแบบตรงตัวว่า “การเรียนรู้ของเครื่องจักร” เป็นการสอนให้โปรแกรมของเราได้เรียนรู้บางอย่าง ซึ่งจะไม่ได้เขียนโค้ดโต้ง ๆ หรืออัลกอริทึมเป๊ะ ๆ ลงไปในโปรแกรมเลย แต่จะให้เรียนรู้ผ่านรูปแบบข้อมูลที่เราอยากให้เรียนรู้แทน

พูดงี้อาจจะยังไม่เห็นภาพ ลองยกตัวอย่างกันหน่อยดีกว่า
สมมติเรามีรูปภาพ “มะเขือเทศ” กับ “องุ่น” แล้วเราอยากเขียนโปรแกรมเพื่อแยกสองสิ่งนั้นออกจากกัน แบบว่า “เห้ย รูปนี้คือมะเขือเทศนะ รูปนี้คือองุ่นนะ” จะทำไงได้บ้าง?

ถ้าเป็นการเขียนโปรแกรมแบบปกติทั่วไป เราก็จะเขียนโค้ดที่ใช้แยกคุณสมบัติที่ต่างกันของมัน เช่น สี ขนาด รูปร่าง เปลือก ฯลฯ พอเราป้อนรูปมะเขือเทศเข้าไป โปรแกรมก็จะประมวลผลตามโค้ดที่เราเขียน แล้วแสดงผลลัพธ์ว่า นั่นคือรูปของมะเขือเทศ

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

กลับกัน ถ้าเป็น Machine Learning เราจะป้อนรูปมะเขือเทศเข้าไปเหมือนเดิมแหละ แต่เราจะใส่ไปด้วยว่ารูปนี้คือมะเขือเทศ และตอนใส่รูปองุ่นเข้าไป ก็จะระบุว่านั่นคือองุ่นเหมือนกัน จากนั้น โปรแกรมเราจะไปคิด ไปหา หรือไปสร้างกระบวนการ/อัลกอริทึมเพื่อเรียนรู้ว่า รูปนี้คือผักผลไม้อะไร โดยที่เราไม่ต้องไปโค้ดเหมือนก่อนหน้านี้นั่นเอง

แล้ว Linear Regression Algorithm คืออะไร?

“Linear Regression” หรือ “การวิเคราะห์การถดถอยเชิงเส้น” เกิดจากการรวมกันของคำว่า “Linear” ที่แปลว่าเชิงเส้น และ “Regression” ที่แปลว่าการถดถอย โดย Linear Regression จะเป็นความสัมพันธ์ของตัวแปรหรือสิ่งที่เรากำลังสนใจ ซึ่งจะถูกใช้กับการคำนวณค่าที่เป็นตัวเลข เพื่อหาความสัมพันธ์หรือทำนายข้อมูลต่าง ๆ

Linear Regression ถือว่าเป็น Machine Learning ประเภท Supervised Learning หรือ การเรียนรู้แบบมีผู้สอน ชนิดแบบ Statistical Regression ที่เราจะต้องใส่ชุดข้อมูลเข้าไปให้โปรแกรมเรียนรู้ก่อน โดยโปรแกรมจะนำตัวแปรต้นและตัวแปรตามไปคำนวณด้วยสถิติทางคณิตศาสตร์ แล้วก็จะได้ข้อมูลกลับมาเป็นตัวเลขนั่นเอง

โดยสมการความสัมพันธ์ของ Linear Regression ก็คือ y=mx+c เมื่อ

  • x คือ ตัวแปรต้น
  • y คือ ตัวแปรตาม
  • m คือ ความชัน
  • c คือ จุดตัดแกน y

ลักษณะความสัมพันธ์ของ Linear Regression เป็นยังไง?

ก่อนจะไปทำความรู้จักกับความสัมพันธ์ของ Linear Regression อยากให้เพื่อน ๆ ได้รู้จักกับศัพท์คำนึงก่อน คำนั้นก็คือ Correlation Coefficient หรือที่มักเรียกกันว่าค่า r เป็นตัวเลขที่เอาไว้บอกลักษณะความสัมพันธ์ระหว่าง 2 ตัวแปร โดยค่า r จะอยู่ระหว่าง -1.0 จนถึง +1.0

ความสัมพันธ์ของ Linear Regression หลัก ๆ จะเป็นดังต่อไปนี้เลยจ้า

1. Positive Linear Relationship

ถ้าค่า r เข้าใกล้ค่า +1.0 จะถือว่าเป็น Positive linear relationship ซึ่งเป็นการแปรผันตรง เมื่อค่าของตัวแปรต้น (x) เพิ่ม ค่าของตัวแปรตาม (y) ก็จะเพิ่มเช่นกัน

2. Negative Linear Relationship

ถ้าค่า r เข้าใกล้ค่า -1.0 จะถือว่าเป็น Negative linear relationship ซึ่งเป็นการแปรผกผันเมื่อค่าของตัวแปรต้น (x) เพิ่ม ค่าของตัวแปรตาม (y) จะลดลง

3. No Apparent Linear Relationship

ถ้าค่า r เข้าใกล้ค่า 0 จะถือว่าเป็น No apparent linear relationship รูปแบบที่ตัวแปรต้น (x) และตัวแปรตาม (y) ไม่มีความสัมพันธ์กันชัดเจน จึงไม่สามารถระบุได้ว่าเป็นความสัมพันธ์แบบไหนนั่นเอง

เอาล่ะ มาลองเทรน Linear Regression Model กันดีกว่า!

เกริ่นกันมาเยอะแล้ว เพื่อให้เห็นภาพชัดขึ้น เรามาลองโค้ดกันดีกว่า วันนี้เราจะใช้ Python กับ Scikit-learn กันเป็นหลัก เพื่อความง่าย เราจะเขียนโค้ดที่ Jupyter Notebook กัน (หรือจะใช้ Visual Studio Code, PyCharm ก็ได้ตามที่ทุกคนสะดวกเลยจ้า)

โจทย์ก็คือ เราจะทำ Model สำหรับทำนายจำนวนสินค้าที่เราจะขายได้ในแต่ละเดือน โดยมีชุดข้อมูลตัวอย่างเป็นจำนวนสินค้าที่ขายได้ตลอด 10 เดือน ย้อนหลังไปตั้งแต่เดือนแรกที่เริ่มขาย

เริ่มต้นด้วยการ import สิ่งที่ต้องใช้กันก่อน นั่นก็คือ

  • numpy
  • matplotlib.pyplot
  • sklearn.linear_model
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

เสร็จแล้ว เราจะเพิ่มข้อมูลตัวอย่างให้โปรแกรมได้เทรน โดยจะให้ x เป็นเดือนแต่ละเดือน ตั้งแต่ที่เราเริ่มขายสินค้า และให้ y เป็นจำนวนสินค้าที่เราขายได้ในแต่ละเดือน จากนั้นเรามาลอง Scatter Plot กัน

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  # เดือน
y=[25,35,40,42,51,60,62,72,78,90]  # จำนวนสินค้าที่ขายได้ในแต่ละเดือน

plt.scatter(x,y)                   # Scatter Plot

จะเห็นเลยว่า เป็นการแปรผันตรงที่สวยงาม~ พอได้กราฟของข้อมูลตัวอย่างแล้ว เราก็มาสร้างและเทรน Model กันเถอะ

model=LinearRegression()

x=np.array(x)       # เปลี่ยน list เป็น array
y=np.array(y)       # เปลี่ยน list เป็น array
x=x.reshape(-1,1)   # เปลี่ยน x ให้เป็น array 2D

model.fit(x,y)      # เทรน Model

model.score(x,y)    # เมื่อเทรนเสร็จ ใช้คำสั่งนี้แสดงค่า r ของความสัมพันธ์

# Output ของค่า r คือ 0.9850564740092783

ต่อมา พอเราเทรนเสร็จแล้ว และสามารถเรียกค่า r ออกมาได้ เราจะมาลองทดสอบโมเดลนี้กัน

xtest=np.linspace(0,11)    # สร้างชุดข้อมูลสำหรับทดสอบขึ้นมา โดยเป็นชุดข้อมูลตัวเลขระหว่าง 0-11

xtest=xfit.reshape(-1,1)   # เปลี่ยน xtest เป็น array 2D
ytest=model.predict(xtest) # ทดสอบโมเดลด้วย xtest

plt.scatter(x,y)           # นำค่า x, y ชุดข้อมูลตัวอย่างมา Scatter Plot
plt.plot(xtest,ytest)      # นำค่า xtest, ytest มา Plot
  • กราฟเส้นตรง Plot มาจาก xtest และ ytest
  • Scatter Plot มาจาก x และ y ที่เป็นชุดข้อมูลตัวอย่าง

จะเห็นได้ว่า เส้นกราฟที่ได้จาก xtest และ ytest เป็นกราฟเส้นตรงที่สอดคล้องกับ Scatter Plot จากชุดข้อมูลตัวอย่างที่เรากำหนดไว้เลย รวมถึงค่า r ที่ได้ประมาณ 0.985 ซึ่งใกล้เคียง +1.0 มาก เพราะงั้นถือว่าโมเดลนี้พอใช้ได้เลยนะเนี่ย

เป็นไงกันบ้างกับเนื้อหาที่เราเอามาฝากกันในวันนี้ หวังว่าทุกคนจะได้เรียนรู้ Machine Learning กับ Linear Regression กันพอหอมปากหอมคอ แต่วันนี้คงต้องลาไปก่อน แล้วพบกันใหม่ สวัสดีจ้าา~

Phanpaporn Zheng

Author Phanpaporn Zheng

More posts by Phanpaporn Zheng

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

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า