1. 程式人生 > 其它 >機器學習之常見演算法描述

機器學習之常見演算法描述

1、線性迴歸演算法
1.1演算法概述
  迴歸就是用一條曲線對資料點進行擬合,該曲線成為最佳擬合曲線,這個擬合過程稱為迴歸。當該曲線為一條直線時,就是線性迴歸。
  線性迴歸一般用來做連續值的預測,預測的結果是一個連續值。
  在訓練學習樣本時,需要特徵向量X和樣本的實際結果Y,所以線性迴歸屬於監督學習裡的迴歸模型。
1.2演算法步驟
  建立模型->定義損失函式->判斷資料量和特徵值大小->大用梯度下降法,小用最小二乘法->引數求解->模型校驗->經濟預測

2、邏輯迴歸演算法
2.1演算法概述
  背景:一般情況下,使用線性迴歸演算法預測連續值的結果,根據結果設定閾值即可。但在很多實際情況中,需要學習的分類資料並不精確,如果仍然使用線性迴歸的方法,會使分類器的準確率偏低。
  定義:是一種廣義的線性迴歸分析方法,在線性迴歸的基礎上套用一個邏輯函式

,對事件發生的概率進行預測。線上性迴歸中得到一個預測值,然後該值通過邏輯函式進行轉換,將預測值變成概率值,再根據概率值實現分類。
2.2演算法步驟
  載入資料檔案->資料預處理,生成多項式特徵(多項式擬合時,多邊形邊界需要將特徵轉為多項式轉換,進而更改樣本的分佈狀態,使之能擬合更復雜的邊界)->初始化引數,構建損失函式->用梯度下降演算法優化損失函式,確定引數->構建預測函式,求概率值(sigmoid函式等)->根據概率值畫決策邊界

3、K最近鄰演算法KNN
3.1演算法概述
  由某個樣本K個鄰居的類別來推斷出樣本的類別(近朱者赤近墨者黑)。
  由於KNN方法主要靠周圍有限的鄰近樣本,而不是靠判別類域的方法來確定所屬類別,因此對於類域的交叉或重疊較多的待分樣本來說,KNN更加合適。
3.2演算法步驟
  資料預處理->初始化最近鄰訓練元組(大小為K的優先順序佇列)->遍歷訓練元組計算距離->調整優先佇列->計算誤差率->設定不同K值重新訓練->取誤差率最小的K值

4、PCA降維演算法
4.1演算法概述
  掌握事物主要矛盾的統計分析方法,從多元事務中解析出主要影響因素,揭示事物本質,簡化複雜問題。
  PCA將資料投射到一個低維子空間實現降維

,同時儘可能地保留更多變數。
4.2演算法步驟。
  讀入資料矩陣->去除平均值(中心化)->計算協方差矩陣->求特徵值和特徵向量->對特徵值進行排序->保留大到小N個特徵向量->計算降維後的資料矩陣
  注:
    兩個矩陣相乘的意義是:將右邊的矩陣中的每一列列向量變換到左邊矩陣中每一行行向量為基所表示的空間中去。--->降維
    如何選擇這個方向(基)以保留最多的原始資訊?投影后的投影值儘可能分散--->分散程度用方差(越大)表示。
    對於更高維,首先找到一個方向使得投影后方差最大,這樣就完成了第一個方向的選擇,繼而選擇第二個投影方向(兩個欄位儘可能表示更多的資訊,不希望他們之間存在相關性)--->協方差為0
,兩個欄位完全獨立--->兩個方向正交
    優化目標:將一組n維向量降為K維,選擇K個單位正交基,使得原始資料變換到這組基上後,各欄位兩兩間協方差為0,而欄位的方差儘可能的大(在正交的約束下,取最大的K個方差)
    將方差和協方差統一到一起--->XXT,(協方差矩陣,對角線是個欄位方差,其他是欄位協方差)--->將協方差矩陣對角化(除對角線外的元素化為0,對角線上將元素按大小從下到上排列)

