Processing math: 100%

2017年10月13日 星期五

Week6

Evaluating a Hypothesis

  • 為了要評量hypothesis,將data分成training set跟test set
    • 一般來說70%作為training set,30%作為test set
  • 新的步驟如下:
    • 利用training set去學習出Θ使得Jtrain(Θ)為最小
    • 計算test set error Jtest(Θ)

The test set error

  • For linear regression
    • Jtest(Θ)=12mtestmtesti=1(hΘ(x(i)test)y(i)test)2
  • For classification
    • Misclassification error (aka 0/1 misclassification error)
    • err(hΘ(x),y)=1if hΘ(x)0.5 and y=0 or hΘ(x)<0.5 and y=10otherwise
      • 預測失敗就設1,成功就設0
    • 平均的test error為:
      • Test Error=1mtestmtesti=1err(hΘ(x(i)test),y(i)test)

Model Selection and Train/Validation/Test Sets

  • 由於hypothesis在training set表現好,未必代表在test set也能表現好,所以不能只依據training set的表現來評斷hypothesis
  • 其中一個解決此問題的方法是多增加一組data set稱為cross validation set
    • Training set: 60%
    • Cross validation set: 20%
    • Test set: 20%
  • 當我們想要選擇model的polynomial degree時,可以照下列步驟:
    • 針對不同polynomial degree分別算出在training set最佳的Θ
    • 將各個Θ用在validation set找出error最小的degree
    • 在test set上算出上一步驟degree的error作為generalization error

Learning Curves

  • Bias很大的影響
    • N很小時,較容易找出quadratic curve來fit data,所以train error很小。
    • N很小時,train出來的hypothesis對於test set來說不準的機率大很多,所以test error很高。
    • 隨著N增大,兩種error都會進入停滯期。
    • 如果train出來的hypothesis的bias很大,增加training set size不會有幫助。
  • Variance很大的影響
    • 若Variance很大,則N要很大才會進入停滯期。
    • 若train出來的hypothesis的Variance很大,增加training set size是有幫助的。

Deciding What to Do

  • 當預測失準時,我們可以做下列的修正:
    • 取得更多training data
      • 適用於high variance
    • 將features拆成更小的sets
      • 適用於high variance
    • 增加新的features
      • 適用於high bias
    • 嘗試polynomial features
      • 適用於high bias
    • 減小λ
      • 適用於high bias
    • 增大λ
      • 適用於high variance

Error Analysis

  • 以下是建議用以解決machine learning問題的方法:
    • 快速實作出一個最簡單的演算法,並及早在cross validation set上做測試
    • 畫出learning curve以決定是需要更多data還是更多feature
    • 人工檢視那些在cross validation set上錯誤的例子,看發生最多錯誤的原因為何
  • 必須要能以一個數字來評估演算法(例如:錯誤率),舉例來說,當在考慮某個feature是否該加進去,若加進去後錯誤率反而增加就知道不該把它考慮進去。

Error metrics for skewed classes

  • 若分類問題中,兩個結果會發生的機率過於極端,則稱此情況為skewed classes
    • 例如:資料中只有0.5%會得到癌症
    • 做training的error rate可能比用猜的機率還低...
  • 改用Precision跟Recall來評估演算法的performance
    • 要將題目中機率特別小的設為y = 1
    • 做下列定義

    • Precision
      • Precision=True positives# predicted as positive=True positivesTrue positives + False positives
    • Recall
      • Recall=True positives# actual positives=True positivesTrue positives + False negatives
  • 要怎麼用單一數值來評估Precision跟Recall的表現呢
    • 使用F1 Score (或稱為F Score)
      • 2PRP+R

















2017年9月24日 星期日

Week5

