Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ເຂົ້າໃຈຄະນິດສາດທີ່ຢູ່ເບື້ອງຫຼັງ Linear Regression

ໂພສເມື່ອ # Machine Learning # Mathematics # Computer Science

ເຂົ້າໃຈຄະນິດສາດທີ່ຢູ່ເບື້ອງຫຼັງ Linear Regression

ສະບາຍດີນັກສຶກສາວິທະຍາສາດຄອມພິວເຕີ ແລະ ນັກພັດທະນາຊອບແວທຸກທ່ານ! ເມື່ອເວົ້າເຖິງ Machine Learning (ML), ຫຼາຍຄົນມັກຈະນຶກເຖິງໂມເດວທີ່ຊັບຊ້ອນຄື Deep Learning ຫຼື Neural Networks. ແຕ່ໃນຄວາມເປັນຈິງແລ້ວ, ກ່ອນທີ່ເຮົາຈະກ້າວໄປສູ່ຈຸດນັ້ນ, ພື້ນຖານທີ່ສຳຄັນທີ່ສຸດທີ່ເຮົາຕ້ອງເຂົ້າໃຈຢ່າງເລິກເຊິ່ງກໍຄື Linear Regression.

ບໍ່ວ່າຈະເປັນການຄາດຄະເນລະດັບນ້ຳຂອງໃນຍາມຝົນ, ການວິເຄາະທ່າອ່ຽງລາຄາທີ່ດິນໃນເຂດຈັນທະບູລີ ນະຄອນຫຼວງວຽງຈັນ, ຫຼື ການພະຍາກອນຜົນຜະລິດກາເຟທີ່ເມືອງປາກຊ່ອງ, Linear Regression ຄືເຄື່ອງມືທາງຄະນິດສາດທີ່ສາມາດຊ່ວຍໃຫ້ເຮົາສ້າງໂມເດວພະຍາກອນເຫຼົ່ານີ້ໄດ້. ໃນບົດຄວາມນີ້, ເຮົາຈະມາແກະກ່ອງເບິ່ງຄະນິດສາດທີ່ຢູ່ເບື້ອງຫຼັງໂມເດວນີ້ ກ່ອນທີ່ຈະລົງມືຂຽນໂຄດຈຳລອງດ້ວຍ Python.


1. ສົມຜົນເສັ້ນຊື່ (The Equation of a Straight Line)

Linear Regression ມີເປົ້າໝາຍຫຼັກຄືການຊອກຫາ “ເສັ້ນຊື່ທີ່ເໝາະສົມທີ່ສຸດ” (Line of Best Fit) ທີ່ສາມາດອະທິບາຍຄວາມສຳພັນລະຫວ່າງຕົວປ່ຽນຕົ້ນ (Independent Variable) ແລະ ຕົວປ່ຽນຕາມ (Dependent Variable).

ໃນຄະນິດສາດຊັ້ນມັດທະຍົມ, ເຮົາຄຸ້ນເຄີຍກັບສົມຜົນ: y=mx+by = mx + b

ແຕ່ໃນວົງການ Machine Learning, ເຮົາມັກຈະຂຽນໃນຮູບແບບຂອງ Parameters (ຫຼື Weights) ຄື: hθ(x)=θ0+θ1xh_\theta(x) = \theta_0 + \theta_1x


2. ຟັງຊັນຕົ້ນທຶນ (Cost Function: Mean Squared Error)

ເມື່ອເຮົາສ້າງເສັ້ນຊື່ຂຶ້ນມາ, ເຮົາຈະຮູ້ໄດ້ແນວໃດວ່າເສັ້ນນັ້ນດີຫຼືບ່ອນ? ຄຳຕອບຄືການວັດແທກ “ຄວາມຜິດພາດ” (Error) ລະຫວ່າງຄ່າທີ່ໂມເດວທຳນາຍ ກັບ ຄ່າຈິງທີ່ມີຢູ່ໃນ Data ຂອງເຮົາ.

ໃນ Linear Regression, ເຮົາໃຊ້ຄະນິດສາດທີ່ເອີ້ນວ່າ Mean Squared Error (MSE) ຫຼື ຟັງຊັນຕົ້ນທຶນ (Cost Function), ເຊິ່ງຂຽນແທນດ້ວຍ J(θ0,θ1)J(\theta_0, \theta_1):

J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2J(\theta_0, \theta_1) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2

ອະທິບາຍສູດ:


3. ການປັບປຸງໂມເດວດ້ວຍ Gradient Descent

ເປົ້າໝາຍຂອງເຮົາຄືການຊອກຫາຄ່າ θ0\theta_0 ແລະ θ1\theta_1 ທີ່ເຮັດໃຫ້ Cost Function J(θ0,θ1)J(\theta_0, \theta_1) ມີຄ່າ ນ້ອຍທີ່ສຸດ (Minimum). ວິທີທີ່ນິຍົມທີ່ສຸດໃນ Machine Learning ໃນການແກ້ໄຂບັນຫານີ້ຄື Gradient Descent.

Gradient Descent ແມ່ນການຄິດໄລ່ Derivative (ຜົນຕຳລາ) ສ່ວນໜຶ່ງ (Partial Derivatives) ຂອງ Cost Function ເພື່ອຊອກຫາທິດທາງທີ່ຄວາມຊັນຫຼຸດລົງ, ຈາກນັ້ນກໍປັບຄ່າ θ\theta ລົງເທື່ອລະໜ້ອຍ.

ສູດການອັບເດດຄ່າ Parameters ຈະເປັນດັ່ງນີ້:

