0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

機器學習:線性回歸與邏輯回歸的理論與實戰(zhàn)

深度學習自然語言處理 ? 來源:深度學習自然語言處理 ? 作者:奮斗喵 ? 2020-12-26 09:58 ? 次閱讀

1、基本概念

要進行機器學習,首先要有數(shù)據(jù)。從數(shù)據(jù)中學得模型的過程稱為“學習”或“訓練”。其對應的過程中有幾個基本術語需要知道。

(1)訓練集:模型訓練過程中使用的數(shù)據(jù)稱為訓練集,其中每個樣本稱為訓練樣本。如:D={X1,X2,X3,…,Xm}。

(2)特征向量:對于每個樣本如Xi = (xi1, xi2,…xin)是一個n維列向量,表示樣本Xi有n個屬性。

2、理論

給定由n個屬性描述而成的m個數(shù)據(jù)集為:D={X1,X2,X3,…,Xm},其中Xi = (xi1, xi2,…xin)。

線性模型是試圖學得一個通過屬性的線性組合來進行預測的函數(shù),即:

4a9a63e8-4691-11eb-8b86-12bb97331649.png

其中4c0ac61e-4691-11eb-8b86-12bb97331649.png,其中4c480c40-4691-11eb-8b86-12bb97331649.png。當Θ和b確定之后,模型就得以確認。

2.1 線性回歸

2.1.1 什么是回歸

若我們欲預測的是連續(xù)值,如:房價,則此類學習任務稱為“回歸”。同理機器學習中還有“分類”任務,即我們欲預測的是離散值,如:“合格”、“不合格”。其中對于二分類任務,稱為“正類”、“負類”;涉及多個類別時,則稱為“多分類”任務。

在線性模型中,我們分為線性回歸與邏輯回歸兩種模型,下面我們對兩種模型分別進行講解分析。

4c6ef86e-4691-11eb-8b86-12bb97331649.png

圖1 線性回歸

4cc1fc30-4691-11eb-8b86-12bb97331649.png

圖2 邏輯回歸

2.1.2 線性回歸推導

1、線性回歸試圖學得:

4cfffa8a-4691-11eb-8b86-12bb97331649.png

2、參數(shù)估計

(1)首先衡量f(X)與Y之間的差別,我們使用均方誤差來衡量。

均方誤差的推導過程如下:

擬合函數(shù)為:

4d33a68c-4691-11eb-8b86-12bb97331649.png

矩陣形式為:

4d8bf86e-4691-11eb-8b86-12bb97331649.png

真實值和預測值之間通常情況下是會存在誤差的,我們用ε來表示誤差,對于每個樣本都有:

4dbd2556-4691-11eb-8b86-12bb97331649.png

通常我們假設樣本空間中全體樣本中服從一個未知“分布”,我們獲得的每個樣本都是獨立地從這個分布上采樣獲得的,即“獨立同分布”(iid)。

在這里誤差ε是獨立并且具有相同的分布,并且服從均值為0,方差為4de875da-4691-11eb-8b86-12bb97331649.png的正態(tài)分布。

由于誤差服從正態(tài)分布,那么有:

512ffa1a-4691-11eb-8b86-12bb97331649.png


將(5)代入到(6)可得:

54690b9a-4691-11eb-8b86-12bb97331649.png

用似然函數(shù)進行估計,即求出什么樣的參數(shù)跟我們給出的數(shù)據(jù)組合后能更好的預測真實值,有:

54955c5e-4691-11eb-8b86-12bb97331649.png

對式8取對數(shù),將連乘轉化為加法為:

54d0ac00-4691-11eb-8b86-12bb97331649.png

對式9展開化簡為:

550ded0e-4691-11eb-8b86-12bb97331649.png

由上式可以看出,右邊第一項為一個常量,似然函數(shù)要取最大值,因而第二項越小越好,有:

5558358a-4691-11eb-8b86-12bb97331649.png

上述公式相當于最小二乘法的式子,即為均方誤差的式子。

(2)求解Θ:閉式解。

我們試圖讓均方誤差最小化,即

557411ec-4691-11eb-8b86-12bb97331649.png

基于均方誤差最小化來進行模型求解的方法稱為“最小二乘法”。在線性回歸中,最小二乘法就是試圖找到一條直線,使所有樣本到直線上的歐式距離之和最小。求解方法為對Θ求偏導。

55c20758-4691-11eb-8b86-12bb97331649.png

接下來需要對矩陣求偏導,過程如下:

55f8f498-4691-11eb-8b86-12bb97331649.png

最后令5648ba3c-4691-11eb-8b86-12bb97331649.png可得:

567488c4-4691-11eb-8b86-12bb97331649.png

