多元線性回歸(Multivariate Linear Regression)簡單應用


警告:本文為小白入門學習筆記

數據集:

http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex3/ex3.html

由房屋的面積和bedroom個數影響房價的高低。

加載數據

x = load('ex3x.dat');
y = load('ex3y.dat');
m = length(y);
x = [ones(m, 1), x]; (之所以加上一列1,因為x1 = 1);

看一下輸入值,注意房間面積是卧室數量的1000倍左右。這種差異意味着預處理輸入將顯着提高梯度下降的效率。

在您的程序中,按標准偏差縮放兩種類型的輸入,並將其均值設置為零。

%數據處理,特征值縮放
sigma = std(x);%標准差
mu = mean(x); %平均數
x(:,2) = (x(:,2) - mu(2))./ sigma(2);
x(:,3) = (x(:,3) - mu(3))./ sigma(3);

 

假設函數任然是:

\begin{displaymath}
h_{\theta}(x) = \theta^Tx = \sum_{i=0}^n \theta_i x_i, \nonumber
\end{displaymath}

梯度下降算法:

\begin{displaymath}
\theta_j := \theta_j - \alpha \frac{1}{m} \sum_{i=1}^m (h_{\...
...{(i)}) x_j^{(i)} \;\;\;\;\;\mbox{(for all $j$)} \nonumber
\par
\end{displaymath}

用居矩陣的方式計算:

theta = theta - x'*(x*theta-y)/m*a;

這里theta是一個3*1的矩陣,x是50*2矩陣,y是50*1矩陣,a表示alpha,m表示矩陣列長;

最終MATLAB程序是:

function [jVal] = multiLinerCost(a)
x = load('ex3x.dat');
y = load('ex3y.dat');
m = length(y);
x = [ones(m, 1), x];
%數據處理,特征值縮放
sigma = std(x);%標准差
mu = mean(x); %平均數
x(:,2) = (x(:,2) - mu(2))./ sigma(2);
x(:,3) = (x(:,3) - mu(3))./ sigma(3);

theta = zeros(size(x(1,:)))'; %3*1
J = zeros(50,1);
for iter = 1:50
theta = theta - x'*(x*theta-y)/m*a;
jVal = sum((x*theta-y).^2)/(2*m);
J(iter) = jVal;
end

%繪圖
plot(0:49,J(1:50),'-');
xlabel('Number of iterations')
ylabel('Cost J')
end

控制台:

multiLinerCost(0.07) %選取學習速率(learning rates )為0.07;

我們可以試試不同的learning rates 取值,對比曲線。

 

 可以看到alpha =0.01時,曲線下降緩慢,迭代50次時還沒有下降到最低值,alpha = 0.3時曲線在5附近急劇下降,在之后迭代就沒有太大變化,所以選取0.07這個值相對合理。

如果alpha  再大會怎么樣呢?

設alpha=1.5,可以看到這個值太大以至於一開始就為零,到最后趨近於無窮大。

所以一般取值 :

\begin{displaymath}
0.001 \leq \alpha \leq 10 \nonumber
\end{displaymath}

使用梯度下降算法求得theta:

1.0e+05 *

3.4041
1.1063
-0.0665

使用矩陣計算求出:(如果用矩陣直接計算,不用特征值縮放)

\begin{displaymath}
\theta=\left(X^{T}X\right)^{-1}X^{T}\vec{y}.
\end{displaymath}

1.0e+04 *

8.9598
0.0139
-0.8738

(梯度下降法)所以最后的曲線方程是 h(x1,x2) = 340413 + 110631*x1 - 6650*x2

假如一個房間面積為1650,bedroom個數是3個,那么預測價格是$293,081;

這是對於二元線性回歸問題,如果一般化X = [x1;x2;x3;........xn]  ;  theta = [theta0;theta1;......thetan]也可以解決。

這只是對多元線性回歸的簡單應用,還有很多東西要學習。

入門菜鳥,錯誤地方歡迎指教!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM