1. 程式人生 > >周志華《機器學習》讀書筆記(1)

周志華《機器學習》讀書筆記(1)

越來越覺得一個碼農應該學點機器學習相關的東西了。希望畢業前能看完這本書。— 2017年11月22日

第一章 緒論

  1. 資料集中的每條記錄是關於一個時間或者物件的描述,成為一個“示例”(instance)或”樣本“(sample),反應時間或物件在某方面的表現或性質的事項,如“顏色”、“大小”。

    • 屬性上的取值成為“屬性值”(attribute value);
    • 屬性張成的空間成為“屬性空間”(attribute space)、“樣本空間”(sample space)或“輸入空間”。
    • 把“色澤”、“根蒂”、“敲聲”張成三個座標軸,則他們張成一個用於描述西瓜的三維空間。沒個西瓜都可以在這空間中找到自己的座標位置,對應空間中的一個座標向量。因此我們可以把一個示例成為一個“特徵向量”(feature vector)。
  2. D={x1,x2,...,xm} 表示包含m個示例的資料集。每個由d個屬性描述(上面的西瓜資料使用了三個屬性),每個示例xi={xi1;xi2;...;xim} 是d維樣本空間 X 中的一個向量, xiX,其中xijxi在第j個屬性上的取值。d成為樣本xi的”維數”(dimensionality)。

  3. 一些名詞。

    • 從資料中學得模型的過程稱為“學習”(learning)或“訓練”(training),這個過程通過執行某個學習演算法來完成。
    • 訓練過程中使用的資料成為“訓練資料”(training data)。
    • 其中每個樣本稱為一個“訓練樣本”(training sample),訓練樣本組成的集合成為“訓練集”(training set)。
    • 學得模型對應了關於資料的某種潛在的規律,因此亦稱“假設”(hypothesis)。
    • 這種潛在規律自身,則成為“真相”或“真實”(groun-truth),學習過程就是為了找出或逼近真相。本書有時將模型稱為“學習器”(learner),可看作學習演算法在給定資料和引數空間上的例項化。

    學習演算法通常有引數需要設定,使用不同的引數值和訓練資料,將產生不同的結果。

  4. 如果要得到一個幫助判斷一個瓜是否“好瓜”的模型,僅有前面的示例是不夠的。要建立這樣“預測”(prediction)的模型。我們需要獲得訓練樣本的“結果資訊”,例如“((色澤=青綠;根蒂=蜷縮;敲聲=濁響),好瓜)”。這裡關於示例結果的資訊,例如“好瓜”,成為“標記”(label);擁有了標記資訊的示例,稱為“樣例”(example)。一般地,用(

    xi,yi)表示第i個樣例,其中yiY是示例xi標記,Y是所有標記的集合,亦稱“標記空間”(label space)或“輸出空間”。

  5. 分類與迴歸。
    • 若我們欲預測的是離散值,例如“好瓜”、“壞瓜”,此類學習任務成為“分類”(classification)。
    • 若我們欲預測的是連續值,如西瓜成熟度 0.95、 0.37,此類學習任務成為“迴歸”(regression)。
  6. 學得模型後,使用其進行預測的過程成為“測試”(testing),被預測的樣本成為“測試樣本”(testing sample),例如在學得 f 後,對測試例 x,可得到其預測標記y=f(x).
  7. 我們還可對西瓜做“聚類”(clustering),即將訓練集中的西瓜分成若干組,每組成為一個“簇”(cluster);這些自動形成的簇可能對應一些潛在的概念劃分。
  8. 根據訓練資料是否擁有標記資訊,學習任務大致可分為兩大類:
    • 監督學習(supervised learning),如分類和迴歸。
    • 無監督學習(unsupervised learning) ,如聚類。
  9. 歸納(induction)與演繹(deduction)。
    • 歸納是特殊到一般的“泛化”(generalization)過程。
    • 演繹是一般到特殊的“特化”(specialization)過程。
  10. 可能存在多個假設與訓練集一直,即存在一個與訓練集一致的“假設集合”,我們稱之為“版本空間”(version space)。
  11. 歸納偏好。假如在一個版本空間中,有三個與訓練集一致的假設,但它們對應的模型在面對新樣本的時候,卻會產生不同的輸出。但對於一個具體的學習演算法而言,他必須產生一個模型,這時演算法本身的“偏好”就起關鍵作用。機器學習演算法在學習過程中對某種型別假設的偏好,成為“歸納偏好”(inductive bias),簡稱“偏好”。

第一章習題

1.1

這裡寫圖片描述

第二章 模型評估與選擇

  1. 分類錯誤的樣本數 a 佔樣本總數 m 的比例 E=a/m 成為“錯誤率”(error rate), 1a/m 稱為精度(1-錯誤率)。
  2. 學習器的預測輸出與樣本的真實輸出之間的差異稱為“誤差”(error)。
  3. 學習器在訓練集上的誤差稱為“訓練誤差”(training error)或“經驗誤差”(empirical error),在新樣本上的誤差稱為“泛化誤差”(generalization error)(泛化誤差應儘可能小)。
  4. 當學習器把訓練樣本學得“太好”了的時候,很可能已經把訓練樣本自身的一些特點當作所有潛在樣本都會具有的一般性質,倒是泛化效能下降,該現象稱為“過擬合”(overfitting)【通俗理解為過於嚴格,誤添加了不必要的特性】。相對的是“欠擬合”(underfitting),對訓練樣本的一般性質尚未學好。
  5. 學習能力過於強大,以至於把訓練樣本所包含的不太一般的特性學到了,會導致過擬合。
  6. 學習能力過於低下,則會導致欠擬合。
  7. 欠擬合較易克服,例如在決策樹學習中擴充套件分支,神經網路學習中增加訓練輪數等。過擬合則較麻煩,且無法徹底避免,只能“緩解”,減少其風險。
  8. 測試樣本應儘可能不出現在訓練集中,避免得到過於樂觀的估計結果。
  9. 當只有一個內含m個樣例資料集D={(x1,y1),(x2,y2),...,(xm,ym)}時,有以下方法作評估處理。
    • “留出法”(hold-out)直接將資料集劃分為兩個互斥的集合,其中一個集合作為訓練集S,另一個作為測試集T,即 D=ST,ST=,用S訓練出模型後,用T來評估其測試誤差,作為對泛化誤差的估計。
    • “交叉驗證法”(cross validation)先將資料集D劃分為k個大小相似的互斥子集,即D=D1D2...Dk,DiDj=(ij),每個子集Di都儘可能保持資料分佈的一致性,k最常取的值是10,此時稱為10折交叉驗證。把D劃分成10個互斥子集,每次取其中9個作為訓練集,剩下一個作為測試集,得到10個測試結果。最後將10個測試結果求平均值返回最終結果。留一法(Leave-One-Out)是特殊的交叉驗證發,k=m,每次只用一個樣本來驗證,但缺點是複雜度太高,訓練出來的模型達m個。
    • 自助法(boosttrapping)。給包含m個樣本的資料集D,我們對他進行取樣產生資料集D(一開始D是空的):每次隨機從D中【不取出地】挑選一個樣本,將其拷貝放入D,重複m次,這樣m次下來,樣本始終沒被採到的概率是(11m)m,取極限得 limx+(11m)m1e0.368通過自主取樣,初始資料集中約有