吳恩達機器學習——第一部分_線性迴歸和logistic迴歸

(一) 線性迴歸

這個是進行線性擬合的。在學習過程中其實分了單變量線性迴歸和多變量線性迴歸,其實二者是核心算法是 一致的。

示例:

m個樣本,有n個特徵值;X^{_{j}^{i}}指的就是第i個樣本里面,第j個特徵(i=1,2,3,,,n,j=1,2,3,,m)

         假設函數(hypothesis function)

其中\theta就是我們所要求解的參數,目標是選擇合適的參數使得假設函數可以fit樣本,然後幫助我們去預測。

不斷更新參數\theta所選取的目標函數 

則線性迴歸的具體算法就是

注:1.這裏的參數\theta := \theta是同步進行不斷更新的

        2.我們處理數據是往往是令X^{_{1}^{i}}恆等1的,加了一列

        3.而編程時往往也採取的是向量化,比如在matlab中 求和那部分(sum((theta*X-y)*X(:,i))

這裏對J\left ( \theta \right )的求導進行的手動的推導

(二)正則方程法

 、

   代價函數還是沒有變化。

做法其實就是令\frac{\partial J }{\partial \theta } = 0 來求解參數。

推導過程如下:

(三)logistic 迴歸(Logistc regression)

這個是用作分類的,比如分成0和1兩類的算法。

 我們 期待的代價函數J\left ( \theta \right )是一個凸函數,也就是僅一個全局最優,這樣通過梯度下降法一定可以到達。

然後還是用梯度下降法:

這個求導後的結果寫法上式一樣的,但實質差別蠻大的。

(四)正則化

加了一個正則項懲罰項,使得\theta參數不至於太大,防止過擬合。

(五)一些matlab命令

自己總結的,matlab 命令
1.複雜的輸出:disp(sprintf(‘2 decimals:%0.2f’,a))
2.v=1:0.1:2  v是一組值,從數值1開始,增量或者說步長是0.1,直到增加到2
3.rand(3,3) 生成一個3x3的矩陣,並且元素隨機(加參數可以生成正態分佈的隨機變量或高斯隨機變量)
4.畫直方圖:hist(w);hist(w,10) %w爲一個向量
5.A爲mxn大小矩陣,size(A)返回m 和 n;而length(A)返回3(最大的)
6.pwd顯示當前路徑
7.A=[A,[100;101;102]] 爲原來的A矩陣在右邊附上一個新添加的列矩陣
8.矩陣的乘法中A*B 或者A.*B(矩陣對應元素相乘)(A.^2,A中每個元素平方)
9.A'是A的轉置;sum(A,1)得到每一列的總和;pinv(A)求A的逆
10.plot(t,y);xlabel('time');ylabel('value');legend('sin','cos')(圖例);title('myplot')
     subplot(121);設置x,y軸的範圍axis([0.5 1 -1 1])
11.可視化矩陣:imagesc(A)
 

 

 

 

 

 

 

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