s.t.56b13cc4-4691-11eb-8b86-12bb97331649.png為滿秩矩陣時。


在現(xiàn)實中56b13cc4-4691-11eb-8b86-12bb97331649.png往往不是滿秩矩陣,在許多變量中會遇到大量的變量,其數(shù)目超過樣本數(shù)目,會導致解出多個Θ,常見的做法是引入正則化或者進行降維。

(3)求解Θ:梯度下降法。

沿著函數(shù)梯度方向下降最快的就能找到極小值:

590d357c-4691-11eb-8b86-12bb97331649.png

沿著梯度方向更新參數(shù)Θ的值:

59545650-4691-11eb-8b86-12bb97331649.png

批量梯度下降是用了訓練集中的所有樣本。因此在數(shù)據(jù)量很大的時候,每次迭代都要遍歷訓練集一遍,開銷會很大,所以在數(shù)據(jù)量大的時候,可以采用隨機梯度下降法或者批量梯度下降法。

2.2 邏輯回歸

對于分類任務,用線性回歸無法直接進行回歸學習。對于二分類任務,其輸出標記597a4d24-4691-11eb-8b86-12bb97331649.png,而線性回歸模型產生的預測值59a21908-4691-11eb-8b86-12bb97331649.png是實值。

2.2.1 對數(shù)幾率

一個事件的幾率是指該事件發(fā)生的概率與該事件不發(fā)生的概率的比值。p(Y=1|X)是指事件發(fā)生的條件概率,p(Y=0|X)是指事件不發(fā)生的條件概率,則該事件的對數(shù)幾率或logit函數(shù)是:

59cfef40-4691-11eb-8b86-12bb97331649.png

對數(shù)幾率范圍為[0,+∞),當p=1時候,logit(p)=+∞,當p=0時候,logit(p)=0。

對于邏輯回歸而言,有:

59fe90d4-4691-11eb-8b86-12bb97331649.png

將其Θ*X轉換為概率有:

5a4cfef4-4691-11eb-8b86-12bb97331649.png

其中

5a8a0100-4691-11eb-8b86-12bb97331649.png

也稱為sigmoid函數(shù),函數(shù)圖如下所示:

5add3780-4691-11eb-8b86-12bb97331649.png

圖3 Sigmoid函數(shù)圖

2.2.2 參數(shù)估計

在邏輯回歸進行模型學習時,應用極大似然估計來估計模型參數(shù):

5b224398-4691-11eb-8b86-12bb97331649.png

對式22取對數(shù),將連乘轉化為加法為:

5b7e2b18-4691-11eb-8b86-12bb97331649.png

上述公式為求解邏輯回歸的損失函數(shù):交叉熵損失函數(shù)。

然后對J(Θ)進行求偏導,求最小值,得到Θ的估計值。沿著函數(shù)梯度方向下降就能最快的找到極小值:

5ba9c85e-4691-11eb-8b86-12bb97331649.png

沿著梯度方向更新參數(shù)Θ的值:

5c9031c2-4691-11eb-8b86-12bb97331649.png

3、實戰(zhàn)

3.1 線性回歸實戰(zhàn)

3.1.1 從零開始實現(xiàn)

1、首先生成數(shù)據(jù)集

num_inputs = 2 # 數(shù)據(jù)集的屬性 n : 2num_examples = 1000 # 數(shù)據(jù)集的樹木 m : 1000true_w = [2, -3.4]true_b = 4.2 features = torch.randn(num_examples, num_inputs, dtype=torch.float32) # 輸入labels = true_w[0]*features[:, 0] + true_w[1]*features[:, 1] + true_b # 標簽labels+=torch.tensor(np.random.normal(0,0.01,size=labels.size()),dtype=torch.float32)#加上一些隨機噪聲

進行可視化后,如下圖所示:

5cb5d800-4691-11eb-8b86-12bb97331649.png

圖4 數(shù)據(jù)集

2、數(shù)據(jù)讀取

def data_iter(batch_size, features, labels): num_examples = len(features) indices = list(range(num_examples)) random.shuffle(indices) for i in range(0, num_examples, batch_size): j = torch.LongTensor(indices[i : min(i + batch_size, num_examples)])yieldfeatures.index_select(0,j),labels.index_select(0,j)

如:當batch_size=10時,我們的輸出結果如下所示:

5cda8fce-4691-11eb-8b86-12bb97331649.png


第一個為輸入x(size=[10, 2]),第二個為標簽y(size=[10])。

3、定義線性回歸模型

def LinReg(X, w, b):returntorch.mm(X,w)+b#torch.mm表示兩個矩陣相乘,[batch_size,num_inputs]*[num_inputs,1]=[batch_size,1]