Cost Function

  • 首先定義一些在neural network會用到的變數
    • L:在這個network中有幾層layer
    • sl:在這個layer中有幾個unit (不含bias unit)
    • K:總共有幾個output unit,即結果分成幾類
    • hΘ(x)k:產生第k個output的hypothesis
  • Neural network的cost function定義如下:
  • J(Θ)=1mmi=1Kk=1[y(i)klog((hΘ(x(i)))k)+(1y(i)k)log(1(hΘ(x(i)))k)]+λ2mL1l=1sli=1sl+1j=1(Θ(l)j,i)2

Backpropagation Algorithm

  • Backpropagation是neural network中用來表示最小化cost function的術語,就如同在logistic及linear regression中所用的gradient descent
    • 目標是計算:minΘJ(Θ)
  • 在這一節中我們來看看如何計算J(Θ)的偏微分
    • Θ(l)i,jJ(Θ)
  • 演算法:
    • 給定一組training set {(x(1),y(1))(x(m),y(m))}
      • 設定Δ(l)i,j for all (l,i,j)
      • Δ代表的是error
    • For training example t =1 to m:
      • 設定a(1):=x(t)
      • 使用forward propogation計算a(l) for l=2,3,…,L
      • 利用y(t)計算δ(L)=a(L)y(t)
        • 這是最後一個layer的error
        • δΔ的小寫
        • 將最後一層得到的結果跟正確值y相減
      • 計算最後一層layer之前的δ(L1),δ(L2),,δ(2)
        • 使用δ(l)=((Θ(l))Tδ(l+1)) . a(l) . (1a(l))
        • 後面兩項代表的是g(z(l))=a(l) . (1a(l)),也就是對g(z(l))的微分(g-prime derivative)
      • Δ(l)i,j:=Δ(l)i,j+a(l)jδ(l+1)i
        • 或是用vector計算:Δ(l):=Δ(l)+δ(l+1)(a(l))T
    • 最後可以得到新的Δ matrix
      • 若j≠0
        • D(l)i,j:=1m(Δ(l)i,j+λΘ(l)i,j)
      • 若j=0
        • D(l)i,j:=1mΔ(l)i,j
      • D是作為accumulator用來將所有的值加起來以求出最後的偏微分
        • Θ(l)ijJ(Θ) = D(l)ij

Backpropagation Intuition

  • δ(l)j代表的是在a(l)j的error,實際上也可以看成cost function的微分
    • δ(l)j=z(l)jcost(t)
  • 以下面這張圖為例:

    • 第二層的δ(2)2可透過第三層的δ(3)1δ(3)2來得到
      • δ(2)2 == Θ(2)12*δ(3)1+Θ(2)22*δ(3)2

Gradient Checking

  • Gradient checking可以用來確保我們的back propagation是正確的
  • Cost function的微分結果可以用下列式子來做近似:
    • ΘJ(Θ)J(Θ+ϵ)J(Θϵ)2ϵ
  • 而對於有多個theta的矩陣,對於Θj微分的近似值則如下:
    • ΘjJ(Θ)J(Θ1,,Θj+ϵ,,Θn)J(Θ1,,Θjϵ,,Θn)2ϵ
  • 將epsilon設小(ϵ=104)可確保數學式子是正確的
  • 淡epsilon若設的過小會遇到數值上的問題
  • 將近似的結果跟用back propagation得到的delta做比較,若結果正確的話數值不會差太多
  • 由於實作上近似值的計算很慢,所以在檢查完back propagation演算法後就不要再多做了!

Random Initialization

  • 在neural network中若將weight的初始值都設為0的話,在做back propagate時所有的node都會被update成相同的數值,這樣會大大降低準確度
  • 所以我們應該將Θ(l)ij設成介於[ϵ,ϵ]間的隨機值
    • 這裡的epsilon跟gradient checking的沒有關聯
    • epsilon比較好的選擇如下圖,Lin/Lout為該Layer input/output的unit數量

  • 首先要選擇network architecture,hidden unit有幾個,要分成幾個layer
    • hidden unit:越多越好,但要衡量計算成本
    • hidden layer:預設為1層,若超過1層,則建議每一層的hidden unit數目一樣\
  • Training a Neural Network
    • 隨機初始化weights
    • 實作forward propagation以求得hΘ(x(i))
    • 實作cost function
    • 實作back propagation以算出cost function的偏微分
    • 跑一次gradient checking確認back propagation是對的
    • 使用gradient descent或內建的最佳化方式求出讓cost function最小的weights

