在以前我已經寫了一篇關於線性迴歸的文章,今天給你們帶來另外一個重要的迴歸分類算法----邏輯迴歸 邏輯迴歸考慮的數值狀況不一樣與線性迴歸,根據問題中隨機變量的不一樣種類而選擇不一樣的分類算法算法
線性迴歸主要用於解決連續型數值的問題 邏輯迴歸主要用於解決離散型數值問題函數
那麼什麼樣的數值是連續型?什麼是離散型? 首先咱們要知道隨機變量分爲離散型和連續型,而後咱們給出其定義:優化
若是隨機變量X只可能取有限個或至多可列個值,則稱X爲離散型隨機變量 能按必定次序一一列出,其值域爲一個或若干個有限或無限區間,這樣的隨機變量稱爲離散型隨機變量3d
在離散型問題中咱們考慮最多的就是二元離散,也就是狀況爲正或者爲負,咱們將其記爲1和0 就像下面這樣 統計出數值結果後想對其進行分類,從而可以預測出一個新的x點應該是1仍是0,發現很難使用一條直線去準確預測出這個分類線 最終,通過一堆數學家的努力,發現了一個很是適合離散型數值的函數 經過改變函數的參數,咱們最終能夠找到一個適合咱們數據的一條線,而後,咱們經過求出這個點的機率來預測最終結果,也就是給出一個參數x,咱們經過求出y=1的機率,來預測結果 如上所示給出一個x值最終求出其y=1的機率我0.7,那麼咱們就能夠預測出其值爲1,若是求得機率爲0.3的話咱們就認爲其值應該爲0,而這裏判斷的機率閾值就是0.5,當機率大於等於0.5認爲結果爲1,不然爲0 這裏的閾值有一個專屬名詞爲Decision Boundary(決策邊界) 這裏的決策邊界就是平常中所說的分界線(學生時代的38線) 由上咱們發現決策邊界的選擇各類各樣,那麼咱們如何找出最適合的邊界呢? 根據咱們的函數,問題總結爲如何找出最適合的參數Θ? 很顯然,老套路,咱們先算出其代價函數J(Θ),而後最小化J就行 而邏輯迴歸中的代價函數和以前中的線性迴歸的代價函數是相同的, 指針
而和線性迴歸不一樣的就是H(Θ)的不一樣,而因爲邏輯迴歸中y=1 or y=0 所以概況爲 所以不一樣於線性迴歸,邏輯迴歸的代價函數 最後咱們經過極大似然法簡化代價函數 如今咱們獲得了代價函數,接下來咱們將其最小化求出Θ 首先使用梯度降低法: 方法就是一如既往的對其求導找出降低最快的方向而後去降低 此次咱們能夠不用梯度降低法,咱們找到其餘優化算法:共軛梯度 使用共軛梯度時咱們不用去手動選擇降低速度α,由於共軛梯度會自動幫咱們找出最優α,並且共軛梯度的速度更快,這些優勢也保證了其複雜度,可是每每第三方庫已經幫咱們實現了這些算法,咱們只須要知道如何去調用就行 上面咱們擁有一個有兩個參數的問題,咱們知道了其代價函數J(Θ),咱們想求求其最小化函數,右邊是在Octave裏直接調用一個函數來返回咱們的代價函數,這個函數返回兩個參數,jVal是代價函數,第二個參數是Θ 如今咱們在下面使用無約束最小化函數來使J最小化,調用這個函數須要設置一下參數,@costFunction是咱們剛剛定義的costFunction函數的指針,,optiojns中GradObj,'on'爲設置梯度目標參數爲打開,而後函數就能夠自動實現求最優α,maxiter,100爲設置最大迭代此數爲100,而後initialtheta爲咱們設置的基礎Θ值 最後這個函數會返回一組咱們須要的,openTheta爲最優Θ,functionVal爲咱們最後的代價函數值,而exitFlag值肯定是否收斂,1爲收斂blog