1. 程式人生 > >演算法理論基礎筆記

演算法理論基礎筆記

一. 降維

目標

  1. 減少輸入的數目
  2. 剔除噪聲資料
  3. 提高已有演算法的效能,減少計算開銷

1. PCA

按照資料方差最大方向調整資料的主成分分析法

2. SVD

矩陣分解技術的一種,奇異值分解法

1. 主成分分析法(PCA)

  1. 旋轉座標軸
    1. 第一個座標軸是資料最大方差所在的方向
    2. 第二個座標軸與第一個座標軸正交,方差次大
    3. 重複旋轉座標軸,次數為資料中特徵數量
    4. 旋轉次數越多,所得方差越小
    5. 方差越大表明越能給出資料越最重要的資訊
    6. 當方差和變化很小的時候,捨棄餘下座標軸
  2. 資料集矩陣實現
    1. 針對協方差矩陣做特徵值分析
    2. 特徵值越大,資料方差越大
    3. linalg.eig()方法可以計算協方差矩陣的特徵值

2. SVD(奇異值分解)

  1. 矩陣分解
    1. 一個數據集矩陣m*n可以分解為三個矩陣,分別為m*m,m*n,n*n
    2. 分解過程為svd,分解後的m*n矩陣只包含對角線元素且降序排列,其他位置均為0,這些元素就叫奇異值
    3. 奇異值越大,越能反映資料重要資訊
    4. 計算前幾個奇異值,當其能反映整個矩陣的90%以上資訊時,捨棄後邊的奇異值
  2. 推薦引擎
    1. 對資料集矩陣SVD處理後可應用於推薦引擎
    2. 相似度的計算通常為歐氏距離,皮爾遜相關係數和餘弦相似度
    3. 對計算結果處理為[0,1],0表示無關,1表示相同
    4. 評價一個推薦引擎的好壞通過最小均方根誤差RMSE實現,RMSE值表示與真實結果的差距,越小越好

二. 分類

1. K-近鄰

  1. 有監督學習
  2. 存在一個訓練資料集,每條資料存在標籤即所屬分類已知
  3. 將訓練資料集按9:1劃分訓練:測試資料,驗證演算法錯誤率
  4. 輸入沒有標籤的完整資料,根據每個特徵與訓練資料集中對應特徵計算相似度(歐氏距離,皮爾遜相關係數,餘弦相似度等)
  5. 提取相似度最高的前k條資料,對特徵值進行歸一化處理
  6. 返回前n個最相似的標籤作為輸入資料的標籤

2. 決策樹

  1. 類似流程圖,終止節點即為分類結果
  2. 首先測量資料集中的資料不一致性,稱為資訊熵
  3. 資訊熵越大表明資料越混亂
  4. 得到熵最小的分類方案
  5. 遞迴計算熵,構建一顆完整的樹形流程圖

3. 樸素貝葉斯

  1. 基於概率論,P(A|B)P(B)=P(B|A)P(A)
  2. 通過已發生事件的概率推測未發生事件發生的概率
  3. 資料集中一個詞出現的概率與其他詞無關,這是一種獨立性假設,也是樸素的含義
  4. 根據獨立性假設,對一篇已知類別的訓練文件計算一個詞出現的次數佔總詞數量的比例,即為該詞出現在該文件的概率
  5. 最終根據概率將新文件放入相應的類別

4. Logistic迴歸

  1. 根據現有資料對分類邊界線建立迴歸公式
  2. 一種最優化演算法,即最佳擬合
  3. 尋找一個非線性函式Sigmoid的最佳擬合引數
  4. 梯度上升法,如果要找一個函式的最大值,最好沿著梯度去找
  5. 即在x軸和y軸上分別偏導後等於零求出駐點獲取極值
  6. 如果加法變為減法,則為梯度下降法,求最小值

5. SVM支援向量機

  1. 現成的分類器,原理難以理解
  2. 輸出一個二值決策結果,泛化的錯誤率較低,可推廣性好
  3. 核函式是將非線性問題轉換為高維空間下的線性問題來求解

6. AdaBoost元演算法

  1. 元演算法是對其他演算法進行組合的一種方式
  2. 隨機森林是另一種整合多個演算法的方式
  3. 通過將單層決策樹作為弱學習器,通過迭代增加權重,即首次權重相同,迭代後根據結果提高正確率高的分類器的權重

三. 迴歸

目的

  1. 根據連續型資料預測目標值
  2. 構建迴歸方程,計算迴歸係數
  3. 迴歸係數是一組向量,因為輸入資料也是向量

分類

  1. 線性迴歸
  2. 非線性迴歸

1. 線性迴歸

適用於

  1. 數值型
  2. 標稱型
  3. 必須是線性資料,即輸入項與常量做乘積返回輸出,而非輸入項間運算

最小誤差法

  1. 通過迴歸方程計算結果與實際值的誤差,調整迴歸係數
  2. 誤差有正負之分,因此使用平方誤差來逼近最小誤差下的迴歸係數

區域性加權線性迴歸

  1. 為待預測點附近的點賦予不同的權重
  2. 在子集上做最小均方差進行迴歸
  3. 為了確定權重,通常採用高斯分佈的方法,即越靠近待預測點權重越大