θj:=θjαθjJ(θ0,θ1)\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta_0, \theta_1)

ເມື່ອເຮົາຄິດໄລ່ Partial Derivatives ສຳລັບ θ0\theta_0 ແລະ θ1\theta_1, ເຮົາຈະໄດ້:

(ໝາຍເຫດ: α\alpha ຫຼື Alpha ແມ່ນ Learning Rate ເຊິ່ງເປັນຕົວຄວບຄຸມວ່າເຮົາຈະກ້າວໄປຫາຈຸດນ້ອຍສຸດໄວ ຫຼື ຊ້າສ່ຳໃດ).


4. ມາລົງມືຂຽນໂຄດກັນເລີຍ (Python Implementation)

ເພື່ອໃຫ້ເຂົ້າໃຈຄະນິດສາດຂ້າງເທິງໄດ້ຢ່າງຈະແຈ້ງ, ເຮົາລອງມາຂຽນໂຄດຄິດໄລ່ Linear Regression ຈາກສູນ (From Scratch) ໂດຍໃຊ້ພຽງແຕ່ numpy ເພື່ອຈຳລອງການພະຍາກອນຜົນຜະລິດກາເຟປາກຊ່ອງ.

import numpy as np

# ຂໍ້ມູນຈຳລອງ: x = ປະລິມານນ້ຳຝົນ (ມິນລີແມັດ), y = ຜົນຜະລິດກາເຟ (ໂຕນ/ເຮັກຕາ)
x = np.array([120, 150, 170, 200, 220]) 
y = np.array([1.5, 2.0, 2.3, 2.8, 3.1])

def gradient_descent(x, y, learning_rate=0.0001, epochs=10000):
    # ກຳນົດຄ່າເລີ່ມຕົ້ນຂອງ Theta 0 ແລະ Theta 1
    theta_0 = 0.0
    theta_1 = 0.0
    m = len(x)

    for i in range(epochs):
        # ສົມຜົນເສັ້ນຊື່ (Hypothesis)
        y_predicted = theta_0 + theta_1 * x
        
        # ຄິດໄລ່ Partial Derivatives (Gradients)
        d_theta_0 = (1/m) * sum(y_predicted - y)
        d_theta_1 = (1/m) * sum((y_predicted - y) * x)
        
        # ອັບເດດຄ່າ Parameters ຕາມສູດ Gradient Descent
        theta_0 = theta_0 - learning_rate * d_theta_0
        theta_1 = theta_1 - learning_rate * d_theta_1
        
    return theta_0, theta_1

# ເອີ້ນໃຊ້ຟັງຊັນ
final_theta_0, final_theta_1 = gradient_descent(x, y)

print(f"ຄ່າ Bias (\u03b80): {final_theta_0:.4f}")
print(f"ຄ່າ Weight (\u03b81): {final_theta_1:.4f}")

# ລອງທຳນາຍ: ຖ້າປີໜ້າຝົນຕົກ 180 ມິນລີແມັດ ຜົນຜະລິດຈະເປັນເທົ່າໃດ?
rain_prediction = 180
yield_prediction = final_theta_0 + final_theta_1 * rain_prediction
print(f"ຄາດຄະເນຜົນຜະລິດເມື່ອຝົນຕົກ 180mm: {yield_prediction:.2f} ໂຕນ/ເຮັກຕາ")

ເມື່ອທ່ານເອົາໂຄດນີ້ໄປຮັນ, ທ່ານຈະເຫັນວ່າຄອມພິວເຕີຄ່ອຍໆປັບປ່ຽນຄ່າຊ້າໆຈົນໄດ້ເສັ້ນຊື່ທີ່ເໝາະສົມທີ່ສຸດ ໂດຍອ້າງອີງຈາກທິດສະດີທາງຄະນິດສາດທີ່ເຮົາໄດ້ເວົ້າເຖິງທັງໝົດ.


5. ສິ່ງທີ່ຄວນຈື່ (Key Takeaways)


ສະຫຼຸບ

ການຮຽນຮູ້ Machine Learning ບໍ່ໄດ້ໝາຍຄວາມວ່າເຮົາຕ້ອງໃຊ້ພຽງແຕ່ Library ສຳເລັດຮູບເຊັ່ນ scikit-learn ເທົ່ານັ້ນ. ສຳລັບນັກສຶກສາວິທະຍາສາດຄອມພິວເຕີແລ້ວ, ຄວາມເຂົ້າໃຈກ່ຽວກັບຄະນິດສາດລະດັບພື້ນຖານ ເຊັ່ນ Algebra ແລະ Calculus ທີ່ຢູ່ເບື້ອງຫຼັງໂມເດວ ແມ່ນກຸນແຈສຳຄັນທີ່ຊ່ວຍໃຫ້ເຮົາສາມາດນຳໄປດັດແປງ ແລະ ແກ້ໄຂບັນຫາທີ່ຫຍຸ້ງຍາກຂຶ້ນໃນອະນາຄົດໄດ້. ບໍ່ວ່າຈະເປັນການເອົາໄປນຳໃຊ້ກັບລະບົບຂໍ້ມູນການກະເສດຢູ່ລາວ, ຂໍ້ມູນຊັບສິນ, ຫຼື ຂໍ້ມູນການລາຈອນ, ພື້ນຖານທີ່ແໜ້ນໜາຄືສິ່ງທີ່ຈະເຮັດໃຫ້ນັກພັດທະນາແຕກຕ່າງຈາກຄົນທົ່ວໄປ. ຂໍໃຫ້ມ່ວນຊື່ນກັບການຂຽນໂຄດຄະນິດສາດ!