先說一下你提問中的每個參數的意義:
表示一個函數的的命名,這里可以是任意的,下文用g表示。 就是數據集中特征xb(后文用x表示)的參數是一個多維向量,也就是邏輯回歸中需要進行迭代更新的參數。這里為了與xb做點乘,所以θ做了轉置,由列向量變為行向量。(感謝TheGreatPrawn指正。) 表示數據集中的特征,是一個多維向量。 表示分類的結果,也就是概率大于或小于某一個閾值的時候,分成兩類。 下面用自己的理解和語言具體解釋: 看到你說的例子是邏輯回歸,是在學習完線性回歸后進階的一個算法,線性回歸是用一條直線來擬合數據集的特征值(矩陣X)和標簽(矩陣Y),從而達到利用新的特征值(新矩陣X)來預測新的標簽(未知值Y)。 要了解你的問題之前,你需要明白梯度下降的原理。如果不明白可以先學習一下梯度下降,這里就不介紹了。用最簡單的一句話概括梯度下降就是:“以偏導為方向,找到最低點。” 就像下圖所表示的: 我們回到正題上來: 你所貼的圖名字叫做sigmiod公式,也就是概率密度的累加公式,為什么要引入sigmiod函數? 邏輯回歸的決策邊界:可以是非線性的 有下列的數據集,利用線性回歸算法進行擬合是無法完成工作的,邏輯回歸的決策邊界是非線性的,所以我們可以利用邏輯回歸算法進行二分類或擬合。(你所提的問題是二分類任務,y的取值不是0就是1。) 下圖就是一個非線性的二分類: 那么sigmoid函數式什么樣的? sigmoid公式: 正態分布的密度累積函數 上圖表示概率的正態分布,下圖(sigmoid函數)表示上圖概率的累加。 兩張圖的坐標軸不對應,但表示的意思是一樣的。 自變量為任意實數,應變量的值域為[0,1] g(z)的取值范圍是0~1,相當于一件事發生的概率 此函數是概率論中的概率密度累積函數 輸入范圍是(-oo,+oo),輸出范圍[0,1] 將線性回歸預測出的一個值,放到sigmoid函數當中來,轉換為概率問題 一個概率值如果可能性是70%,那么不可能性就是1-70% 你的例子中是以50%為分界線的,其實可以是任意值。 一旦求出概率,就可以得到分類結果 把z換成 θ就是我們要求的值,x就是樣本的特征。 這里的θ和x都是矩陣。
關于θ:在線性回歸中,我們是要算出 θ,最后用來完成預測任務,而在邏輯回歸中,我們的θ是隨機取值的,然后根據梯度指定方向進行一步一步的更新迭代后得到的一個最優的θ。 解釋:將任意輸入映射到了[0,1]區間,我們在線性回歸當中可以得到一個預測值( 再將該值映射到sigmoid函數當中,就完成了預測值到概率的轉換問題,也就是分類任務 ps: 這里是隨機θ之后,為了得到 引入概率函數相當于線性回歸中的將實際值轉換為高斯分布概率函數的問題 分類任務: 類似于你提問中的 既然是二分類任務,那么結果就是非此即彼的,所以y不是0就是1 這兩個公式進行整合,才能利于我們后邊的計算 整合后: 上面的式子,y=0或y=1都是沒整合之前的樣子。 似然函數: 但是在計算機內部,乘運算要比加運算復雜的多,如果我們先將該運算轉化成加法運算,那么計算機計算起來就會高效的多。 我們這里要求的是整個函數的最大值,因為整個函數是大于0的,那么乘法的最大值也就對應于加法的最大值。 對似然函數取對數,就可以把乘法轉換為加法 對數似然: 但是梯度下降的方法,我們習慣用求最小值的方法解決問題。 這里引入一個 將求它的最小值,也就是對數似然函數的最大值。 這里就轉換成求最小值的問題了。 這里所說的求值,并不是直接計算出來的,而是讓計算機一步一步的去試出來的。 還記得最前面說的梯度下降要做的事情么? “以偏導為方向,找到最低點。” 求偏導數:
這里少了一個m,因為m是常數,對于最終的結果起不到作用,可以忽略也可以不忽略。 為什么是偏導? 這里的θ是一個矩陣,并不是一維的,如果是N維的,那么就要對每一維求偏導。 i表示第幾個樣本,j表示樣本的第幾個特征,一個樣本有N個特征。 這樣做的目的是,找到一組θ值,使得J(θ)最小,做法就如上述所說:J(θ)對θ的每一個維度求偏導,得出θ的方向,然后一步一步的去試θ,第一次的θ是θ1,第二次是θ2,我們用△θ=θ2-θ1, 當△θ很小的時候(多小由自己規定),我們就認為,找到了最優的θ。 方向的問題解決了,一步一步要怎么解決?也就是如何進行迭代? 我們叫做參數更新 參數更新: 這里引入了一個α,表示一步一步的步長,試想一下如果步長很大,我們就可以直接跨越最低點從而找不到最優的θ,所以這里的α是越小越好。 這里的“:=”是賦值的意思 這就完成了迭代的工作,每走一步,θj就會更新一次。 例如在python中寫一個for循環,循環體就是θj = θj-α后面那一串, 則θj在循環結束后,就會得到最優值。 求出了θ的最優值,那么可以做分類和擬合的工作了: 分類: 根據原有數據集中的x對y進行分類。記得概率小于或大于某一個閾值就可以將y分類么? 擬合(預測): 根據新的數據集x, 利用 推算出新的y,也就是預測工作了。 總結: 邏輯回歸相當于隨機取θ,然后算出預測值,將預測值帶入到sigmoid函數中,轉換為概率問題,求出損失函數最小的概率,如何求出最小的概率? 并不是讓導數等于0,而是先求出θ偏導的方向,一次取一個θ,再帶入到參數更新中,因為α是步長,后面那一串是方向,有了步長和方向,就可以得到新的θ,最后求新老θ的差值 如果導數越接近于0的時候,那么差值就越小,θ就會越收斂,這樣就會求出θ?!?/p> 機器學習中的算法很多,不要被繁雜的數學公式搞蒙了,包括后邊你要學習的隨機森林,貝葉斯,聚類,支持向量機,PCA降維,卷積神經網絡等等都有大量的數學公式和推導,其實只要理解他要做一件什么事就行,數學的推算只是為了做這一件事而創造的工具而已。如果數學概念或者公式無法理解,可以多搜一下,有很多人用大白話講數學,當然有時間看一下國外的數學教程更好,他們用初中的數學推算教高等數學,非常易于理解。喜歡就去學,不要被什么供大于求什么飽和之類的言論誤導,畢竟藝多不壓身嘛。 |
|