P1-P23
新聞事件分類的例子,就是那個谷歌新聞的例子,可以用一個聚類算法來聚類這些文章到一起,所以是無監督學習。細分市場的例子,可以當作無監督學習問題,因為只是拿到算法數據,再讓算法去自動地發現細分市場。 Octave,是免費的開源軟件,使用一個像 Octave 或 Matlab的工具,許多學習算法變得只有幾行代碼就可實現。 代價函數也被稱作平方誤差函數,有時也被稱為平方誤差代價函數。誤差平方代價函數,對于大多數問題,特別是回歸問題,都是一個合理的選擇。(導師更正:理論是,任何非負函數都可以作代價函數,只是實踐中多采用平方誤差函數,因為其簡單、具有光滑性。 ) 實際上在數據量較大的情況下,梯度下降法比正規方程要更適用一些。(導師:你需要思考一下為什么 ) 在我們面對多維特征問題的時候,我們要保證這些特征都具有相近的尺度,這將幫助梯度下降算法更快地收斂。 通常可以考慮嘗試些學習率:𝛼 = 0.01,0.03,0.1,0.3,1,3,10。 如果我們采用多項式回歸模型,在運行梯度下降算法前,特征縮放非常有必要。
P24-P27
P32-P34
只要特征變量的數目并不大,標準方程是一個很好的計算參數θ的替代方法。具體地說,只要特征變量數量小于一萬,通常使用標準方程法,而不使用梯度下降法。 梯度下降法是一個非常有用的算法,可以用在有大量特征變量的線性回歸問題。 使用不同的線性代數庫的方法被稱為偽逆。(導師更正:使用不同的線性代數庫的方法被稱為偽逆。 表達的不是很清晰,偽逆一般指的是不可逆矩陣的某種意義下的“逆矩陣”。 ) 出現不可逆矩陣的情況極少發生,所以在大多數實現線性回歸中,出現不可逆的問題不應該過多的關注𝑋𝑇𝑋是不可逆的。 利用正規方程解出向量 𝜃 = (𝑋𝑇𝑋)?1𝑋𝑇𝑦 。 Octave 是一種很好的原始語言(prototyping language),使用 Octave 你能快速地實現你的算法,剩下的事情,你只需要進行大規模的資源配置,你只用再花時間用 C++或 Java 這些語言把算法重新實現就行了。 邏輯回歸算法是分類算法,我們將它作為分類算法使用。它適用于標簽 𝑦 取值離散的情況,如:1 0 0 1。
P34-P44
實際上在數據量較大的情況下,梯度下降法比正規方程要更適用一些。
*正規方程法需要計算(XTX)-1,如果特征數量n較大則運算代價大,計算會比較慢,因為矩陣逆的計算時間復雜度為O(n3),通常來說當n小于10000 時還是可以接受的。
如何實現logistics 回歸多分類。
*1.OvR方法:n種類型的樣本進行分類時,分別取一種樣本作為一類,將剩余的所有類型的樣本看做另一類,這樣就形成了n個二分類問題,使用邏輯回歸算法對n個數據集訓練出n個模型,將待預測的樣本傳入這n個模型中,所得概率最高的那個模型對應的樣本類型即認為是該預測樣本的類型,n個類別就進行n次分類,選擇分類得分最高的。
2.OvO方法:n類樣本中,每次挑出2種類型,兩兩結合,一共有Cn2種二分類情況,使用Cn2種模型預測樣本類型,有Cn2個預測結果,種類最多的那種樣本類型,就認為是該樣本最終的預測類型。
?
邏輯回歸模型的假設是: ,其中:X代表特征向量,g代表邏輯函數(logistic function)是一個常用的邏輯函數為S形函數(Sigmoid function),公式為: 。 邏輯回歸的代價函數為: 。 雖然邏輯回歸得到的梯度下降算法表面上看上去與線性回歸的梯度下降算法一樣,但是邏輯回歸的與線性回歸的中不同,所以實際上是不一樣的。 除了梯度下降算法以外,還有一些常被用來令代價函數最小的算法,這些算法更加復雜和優越,而且通常不需要人工選擇學習率,通常比梯度下降算法要更加快速。這些算法有:共軛梯度(Conjugate Gradient),局部優化法(Broyden fletcher goldfarb shann,BFGS)和有限內存局部優化法(LBFGS)。 如果我們發現了過擬合問題,應該如何處理?1.丟棄一些不能幫助我們正確預測的特征:可以是手工選擇保留哪些特征,或者使用一些模型選擇的算法來幫忙(例如PCA);2.正則化:保留所有的特征,但是減少參數的大小。 不參與其中的任何一個正則化。 無論是線性回歸還是邏輯回歸都有這樣一個缺點,即:當特征太多時,計算的負荷會非常大。
P45-P61
在神經網絡中不能令的初始參數都為0。
*因為如果令所有的初始參數都為0,這將意味著第二層的所有激活單元都會有相同的值。同理,如果初始所有的參數都為一個非0的數,結果也是一樣的。通常初始參數為正負ε之間的隨機值。
?
神經網絡是計算量有些偏大的算法。 神經網絡模型是許多邏輯單元按照不同層級組織起來的網絡,每一層的輸出變量都是下一層的輸入變量。 神經網絡中,單層神經元(無中間層)的計算可用來表示邏輯運算,比如邏輯與(AND)、邏輯或(OR)。 梯度的數值檢驗方法是通過估計梯度值來檢驗我們計算的導數值是否真的是我們要求的。對梯度的估計采用的方法是在代價函數上沿著切線的方向選擇離兩個非常近的點然后計算兩個點的平均值用以估計梯度。 訓練神經網絡:1.參數的隨機初始化;2.利用正向傳播方法計算所有的;3.編寫計算代價函數的代碼;4.利用反向傳播方法計算所有偏導數;5.利用數值檢驗方法檢驗這些偏導數;6.使用優化算法來最小化代價函數。
P62-P67
選擇λ的方法為:
? ? ? ? ?1.使用訓練集訓練出12個不同程度正則化的模型;
? ? ? ? 2.用12個模型分別對交叉驗證集計算的出交叉驗證誤差;
? ? ? ? 3.選擇得出交叉驗證誤差最小的模型;
? ? ? ? 4.運用步驟3中選出模型對測試集計算得出推廣誤差,也可以同時將訓練集和交叉驗證集模型的代價函數誤差與λ的值繪制在一張圖表上。
?
訓練集誤差和交叉驗證集誤差近似時:偏差/欠擬合;交叉驗證集誤差遠大于訓練集誤差時:方差/過擬合。 可以使用學習曲線來判斷某一個學習算法是否處于偏差、方差問題。 在高方差/過擬合的情況下,增加更多數據到訓練集可能可以提高算法效果。 通常選擇較大的神經網絡并采用正則化處理會比采用較小的神經網絡效果要好。 對于神經網絡中的隱藏層的層數的選擇,通常從一層開始逐漸增加層數,為了更好地作選擇,可以把數據分為訓練集、交叉驗證集和測試集,針對不同隱藏層層數的神經網絡訓練神經網絡。 一般推薦在交叉驗證向量上來做誤差分析。 在研究一個新的機器學習問題時,建議推薦先實現一個較為簡單快速、即便不是那么完美的算法。
P68-P77
邏輯回歸模型,支持向量機模型,在兩者之間,應該如何選擇呢?
? ? ? ? #n為特征數,m為訓練樣本數。
? ? ? ? (1)如果相較于m而言,n要大許多,即訓練集數據量不夠支持我們訓練一個復雜的非線性模型,我們選用邏輯回歸模型或者不帶核函數的支持向量機。
? ? ? ? (2)如果n較小,而且m大小中等,例如n在 1-1000 之間,而m在10-10000之間,使用高斯核函數的支持向量機。
? ? ? ? (3)如果n較小,而m較大,例如n在1-1000之間,而m大于50000,則使用支持向量機會非常慢,解決方案是創造、增加更多的特征,然后使用邏輯回歸或不帶核函數的支持向量機。
? ? ? ? 神經網絡在以上三種情況下都可能會有較好的表現。
?
類偏斜情況表現為在訓練集中有非常多的同一種類的樣本,只有很少或沒有其他類的樣本。 與邏輯回歸和神經網絡相比,支持向量機,或者簡稱SVM,在學習復雜的非線性方程時提供了一種更為清晰,更加強大的方式。 有時將支持向量機看作是大間距分類器。 在SVM中,C較大時,相當于λ較小,可能會導致過擬合,高方差。C較小時,相當于λ較大,可能會導致低擬合,高偏差。 核函數K(kernel function)就是指K(x, y) = <f(x), f(y)>,其中x和y是n維的輸入值,f(·) 是從n維到m維的映射(通常,m>>n)。<x, y>是x和y的內積(inner product)(也稱點積(dot product))。 通常是根據訓練集的數量選擇地標的數量,即如果訓練集中有m個樣本,則我們選取m個地標,并且令:l(1)=x(1), l(2)=x(2),…, l(m)=x(m)。 在使用高斯核函數之前進行特征縮放是非常必要的。 支持向量機也可以不使用核函數,不使用核函數又稱為線性核函數(linear kernel),當不采用非常復雜的函數,或者訓練集特征非常多而樣本非常少的時候,可以采用這種不帶核函數的支持向量機。 較大時,可能會導致低方差,高偏差;較小時,可能會導致低偏差,高方差。 建議使用高優化軟件庫(liblinear和libsvm等)來求解參數。
P77-P84
K-均值是一個迭代算法,假設我們想要將數據聚類成n個組,其方法為:
? ? ? ?1.首先選擇K個隨機的點,稱為聚類中心(cluster centroids);
? ? ? ?2.對于數據集中的每一個數據,按照距離K個中心點的距離,將其與距離最近的中心點關聯起來,與同一個中心點關聯的所有點聚成一類。
? ? ? ?3.計算每一個組的平均值,將該組所關聯的中心點移動到平均值的位置。
? ? ? ?4.重復步驟2-4直至中心點不再變化。
?
K-均值是最普及的聚類算法,算法接受一個未標記的數據集,然后將數據聚類成不同的組。 K-均值最小化問題,是要最小化所有的數據點與其所關聯的聚類中心點之間的距離之和,因此 K-均值的代價函數(又稱畸變函數 Distortion function)為:。 為了解決K-均值的局部最小值(取決于初始化的情況)這個問題,通常需要多次運行K-均值算法,每一次都重新進行隨機初始化,最后再比較多次運行K-均值的結果,選擇代價函數最小的結果。這種方法在較小的時候(2--10)還是可行的,但是如果K較大,這么做也可能不會有明顯地改善。要對聚類的結果進行改進的方法還可以將具有最大SSE(誤差平方和,用于度量聚類效果的指標,SSE越小表示數據點越接近于它們的質心,聚類效果也越好)值的簇劃分為兩個簇,同時為了保持簇總數不變,可以將某兩個簇進行合并。 在許多及其學習問題中,如果能將數據可視化,便能尋找到一個更好的解決方案,降維可以幫助我們。 主成分分析(PCA)是最常見的降維算法。 PCA技術的一個很大的優點是,它是完全無參數限制的。在PCA的計算過程中完全不需要人為的設定參數或是根據任何經驗模型對計算進行干預,最后的結果只與數據相關,與用戶是獨立的。但是,這一點同時也可以看作是缺點。如果用戶對觀測對象有一定的先驗知識,掌握了數據的一些特征,卻無法通過參數化等方法對處理過程進行干預,可能會得不到預期的效果,效率也不高。
P85-P90
PCA 減少n維到k維 :
? ? ? ?#第一步是均值歸一化。我們需要計算出所有特征的均值,然后令。如果特征是在不同的數量級上,我們還需要將其除以標準差;
? ? ? ?第二步是計算協方差矩陣(covariance matrix):;
? ? ? ?第三步是計算協方差矩陣的特征向量(eigenvectors): [U, S, V]= svd(sigma) 。
? ? ? ?對于一個維度的矩陣,上式中的U是一個具有與數據之間最小投射誤差的方向向量構成的矩陣。如果希望將數據從n維降至k維,只需要從U中選取前k個向量,獲得一個n x k維度的矩陣,用表示,然后通過如下計算獲得要求的新特征向量: ,其中是維的,因此結果為維度。
?
主成分數量選擇算法: 當計算協方差矩陣sigma,調用“svd”函數的時候,獲得三個參數:[U,S,V]=svd(sigma),其中U是特征向量,而S是一個對角矩陣,對角線的元素為 S11,S22,S33...Snn 而矩陣的其余元素都是0。可以使用矩陣(一個n x n的矩陣,只有對角線上有值,而其它單元都是0)來計算平均均方誤差與訓練集方差的比例:,也就是:。 錯誤的主要成分分析情況:1. 用主成分分析PCA防止過擬合是不適合的,過擬合應該采用正則化;2. 在項目中,應首先試著不采用PCA,最好還是從所有原始特征開始,只在有必要的時候(算法運行太慢或者占用太多內存)才考慮采用主要成分分析。 給定一個點 ,怎么能回去這個原始的二維空間呢?x為2維,z為1維,,相反的方程為:, 。 異常檢測主要用來識別欺騙。 機器學習中對于方差通常只除以(m)而非統計學中的(m-1)。這兩個版本的公式在理論特性和數學特性上稍有不同,但是在實際使用中,他們的區別甚小,幾乎可以忽略不計。 通常如果我們認為變量x符合高斯分布則其概率密度函數為:,我們可以利用已有的數據來預測總體中的和的計算方法如下:, 。
P91-P103
協同過濾算法使用步驟如下:
? ? ? #1.初始為一些隨機小值;
? ? ? 2.使用梯度下降算法最小化代價函數;
? ? ? 3.在訓練完算法后,預測為用戶j給電影i的評分。
?
異常檢測算法:對于給定的數據集,我們要針對每一個特征計算和的估計值。,一旦我們獲得了平均值和方差的估計值,給定新的一個訓練實例,根據模型計算:,當時,為異常。 異常檢測算法是一個非監督學習算法,意味著我們無法根據結果變量y的值來告訴我們數據是否真的是異常的。當開發一個異常檢測系統時,可以從帶標記(異常或正常)的數據著手,從其中選擇一部分正常數據用于構建訓練集,然后用剩下的正常數據和異常數據混合的數據構成交叉檢驗集和測試集。具體的評價方法如下:1.根據測試集數據,估計特征的平均值和方差并構建函數;2.對交叉檢驗集,嘗試使用不同的值作為閥值,并預測數據是否異常,根據F1值(F:P(精確率)和R(召回率)的加權調和平均,常用的是F1值——值越大 性能越好)或者查準率與查全率的比例來選擇;3.選出后,針對測試集進行預測,計算異常檢驗系統的值,或者查準率與查全率之比。 多元高斯分布的:其中:是定矩陣。。 在一個基于內容的推薦系統算法中,假設對于希望推薦的東西有一些數據,這些數據是有關這些東西的特征。基于這些特征來構建一個推薦系統算法。假設采用線性回歸模型,可以針對每一個用戶都訓練一個線性回歸模型,如是第一個用戶的模型的參數。 于是有:用戶j的參數向量;電影i的特征向量;對于用戶和電影,我們預測評分為:。 協同過濾算法又分為基于用戶的協同過濾算法和基于物品的協同過濾算法。 對所有的用戶和所有的電影進行評分計算時,如果新增一個用戶 Eve,并且 Eve 沒有為任何電影評分,那么以什么為依據為Eve推薦電影呢?首先需要對結果矩陣進行均值歸一化處理,將每一個用戶對某一部電影的評分減去所有用戶對該電影評分的平均值: 然后利用這個新的矩陣來訓練算法。 如果要用新訓練出的算法來預測評分,則需要將平均值重新加回去,預測,對于Eve,新模型會認為她給每部電影的評分都是該電影的平均分。
P104-P113
從一張給定的圖片中識別文字:
? ? ? #1.文字偵測(Text detection)——將圖片上的文字與其他環境對象分離開來;
? ? ? 2.字符切分(Character segmentation)——將文字分割成一個個單一的字符;
? ? ? 3.字符分類(Character classification)——確定每一個字符是什么。
?
隨機梯度下降算法為:首先對訓練集隨機“洗牌”,然后: Repeat (usually anywhere between1-10){ 隨機梯度下降算法最后不會收斂于某一個最優值,而是會在最優值邊緣來回震蕩,在大多數的隨機梯度下降算法中,學習速率α一般是保持不變的,若你確實想要隨機梯度算法收斂于全局最優值,可以隨時間的變化減小學習速率α的值。 小批量梯度下降算法是介于批量梯度下降算法和隨機梯度下降算法之間的一個算法。小批量梯度下降算法在有好的向量化實現時,比隨機梯度下降算法好,在這種情況下,10個樣本求和可以使用一種更向量化的方法實現,允許部分并行計算10個樣本的和。 假設有一個連續運行的網站,則在線學習的流程如下:,算法之所以沒有使用,是因為在線學習機制將某一樣本完之后,就丟棄這個樣本。在線學習系統能夠隨著時間的變化,參數θ不斷變化和更新,會逐漸調適到最新的用戶群體所應該體現出來的參數。 映射簡化和數據并行:將數據集分配給不多臺計算機,讓每一臺計算機處理數據集的一個子集,然后將計所的結果匯總在求和,或可以在一臺計算機上實現Map Reduce,即利用現代計算機的多核系統,將訓練樣本分成幾份,每一個核處理其中一部分,也能實現并行的效果,而且因為數據始終還是在一臺機器上運行的,因此不存在網絡延遲的影響。 滑動窗口是一項用來從圖像中抽取對象的技術,也被用于文字識別。 有關獲得更多數據的幾種方法:人工數據合成;手動收集、標記數據;眾包。 在機器學習的應用中,通過上限分析,能夠知道哪一部分最值得花時間和精力去改善。
總結
以上是生活随笔 為你收集整理的机器学习(Machine Learning)- 吴恩达(Andrew Ng)-学习笔记 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。