【機器學習】補完計劃

機器學習補完計劃

發現之前的帖子太長了,拆了整理一下,理一理以前的筆記,其實代碼實現和數學推導更加有助於理解
PS:任天堂特邀嘉賓來舉例子
波克基斯瑪狃拉比卡超
波克基斯、瑪狃拉,比卡超


四個主要任務

分類(classification):將實例數據劃分到合適的類別中。應用實例:判斷辣雞郵件(二分類 ),手寫數字的自動識別(多分類)
迴歸(regression):主要用於預測數值型數據。應用實例:股票價格波動的預測,房屋價格的預測等。
聚類:在無監督學習中,將數據集分成由類似的對象組成多個類的過程稱爲聚類。
密度估計:在無監督學習中,通過樣本分佈的緊密程度,來估計與分組的相似性。

一些衍生的算法

強化學習
這個算法可以訓練程序做出某一決定。程序在某一情況下嘗試所有的可能行動,記錄不同行動的結果並試着找出最好的一次嘗試來做決定。 屬於這一類算法的有馬爾可夫決策過程。


1.k-近鄰(kNN, k-NearestNeighbor)分類與迴歸

主要思想: k 近鄰算法的輸入爲實例的特徵向量,對應於特徵空間的點;輸出爲實例的類別,可以取多類。k 近鄰算法假設給定一個訓練數據集,其中的實例類別已定。分類時,對新的實例,根據其 k 個最近鄰的訓練實例的類別,通過多數表決等方式進行預測。因此,k近鄰算法不具有顯式的學習過程。

算法實現: k 近鄰算法實際上利用訓練數據集對特徵向量空間進行劃分,並作爲其分類的“模型”。 k值的選擇、距離度量以及分類決策規則是k近鄰算法的三個基本要素。舉個例子,要把口袋妖怪分類,可愛型和兇殘型的。那麼據此分類的一些已知的特徵有有尖爪的數量,暖色調的顏色的數量。(1)求得未知妖怪的這些特徵和已知類型妖怪的距離,(2)排序,(3)假定K=3,選取這K箇中最多的分類類別,就是選出距離最近的三個妖怪,(4)假如都是可愛型的,那麼這個妖怪就是可愛型的。以上就是一個僞代碼的實現過程。

一些實現時候的注意:

  • 距離度量 通常爲 歐式距離(Euclidean distance),還可以是 Minkowski 距離 或者 曼哈頓距離。
  • 算法(sklearn 上有三種):Brute Force 風暴計算/線性掃描;KD Tree 使用二叉樹根據數據維度來平分參數空間;Ball Tree 使用一系列的超球體來平分訓練數據集。樹結構的算法都有建樹和查詢兩個過程,Brute Force 沒有建樹的過程。
  • 缺點: 時間和空間複雜度高(相對的就是準確率高)

2.決策樹(Decision Tree)分類與迴歸

主要思想: 決策樹模型呈樹形結構,在分類問題中,表示基於特徵對實例進行分類的過程。決策樹學習通常包括 3 個步驟:特徵選擇、決策樹的生成和決策樹的修剪。

補充信息論(information theory)中的熵(香農熵): 是一種信息的度量方式,表示信息的混亂程度,也就是說:信息越有序,信息熵越低。例如:火柴有序放在火柴盒裏,熵值很低,相反,熵值很高。

僞代碼:
收集數據:可以使用任何方法。
準備數據:樹構造算法 (這裏使用的是ID3算法,只適用於標稱型數據,這就是爲什麼數值型數據必須離散化。 還有其他的樹構造算法,比如CART)
分析數據:可以使用任何方法,構造樹完成之後,我們應該檢查圖形是否符合預期。
訓練算法:構造樹的數據結構。
測試算法:使用訓練好的樹計算錯誤率。
使用算法:此步驟可以適用於任何監督學習任務,而使用決策樹可以更好地理解數據的內在含義。

3.樸素貝葉(Naive Bayesian Model)分類

主要思想: 在每個特徵同等,且相互獨立這兩重要的條件下,選擇概率高的那一類。


4.邏輯迴歸(Logistic regression)其實是分類的。

迴歸的概念: 假設現在有一些數據點,我們用一條直線對這些點進行擬合(這條直線稱爲最佳擬合直線),這個擬合的過程就叫做迴歸。
主要思想是: 根據現有數據對分類邊界線(Decision Boundary)建立迴歸公式,以此進行分類。在實現上主要是依Sigmoid函數引入非線性因素來實現擬合的過程,但是不是避免的,就有可能會陷入局部最優的尷尬境地,錯失最優解。

解疑:(來自學習資料)
梯度上升法和梯度下降法:其實這個兩個方法在此情況下本質上是相同的。關鍵在於代價函數(cost function)或者叫目標函數(objective function)。如果目標函數是損失函數,那就是最小化損失函數來求函數的最小值,就用梯度下降。 如果目標函數是似然函數(Likelihood function),就是要最大化似然函數來求函數的最大值,那就用梯度上升。在邏輯迴歸中, 損失函數和似然函數無非就是互爲正負關係。