5、k-means演算法
5.1演算法概述
  基於樣本間相似性度量的聚類演算法。即將資料點到原型的某種距離作為優化的目標函式。
5.2演算法步驟
  選擇K個聚類中心->計算每個物件與K箇中心物件的距離,並把它歸到距離最近的簇中->計算每個簇的新中心
  初始聚類中心的選擇:
  1.憑經驗、
  2.資料隨機分為K類,計算每類中心、
  3.用相距最遠的K個特徵、隨機從n個模式中取出一部分模式用層次聚類法聚成K類,以每類中心、
  4.求以每個特徵點為球心,某一正數r為半徑的球形區域中的特徵點個數,選取密度最大的特徵點為第一個初始聚類中心,然後在與該中心大於某個距離d的那些特徵點中選擇另一個具有最大密度的特徵點作為第二個初始聚類中心,直到選擇K個
  K的調整:
  1.按先驗知識、
  2.讓K從小到大逐步增加,目標函式隨K的增加而單調減少,但速度在一定時候會減緩,曲率變化最大的那個點對應最優聚類數。

6、支援向量機演算法SVM
6.1演算法概述
  用來解決分類問題,構造直線、平面或者超平面的模型將資料分隔開。“機”指演算法,“支援向量”指資料集中某些點位置比較特殊,最靠近劃分直線上面的點,影響直線的最終位置。
6.2演算法步驟
  給定訓練集->構造最優化問題->求解最優化的所有ai->計算引數w,b->得出超平面和分類決策函式
  注:
    對一個數據點進行分類,超平面離資料點的間隔越大,分類的確信度也越大。--->幾何間隔最大
6.3非線性支援向量機與核函式
  非線性型別通常在二維平面不可分,需要通過一個函式將原始資料對映到高維空間,從而使得資料在高維空間很容易區分,實現這一目標的函式稱為核函式
  線上性不可分的情況下,支援向量機首先在低維空間中完成計算,然後通過核函式將輸入空間對映到高維特徵空間,最終在高維特徵空間中構造出最優分離超平面。
  常見核函式:多項式核、高斯核、線性核

7、AdaBoost演算法(自適應增強)
7.1演算法概述
  自適應在於:前一個基本分類器分類錯誤的樣本的權重會得到加強,加權後的全體樣本再次被用來訓練下一個基本分類器。同時在每一輪訓練中加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率或達到預先指定的最大迭代次數時停止訓練。
  想要實現“三個臭皮匠頂個諸葛亮”的效果,企圖用多個分類能力較弱但是不斷優化的分類器組成一個比現存任一強分類器分類能力更強的集合分類器。
7.2演算法步驟
  載入資料集->K次迭代{初始化權值分佈->訓練弱分類器Gm->計算弱分類器在資料集上的分類誤差率->計算弱分類器在最終分類器的權重(誤差率越小權重越大)->更新訓練資料集的權值分佈(增大誤分類樣本的權值減少正確分類樣本的權重)}->組合m個弱分類器

8、決策樹演算法
8.1演算法概述
  在已知各種情況發生概率的基礎上,通過構成決策樹來求取淨現值的期望值大於等於0的概率,評價專案風險。
  決策樹中每一個節點會響應輸入值中某一變數值,該節點的邊所指向的子節點指示輸入值可能產生新的響應值,每一個葉節點可以代表輸入值所對應的一種最終輸出值。
  決策樹是一類廣泛應用的一種樹狀分類器,在樹的每個節點上通過選擇最優的分裂特徵不停地進行分類,直到到達建樹的停止條件,比如葉節點裡的資料都屬於同一個類別。決策樹確定一條由根節點到葉節點裡的資料都屬於同一個類別。當輸入待分類樣本時,決策樹決定一條由根節點到葉節點的唯一路徑,該路徑葉節點的類別就是待分類樣本的所屬類別。
