1. 程式人生 > >機器學習基本演算法

機器學習基本演算法

機器學習

從廣義上說,機器學習就是一種賦予機器自我學習的能力,從實踐意義來說機器學習就是利用資料,使用機器計算出模型,然後通過模型來預測資料。

在機器學習的過程中最重要的就是資料,在alphago和李世石 的圍棋比賽中,其中AlphaGo就是通過自己和自己下棋,總結資料,在經過千萬局的資料經驗後才和李世石達到了同等水平。機器學習又分為監督學習和無監督學習,監督學習就是將樣本資料,和正確的結果告訴計算機,計算機通過學習這些資料後,總結規律;當給樣本資料給計算機後,計算機就是通過自己模型將預測結果輸出。無監督學習恰恰相反,只給計算機樣本資料,沒有給出正確的輸出,讓計算機自己總結其中的規律。

機器學習的演算法主要有KNeighborClassifer、LinearRegression、Logistic、SVM、DecisionTree、貝葉斯、這些演算法的原理不盡相同,但都是監督學習的範疇。

Kmeans無監督學習

K-近鄰演算法的理解

Knn 英語全拼是K nearest neighbor,k個最近的鄰居,knn主要採用測量不同特徵值之間的距離方法進行分類,主要使用資料的範圍為數值型和標稱型。

knn主要採用了歐幾里得的距離計算公式,衡量多維空間中各個點的絕對距離xi-yi的平方和然後開根號。在knn演算法中k也是起了關鍵的作用,假設k等於3,就將一個數據歸類到了另一類,k等於5那麼就將這個資料歸類到另一類,其實knn的本質是基於資料統計的方法。再使用的時候需要匯入knn的模組,建立knn物件,將資料交給knn進行訓練,之後輸入測試資料,knn返回預測結果。

線型迴歸LinearRegression

分類處理的資料大多數是離散預測,而對於連續的值型別的可以利用迴歸進行預測。

最小二乘法,通過最小化誤差的平方尋找資料的最佳匹配。利用最小二乘法可以簡單的求得未知的資料,並使得這些求得的資料和實際的資料之間誤差的平方和最小。再線型迴歸中,正是對資料進行最小二乘法 的計算,對資料進行預測

w =(X.TX)^-1 X.Ty

過擬合,欠擬合、L2正則化、L1正則化、泛化能力????

過擬合 :模型把訓練資料學的“太好了”,導致把資料中的潛在的噪聲資料也學到了,測試時不能很好的識別資料,模型的泛化能力下降 在這裡插入圖片描述 欠擬合:模型沒有很好的捕捉到資料特徵,不能夠很好的擬合數據 在這裡插入圖片描述 上左圖:沒有很好的擬合數據,出現欠擬合;上右圖:很好的擬合了資料

正則化:正則化可防止模型過擬合,在訓練中資料往往會存在噪聲,當我們用模型去擬合帶有噪聲的資料時,通過假如正則化平衡模型複雜度和損失函式之間的關係,防止模型過擬合,可定義如下公式: 在這裡插入圖片描述 泛化能力:指機器學習演算法對新鮮樣本的適應能力。學習的目的是學到隱藏在資料背後的規律,對具有同一規律的學習集以外的資料,經過訓練的網路也能給出合適的輸出,該能力為泛化能力。

防止過擬合

資料集擴增

可以說資料集擴增是防止過擬合最好最根源的方式,有時候擁有更多的資料勝過一個好的模型,過擬合既是在模型訓練時對訓練資料學習的太好了,舉個例子如果我們訓練一個東西是不是葉子,如果資料集的葉子都是鋸齒狀,當模型過擬合時便會認為所有的葉子都是鋸齒狀的,此時模型再好也不如往資料集中增強新的非鋸齒狀的葉子,便會防止出現過擬合。 如何獲取更多的資料: (1) 從資料來源頭獲取更多的資料 (2) 根據當前資料集估計資料分佈引數,使用該分部產生更多的資料 (3) 資料增強,通過一定規則在現有資料集的基礎上擴充資料