4、定義損失函數(shù)

# 線性回歸模型的損失函數(shù)為均方差損失函數(shù)def squared_loss(y_hat, y):return(y_hat-y.view(y_hat.size()))**2/2

5、定義優(yōu)化算法

# 這里我們使用梯度下降算法:sdgdef sgd(params, lr, batch_size): for param in params:param.data-=lr*param.grad/batch_size

6、進行訓練

訓練步驟如下:

(1)首先讀取一個batch_size的數(shù)據(jù)和標簽
(2)然后進行模型計算;
(3)然后計算損失函數(shù);
(4)然后反向求導優(yōu)化參數(shù);

lr = 0.03num_epochs = 3net = LinRegloss = squared_loss for epoch in range(num_epochs): # 訓練模型一共需要num_epochs個迭代周期 # 在每一個迭代周期中,會使用訓練數(shù)據(jù)集中所有樣本一次(假設樣本數(shù)能夠被批量大小整除)。X # 和y分別是小批量樣本的特征和標簽 for X, y in data_iter(batch_size, features, labels): l = loss(net(X, w, b), y).sum() # l是有關小批量X和y的損失 l.backward() # 小批量的損失對模型參數(shù)求梯度 sgd([w, b], lr, batch_size) # 使用小批量隨機梯度下降迭代模型參數(shù) # 不要忘了梯度清零 w.grad.data.zero_() b.grad.data.zero_() train_l = loss(net(features, w, b), labels)print('epoch%d,loss%f'%(epoch+1,train_l.mean().item()))

最后輸出結果如下所示:

epoch 1, loss 0.044750epoch 2, loss 0.000172epoch3,loss0.000049

3.2 邏輯回歸實戰(zhàn)

邏輯回歸相比線性回歸中,改變的地方為第3步:模型函數(shù) 和 第4步:損失函數(shù)。

3.2.1 從零實現(xiàn)邏輯回歸

3、定義邏輯回歸模型

def sigmoid(X, w, b): ''' 定義sigmoid函數(shù) :param x: 參數(shù)x 返回計算后的值 ''' z = torch.mm(X, w) + breturn1.0/(1+np.exp(-z))

4、定義損失函數(shù)

# 在邏輯回歸中,我們使用的是對數(shù)損失函數(shù)(交叉熵損失函數(shù))def BCE_loss(y_hat, y): ''' 損失函數(shù) :param y_hat: 預測值 :param y: 實際值 loss ''' m = np.shape(y_hat)[0] loss = 0.0 for i in range(m): if y_hat[i, 0] > 0 and (1 - y_hat[i, 0]) > 0: loss-= (y[i, 0] * np.log(y_hat[i, 0]) + (1 - y[i, 0]) * np.log(1 - y_hat[i, 0])) else: loss-= 0.0returnloss/m

責任編輯:xj

原文標題:【機器學習】線性回歸與邏輯回歸的理論與實戰(zhàn)

文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8325

    瀏覽量

    132203
  • 線性回歸
    +關注

    關注

    0

    文章

    41

    瀏覽量

    4288