2017年9月20日 星期三

Week4

Neural Networks

  • 在model中,input是x1xn的features,output是hypothesis function的結果
  • x0 input node有時稱為bias unit,其值永遠為1
  • 在neural network中,會使用跟classification一樣的logistic function
    • 11+eθTx
    • 有時稱之為sigmoid (logistic) activation function
  • "theta" parameters有時也稱為"weights"
  • 最簡單的表示方式如下:
    • [x0x1x2][   ]hθ(x)
    • input nodes位於input layer (layer 1),中間經過另一個node (layer 2),最後產出hypothesis function位於output layer
    • 在input跟output layer之間可能會有不只一層layer,稱其為hidden layers
  • 我們把hidden layer的node稱為activation unit
  • a(j)i="activation" of unit i in layer jΘ(j)=matrix of weights controlling function mapping from layer j to layer j+1
  • 假設有一層hidden layer,會長的像下面這樣:
  • [x0x1x2x3][a(2)1a(2)2a(2)3]hθ(x)
  • 每一個activation node的值如下:
  • a(2)1=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2+Θ(1)13x3)a(2)2=g(Θ(1)20x0+Θ(1)21x1+Θ(1)22x2+Θ(1)23x3)a(2)3=g(Θ(1)30x0+Θ(1)31x1+Θ(1)32x2+Θ(1)33x3)hΘ(x)=a(3)1=g(Θ(2)10a(2)0+Θ(2)11a(2)1+Θ(2)12a(2)2+Θ(2)13a(2)3)
  • 每一個layer有它自己的Θ(j),則其dimension的定義如下:
    • 假設layer j有sj個unit,layer j+1有sj+1個unit,則Θ(j)的dimension為sj+1×(sj+1)
    • +1是因為多考慮bias node x0Θ(j)0
    • output不須考慮bias node,只有input需要考慮
  • 用vector的方式處理:
    • 將activation node以vector表示:a(j)=g(z(j))
    • z(j)=Θ(j1)a(j1)
    • 若還要計算下一層,就在a(j)中加入一個bias unit
    • 就可以計算z(j+1)=Θ(j)a(j)

Examples and Intuitions I

  • 一個簡單的例子是以neural network預測x1 AND x2的結果,function會是如下:
  • [x0x1x2][g(z(2))]hΘ(x)
    • x0是bias node,其值為1
  • Theta matrix則會是:Θ(1)=[302020]
  • sigmoid function在z>4後趨近於1,z < 4後趨近於0

  • 所以可以算出如下結果:
  • hΘ(x)=g(30+20x1+20x2)x1=0  and  x2=0  then  g(30)0x1=0  and  x2=1  then  g(10)0x1=1  and  x2=0  then  g(10)0x1=1  and  x2=1  then  g(10)1

Examples and Intuitions II

  • 在上一節中,AND/OR/NOR都可以無須hidden layer就算出來
  • 但XNOR就需要多一層hidden layer才能求出,中間透過AND/OR/NOR的轉換


Multiclass Classification

  • 假設最後的結果不是只有2類,而是4類,那可用大小為4的vector來表示:

  • hΘ(x) 會是這四種可能的vector其中之一



2017年9月18日 星期一

Week3

Classification


  • Binary classification problem
    • y只考慮是0或1,即y∈{0,1}
      • 0又稱為negative class,可用"-"表示
      • 1又稱為positive class,可用"+"表示

Hypothesis Representation

  • hθ(x)的形式改成如下形式
0hθ(x)1

  • 新的形式稱為Sigmoid FunctionLogistic Function
