1. 程式人生 > >《集體智慧程式設計》摘要

《集體智慧程式設計》摘要

提供推薦

  • 皮爾遜相關度評價
    • 適合於資料不規範的情況
    • 比如某一影評者的打分總是對於平均水平偏離很大(比如總是偏低),此時用歐幾里得距離計算出來的差別不大,無法很好地分類
    • 原理是根據不同人的評分將影片對映為空間中的點,然後對於大量的點擬合一條線,比較不同人的線的相關度

發現群組

  • 無監督學習的目的是發現數據包含的內在結構
  • K-均值聚類
    • 輸入資料一般需要做縮放,如標準化
      • 原理:K均值是建立在距離度量上的,因此不同變數間如果維度差別過大,可能會造成少數變數“施加了過高的影響而造成壟斷”。
    • 優點:執行速度快,能夠處理的資料量大,且易於理解。
    • 缺點:演算法效能有限,在高維上可能不是最佳選項。

搜尋與排名

  • 一些關於有效查詢到的思想
    • 單詞頻度
      • 一個網站中包含關鍵字的數量越多,越有可能是想要查詢的網站
    • 單詞位置
      • 對於一個相關網頁,我們搜尋的關鍵字往往會出現在靠近網頁開始的位置
    • 單詞距離
      • 當有多個關鍵詞時,尋找單詞間距離更近的網站往往是有意義的
  • pagerank演算法
    • 一個網頁的重要性取決於指向該網站的所有其他網站的重要性
    • 決定因素:
      • 指向該網站的其他網站的PageRank值
      • 每個指向該網站的其他網站的總link數
        • link越多值越小
      • 阻尼因子
        • PageRank計算的是某個使用者在任意點選連線後到達某一網站的可能性,理論來說,經過無限次點選後會到達任意網站,但是大多數人在數次點選後會停止,於是設計了阻尼因子的概念
    • 初始化時設定一個初始值(比如1.0),經過數次迭代後會趨於穩定值(就是PageRank值)

優化演算法

  • 將要解決的問題轉化為一個成本函式,而我們的任務就是是的成本函式最小
  • 最簡單的方法就是隨機搜尋,他是我們評估其他演算法的基線(base line)
  • 爬山演算法
    • 類似於梯度下降法
    • 缺點在於可能求得的區域性最小值而不是全域性最小值
    • 可以用隨機重複爬山法改進
  • 模擬退火演算法
    • 設定一個接受概率函式,他與自定的溫度變數以及成本值相關。
    • 當溫度高的時候,成本值稍大的解也可能接受(所以在初始階段解可能反而變差),但是溫度在不斷迭代中不斷下降,而溫度低的時候只有成本值很低的解才能被接受
  • 遺傳演算法
    • 先隨機生成一組解,稱之為種群,計算每個個體的成本函式,得到一個有序列表
    • 精英選拔法
      • 將成本最低的一部分加入新的種群中,剩餘的由修改後的全新解代替
    • 兩種修改解的方法
      • 變異
        • 將現有解做微小隨機的改動
      • 交叉
        • 選取最優解中的兩個按照某種方式進行結合
      • 通常變異的概率很小而交叉的概率很大
    • 結束指令
      • 在經過一段時間的迭代後,族群任然保持穩定,此時可以停止了

文件過濾

  • 樸素的貝葉斯分類器
    • 假設每個單詞出現的概率是互相獨立的
    • 但實際上是不成立的,但是我們可以將計算結果進行比較,觀察那個分類的概率更大
    • 為了避免重要郵件的誤刪,我們可以為每個分類定義一個最小閾值,如果計算出來的結果都小於這個閾值,我們就劃分到未知分類中
    • 這種演算法的優勢主要在於訓練所需的時間和記憶體較少
  • 費舍爾分類器
    • 不懂 (–_–!)

決策樹建模

  • 決策樹實際上就是根據資料的feature的一系列的if…then…結構,最終得到輸出
    • 輸出可以是分類或者數值
  • 決策樹的難點在於判斷條件(feature)選擇的先後
    • 舉例,為什麼以A條件作為根(即第一個判斷條件),為什麼條件B在條件C前判斷
    • 挑選的方法有基尼不純度,熵增益等
      • 實質是選取儘可能將同種結果放在一個分類的條件
  • 為了避免過擬合以及減少收集資訊的難度,我們往往採取剪枝的方法忽略那些對結果影響不大的feature
  • 決策樹的優點在於可以直觀的理解判斷的理由和過程,不像深度學習是個黑箱
  • 缺點則在於對於輸出結果過多的情況構建太複雜,還有就是容易被攻擊
    • 這裡的攻擊是指人為的改變一些特徵,使得分類器判斷錯誤。常見於垃圾郵件躲避檢測中。因為決策樹最終在底層判斷是基於單個條件的,攻擊者往往只需要改變很少的特徵就可以逃過監測。

構建價格模型

  • KNN(K最鄰近演算法)
    • K過小則容易受到噪聲和錯誤資料的影響,過大則容易將不相關資料也包括進去
    • 可以在無需重新計算的情況下加入新的資料,適合資料量很大的情況

核方法和SVM(支援向量機)

  • 普通的SVM分類超平面只能應對線性可分的情況,而對於線性不可分的情況我們則需要引入一個Kernel,這個Kernel可以把資料集從低維對映到高維,使得原來線性不可分的資料集變得線性可分
    • 其實就是深度學習裡的啟用函式
  • 我們想要用一個超平面(二維為一條線)將資料分類,但是滿足條件的超平面有很多,SVM就是找出其中最好的一個
    • 方法是儘可能的使最靠近分離超平面的資料與超平面的距離變大
    • 我們不需要考慮所有資料,只需要考慮靠近平面的那些資料,這些資料又稱為支援向量

尋找獨立特徵

  • 從嘈雜的背景聲中提取人聲,影象壓縮等實質是特徵提取
  • 常用方法是NMF,即非負矩陣分解
    • 顧名思義,就是將資料已矩陣的顯示呈現,然後分解為特徵矩陣和權重矩陣