Coursera_機器學習_week1_介紹&Octave

介紹

這門課有一個很好的筆記在52nlp網站上
部分摘錄+自己補充

機器學習的定義

Arthur Samuel (1959): Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed.
Tom Mitchell (1998) : Well-posed Learning Problem: A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.

分類

  • supervised learning監督學習, 訓練集是標記的
    本課程涉及了分類(預測離散值),線性/邏輯迴歸(預測連續值),神經網絡,支持向量機SVM

  • unsupercised leaning 無監督學習,訓練集沒有標記
    訓練集沒有標記,本課程涉及K-means,PCA主成分分析,異常檢測

    e.g. “ 雞尾酒會問題”(cocktail party problem)
    雞尾酒會問題算法主需要一行代碼

[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x’);
## Linear regression with one variable單變量線性迴歸 ###Model representation(模型表示) m = 訓練集樣本數 x = 輸入變量,feature y = 輸出變量 ,label 單變量線性迴歸的預測函數 hθ(x)=θ0+θ1x ### Cost function(代價函數,成本函數) J(θ)=12mmi=1(hθ(x(i)y(i))2 機器學習的算法目的就是找到使得J最小的參數θ

Gradient descent(梯度下降)

1、給θ0 ,θ1 一個初始值,例如都等於0
2、每次改變θ0 ,θ1 的時候都保持J(θ0 ,θ1) 遞減,直到達到一個我們滿意的最小值
gradient descent
需要注意,先用原來的θ0 ,θ1 來計算新的θ0 ,θ1 ,再用新值替換舊值,不要計算一個,替換一個。
對應的代碼爲

function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
    m = length(y); % number of training examples
    J_history = zeros(num_iters, 1);
    for iter = 1:num_iters
      temp1 = theta(1) - (alpha/m)*(X*theta-y)'*X(:,1);
      temp2 = theta(2) - (alpha/m)*(X*theta-y)'*X(:,2);
      theta(1) = temp1;
      theta(2) = temp2;
      J_history(iter) = computeCost(X, y, theta);
    end
end

這裏的α 是learning rate(又稱爲步長),如果α過小,梯度下降可能很慢;如果過大,梯度下降有可能“邁過”(overshoot)最小點,並且有可能收斂失敗,並且產生“分歧”(diverge)。
注意:梯度下降可能使函數收斂到一個局部最小值,而不是global optima
給出單變量線性迴歸梯度下降算法:

##Octave使用 ### 循環的寫法 i = 1; while i ### 函數的寫法 要使用預先寫好的保存爲“文件名.m”的函數 要**先進入文件保存的路徑**或者**添加路徑**: > addpath(‘C:\Users\abc\Desktop’) 顯示現在的路徑 > pwd ### 向量化 Vectorization 求和公式的向量化[^1]

hθ(x)=j=10nθjxj=ΘTx

體現在代碼上的區別:求和函數需要寫循環,向量化則簡潔得多:

發佈了27 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章