機器學習筆記(6) 線性回歸

先從最簡單的例子開始,假設我們有一組樣本(如下圖的一個個黑色的圓點),只有一個特征,如下圖,橫軸是特征值,縱軸是label。比如橫軸是房屋面積,縱軸是房屋價格.

現在我們要做什么呢?我們試圖找到一條直線y=ax+b,可以盡量好的擬合這些點.

你可能要問了,為啥是直線,不是曲線,不是折線?因為我們的前提就是我們假設數據是有線性關系的啊!一方面,這種假設方便我們用數學知識推導出a,b. 另一方面,假設成折線,曲線盡可能地貼合上圖中的點是沒有意義的,因為盡可能地貼合了訓練數據,只能說明你的模型過擬合了,我們想要得到的是一個盡量通用的模型,能夠在我們的測試數據上取得好的表現.即希望我們的模型泛化能力足夠強.

這里要插一句,每一種機器學習算法都可以看做是一種看待數據的角度,線性回歸就是從"數據可能存在線性關系"這個角度來觀察數據. ?你當然也可以從別的角度觀察數據.這就涉及到了集成學習,可以看看這篇博文. ?所以啊,沒有盡量多的數據,盡量有意義的數據,盡量有效的特征提取,只有機器學習算法的話,其實沒什么用.因為數據太少了,你再怎么從各種角度分析數據也不會取得很好的效果.這也是為啥大數據和機器學習總是被經常一起提到的原因.

ok,書歸正傳,到了這里,問題來了,我們怎么評價"盡量好"地擬合呢?

對某個樣本點,其本來橫坐標上是x,縱坐標是y。 ?我們把x帶入我們的直線方程y=ax+b可以得到$\hat y=ax+b$,此即我們的預測值.我們以這二者之差的大小作為"盡量好"的評價標準.越小說明我們的預測值與真實值差別越小,擬合效果越好.

具體地說,有以下幾種評價標準

  • 均方誤差MSE
  • 均方根誤差RMSE
  • 平均絕對誤差MAE
  • R Squared

?

均方誤差MSE?$$\frac 1 m \sum_{i=1}^m(y^{(i)} - \hat y^{(i)})^2$$

表明了總誤差平攤到每一個樣本上是多少,即均方誤差.

?

均方根誤差RMSE??$$\sqrt {\sum_{i=1}^m(y^{i} - \hat y^{i})^2}$$

MSE的一個問題是,假如y是有量綱的,MSE的結果把量綱改變了.比如y的單位是dollar,MSE的結果變成了$dollar^2$。RSME就避免了這個問題.

?

平均絕對誤差MAE$$\frac 1 m \sum _{i=1}^m |y^{(i)} - \hat y^{(i)}|$$

我們為啥不用這個作為我們評判“盡可能好”的標準呢,因為不好求導.

?

R Squared??$$R^2 = 1 - \frac {\sum _{i=1}^m(\hat y^{(i)} - y^{(i)})^2} {\sum _{i=1}^m(\bar y ?- y^{(i)})^2}$$

假設我們簡單的取y的均值,即$y=\bar y$作為我們的模型,那誤差就是$\sum_{i=1}^m(\bar y - y^{i})^2$。所以$R^2$表達的就是我們的模型相較于簡單的取$\bar y$作為我們的模型有多少差異.

當$R^2$接近0時,說明我們的模型和直接取均值差別不大

當$R^2$接近1時,說明我們的模型相當不錯,我們預測值和真實值幾乎沒誤差.

當$R^2$為負時,說明我們的模型比直接取均值還要爛.此時你的數據可能就不存在線性關系.

比較常用的是RMSE和R平方.

?


現在問題變成了我們怎么求出a,b使得$?{\sum _{i=1}^m(\hat y^{(i)} - y^{(i)})^2} =?{\sum _{i=1}^m(ax^{i}+b - y^{(i)})^2}?$最小.這個函數就是所謂的損失函數.注意這個函數的未知數是a,b。這是很多機器學習算法的一個套路,首先定義出一個合適的損失函數,然后最小化損失函數從而得出我們的模型.

以上,我們是用一個特征做例子的,實際上,當樣本有N個特征,道理也是一樣的。

$y = a_1x_1+a_2x_2+…+a_nx_n+b$