hθ(x)=g(θTx)z=θTxg(z)=11+ez


  • 下圖是Sigmoid Function的樣子



  • hθ(x)代表的是output為1的機率
    • 假設hθ(x)=0.7,代表有70%的機率output會是1
    • 而output是0的機率就是1-70%=30%

Decision Boundary

  • 為了要把結果做0跟1的分類,可以把hypothesis function的output轉譯成如下:
hθ(x)0.5y=1hθ(x)<0.5y=0
  • 從前面Sigmoid Function的圖可知當z > 0時,g(z) >= 0.5
  • 若z為θTX則代表:
  • hθ(x)=g(θTx)0.5whenθTx0
  • 所以
  • θTx0y=1θTx<0y=0
  • Decision Boundary就是用來區分y=0跟y=1區域的那條線
    • 它不一定要直線,可以是圓形線或任何形狀

Cost Function

  • 若Logistic Function使用Linear Regression的Cost Function,則會是波浪的形狀有很多Local Optima
  • Logistic Regression的Cost Function如下
  • J(θ)=1mmi=1Cost(hθ(x(i)),y(i))Cost(hθ(x),y)=log(hθ(x))if y = 1Cost(hθ(x),y)=log(1hθ(x))if y = 0
  • 當y=1時會得到J(θ)hθ(x)的圖


  • 當y=0時會得到J(θ)hθ(x)的圖

  • 整理如下:
  • Cost(hθ(x),y)=0 if hθ(x)=yCost(hθ(x),y) if y=0andhθ(x)1Cost(hθ(x),y) if y=1andhθ(x)0

Simplified Cost Function and Gradient Descent

  • 我們可以把上面的Cost()整合成一條式子
    • Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))
  • 整體的Cost Function如下表示:
    • J(θ)=1mmi=1[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]
  • 用vector的方式實作如下:
  • h=g(Xθ)J(θ)=1m(yTlog(h)(1y)Tlog(1h))

Gradient Descent

  • Gradient Descent的表示式跟Linear Regression一樣
  • Repeat{θj:=θjαmmi=1(hθ(x(i))y(i))x(i)j}
  • 用vector的方式實作如下:
  • θ:=θαmXT(g(Xθ)y)

Advanced Optimization

  • 除了Gradient Descent之外有其他更好的方法
    • Conjugate gradient
    • BFGS
    • L-BFGS
  • 但是建議不要自己實做這些複雜的演算法,而是找已經最佳化過的Library
  • 我們需要提供一個Function去計算下面兩個結果
  • J(θ)θjJ(θ)
  • 首先寫一個單一Function回傳這兩個結果
function [jVal, gradient] = costFunction(theta)
  jVal = [...code to compute J(theta)...];
  gradient = [...code to compute derivative of J(theta)...];
end


  • 接著用下面的function算出最佳解
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);


Multiclass Classification: One-vs-all

  • 當類別超過兩類時,定義 y = {0,1...n}
  • 把這個問題分成n+1個Binary Classification Problem,將最大的結果當成預測值
  • y{0,1...n}h(0)θ(x)=P(y=0|x;θ)h(1)θ(x)=P(y=1|x;θ)h(n)θ(x)=P(y=n|x;θ)prediction=maxi(h(i)θ(x))
   

Regularization

  • 為了避免overfitting,可以在cost function中加上對weight的懲罰,所以cost function改寫如下:
    • minθ 12m mi=1(hθ(x(i))y(i))2+λ nj=1θ2j
  • Regularized Linear Regression
    • Gradient Descent
      • 演算法改寫如下,要注意的是並沒有對θ0做懲罰
      • Repeat {    θ0:=θ0α 1m mi=1(hθ(x(i))y(i))x(i)0    θj:=θjα [(1m mi=1(hθ(x(i))y(i))x(i)j)+λmθj]          j{1,2...n}}
      • 在經過整理後如下:
        • θj:=θj(1αλm)α1mmi=1(hθ(x(i))y(i))x(i)j
        • 由於1αλm 永遠會小於1,而後面的項目跟沒做regularization前一樣,所以weight會減小的範圍就決定在1αλm
    • Normal Equation
      • 式子改寫如下:
      • θ=(XTX+λL)1XTywhere  L=[0111]
      • 前面提過若m<n則XTX是不可逆的,但在改寫後XTX + λ⋅L是可逆的。
  • Regularized Logistic Regression
    • 和Regularized Linear Regression的方法一樣

