第四課複習

一、牛頓法:
這節課首先老師介紹了牛頓法:先看一條曲線
這裏寫圖片描述
解釋:
(1)先給定theta0起始點,曲線爲f(theta),theta0到theta1的距離等於f(theta0)除以f(theta0)的導數。那麼從而可以求得theta1.
(2)當theta減小,f(theta)逐漸變小,因此總有一點可以求得theta(t+1),也就是f(theta)等於0的那個點,然後此時由於f(theta(t+1))等於0,所以由上圖最後一行公式得來的theta(t+2)的值不再改變。

有上述方法,可知,假設f(theta)爲l(theta)的導數,那麼此方法就可以用來求l(theta)導數爲0的點,也就是當l(theta)爲凸集時,此方法可以用來求l(thea)的最值點。
(3)由上面兩個分析可得到此方法在l梯度方向求最值。假設方向導數
這裏寫圖片描述
其中H稱爲黑塞矩陣,如果偏導數相等的話則是一個對稱矩陣。那麼有上述公式就可得在所有方向上,J(theta)的最小值。下面公式我沒有證明,此時的theta爲n維列向量,如下圖所示:
這裏寫圖片描述
一直求解theta直到其不再變化,則得到J(theta)的最值。

二 logistic regression
1、首先看一個假設這裏寫圖片描述
此時的建設已經不是線性迴歸,現在的建設屬於分類問題。所以假設的結果爲一個概率,因此假設的值在0到1之間(假設成立,爲這類的概率),如上述公式所示。

2、exponential family(簡單的就莉姐爲e族吧)
(1)只要猜測的概率可以寫成如下形式,則概模型就可以是exponential family,然後假設概率就能寫成1的形式。exponential family:
這裏寫圖片描述
(2)推導幾個例子:
伯努利分佈:這裏寫圖片描述
高斯分佈:這裏寫圖片描述

泊松分佈:
這裏寫圖片描述

三 創建線性模型 generalize a linear model:
令:
(1) y|x;theta是exponential family 其中theta和x是固定的
(2)如果給定x,則目的就是輸出條件期望,說白了也就是輸出假設,前面學的那麼多的h(theta)實際上就是期望,一個模型最正確的期望。E[T(y)|x]
(3)最簡單情況,權重什麼的全都不考慮,令這裏寫圖片描述
這是最簡單的情況。

四、把三應用於伯努利分佈:
這裏寫圖片描述
這就是一開始假設的式子。

上述伯努力情形,y ~{0,1}。

五、當多重情形即 y~{1,2,…..,k} 時,首先假設y取每一個值的概率爲:這裏寫圖片描述
最後一項可以用1減去餘項之和,因爲所有項加起來是1,可以看成一個袋子裏有很多顏色的球,從中任取一個,是什麼顏色球的問題。
(1)I{i=y} = 1; 這個式子也叫作indicator, 就是大括號裏面的條件成立則式子等於1,否則式子等於0.
(2)由上面的基礎可以寫出p(y)的表達式,並且可以導出此表達式也 屬於exponential family:這裏寫圖片描述
(3)求得假設概率fai(i)爲:
這裏寫圖片描述
求得的假設 h(theta)爲:
這裏寫圖片描述
六、課後習題,用牛頓法球 logistic regression.
經驗風險:
這裏寫圖片描述
這裏y 的取值爲-1或1,和0,1的情況基本類似,h(theta)爲y=1的概率,因此所求得的h(theta)和伯努利情況一樣也爲:這裏寫圖片描述
對j(theta)變個型:
這裏寫圖片描述
用牛頓法求解j(theta),也就是用牛頓法球此式子的最小值。
牛頓法(老師上課說適合應用於少量數據):這裏寫圖片描述
因此重點求圈1和圈2,因爲圈1黑塞矩陣爲二階導數,因此要先求一階導數圈2:
這裏寫圖片描述
由圈2可求得圈1:
這裏寫圖片描述
這個式子用matlab畫出來,提前得想一想,矩陣是怎麼構造的:
這裏寫圖片描述
其實j(theta)的偏導數和 黑塞矩陣都好推導,只是matlab表示一下就變得很難,我也是看了答案才琢磨了半天才懂得,這次不看答案自己推一邊,解決了j(theta)的方向導數就剩下黑塞矩陣了:

這裏寫圖片描述
這麼一項一項表示H(ik)也行,但是比較複雜,那麼有上面的推導過程就可以直接寫出H
了:
這裏寫圖片描述
matlab代碼(logistic regression 部分)代碼幾乎和答案一樣,我一開始沒做出來,光會做計算,matlab表示一下就蒙了:

function theta = logistc(X,Y ,times)
%LOGISTC Summary of this function goes here
%   Detailed explanation goes here
    [mm,nn] = size(X);
    theta = zeros(nn,1);
    for ii = 1:times
        margin =Y.* (X*theta);
        prob = 1./(exp(margin)+1);
        grad = (-1/mm)*(X'*(prob.*Y));
        H = (1/mm)*(X'*diag(prob.*(1-prob))*X);
        theta1 = theta;
        theta = theta - H\grad;
        if sum(theta1-theta) == 0
            break;
        end
    end
end

剩餘部分:

clc;
clear;
X = load('x.txt');
Y = load('y.txt');
X = [ones(size(X,1),1) X];
theta = logistc(X,Y,100);
figure;
hold on;
xx = min(X(:,2)):0.05:max(X(:,2));
plot(X(Y<0,2), X(Y<0,3),'r*');
plot(X(Y>0,2), X(Y>0,3),'ko');
yy = -(theta(1)+theta(2)*xx)/theta(3);
plot(xx,yy,'b-','linewidth',2);

結果如圖所示,中間的線爲分界線:
這裏寫圖片描述

這裏的分界線相對好求,因爲y只有兩種情況,所以把假設值設爲0.5即可,過程如下:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章