ใน Simple linear regression กล่าวถึงความสัมพันธ์แบบ 1 : 1 ระหว่าง predictor variable และ response variable แต่ใน Multiple linear regression จะมองความสัมพันธ์แบบ 1 : many ระหว่าง response variable กับ predictor variables
ถ้ามี predictor variable จำนวน K จำนวน และ response variable รูปแบบความสัมพันธ์ Multiple linear regression เขียนได้ตามนี้
Residual คือ ความต่างระหว่างค่าของ response variable ที่สังเกตุได้จริงกับค่าที่จากการคำนวณ มักเขียนแทนด้วย
สมการรูปแบบของ Multiple linear regression คือ
ความสัมพันธ์ในรูปแบบของ Multiple linear regression ที่พบเห็นได้ เช่น ความสูงของคนขึ้นกับหลายปัจจัย ได้แก่ อาหาร ความสูงของพ่อ-แม่ ภาวะโรคบางอย่าง หรือ ราคาที่อยู่อาศัยขึ้นกับสภาพที่อยู่อาศัย ทำเล ภาวะทางเศรษฐกิจ อัตราดอกเบี้ย เป็นต้น
นอกจากนี้ยังหมายถึงรูปแบบที่ของ polynomial ได้อีก เช่น
รูปแบบ (2) และ (3) ถูกมองว่าเป็น Linear regression ได้ ถ้าขณะนั้นกำลังพิจารณว่า เป็น predictor variable และ X เป็น weight ซึ่งการพิจารณาในทำนองนี้ก็จะมองเป็น Linear ได้
ในตอนนี้จะกล่าวถึง simple multiple linear regression ตามรูปแบบสมการ (1)
Hyperplane
เมื่อ แล้วจะเหลือ ที่ส่งผลต่อค่าของ Y เมื่อนำค่าทั้งสาม มา plot กราฟจะได้ภาพที่มีลักษณะเหมือนกับสี่เหลี่ยมผืนผ้า เรียกว่า hyperplane ใน
เมื่อกำหนดให้ จะได้
เมื่อ แต่มี weight เท่ากัน
เมื่อ มีน้ำหนักไม่เท่ากัน เช่น
หรือ
จะเห็นว่าโครงสร้างของ Hyplane จะได้รับอิทธิพลจาก predictor variable ที่มีน้ำหนักมากกว่าตัวที่มีน้ำหนักน้อย
จะขอยกตัวอย่าง Hyperplane ที่ได้จากสมการ polynomial regression ให้ดูเพื่อจะได้เห็นความต่างที่ชัดเจนเมื่อเทียบกับ Multiple linear regression
ตัวอย่าง
ดาวน์โหลดข้อมูลเรื่อง Red Wine Quality จาก https://archive.ics.uci.edu/ml/datasets/wine+quality ข้อมูลชุดนี้มีทั้งหมด 1600 รายการ predictor variables มีทั้งหมด 11 ตัวแปร [2] ที่จะส่งผลต่อคุณภาพของ Red Wine
เอกสารอ้างอิง
ถ้ามี predictor variable จำนวน K จำนวน
เมื่อ Fit คือ
สมการรูปแบบของ Multiple linear regression คือ
ความสัมพันธ์ในรูปแบบของ Multiple linear regression ที่พบเห็นได้ เช่น ความสูงของคนขึ้นกับหลายปัจจัย ได้แก่ อาหาร ความสูงของพ่อ-แม่ ภาวะโรคบางอย่าง หรือ ราคาที่อยู่อาศัยขึ้นกับสภาพที่อยู่อาศัย ทำเล ภาวะทางเศรษฐกิจ อัตราดอกเบี้ย เป็นต้น
Multiple linear regression ต่างจาก Multiple variables regression ตรงที่ Multiple variables regression กล่าวถึงความสัมพันธ์แบบ many : many ระหว่าง response variables กับ predictor variables
นอกจากนี้ยังหมายถึงรูปแบบที่ของ polynomial ได้อีก เช่น
รูปแบบ (2) และ (3) ถูกมองว่าเป็น Linear regression ได้ ถ้าขณะนั้นกำลังพิจารณว่า
ในตอนนี้จะกล่าวถึง simple multiple linear regression ตามรูปแบบสมการ (1)
Hyperplane
เมื่อ
เมื่อกำหนดให้
เมื่อ
เมื่อ
หรือ
จะเห็นว่าโครงสร้างของ Hyplane จะได้รับอิทธิพลจาก predictor variable ที่มีน้ำหนักมากกว่าตัวที่มีน้ำหนักน้อย
จะขอยกตัวอย่าง Hyperplane ที่ได้จากสมการ polynomial regression ให้ดูเพื่อจะได้เห็นความต่างที่ชัดเจนเมื่อเทียบกับ Multiple linear regression
ตัวอย่าง
ดาวน์โหลดข้อมูลเรื่อง Red Wine Quality จาก https://archive.ics.uci.edu/ml/datasets/wine+quality ข้อมูลชุดนี้มีทั้งหมด 1600 รายการ predictor variables มีทั้งหมด 11 ตัวแปร [2] ที่จะส่งผลต่อคุณภาพของ Red Wine
import numpy as np
data_file = "winequality-red_2.csv"
data = np.genfromtxt(data_file,delimiter=",")
fa = data[:,0] #fixed acidity
va = data[:,1] #- volatile acidity
ca = data[:,2] #3 - citric acid
rs = data[:,3] #4 - residual sugar
ch = data[:,4] #5 - chlorides
fsd = data[:,5] #6 - free sulfur dioxide
tsd = data[:,6] #7 - total sulfur dioxide
de = data[:,7] #8 - density
ph = data[:,8] #9 - pH
sp = data[:,9] #10 - sulphates
al = data[:,10] #11 - alcohol
target= data[:,11] # quality [0,10]
#create matrices
col_0 = np.ones(len(target))
temp = np.dstack((col_0,fa,va,ca,rs,ch,fsd,tsd,de,ph,sp,al))
X_mat = temp[0] # just tricky
# according to equation 3, separating equation into 2 parts may be good idea.!
part_1 = np.linalg.inv(np.dot(X_mat.T,X_mat))
part_2 = np.dot(X_mat.T,target)
# then combine part_1 and part_2 together with np.dot()
beta = np.dot(part_1,part_2) # beta should contains [c,a]
print(beta)
# 2.19652084e+01 2.49905527e-02 -1.08359026e+00 -1.82563948e-01
# 1.63312698e-02 -1.87422516e+00 4.36133331e-03 -3.26457970e-03
# -1.78811638e+01 -4.13653144e-01 9.16334413e-01 2.76197699e-01]
#Find sum sqaure error
predictand = beta[0]+ beta[1]*fa + beta[2]*va + beta[3]*ca \
+ beta[4]*rs + beta[5]*ch + beta[6]*fsd + beta[7]*tsd \
+beta[8]*de +beta[9]*ph +beta[10]*sp +beta[11]*al
sum_sqr_error = 0
for i in range(len(predictand)) :
e = predictand[i] - target[i]
sum_sqr_error+=e**2
print(sum_sqr_error) #666.4107003870303
![]() |
residual หรือ ค่าความต่างระหว่างค่าที่ได้จากสมการเทียบกับค่าที่ได้จากการสังเกตุ มีการกระจุกตัวอยู่ใกล้กับศุนย์ |
เอกสารอ้างอิง
[1] https://somchaisom.blogspot.com/2018/07/linear-regression-simple-linear.html
[2] https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality.names
[2] https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality.names
ความคิดเห็น
แสดงความคิดเห็น