那么第i個樣本的預測值為$y^i = ?a_1x_1^i+a_2x_2+…+a_nx_n+b$我們改寫成向量的形勢就是

$$\hat y^{(i)} = \begin{bmatrix} 1& X_1^{(i)}&X_2^{(i)}& … &X_n^{(i)}\end{bmatrix}\begin{bmatrix} ?\theta_ 0 \\ ?\theta_ 1 \\ ?\theta_ 2 \\ ?… \\ ?\theta_ n \\ \end{bmatrix}$$

令$X_b=\left[ \begin{matrix} 1 & x_{11} & x_{12} & ... & x_{1n} \\ 1 & x_{21} & x_{22} & ... & x_{2n}?\\ ...\\ 1 & x_{m1} & x_{m2} & ... & x_{mn}?\end{matrix} \right] $

則$\hat y^{i} = X_b^{(i)}\theta$,$\hat y^ = X_b\theta$,此時我們的損失函數變為$f_{loss} = \sum_{i=1}^m(y^i - X_b^i ?\theta)^2$

轉換成矩陣的表達$f_{loss} = (y-X_b\theta)^T(y - X_b\theta)$。現在我們的目標變為使這個$f_{loss}$最小,注意未知數是$\theta$。注意一下這個$\theta$是個向量,是一系列值,不是標量.在二維平面中比如$y=f(x)$中,我們知道求極值即求導數$f^{'}(x)=0$.同樣的為了求出$f_{loss}$的最小值,我們對$f_{loss}$求導$\frac {\partial f_{loss}}{\partial \theta}$,實際上就是對$\theta$的每一項求偏導數.一系列復雜的數學推導后,我們可得$$\theta=(X_b^TX_b)^{-1}X_b^Ty$$

$\theta=\begin{bmatrix} ?\theta_ 0\\ ?\theta_ 1\\ ?\theta_ 2\\ ?…\\ ?\theta_ n\\ \end{bmatrix}$

其中$\theta_0$是多元線性方程的截距(intercept), $\theta_1$到$\theta_n$是系數(coefficients).

?


?

線性回歸具有很好的可解釋性,下面通過一個具體例子看一下.

Boston House Prices dataset
===========================Notes
------
Data Set Characteristics:  :Number of Instances: 506 :Number of Attributes: 13 numeric/categorical predictive:Median Value (attribute 14) is usually the target:Attribute Information (in order):- CRIM     per capita crime rate by town- ZN       proportion of residential land zoned for lots over 25,000 sq.ft.- INDUS    proportion of non-retail business acres per town- CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)- NOX      nitric oxides concentration (parts per 10 million)- RM       average number of rooms per dwelling- AGE      proportion of owner-occupied units built prior to 1940- DIS      weighted distances to five Boston employment centres- RAD      index of accessibility to radial highways- TAX      full-value property-tax rate per $10,000- PTRATIO  pupil-teacher ratio by town- B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town- LSTAT    % lower status of the population- MEDV     Median value of owner-occupied homes in $1000's:Missing Attribute Values: None:Creator: Harrison, D. and Rubinfeld, D.L.This is a copy of UCI ML housing dataset.
http://archive.ics.uci.edu/ml/datasets/HousingThis dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic
prices and the demand for clean air', J. Environ. Economics & Management,
vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics
...', Wiley, 1980.   N.B. Various transformations are used in the table on
pages 244-261 of the latter.The Boston house-price data has been used in many machine learning papers that address regression
problems.   **References**- Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.- Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.- many more! (see http://archive.ics.uci.edu/ml/datasets/Housing)

boston數據集有13個特征,包括了房間數目,房齡,是否臨河,離商圈距離等等,一個label,表示房屋價格.

用sklearn中的LinearRegression來做訓練.

boston = datasets.load_boston()  
X = boston.data
y = boston.target  
X = X[y < 50.0] 
y = y[y < 50.0]from sklearn.linear_model import LinearRegression lin_reg = LinearRegression() lin_reg.fit(X, y) print(lin_reg.coef_)
####
array([ -1.05574295e-01, 3.52748549e-02, -4.35179251e-02,
         4.55405227e-01,  -1.24268073e+01,   3.75411229e+00,-2.36116881e-02,  -1.21088069e+00,   2.50740082e-01,-1.37702943e-02,  -8.38888137e-01,   7.93577159e-03,-3.50952134e-01]

print(boston.feature_names[np.argsort(lin_reg.coef_)])
####
array(['NOX', 'DIS', 'PTRATIO', 'LSTAT', 'CRIM', 'INDUS', 'AGE', 'TAX',
'B', 'ZN', 'RAD', 'CHAS', 'RM'], dtype='<U7')
?

coef系數越大越正相關,越小越負相關.上面例子里可以看出,特征'NOX'最不想干,特征'RM'最相關.

?

有關LinearRegression更多的詳細解釋和用法請戳官方文檔.

轉載于:https://www.cnblogs.com/sdu20112013/p/10186516.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248759.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248759.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248759.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

仿微信朋友圈項目梳理

項目功能簡介&#xff1a; 用戶通過手機號驗證碼進行登錄和注冊 可以瀏覽動態列表中的所有動態 登錄成功后用戶可以發表自己的動態 也可以對自己認可欣賞的動態進行點贊和評論 也可以通過動態結識志同道合的朋友 進行聊天和探討 前端&#xff1a;采用Vue框架搭建 weui進行頁面…

如何處理大流量高并發

1.動靜分離。 將網站中的靜態資源單獨拆分出來, 比如 css, js, 圖片, 視頻資源單獨存儲在一臺服務器上, 或者直接使用云存儲平臺, 七牛云或者阿里云之類的, 這樣能有效的降低主服務器的運行壓力 2.CDN加速。 云平臺提供 CDN 加速, 可以對資源進行全國服務器節點的分發, 提高全國…

echarts鼠標事件以及自定義數據獲取

事件添加方法&#xff1a; 對應官網位置&#xff1a;https://www.echartsjs.com/api.html#events 鼠標事件包括 click、dblclick、mousedown、mousemove、mouseup、mouseover、mouseout、globalout、contextmenu。 myChart.on(click, function (params) {console.log(params); …

[數學]點、線、面分割問題

平面分割問題 p條直線相交于一點時&#xff0c;分割的圖形有 2*(n-1) 個&#xff0c;此時再加一條直線&#xff0c;在 2*(n-1) 的基礎上再加 n條&#xff0c;此時為2*n n條曲線&#xff0c;其中有m條相交于一點&#xff0c;每兩個曲線都交于兩點 平面上有n條直線&#xff0c;且…

移動開發

1.移動端基礎 1.1 瀏覽器現狀 PC端瀏覽器 360瀏覽器、谷歌瀏覽器、火狐瀏覽器、QQ瀏覽器、百度瀏覽器&#xff08;停止服務&#xff09;、搜狗瀏覽器、IE瀏覽器 移動端瀏覽器 UC、QQ瀏覽器、歐朋瀏覽器、百度手機瀏覽器、360、搜狗、獵豹、谷歌等其他手機自帶的瀏覽器 國…

Django之路由系統

Django的路由系統 Django 1.11版本 URLConf官方文檔 URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL與要為該URL調用的視圖函數之間的映射表。 你就是以這種方式告訴Django&#xff0c;對于這個URL調用這段代碼&#xff0c;對于那個URL調用那段代碼。 URLconf配置…

微信小程序——操作數據庫

案例一&#xff1a;統計用戶的訪問次數 業務需求&#xff1a; 統計每個用戶對程序的訪問次數將訪問次數存儲到數據庫中訪問次數應該與用戶進行關聯 業務邏輯&#xff1a; 如果用戶是第一次訪問此程序&#xff0c;向數據庫添加一條記錄&#xff1a;{openid&#xff1a;45454…

shop--12.阿里云部署以及域名綁定

一、申請阿里云服務器&#xff08;1&#xff09;PC訪問阿里云https://www.aliyun.com/&#xff0c;申請阿里云帳號&#xff08;可以用您的支付寶帳號登錄&#xff0c;因為支付寶帳號已經進行了實名認證&#xff0c;使用起來更方便&#xff09;并登錄&#xff08;2&#xff09;找…

微信小程序——獲取用戶的運動步數

程序獲取用戶信息步驟 點擊參考微信文檔中的授權首先程序先向用戶申請訪問哪些權限用戶做出選擇后返回給程序程序攜帶權限訪問服務器如果用戶允許則返回信息如果用戶為允許則不返回 自定義函數getUserRun 為獲取用戶的微信運動數據 頁面加載調用此函數函數中執行下面操作 1…

C++之前置自增與后置自增

關于前置自增與后置自增的區別我是參考這里&#xff1a;http://bbs.bccn.net/thread-454977-1-1.html 簡單復述下&#xff0c;比如x; 與 x; 在C中&#xff0c;x這個表達式的值為原先x的值1&#xff0c;副作用是x的值增加了1&#xff1b;&#xff08;C中不是這樣定義的&#xff…

第一次個人作業

該作業所屬課程&#xff1a;https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2作業要求地址&#xff1a;https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3340團隊名稱&#xff1a;腦殼痛 作業的目標 1.通過測試其他組的軟件項目學習其…

微信小程序——解決上傳并部署云函數時報錯ResourceNotFound.Function, 未找到函數版本,請創建后再試。 (7f2d9d2d-5eac-4575-9n57-acd66cfa587g

1. 上傳部署我們的云函數 2. 報錯 錯誤信息為&#xff1a;Error: ResourceNotFound.Function, 未找到函數版本&#xff0c;請創建后再試。 (7f2d9d2d-5eac-4575-9b57-acd66cfa587e) 3. 原因 原因是可能我們在調試的時候不小心將我們開發控制臺中的云函數刪除了 4. 解決辦法…

前端面試題——HTML基礎篇

如何進行網站的性能優化 content方面 減少http請求 合并文件 css精靈圖減少 DNS 查詢 DNS緩存 將資源分布到恰當數量的主機名減少 DOM 元素的數量 Server方面 使用CDN配置Etag對組件使用 Gzip 壓縮 Cookie方面 減小cookie大小 css方面 將樣式表放到頁面頂部不使用css表…

【IT界的廚子】醬香鱸魚

食材: 前世曾經回眸的鱸魚一條(主要選刺少的魚&#xff0c;適合孩子吃&#xff0c;大人吃隨意&#xff0c;草魚比較大) 五花肉少許(肥一些的) 豆腐 輔料: 蔥姜 蒜(選) 大料 香菜 調味: 啤酒(兩罐) 黃豆醬或豆瓣醬(選) 老抽 生抽 料酒 鹽 步驟: 1、魚肉劃開&#xff0c;方便燉的…

第二章:09流程控制[3for]

①格式for(初始化語句;判斷條件語句;控制條件語句) { 循環體語句; } ②注意事項A:判斷條件語句無論簡單還是復雜結果是boolean類型。 B:循環體語句如果是一條語句,大括號可以省略&#xff1b;如果是多條語句,大括號不能省略。建議永遠不要省略。 C:一般來說&#xff1a;有左大括…

LeetCode,第377場周賽,個人題解

目錄 100148.最小數字游戲 題目描述 思路分析 代碼詳解 100169.移除柵欄得到的正方形田地的最大面積 題目描述 思路分析 代碼詳解 100156.轉換字符串的最小成本I 題目描述 思路分析 代碼詳解 100158.轉換字符串的最小成本II 題目描述 思路分析 代碼詳解 100148.…

for each....in、for in、for of

一、一般的遍歷數組的方法: var array [1,2,3,4,5,6,7]; for (var i 0; i < array.length; i) { console.log(i,array[i]); } 二、用for in的方遍歷數組 for(let index in array) { console.log(index,array[index]); }; 三、forEach array.forEach(v>{ cons…

Vue cli3.0創建Vue項目

創建Vue項目 在要創建項目的文件夾下面打開Powershell窗口 輸入命令 vue create 項目名稱 選擇第二項 回車后 選擇是否使用歷史路由 no 回車 選擇 Less 回車 選擇第三個 回車 選擇第一個 回車 選擇第一個 回車 是否保存模板 選擇no 完成啦 完成

文件內容的輸出io

package bbb; import java.io.*; public class ccc {public static void main(String[]args) throws IOException{ File filenew File("d:/1data.txt"); FileOutputStream outnew FileOutputStream(file); byte buy[]"12345abcdef#%&*軟件工程".getByt…

看完后完全了解 Vue 2.0 和 Vue 3.0 的區別

1.數據的雙向綁定 Vue2.0使用Object.defineProperty 原理&#xff1a;通過使用 Object.defineProperty 來劫持對象屬性的 geter 和 seter 操作&#xff0c;當數據發生改變發出通知 代碼&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4…