Mơ hình hồi quy tuyến tính

Một phần của tài liệu Machine Learning Toolbox trong MatLab (Trang 125 - 137)

7 Hồi quy

7.2 Mơ hình hồi quy tuyến tính

Lý thuyết chung

Mơ hình hồi quy tuyến tính: hàm Y là hàm tuyến tính:

Y =β0+β1.X1+β2.X2+...+βk.Xk+ε

hay:

E(Y|X) =β0+β1.X1+β2.X2+...+βk.Xk

Trong đó:

• Biến mục tiêu (biến phụ thuộc, biến đầu ra, biến phản hồi) Y là biến định lượng liên tục. • X = (X1,X2, ...,Xk)là các biến độc lập (biến giải thích, biến đầu vào).

• Sai số ngẫu nhiênε được giả sử có phân bố chuẩn.

Multiple Linear Regression

Hồi quy tuyến tính bội (Multiple Linear Regression) là một phần mở rộng của hồi quy tuyến tính đơn. Nó được sử dụng khi chúng ra muốn dự đốn giá trị của một biến phản hồi(biến mục tiêu) dựa trên giá trị của hai hay nhiều biến giải tích khác nhau.

Khi làm việc với output của mơ hình hồi quy tuyến tính ta sẽ gặp một số thuật ngữ/kí hiệu dưới đây:

• Esitimate: Ước lượng hệ số của từng biến độc lập trong mơ hình hồi quy tuyến tính. • SE: Sai số của các hệ số.

• tStat: dùng để kiểm định giả thuyết xác định mức ý nghĩa thống kê của tham số. Trong đó:

tStat= EsitimateSE .

• p-value: đo giá trị xác suất sai lầm loại 1 khi bác bỏH0.

Ví dụ: Chúng ta có thể sử dụng hồi quy tuyến tính bội số để hiểu liệu có thể dự đốn kết quả của kì thi cuối kì mơn Lập trình tính tốn dựa trên thời gian ơn tập, giới tính của sinh viên hay không?

MatLab hỗ trợ cho ta các hàm để ứng dụng vào bài tốn hồi quy tuyến tính được liệt kê ở dưới đây:

7 HỒI QUY

1. LinearModel and CompactLinearModel Functions (a) Create LinearModel Object

• fitlm

mdl = fitlm(tbl): trả về mơ hình hồi quy tuyến tính phù hợp vớicác biến

trong bảng hoặc tập dữ liệu tbl. Mặc định, hàm f itlm lấy biến cuối cùng trongtbllàm biến phản hồi.

mdl = fitlm(X,y): trả về mơ hình hồi quy tuyến tính của các biến phản hồi y

phù hợp với tập dữ liệu X.

mdl = fitlm(_, modelspec): Vớimodelspeclà hình đã xác định các biến đầu vào và biến phản hồi.

mdl = fitlm(_, Name, Value): Chỉ định tùy chọn bổ sung bằng cách sử dụng

một hoặc nhiều cặp đối số Name Value.

Ví dụ: Ta có thể chỉ định biến nào là phân loại, biến nào dùng trọng số

Ví dụ minh họa Cài đặt code:

Fit mơ hình hồi quy tuyến tính bằng cách sử dụng tập dữ liệu đầu vào là ma trận.

Load dữ liệu carsmall vào một ma trận X

Ví dụ dưới đây sử dụng tập dữ liệu carsmall, chứa thông tin của các quan sát về các xe ơ tơ. Ta sẽ xây dựng mơ hình hồi quy tuyến tính để dự đốn qng đường đi được (MPG) dựa trên trọng lượng (Weight), mã lực (Horsepower), khả năng tăng tốc (Acceleration).

>> load carsmall

>> X = [Weight,Horsepower,Acceleration];

Fit mơ hình hồi quy tuyến tính bằng hàm f itlm.

>> mdl = fitlm(X,MPG)

7 HỒI QUY

stepwiselm: thực hiện hồi quy từng bước

mdl = stepwiselm(tbl): Tạo mơ hình hồi quy tuyến tính cho các biến trong

tbl bằng cách sử dụng hồi quy từng bước để thêm hoặc xóa các yếu tố dự đốn.

Bắt đầu từ một mơ hình khơng đơi, hàm stepwiselm sử dụng biến cuối cùng củatbl làm biến phản hồi. Sử dụng hồi quy từng bước để tiến và lùi để xác định mơ hình cuối cùng. Ở mỗi bước, hàm sẽ tìm kiếm các biến để thêm vào mơ hình hoặc xóa khỏi mơ hình, dựa trên giá trị của đối số ’Criterion’

mdl = stepwiselm(X,y): tạo mơ hình tuyến tính của các phản hồi y đối với các

biến dự báo có trong X.

stepwiselm(_, modelspec): Chỉ định mơ hìnhmodelspeccho hàmstepwiselm

mdl = stepwiselm(_, Name, Value): Chỉ định các tùy chọn bổ sung bằng cách

sử dụng một hoặc nhiều cặp đối số Name Value.

