LR的公式推導和過擬合問題解決方案

2021-08-28 20:41:04 字數 2099 閱讀 9270

前面說的單變數線性回歸模型和多變數線性回歸模型,它們都是線性的回歸模型。實際上,很多應用情況下,資料的模型不是乙個簡單的線性表示就可以搞定的(後面的稀疏表示和字典學習又再次回到的線性表示,當然這個是後話)。更多的時候,我們需要建立乙個非線性的模型。此時,logistic regression就誕生了。

lr的假設模型:

前面的線性模型都是線性方程作為假設模型,這裡的lr使用的邏輯函式,又稱為s型函式。

為什麼使用這個邏輯函式呢?其實後面有著既內涵有巧妙地原因:

lr的代價函式:

有了前面的假設,我們當然可以使用之前熟悉的誤差平方和來作為代價函式。但是,我們會發現這時候的代價函式是非凸的,也就是函式影象中會出現許多的區域性最小值,導致梯度下降法極其容易得到區域性最小值。如下:

所以,我們需要重新設定代價函式形式。lr中的代價函式如下:

選擇這樣子的代價函式的原因如下:

給定上面定義的假設和代價函式,而且此時的代價函式也是非凸的,我們便可以使用梯度下降法求出令代價函式最小時的theta向量。梯度下降法的基本演算法如下:

此時關鍵的時候要把j_theta對theta的導數求出來。具體的公式推導比較複雜,如下:

(其中的假設我直接用h簡單表示)

然後,lr的梯度下降演算法就成為了:

發現這個形式和前面線性回歸模型的梯度下降法巧妙的一致了。

當然,後面我們就可以使用這個演算法來求解lr模型了。

什麼是過擬合問題?就是我們訓練出來的模型可以很好的適應所有的訓練樣本,但是不能對測試樣本很好地**,這就是過擬合問題。如下圖所示:

解決過擬合的方法有兩個:

(1) 降維,可以使用pca演算法把樣本的維數降低,使得模型的theta的個數減少,次數也會降低,避免了過擬合;

(2) 正則化,設計正則項regularization term, 也可以避免過擬合。這種方法下面詳細說一下。

正則化的方式有幾種:

1. 可以給一些引數項加懲罰;

比如下面的模型:

由於高次項的theta_3和theta_4比較大,所以我們需要對這兩項乘以懲罰,也就是在代價函式的後面對這兩個theta_3和theta_4加乙個很大的權重。

那麼當我們不知道哪幾項需要懲罰的時候,我們就會在代價函式中給每一項的theta都加乙個懲罰,稱為給代價函式加乙個正則項。如下:

同樣地,對於lr回歸,我們也可以在它的代價函式後面新增乙個正則項,這樣子我們也可以避免過擬合。

其實,每次更新theta的時候,都會額外減去乙個(lambda/m)*theta_j。這樣會使得求解出來的theta普遍小一下。但是,我們要注意正則項前面的因子lambda的設定,如果lambda設定過大,會導致求解出來的所有theta都很小,甚至等於0 。

亂碼問題解決和路徑問題

在web程式設計之前,可以先對機器進行設定 亂碼的問題產生的原因有很多,可能是客戶端和伺服器端編碼格式的不同,可能是生僻字。怎樣盡可能的解決亂碼問題呢?一般遇到亂碼是因為什麼呢?因為我們傳輸的是中文,而在不同的編碼表裡面,每個中文對應的碼不同,這時候就要統一。傳輸分為客戶端給伺服器傳送資料和伺服器端...

freeswitch 安裝和問題解決

1.安裝gityum install git 2.獲取原始碼git clone freeswitch.git 3.按照官方文件搭建環境 yum install y org freeswitch release 1 6.noarch.rpm epel release yum install y git...

LR11使用問題解決(不定期更新)

lr11使用問題解決 不定期更新 1 loadrunner訂票系統打不開 使用loadrunner之前,一定要開啟samples start web server,右下角會出現綠色的 x 這樣才能訪問訂票系統,使用錄製功能 2 回放腳本報錯找不到 27987 request image not fo...