僞代碼:
每個迴歸係數初始化爲 1
重複 R 次:
    計算整個數據集的梯度
    使用 步長 x 梯度 更新迴歸係數的向量
返回迴歸係數

Q&A:

logistic迴歸爲什麼要用sigmoid函數推薦回答1 這個問題好比爲什麼圓可以用標準方程來表示一樣而已,LR就是sigmoid函數的一個應用而已。LR用來處理預測結果爲0-1的二值分類問題,這裏假設了二值滿足了伯努利分佈(即零一分佈),而伯努利分佈是滿足指數族分佈的。

線性迴歸適用於因變量(隨自變量而變)是連續的模型,即特徵和結果滿足線性,但是實際有的因變量是離散型機率分佈。
隨機變量X服從邏輯斯蒂分佈,即X的累積分佈函數爲上文提到過的logistic function。對分佈函數求導得到了概率密度函數。
如果對分佈函數求導得到了概率密度函數,做累加就會得到sigmoid function。而且又對一個二分類事件發生的機率odds的對數有線性的關係,輸出Y=1的對數機率是由輸入x的線性函數表示的模型,所以適合用來做線性的描述。
(這裏解釋的是爲什麼可以做成概率模型)線性迴歸是連續型模型,用於分類的問題時受噪聲影響比較大,logistic迴歸是非線性模型(上文),本質上是線性迴歸模型,但logistic迴歸巧妙之處在於其將結果值經一層函數映射在0-1上,即在特徵到結果的映射中加入了一層函數映射(對數損失函數),也就是本文的sigmoid function。
推薦回答2這裏的角度2,從貝葉斯概率模型來看,是可以用sigmoid function來逼近後驗概率P=(y=1|X)的。


5.支持向量機(Support Vector Machines, SVM) 監督學習

主要思想: 支持向量(Support Vector)就是離分隔超平面最近的那些點,算法的核心就是找這個超平面。

解疑:
數據可以通過畫一條直線就可以將它們完全分開,這組數據叫線性可分(linearly separable)數據,而這條分隔直線稱爲分隔超平面(separating hyperplane)
如果數據集上升到1024維呢?那麼需要1023維來分隔數據集,也就說需要N-1維的對象來分隔,這個對象叫做超平面(hyperlane),也就是分類的決策邊界

常用解法:(這個還是單獨寫個帖子八)

  • 拉格朗日乘子法
  • SMO 高效優化算法

6.集成學習 ensemble method

主要思想: 沒錯就是字面意思,第一步:(bagging: 自舉匯聚法 bootstrap aggregating): 是基於數據隨機重抽樣分類器構造的方法,第二步:(boosting): 是基於所有分類器的加權求和的方法。

解疑: bagging 和 boosting 區別是什麼?

  • bagging 是一種與 boosting 很類似的技術, 所使用的多個分類器的類型(數據量和特徵量)都是一致的。
  • bagging 是由不同的分類器(1.數據隨機化 2.特徵隨機化)經過訓練,綜合得出的出現最多分類結果;boosting
    是通過調整已有分類器錯分的那些數據來獲得新的分類器,得出目前最優的結果。
  • bagging 中的分類器權重是相等的;而 boosting
    中的分類器加權求和,所以權重並不相等,每個權重代表的是其對應分類器在上一輪迭代中的成功度。

隨機森林:利用多棵樹對樣本進行訓練並預測的一種分類器。決策樹多了就變森林。。。關鍵的是, 在處理數據的時候,數據的隨機性化,待選特徵的隨機化,這樣就可以增強魯棒性,同時也提升分類性能。

AdaBoost (adaptive boosting: 自適應 boosting) :使用弱分類器和多個實例來構建一個強分類器,最後再加權得出結果。


7.迴歸(Regression)

主要思想:之前提到的分類的目標變量是標稱型數據,而回歸則是對連續型的數據做出處理,迴歸的目的是預測數值型數據的目標值。
迴歸係數(regression weights):求這些迴歸係數的過程就是迴歸。一旦有了這些迴歸係數,再給定輸入,做預測就非常容易了。具體的做法是用迴歸係數乘以輸入值,再將結果全部加在一起,就得到了預測值
待續。。。


8. K-Means(K-均值)聚類算法

主要思想: 將一個龐雜數據集中具有相似特徵的數據自動歸類到一起,稱爲一個簇,簇內的對象越相似,聚類的效果越好。聚類與分類算法的最大區別在於, 分類的目標類別已知, 而聚類的目標類別是未知的(K是未知的)。


9.樹迴歸 CART(Classification And Regression Trees, 分類迴歸樹)

主要思想:


學習資料出處:AiLearning

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章