L1正則化(L1範數):權重向量w的絕對值之和 L2正則化(L2範數):權重向量w的平方和再求平方根,歐幾里得範數,其中w代表模型的引數,k則代表了模型引數的個數 L1正則化和L2正則化的區別 L1正則化和L2正則化都會使得權重矩陣變小,即權重w變小,因此都具有防止過擬合的能力,但不同是L1正則化更易產生係數的權重矩陣,即權重w變小為0;L2正則化只會是w變小但不會出現大量為0現象

嶺迴歸Ridge

添加了L2正則化規則

領回歸的本質和線型迴歸類似,主要用於處理特徵多於樣本數的情況,現在也用於在估計中加入偏差,從而的到更好的估計。領回顧的本質就是在矩陣X.TX的基礎上加入lambda I從而使得矩陣變的非奇異,進而可以對w求逆矩陣,其中I就是一個mxm的單位矩陣

在這裡通過引入lambda來限制w的和,通過引入該懲罰項,能夠減小不重要的引數這種技術在統計學中叫縮減,縮減方法可以去掉不重要的引數,因此可以更好的理解資料,此外與簡單的線型迴歸相比,縮減法能取得更好的預測效果

領回歸加了二階正則項的最小二乘,主要適用於過擬合嚴重或者個變數之間存在多重共線性的時候,嶺迴歸是有一定與真實值輸出結果的誤差,是為了讓每個模型的輸出結果與所有模型平均值(期望)之間的誤差減小

嶺迴歸可以解決特徵數量比樣本數量多的問題

變數之間存在共線性(最小二乘迴歸的到的係數不穩定,方差很大) 處理高度相關的資料

多重共線性 多重共線性(Multicollinearity)是指線性迴歸模型中的解釋變數之間由於存在精確相關關係或高度相關關係而使模型估計失真或難以估計準確

Lasso迴歸

添加了L1正則化規則,在原始的迴歸函式後面加上一個L1正則化項,即所有權重w的絕對值的和,乘以λ/n,當w為正時,更新後的w變小。當w為負時,更新後的w變大——因此它的效果就是讓w往0靠,使網路中的權重儘可能為0,當權重w為0時候,說明了這個權重在資料中不重要。屬性越多,就會考慮的方面越多,就容易出現過擬合,將不重要的權重變為0,這樣的相當於減小了網路複雜度,防止了過擬合。

邏輯斯蒂迴歸Logistics

利用邏輯斯蒂迴歸進行分類的主要思想是根據現有的資料對分類邊界建立迴歸公式,以此進行分類這裡的迴歸表示要找到最佳擬合引數集。

logistic Regresssion雖然名字中帶有迴歸,但實際是一種分類的方法,用於二分類問題(即輸出只有兩種)首先需要先找到一個預測函式(h),顯然,該函式的輸出必須是兩類值(分別代表兩個類別),所以利用了Logistic函式(或稱為Sigmoid函式),函式形式為:σ(z) = 1/1+e^-z,將線型迴歸的fn帶入到z中得到預測函式。

然後構造損失函式cost函式和j(θ)基於最大似然估計推導得到,通過計算找到J(θ)的最小值,此時說明預測函式越準確

求J(θ)的最小值可以使用梯度下降法,根據梯度下降法可得θ的更新過程:

決策樹

決策樹是一個樹狀結構(可以是二叉樹或非二叉樹)。其每一個非頁節點表示一個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出。每個葉節點存放了一個類別。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達子節點,將葉子節點存放的類別作為決策結果

劃分原則:將無序的資料變的有序

通過使用ID3演算法,ID3演算法就是在每次需要進行分裂的時候,計算每個屬性的增益,每個屬性的增益就可以通過計算屬性的熵進行比較,選擇其中增益率最大的屬性進行分裂,在按照這個思想遞迴使用這個方法計算位元組點的分裂屬性,最終就可以得到整個決策樹