Week2

Multiple Features

  • 有多個變數的Linear Regression稱為multivariate linear regression
  • 符號說明如下:
x(i)j=value of feature j in the ith training examplex(i)=the input (features) of the ith training examplem=the number of training examplesn=the number of features
  • 其hypothesis function的形式為:
hθ(x)=θ0+θ1x1+θ2x2+θ3x3++θnxn
  • 也可用matrix的形式來表示:
hθ(x)=[θ0θ1...θn][x0x1xn]=θTx


Gradient Descent For Multiple Variables

  • 演算法如下:

repeat until convergence:{θ0:=θ0α1mmi=1(hθ(x(i))y(i))x(i)0θ1:=θ1α1mmi=1(hθ(x(i))y(i))x(i)1θ2:=θ2α1mmi=1(hθ(x(i))y(i))x(i)2}


  • Feature Scaling
    • 當Feature的range很大時,Descent的速度會很慢
    • Input Variable的理想range
      • −1 ≤ x(i) ≤ 1
      • 大約就好,太大太小都不好
    • Mean normalization
      • μi 是feature (i)的平均值
      • si 是the range of values (max - min)或標準差
      • xi:=xiμisi

Normal Equation

  • 為了得到Cost Function J的最小值,可以針對各個θi做偏微分後設成0,就可以求出θ的最佳解如下:
θ=(XTX)1XTy


  • X, y的例子如下


  • 使用Normal Equation就不需要做Feature Scaling
  • Gradient Descent跟Normal Equation的比較如下:

Gradient DescentNormal Equation
Need to choose alphaNo need to choose alpha
Needs many iterationsNo need to iterate
O (kn2)O (n3), need to calculate inverse of XTX
Works well when n is largeSlow if n is very large

  • 實作上當n超過10000的時候就會考慮用Gradient Descent

Normal Equation Noninvertibility

  • 如果X^T X是不可逆的,可能的原因如下:
    • 有重複的Feature出現 (如線性相關的兩個Feature(ft/m))
    • Feature數量太多 (m≤ n)
      • 刪除一些Feature或做Regularization







2017年9月6日 星期三

Week1

Supervised Learning


  • 定義:
    • 有一筆已知正確結果的資料,找出input和output之間的關係。
  • 分成兩類的問題
    • Regression
      • 在一組連續的output中預測結果
      • 把input variables map到連續性的function
    • Classification
      • 預測的結果為一組離散的(discrete) output
      • 把input variables map到離散的類別

Unsupervised Learning


  • 對於結果會長怎樣所知甚少甚至是完全不知道
  • 從資料中的variables找出關聯性並將資料分成小的group
  • 例子:
    • Clustering
      • 將基因做分群
    • Non-Clustering
      • 將音訊檔區別人聲和音樂聲

Model Representation


  • 對於supervised learning problem,流程如下圖。從Training set train出一個function h,這個h由於歷史因素稱為hypothesis


Cost Function

  • 用來計算hypothesis精確度的function稱為cost function如下


  • 他又稱為Squared error functionMean squared error
  • 1/2是用來做gradient descent時較方便計算,作微分後就可以把1/2給消掉

Gradient Descent


  • 以下是 Gradient Descent的演算法,一直repeat直到收斂為止


  • 不同的起點可能會導致最後找到的local minimum點不同
  • α代表的是Step的參數
    • 太小=>收斂很慢
    • 太大=>無法收斂或甚至變成發散
  • 越接近local minimum,斜率就會越小,整體Step自然也越小,所以不需要去減小α
