原文標題:【機器學習】線性回歸與邏輯回歸的理論與實戰(zhàn)

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    構建語音控制機器人 - 線性模型和機器學習

    2024-07-31 |Annabel Ng 在該項目的[上一篇博客文章]中,我介紹了運行機器人電機、處理音頻信號和調節(jié)電壓所需的電路的基礎知識。然而,機器人還沒有完全完成!盡管機器人可以正確移動
    的頭像 發(fā)表于 10-02 16:31 ?125次閱讀
    構建語音控制<b class='flag-5'>機器</b>人 - <b class='flag-5'>線性</b>模型和<b class='flag-5'>機器</b><b class='flag-5'>學習</b>

    【「時間序列與機器學習」閱讀體驗】時間序列的信息提取

    個重要環(huán)節(jié),目標是從給定的時間序列數(shù)據(jù)中提取出有用的信息和特征,以支持后續(xù)的分析和預測任務。 特征工程(Feature Engineering)是將數(shù)據(jù)轉換為更好地表示潛在問題的特征,從而提高機器學習
    發(fā)表于 08-17 21:12

    【「時間序列與機器學習」閱讀體驗】+ 鳥瞰這本書

    清晰,從時間序列分析的基礎理論出發(fā),逐步深入到機器學習算法在時間序列預測中的應用,內容全面,循序漸進。每一章都經過精心設計,對理論知識進行了詳細的闡述,對實際案例進行了生動的展示,使讀
    發(fā)表于 08-12 11:28

    【「時間序列與機器學習」閱讀體驗】全書概覽與時間序列概述

    時間序列中的自相關性。 時間序列有基于線性場景,也有一些非線性性質周期性和不對稱性、波動的聚集性、波動中出現(xiàn)的跳躍現(xiàn)象,以及時間的不可逆性。機器學習已經是目前非
    發(fā)表于 08-07 23:03

    MATLAB預測模型哪個好

    在MATLAB中,預測模型的選擇取決于數(shù)據(jù)類型、問題復雜度和預測目標。以下是一些常見的預測模型及其適用場景的介紹: 線性回歸(Linear Regression): 線性回歸是最基本的
    的頭像 發(fā)表于 07-11 14:31 ?332次閱讀

    matlab預測模型有哪些

    環(huán)境,使其成為預測模型開發(fā)和實現(xiàn)的理想平臺。本文將詳細介紹MATLAB中常用的預測模型及其應用。 線性回歸模型 線性回歸是一種簡單的預測模型,用于分析兩個或多個變量之間的
    的頭像 發(fā)表于 07-11 14:27 ?601次閱讀

    不同類型神經網(wǎng)絡在回歸任務中的應用

    神經網(wǎng)絡是一種強大的機器學習模型,可以用于各種任務,包括回歸。在本文中,我們將討論不同類型的神經網(wǎng)絡,以及它們在回歸任務中的應用。 基本的神經網(wǎng)絡 基本的神經網(wǎng)絡,也稱為多層感知器(M
    的頭像 發(fā)表于 07-11 10:27 ?820次閱讀

    機器學習算法原理詳解

    機器學習作為人工智能的一個重要分支,其目標是通過讓計算機自動從數(shù)據(jù)中學習并改進其性能,而無需進行明確的編程。本文將深入解讀幾種常見的機器學習
    的頭像 發(fā)表于 07-02 11:25 ?560次閱讀

    機器學習六大核心算法深度解析

    算法歷程:線性回歸是一種古老的統(tǒng)計方法,它試圖找到最佳擬合數(shù)據(jù)的直線或超平面,最早可以追溯到19世紀初的高斯最小二乘法理論。
    發(fā)表于 04-23 16:25 ?1318次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>六大核心算法深度解析

    發(fā)展新質生產力,打造橡塑新高地 聚焦“國際橡塑展回歸上海啟航盛典”

    闊別六年,行業(yè)年度盛事 - “CHINAPLAS國際橡塑展”將重磅回歸上海,于2024年4月23 - 26日在上海國家會展中心(虹橋)盛裝綻放。開幕在即,“國際橡塑展回歸上海啟航盛典”3月28日在上
    的頭像 發(fā)表于 03-29 15:30 ?908次閱讀
    發(fā)展新質生產力,打造橡塑新高地 聚焦“國際橡塑展<b class='flag-5'>回歸</b>上海啟航盛典”

    深入探討線性回歸與柏松回歸

    或許我們所有人都會學習的第一個機器學習算法就是線性回歸算法,它無疑是最基本且被廣泛使用的技術之一——尤其是在預測分析方面。
    的頭像 發(fā)表于 03-18 14:06 ?540次閱讀
    深入探討<b class='flag-5'>線性</b><b class='flag-5'>回歸</b>與柏松<b class='flag-5'>回歸</b>

    RC串聯(lián)電路時間常數(shù)的計算怎么用回歸法處理?

    RC串聯(lián)電路時間常數(shù)的計算怎么用回歸法處理? 回歸分析是一種常用的統(tǒng)計分析方法,用于確定變量之間的關系。在電路領域中,RC串聯(lián)電路是一種常見的電路結構,用于存儲和釋放電荷,因此其時間常數(shù)是一個重要
    的頭像 發(fā)表于 11-20 16:50 ?1006次閱讀

    模型算法總結

    、AdaBoost回歸、梯度提升決策樹回歸、人工神經網(wǎng)絡、隨機森林回歸、多輸出隨機森林回歸、XGBoost回歸。 需要面試或者需要總體了解/
    的頭像 發(fā)表于 11-03 10:39 ?565次閱讀
    模型算法總結

    線性回歸模型的基礎知識

    我準備使用scikit-learn給大家介紹一些模型的基礎知識,今天就來講講 線性回歸模型 。 1.準備 開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,可以訪問這篇文章: 超
    的頭像 發(fā)表于 10-31 10:54 ?489次閱讀
    <b class='flag-5'>線性</b><b class='flag-5'>回歸</b>模型的基礎知識

    多元線性回歸的特點是什么

    何為多元線性回歸?對比于前一天學習線性回歸,多元線性回歸
    的頭像 發(fā)表于 10-31 10:34 ?1297次閱讀
    多元<b class='flag-5'>線性</b><b class='flag-5'>回歸</b>的特點是什么