Ví dụ: Ta có thể chỉ định số bước tối đa cần thực hiện hoặc chỉ định biến phân loại.

Ví dụ minh họa

Dữ liệu hospital bao gồm thông tin của các bệnh nhân như: giới tính, huyết áp, cân nặng...

Chọn weight làm biến dự đoán. Chỉ định biến đầu vào: sex, age, smoker. Load tập dữ liệu mẫu và xác định mơ hình(mdl) có những biến nào.

>> load hospital

>> mdl = stepwiselm(hospital,’Weight~1+Smoker’,...

’ResponseVar’,’Weight’,’PredictorVars’,{’Sex’,’Age’,’Smoker’},... ’CategoricalVar’,{’Sex’,’Smoker’})

7 HỒI QUY

(b) Create CompactLinearModel Object

compact

Mơ hình hồi quy tuyến tính thu gọn

compactMdl = compact(mdl: trả về mơ hình hồi quy tuyến tính nhỏ gọn hơn phù hợp

với mdl.

Ví dụ minh họa

Điều chỉnh mơ hình hồi quy tuyến tính phù hợp với dữ liệu và giảm kích thước của mơ hình hồi quy tuyến tính đầy đủ bằng cách loại bỏ một số dữ liệu trong mẫu và một một số thông tin liên quan đến quá trình điều chỉnh (fitting process).

Load dữ liệulargedata4regchứa 15,000 quan sát và 45 biến dự báo.

>> load largedata4reg >> mdl = fitlm(X,Y);

>> compactMdl = compact(mdl);

So sánh kích thước của mơ hình ban đầu mdl và mơ hình nhỏ gọn hơn compactMdl.

>> vars = whos(’compactMdl’,’mdl’);

>> [vars(1).bytes,vars(2).bytes]

Kết quả: [81537 11408528]

Ta có thể thấy kích thước của mơ hình compactMdl giảm đi đáng kể. (c) Add or Remove Terms from Linear Model

addTerms

NewMdl = addTerm(mdl, terms): Trả về mơ hình hồi quy tuyến tính được điều

chỉnh bằng cách sử dụng dữ liệu đầu vào và cài đặt trongmdlvới các điều kiện

7 HỒI QUY

Ví dụ minh họa

Ví dụ này ta sử dụng tập dữ liệucarsmall, chứa thông tin của các quan sát về xe

ô tô, chứa các biến như: khối lượng, mã lực, quãng đường đi được, năm sản xuất, ...

Tạo mơ hình hồi quy tuyến tính cảu tập dữ liệucarsmall mà khơng có bất kì tham số nào.

Code

>> load carsmall

>> tbl = table(MPG,Weight);

>> tbl.Year = categorical(Model_Year); >> mdl = fitlm(tbl,’MPG ~ Year + Weight^2’)

Thêm dữ liệu đầu vào ’Year + Weight’ vào mơ hình.mdl.

>> terms = ’Year*Weight’;

7 HỒI QUY

• NewMdl = removeTerm(mdl,term): trả về một mơ hình hồi quy tuyến tính được điều

chỉnh bằng cách sử dụng dữ liệu đầu vào và cài đặt trong mdl với các tham số được loại bỏ.

Ví dụ minh họa

Tạo mơ hình hồi quy tuyến tính bằng cách sử dụng tập dữ liệu hald. Xóa các biến có p-value cao

>> load hald

>> X = ingredients; % predictor variables

>> y = heat; % response variable

>> mdl = fitlm(X,y)

>> terms = ’x3 + x4’; % terms to remove

7 HỒI QUY

• step:

NewMdl = step(mdl): trả về mơ hình hồi quy tuyến tính dựa trên mdl bằng cách

sử dụng hồi quy từng bước để thêm hoặc bớt biến đầu vào (biến độc lập).

NewMdl = step(mdl, Name, Value): chỉ định cặp name value. Ví dụ: số lần

thực hiện tối đa

Ví dụ minh họa:

Điều chỉnh mơ hình hồi quy tuyến tính và sử dụng số bước để cải thiện mơ hình. >> load carsmall >> tbl1 = table(MPG,Weight); >> tbl1.Year = categorical(Model_Year); >> mdl1 = fitlm(tbl1,’MPG ~ Weight’) >> NewMdl1 = step(mdl1,’Upper’,’quadratic’,’NSteps’,5,’Verbose’,2)

7 HỒI QUY

Ta có thể thấy: mơ hình đã thêm biến đầu vào là "Year’ và "Weightˆ2" để được mơ hình mới.

(d) Predict Responses

• fevalypred = feval(mdl, Xnew1, Xnew2,...,Xnewn): trả về các dự đoán của mdl

cho các bộ dữ liệu mới Xnew1,Xnew2,...Xnewn.

Ví dụ minh họa:

>> load carsmall

>> tbl = table(MPG,Weight);

>> tbl.Year = categorical(Model_Year);

>> mdl = fitlm(tbl,’MPG ~ Year + Weight^2’); >> gscatter(tbl.Weight,tbl.MPG,tbl.Year);

gscatter(tbl.Weight,tbl.MPG,tbl.Year)để vẽ biểu đồ phân tán của MPG so với trong lượng và được nhóm theo năm.

7 HỒI QUY

Tiếp theo ta sẽ vẽ đường cong dự đốn mơ hình cho năm và trọng lượng khác nhau bằng cách sử dụng hàm f eval. >> w = linspace(min(tbl.Weight),max(tbl.Weight))’; >> line(w,feval(mdl,w,’70’),’Color’,’r’) >> line(w,feval(mdl,w,’76’),’Color’,’g’) >> line(w,feval(mdl,w,’82’),’Color’,’b’) • predict

ypred = predict(mdl,Xnew): trả về các giá trị dự đốn biến phản hồi của mơ

hìnhmdl theo dữ liệu trong Xnew.

[ypred,yci] = predict(mdl,Xnew): trả về thêmycilà khoảng tin cậy cho các giá trị trong ypred

[ypred,yci] = predict(mdl,Xnew,Name,Value): Bổ sung thêm cặp tham số

7 HỒI QUY

Ví dụ: ta có thể chỉ định mức độ tin cậy và kiểu dự đốn.

Ví dụ minh họa

Tạo mơ hình bậc hai về quãng đường đi được của ô tô với biến là trọng lượng

load carsmall >> X = Weight; >> y = MPG;

>> mdl = fitlm(X,y,’quadratic’)

Dự đoán biến phản hồi bằng hàm predict.

>> ypred = predict(mdl,X); >> plot(X,y,’o’,X,ypred,’x’)

>> legend(’Data’,’Predictions’)

(e) Evaluate Linear Model • coefCI

Tìm các ước lượng khoảng của các hệ số trong mơ hình hồi quy tuyến tinh:

ci = coefCI(mdl): Trả về ước lượng khoảng với độ tin cậy là 95 % trongmdl.

ci = coef(mdl, alpha): Chỉ định được độ tin cậy anpha.

>> load carbig

7 HỒI QUY

>> tbl = table(Horsepower,Weight,MPG,Origin);

>> modelspec = ’MPG ~ 1 + Horsepower + Weight + Origin’;

>> mdl = fitlm(tbl,modelspec); >> mdl.CoefficientNames

Tìm khoảng tin cậy cho các hệ số của mơ hình:

>> ci = coefCI(mdl)

coefTest

Kiểm định giả thuyết tuyến tính trên các hệ số của mơ hình hồi quy tuyến tính:

p = coefTest(mdl): tính tốn p-value cho phép F-test (kiểm định giả thuyết

Fisher) mà tất cả các ước lượng hệ số tính bằng mdl.

p = coefTest(mdl,H): thực hiện F-test cho giả thuyết HxB = 0, trong đó B là

vecto hệ số. Sử dụng H để chỉ định các hệ số đưa vào F-test.

p = coefTest(mdl,H,C): thực hiện F-test cho giải thuyết HxB=C.

[p,F] = coefTest(___): F được trả về F-test bằng cách sử dụng bất cứ tổ hợp

đối số đầu vào nào trong các cú pháp ở trên.

[p,F,r] = coefTest(___): r là bậc tự do của phép thử.

Ví dụ minh họa:

>> load carsmall

>> Model_Year = categorical(Model_Year); >> tbl = table(MPG,Weight,Model_Year);

7 HỒI QUY

>> [p,F] = coefTest(mdl)

Kết quả:

p = 5.5208e-41 F = 171.8844

2. LinearModel and CompactLinearModel Functions (a) Work with RegressionLinear Object

Work with RegressionLinear Object

loss

* L = loss(Mdl,X,Y): Trả về sai số bình trung bình cho mơ hìnhmdl sử dụng dữ liệu dự báo trong X và các phản hồi tương ứng trong Y.

* L = loss(Mdl,Tbl,ResponseVarName): trả về MSE cho dữ liệu dự đoán trong Tbl và các giá trị thật (giá trị chính xác) trong tbl.ResponseVarName. * L = loss(Mdl,Tbl,Y): Trả về MSE cho dữ liệu dự đoán trong bảng Tbl và

các phản hồi đúng trong y.

* L = loss(___,Name,Value): Chỉ định cặp đối số Name-Value. Ví dụ: chỉ định các cột trong dữ liệu dự báo tương ứng với các quan sát hoặc chỉ định hàm mất mát.

selectModels

Giúp chọn mơ hình hồi quy tuyến tính phù hợp

SubMdl = selectModels(Mdl,idx): trả về tập hợp con các mơ hình hồi quy

tuyến tính được train từ một tập các mơ hình tuyến tính (Mdl) được train từ các đặc điểm khác nhau. Các đặc điểm này được chỉ định bằng chỉ số idx.

7 HỒI QUY

Một phần của tài liệu Machine Learning Toolbox trong MatLab (Trang 125 - 137)

Tải bản đầy đủ (PDF)

(184 trang)