2017年8月26日 星期六

Week6


Nearest neighbor regression

  • 資料有可能在不同區段有不同的關係存在


  • 當我們要預測一個x的value時,選擇資料中和x最接近的並將其value作為預測結果,這個方法稱為1 Nearest Neighbot (1-NN) regression


  • 如果只有一個Feature,距離很好計算,就是用兩者相減後的絕對值表示(Euclidean Distance)



  • 如果有多個Feature,那就針對各個Feature根據重要性給予權重,以下列公式計算(Scaled Euclidean Distance):



  • 用圖形化來表示1-NN (Voronoi Tessellation/Diagram) 
    • 把空間分成N個區域,每個區域裡面只有一個資料點Xi
    • 在任一區域裡面的點X最近的資料點一定是該區域的資料點
    • 對距離有不同定義,則會產生出不同結果的圖


1-NN Algorithm

  • 演算法如下,找出和所query的東西最相近的結果


  • 當資料量大而且Noise很小時預測結果會很準確


  • 在資料間隔比較大的地方會失準


  • 若Noise很大,則結果看起來像是Overfitting


k-Nearest neighbors

  • 前面提到1-NN在Noise較大時會有失準的問題,所以若能擴大計算預估值的比較資料Set比較能平衡Noise的問題。
  • k-NN Regression
    • 我們可以找出最接近的k個資料,計算其平均值來當作預測結果
  • k-NN Algorithm
    • 首先將前k個資料做距離的排序後放到一個Array
    • 從第k+1個開始到第N個資料,若比第k個資料的距離還近的話就把該資料插入到Array中
    • 最後就可以求出最接近的k個資料


  • 下圖說明使用k-NN可以減少Noise造成的影響
  • 但在左右兩邊邊界由於取的k個資料都會一樣,所以會變成相同預測值的水平直線
  • 資料量少的區域也一樣會有失準的問題



  • Discontinuities
    • 還有一個問題就是預測的結果不是連續的,當X的單位只改變1時,有可能會造成相差很多的結果。
    • 在某些應用下不能太相信此種結果,例如範例中的房價預測。

Weighted k-NN

  • 為了解決前面提到不連續的問題,我們可以把這k個結果分別取權重讓預測值更準確及smooth。


  • 要怎麼決定權重呢?
    • 距離越小者權重越高
    • 距離越大者權重越低
    • 最簡單的方式就是將權重設成
      • 1/距離

  • Kernel weights for d=1
    • 其他有一些比較複雜的設定權重方式統稱為kernel weight
    • Gaussian kernel是其中一個例子
      • 𝜆可用來設定smooth的程度
      • 它比較特別的是權重永遠不會是0
  • Kernel weights for d≥1
    • 和d=1的差別在於所帶入的距離函式

Kernel Regression

  • 不是只在NN中取權重,而是把所有的Data Point都取權重
    • 稱為Nadaraya-Watson kernel weighted average
  • 下圖是以Epanechinikov Kernel為例
    • 所選擇的Kernel會限定一個區域(圖中黃色部分),只有在這個區域內的資料才會拿來計算

  • 𝜆的選擇比Kernel的選擇還重要!
    • 𝜆代表的是所限制的區域大小(Bandwidth)
    • 𝜆太小(如圖最左)仍然會有Overfitting造成Variance增大
    • 𝜆太大(如圖最右)又過於平滑造成Bias增大
    • 𝜆的選擇也是Bias-Variance Tradeoff
  • 𝜆和k的選擇最好的方式
    • Cross Validation

Formalizing the idea of local fits

  • Global constant fit
    • 𝜆=1且所有Data Point的權重都一樣
    • 結果就會是一條水平直線
  • Locally constant fit
    • Kernel Regression屬於此種
  • Local Regression
    • 目前討論的都是locally在每個點去fit constant function
      • locally weighted averages
    • 若我們想locally在每個點去fit line/polynomial呢?
      • locally weighted linear regression
        • local linear fit
          • 減少邊界的bias但稍微增加variance
        • local quadratic fit
          • 對邊界問題無用且會增加variance
          • 減少邊界外中間區域的bias
        • 單數degree的polynomial會比偶數degree好
      • 最建議的選擇:
        • local linear regression