區別:不同於邏輯斯蒂迴歸和貝葉斯演算法,決策樹的構造過程不依賴領域知識,它使用屬性選擇度來選擇將元組最好的劃分成不同的類的屬性。所謂決策樹的構造就是進行屬性選擇度量確定各個特徵之間的拓撲結構

貝葉斯

貝葉斯是用來描述兩個條件概率之間的關係,比如 P(A|B) 和 P(B|A)。按照乘法法則,可以立刻匯出:P(A∩B) = P(A)P(B|A)=P(B)P(A|B)。如上公式也可變形為:P(B|A) = P(A|B)*P(B) / P(A)。

假設在一個事件中有許多的條件能影響事件的預測結果,那麼資料之間的耦合度比較高,例如天氣因素和星期幾,天氣的原因就要和星期幾一塊進行統計,一天也就只能統計一個數據;假設這兩個資料是獨立的,這樣一天也就可以統計兩個資料。於是就假設這些因素之間相互獨立,,樸素就是這個原理。樸素貝葉斯就是將每個事件進行獨立,通過計算每個事件 的概率在將資料概率帶入到貝葉斯公式中進行概率的計算,得出概率較高的事件的可能性。

  • 貝葉斯模型
    • 高斯分佈樸素貝葉斯 高斯分佈就是正態分佈,用於一般的分類問題
    • 多項式分佈樸素貝葉斯 適用於文字資料(特徵表示次數,列入某個詞語的次數)
    • 伯努利分佈樸素貝葉斯 【用途】適用於伯努利分佈,也適用於文字資料(此時特徵表示的是是否出現,例如某個詞語的出現為1,不出現為0)

隨機森林

隨機森林就是由多個決策樹組成的

Bagging(套袋法)

bagging的演算法過程如下:

  1. 從原始樣本集中使用Bootstraping方法隨機抽取n個訓練樣本,共進行k輪抽取,得到k個訓練集。k就為決策樹的個數(k個訓練集之間相互獨立,元素可以有重複)
  2. 對於k個訓練集,我們訓練k個模型(這k個模型可以根據具體問題而定,比如決策樹,knn等)
  3. 對於分類問題:由投票表決產生分類結果;對於迴歸問題:由k個模型預測結果的均值作為最後預測結果。(所有模型的重要性相同)

支援向量機SVM

svm支援向量機,主要針對小樣本資料、非線性高維模式識別中表現出許多特有的優勢,能解決神經網路不能解決的學習問題,而且有很好的泛化能力

支援向量機就是通過支援向量運算的分類器,其主要原理是

線型分類中,在訓練資料中,每個資料都有n個的屬性和一個二類類別標誌,我們可以認為這些資料在一個n維空間裡。我們的目標是找到一個n-1維的超平面(hyperplane),這個超平面可以將資料分成兩部分,每部分資料都屬於同一個類別。 其實這樣的超平面有很多,我們要找到一個最佳的。因此,增加一個約束條件:這個超平面到每邊最近資料點的距離是最大的。也成為最大間隔超平面(maximum-margin hyperplane)。這個分類器也成為最大間隔分類器(maximum-margin classifier)。 支援向量機是一個二類分類器。

非線性分類中SVM的一個優勢是支援非線性分類。它結合使用拉格朗日乘子法和KKT條件,以及核函式可以產生非線性分類器。

SVM的目的是要找到一個線性分類的最佳超平面 f(x)=xw+b=0。求 w 和 b。

首先通過兩個分類的最近點,找到f(x)的約束條件。

有了約束條件,就可以通過拉格朗日乘子法和KKT條件來求解,這時,問題變成了求拉格朗日乘子αi 和 b。

對於異常點的情況,加入鬆弛變數ξ來處理。

非線性分類的問題:對映到高維度、使用核函式。

K均值演算法(K-means)聚類

k-means演算法屬於一種無監督學習的範疇,自動將相似的物件歸到同一族中,主要通過不斷的取理種子最近均值的演算法。k-means的原理就是首先從資料中選擇k個物件作為初始聚類中心,計算每一個聚類物件到聚類中心的距離來劃分,計算過之後,聚類中心點移動到最優位置;再次計算每個聚類中心,計算標準的測度函式,直到達到最大迭代次數,則停止,確定最優的聚類中心。在確定最優的距離中心距離使用的演算法就是歐式距離,差的平方和的平方根進行計算,比較,最終得到最優距離。