特徵值多於樣本點

  1. 此時不可用線性迴歸
  2. 由於求矩陣的逆時,非滿軼矩陣會出問題
  3. 需要通過嶺迴歸或lasso法縮減係數

嶺迴歸

  1. 在求逆矩陣的時候,新增一個對角線為1的單位矩陣,按給定的係數做加法,以滿足求逆的條件
  2. 增加的單位矩陣中對角線為1,其他為0,形狀類似嶺

lasso法

  1. 加入約束條件,向量絕對值的和不大於給定的係數
  2. 在係數足夠小時,迴歸係數會被縮減到0

權衡偏差與方差

  1. 偏差是指模型預測值與真實知道差異
  2. 方差是指模型直接的差異
  3. 二者的調整對於迴歸的效果有重大影響

2. 樹迴歸(非線性迴歸)

與線性迴歸的區別

  1. 線性迴歸建立的模型需要擬合所有的樣本點
  2. 當特徵值很多且關係複雜時,構建全域性模型的複雜度太高
  3. 樹迴歸就是將資料切分,如果切分後仍然過於複雜則繼續切分,最終形成樹形結構依次進行迴歸

CART(分類迴歸樹)

  1. 可用於分類和迴歸兩種演算法
  2. 二元切分法(如果特徵值大於給定值就分左,否則分右)
  3. 這樣保證了可以直接對連續型資料構建樹
  4. 不使用香濃熵來衡量資訊混亂度
  5. 為衡量混亂度,首先計算所有資料的均值,再計算每條資料與均值的差值,用平方或絕對值描述差值,即總方差
  6. 總方差=均方差*樣本點個數

剪枝

  1. 樹節點過多代表過擬合
  2. 降低樹的複雜度稱為剪枝
  3. 預剪枝,即人為新增終止條件,預先結束樹的構建,依據是每次的預測結果,這種方法效率低下
  4. 後剪枝,劃分資料集為訓練集和測試集,首先建立複雜的樹,再用測試集判斷葉節點是否降低測試誤差,降低了則合併葉子節點

四. 無監督學習

  1. 從一堆資料中能發現什麼
  2. 如何描述一堆資料
  3. 與分類迴歸不同,沒有輸入和輸出,只有一堆資料本身

1. 聚類(K-均值)

名詞解釋

  1. 聚類就是把資料集中相似的資料放到一個類中
  2. K-均值的意思是歸納出K個類,每個類中的均值作為類中心

無監督分類

  1. 與分類的結果相同
  2. 分類是事先給出類別,聚類則自動形成給定數量的類別
  3. 資料是否相似依然依賴於相似度計算方法

二分K-均值

  1. K-均值收斂到的是區域性最小值而非全域性最小值
  2. SSE誤差平方和,衡量聚類效果的值,越小表示資料點越接近其所在類的中心
  3. 二分法首先將所有點看作一個類,依據二分後能否最大程度降低SSE的值來不斷二分,直到指定的k個類為止

2. 關聯分析(Apriori演算法和FP-growth演算法)

關聯項

  1. 頻繁項表示物品出現在一起的集合
  2. 關聯項表示兩種物品可能含有關聯
  3. 描述頻繁度和關聯可能性的指標稱作支援度和可信度

支援度

  1. 資料集中包含該項記錄所佔的比例
  2. 規定一個最小支援度篩選出頻繁出現的商品組合

可信度

  1. 支援度的比值,即同時出現兩個商品的支援度/出現其中一個商品的支援度
  2. 由此來量化兩種商品關聯的可能性

Apriori演算法原理

  1. 只關心購買商品的種類,不關心數量
  2. 按原理計算支援度和可信度需要遍歷資料集的次數為2的n次方-1
  3. Apriori假設某個項集是頻繁項,那其子集都是頻繁項
  4. 也就是說,兩種商品同時出現頻率很高的話,這兩種商品單獨出現的頻率一定也很高
  5. 如果項集為非頻繁項,其超集也是非頻繁項

Apriori查詢頻繁集

  1. 輸入引數為最小支援度和資料集
  2. 首先計算單個商品的支援度,再計算兩個商品的支援度
  3. 去除支援度低於最小支援度的資料,遍歷資料集

Apriori挖掘關聯規則

  1. 計算可信度可通過集合做並集除以單個集合的方式
  2. 計算所有頻繁集資料的可信度,篩選出滿足最小可信度的規則
  3. 依然符合假設,即本身為真則子集真,本身為假則超集假

FP-growth演算法查詢頻繁集

  1. 縮短Apriori發現頻繁項集的時間成本,效能提高兩個數量級以上
  2. FP樹結構,只需要對資料集進行兩次掃描
  3. 第一次掃描針對所有元素的出現次數進行計數,去除不滿足最小支援度的資料,重新生成新的資料集
  4. 第二次掃描僅考慮頻繁元素

FP-growth演算法挖掘關聯規則

  1. 條件模式基,指向目標元素的路徑和其經過元素數量的集合,即路徑+路徑長度
  2. 根據每條路徑構建條件FP樹,依然去除不滿足最小支援度的資料
  3. 遞迴直至僅剩一個元素,即為最可能的關聯規則