Discussion on k-NN and kernel regression

  • Nonparametric regression
    • Nonparametric的目標
      • 有彈性
      • 對f(x)只要做少量的假設
      • 複雜度會隨著觀測資料數量N增加而跟著增加
    • k-NN及kernel regression即為此種
    • 其他還有Splines, trees, locally weighted structured regression models…
  • Noiseless setting
    • 若資料皆沒有Noise
      • 隨著資料量越來越多
        • 1-NN Fit的MSE越來越小
      • 當資料量到無限多
        • 1-NN Fit的MSE趨近0
    • Quadratic Fit則是就算資料量到無限多,仍然不可能完全Fit函式,一定會存在Bias

  • Noisy data setting
    • 當資料量為無限多
      • k越大,NN fit的MSE越小,最後也是會趨近0

  • Large d or small N
    • NN和kernel regression在資料可以覆蓋整個space的情況下運作很好
    • 當dimension d越多,需要越多資料數N去覆蓋space
    • N = O(exp(d))才有好的performance
    • 這也是為什麼parametric model是有其用途的
  • Complexity of NN search
    • 若是採Brute force search
      • 給一個Query point xq
      • 掃過x1,x2,…, xN
      • 對1-NN來說要做O(N)次的距離計算
      • 對k-NN來說是O(Nlogk) [logk是做排序]

k-NN for classification

  • 以區分垃圾郵件為例
  • Space即為佈滿著已經分好類的email
  • Query email可藉由k-NN找出最相似的k個email
    • 看這k個email是垃圾郵件較多還是非垃圾郵件較多
    • 即可決定此郵件是哪一類










2017年8月23日 星期三

Week5

Feature selection task 


  • 若在做prediction時weight的數目超多,這樣要花大量的時間來運算
  • 若weight的數量很少(sparse),只計算weight不為0的,這樣就有比較好的efficiency
  • 另一方面來說,只加入真正跟prediction有關的feature也比較具有代表性(Interpretability)

Option 1: All subset

  • 從選擇0個Feature開始,一直到8個全選,每次都找出最小的RSS組合


  • Complexity:
    • 假設有D個Feature
    • 總共要計算的model數量為2的D+1次方 (因為包含constant)
Option2: Greedy algorithms

  • 和All subset類似,差別在於每選完一個數量的feature,選下一個數量的時候必須包含先前選的



  • Complexity
    • Steps:
      • 選0個1次
      • 選1個D次
      • 選2個D-1次
      • ...
      • 選D個1次


Regularize


  • 選擇Feature的時候使用regularization
    • 從full model開始(選擇所有feature)
    • 把某些coefficient shrink到0
    • 非0的coefficient代表所選擇的feature
  • 設定一個coefficient的threshold,小於threshold的coefficient就shrink為0



  • Lasso regression



  • Coefficient path
    • Ridge
      • 就算𝛌很大,coefficient還是很小但不會是0的值


    • Lasso
      • 可以看到𝛌還沒有到很大的數字時,就已經有好幾個coefficient被shrink為0了

Fitting the lasso regression model (for given 𝛌)


  • 由於絕對值wj無法微分,所以沒辦法算出lasso regression的closed-form solution


  • Coordinator descent



  • 對Feature做Normalize

  • Coordinate descent for unregularized regression (for normalized features)



    • Coordinator Descent演算法


  • Coordinate descent for lasso (for normalized features)

      • 演算法:



      • Threshold即為-𝛌/2到𝛌/2之間


      • 怎麼決定演算法是否收斂完成
        • 對Convex Problem來說,step會越來越小
        • 統計每次loop所有Feature的step
          • 當最大的step < 𝛆時就代表收斂完成