k-means現在好多都應用於對文字資訊進行分類,例如新聞的分類,這樣可以大大減少人工成本。

有多長時間去熟悉工作流程

特徵工程

特徵是指從資料中抽取出來對結果有用的資訊,特徵工程是使用專業背景和技巧處理資料,使得特徵能在機器學習的演算法上發揮更好的作用

特徵工程的重要環節就是對資料進行清洗,將不真實的資料進行替換或者刪除,或者通過組合或者統計屬性進行判定,例如一個人的資訊備註國家為美國,但是經常使用中國的ip進行登入,這就可以將這個人的歸屬地判定為中國。

在資料進行取樣時,有時會遇到不同樣本數量不均衡的情況,例如電商使用者點選、買過的商品和沒有點選和買過得商品。大多數的模型對正負樣本是比較敏感的,比如邏輯斯蒂迴歸,如果有99個正樣本,1個負樣本,那預測時全部預測正,準確率也可以達到99%,這不能反映模型的好壞。對於這種問題,就需要分情況進行採取操作,當樣本數量很大的時候,就可以將資料進行切片處理,使得樣本數量均衡;資料量不大的情況就需要採集跟多的資料,或者採用oversampling,增加資料量少的一方,再或者更改loss function,例如增加樣本量大的樣本懲罰權重。

機器學習評價指標

AUC

auc是一個模型評價指標,用於二分類模型的評價。auc是area under curve(曲線下的面積)這條曲線就是ROC曲線,roc稱為受試者工作特徵曲線,通過計算兩個指標的值tpr,fpr  (True Positive Rate=TP/(TP+FN),代表將真實正樣本劃分為正樣本的概率  False Positive Rate=FP/(FP+TN),代表將真實負樣本劃分為正樣本的概率 )將tpr作為縱軸,fpr作為橫軸作出roc曲線

在機器學習中很多模型對於分類問題的預測結果大多是概率,即屬於某個類的概率,如果計算準確的話,就將這個概率轉化為類別,這就需要設定一個閾值,概率大於某個閾值就屬於一類,概率小於等於閾值就屬於另一類,而這個閾值就直接影響了準確率的計算。AUC就是將這幾個閾值取平均值,在應用到分類中,這樣得出的結論是要比準確率評價中肯。

TensorFlow深度學習

Tensor(張量)意味著N維陣列,Flow(流)意味著基於資料流圖的計算,TensorFlow為張量從流圖的一端流動到另一端計算過程。TensorFlow是將複雜的資料結構傳輸至人工智慧神經網中進行分析和處理過程的系統。

支援CNN(卷積神經網路)、RNN(迴圈神經網路)和LSTM(長短期記憶網路)演算法,是目前在 Image,NLP 最流行的深度神經網路模型

TensorFlow是用資料流圖技術進行數值的計算,在有向圖中,節點通常代表數學運算,邊表示節點之間的某種聯絡,它負責傳輸多維資料(Tensors)。 在這裡插入圖片描述 線性迴歸,使用TensorFlow進行線型迴歸的資料預測中,建立tensorflow損失函式cost(主要使用最小二乘法)以及梯度下降優化器optimizer(梯度下降法),使用forin進行迭代,最後w和b的值接近最佳

梯度下降,可以將其理解為斜率,要求一個函式的最小值,就可以對其求導,當導數為0 的時候,求得的解就是最小值時的解,給這個梯度一個步進值和初始值,就開始求導,當導數越接近0梯度之間的差值就越小,當差值幾乎為0時,就可以得到最小的值

邏輯斯蒂迴歸,使用的有softmax、交叉熵、

softmax:將數值放入到帶入到以自然底數e為底的函式中,將資料進行歸一化,同時所有的和為1

在這裡插入圖片描述