8.2演算法步驟
  生成演算法有多種,如:ID3、C4.5、C5.0等
  載入資料檔案->計算資料集S每個屬性的熵->S不為空{選取資料集S中熵最小(或資訊增益最大)的屬性->從S中剔除該屬性->新增該屬性作為作為決策樹的節點}
8.3重要概念
  熵:每條資訊中所包含資訊的平均量,是不確定性的度量
  資訊增益:是資訊熵的變形,衡量一個屬性分割槽資料樣本的能力(資訊增益越大,決策樹越簡潔)。

9、高斯混合模型演算法
9.1演算法概述
  是一種廣泛的聚類演算法,通過對多個高斯模型做線性組合,對樣本資料的概率密度分佈進行估計,以達到聚類的目的。
  使用高斯分佈作為引數模型,並使用期望最大化EM演算法進行引數評估,就得到資料在各個類上的概率值,最後選取概率值最大的類作為估計結果。
9.2演算法步驟
  構建高斯混合模型->初始化模型數目K(對應K個聚類),對每個模型設定初始值Πk(第k個模型的權重即第k類被選中的概率)、Ck(協方差矩陣->對數似然函式不收斂{估計步驟E,計算後驗概率->最大化步驟M,更新引數->計算模型的對數似然函式}->得到最終分類結果
9.3初始化引數
  1.Ck設定為單位矩陣,Πk=1/K,均值μk設為隨機數
  2.由k-means聚類演算法對樣本進行聚類,得到K值,然後利用各類的均值作為μk,並計算協方差矩陣Σk,Πk取各類樣本佔樣本總數的比例。


10、隨機森林演算法
10.1演算法概述
  隨機森林以決策樹為基分類器,它包含多個由Bagging整合學習技術訓練得到的決策樹,當輸入待分類的樣本時,最終的分類結果由單個決策樹的輸出結果投票決定。
  常規的分裂過程是在所有特徵中進行篩選,特徵之間的關聯性可能會導致泛化能力不足。隨機森林在決策樹構建過程中引入了隨機特徵子空間的概念,其主要通過隨機選取多個特徵作為子空間供決策樹在選取最優特徵時用於分裂樹節點。
10.2演算法步驟
  輸入待分類樣本->使用Booststrap方法將樣本劃分為k個樣本->構建K個決策樹{第m個Booststrap訓練樣本->隨機特徵子空間->CART演算法建樹}->投票決定多個決策樹的輸出結果
10.3構建資料集
  從原始的資料集中使用Booststrap(有放回)方法隨機抽取K次樣本,生成K個數據集。

11、樸素貝葉斯演算法
11.1演算法概述
  基於概率論的分類演算法,通過考慮特徵概率來預測分類。該演算法採用了“特徵屬性獨立性假設”的方法,即對已知類別,假設所有特徵屬性相互獨立。
  對於給定的訓練資料集,首先基於特徵屬性獨立假設學習輸入\輸出的聯合概率分佈,然後基於此模型,對給定的輸入,利用貝葉斯定理估計後驗概率最大的輸出。
11.2演算法步驟
  確定特徵屬性xj,獲取訓練樣本集合yi->計算各類別的先驗概率P(Y=Ck,類別Ck在訓練樣本集中的頻率)->計算各類別下各特徵屬性xj的條件概率P(Xj=xj|Y=Ck,引入了拉普拉斯平滑)->計算各類別的後驗概率P(Y=Ck|X=x)=P(Xj=xj|Y=Ck)*P(Y=Ck)/P(X=x)->後驗概率最大項作為樣本所屬類別
11.3計算條件概率
  1.xj是離散值:假設xj符合多項式分佈,條件概率是在樣本類別Ck中特徵。xj出現的頻率。
  2.xj是稀疏二項離散值:假設xj符合伯努利分佈,xj出現記為1,不出現記為0.
  3.xj是連續值:通常取xj的先驗概率為正太分佈,即在樣本類別Ck中,xj的值符合正太分佈。

12、隱馬爾可夫模型演算法HMM
12.1演算法概述
  馬爾可夫連是指一個離散變數的隨機過程,其一系列狀態之間的聯絡通過一個狀態轉移概率矩陣來描述。狀態之間的轉變具有相應的轉移概率,並且狀態轉移概率僅僅依賴於當前的狀態,與之前的狀態無關。
  HMM是一個雙重隨機過程:一個隨機過程是具有有限狀態的馬爾可夫鏈,用來描述狀態的轉移;另一個隨機過程描述每個狀態和觀察值之間的統計對應關係。
  隱馬爾可夫模型中的馬爾可夫鏈是隱藏的,無法直接通過狀態序列得到,但是每一個狀態都有一個觀察值,假設每個觀察值只依賴於此刻馬爾可夫鏈的狀態,與其他因素無關。
12.2演算法步驟
  給定模型的λ=(A,B,Π)和觀測序列長度T->按照初始狀態分佈Π產生狀態i1->迴圈T次{按照狀態it的觀測概率分佈生成ot->按照狀態it的狀態轉移概率分佈產生狀態it+1}->生成觀測序列O=(O1,O2...OT)
  A是狀態轉移矩陣,B是觀測概率矩陣,Π是初始狀態概率向量

13、BP神經網路演算法
13.1演算法概述
  通常指基於誤差反向傳播演算法的多層前向神經網路,由訊號的前向傳播誤差的反向傳播兩個過程組成.
13.2演算法步驟
  初始化權值和偏置->讀取訓練資料->誤差不達標{{前向傳播->計算期望輸出與實際輸出的誤差}->反向傳播,調整權值和偏置}
  權值調整量=學習率*區域性梯度*上一層輸出訊號

14、卷積神經網路演算法
14.1演算法概述
  由一個或多個卷積層、池化層和最後的全連線層組成。
  卷積神經網路通過對影象進行區域性掃描,提取其中的特徵,再經過多層處理,增加所提取的特徵的感受範圍。另外,每次完成特徵提取後通常會按照特定的規則消去資料,這樣既降低了所要計算的引數規模,又增加了網路的擬合能力。
14.2結構元素介紹
  1.卷積層:卷積運算的目的是提取輸入的不同特徵,第一層卷積層可能只提取一些低階的特徵,如邊緣、線條和角等層級,更多層的網路能從低階特徵中迭代提取更復雜的特徵。
  2.池化層:是一種形式的下采樣。池化層會不斷地減小資料的空間大小,因此引數的數量和計算量也會下降,這在一定程度上也控制了過擬合。
  3.全連線層:每一個神經元都與上一層的所有神經元相連,用來把前邊提取到的特徵綜合起來。在卷積神經網路中全連線層起到將通過卷積層與池化層學習到的分散式特徵表示對映到樣本標記空間的作用。卷積神經網路中的全連線層可由卷積操作實現。
  4.損失函式層:用於決定訓練過程如何來“懲罰”網路的預測結果和真實結果之間的差異,通常是網路的最後一層。各種不同的損失函式應用於不同型別的任務。

15、遞迴神經網路演算法
15.1演算法概述
  遞迴神經網路有兩種,一種是基於時間的遞迴神經網路,常被用來進行時間序列預測,還有一種是基於結構的遞迴神經網路。
  遞迴神經網路目前比較熱門的是RNN變體長短期記憶模型。可以把RNN看成一種迴路,在迴路中,神經網路反覆出現,可以將它看作人的大腦中某一神經元在不同時間段的不同狀態,隨時間的推移,它所具備的資訊不斷變化。
  RNN的變體:LSTM、完全遞迴網路、Hopfield網路,回聲狀態網路、雙向網路

參考文獻:

趙涓涓,強彥.Python機器學習[M].北京。:機械工業出版社,2019.6