【學(xué)習(xí)】數(shù)據(jù)挖掘—集體智慧編程

先做一個(gè)目錄吧,不然實(shí)在太長(zhǎng)了,連我自己都記不清楚

第二章 提供推薦
  2.1 算法流程
  2.2 基于用戶進(jìn)行過濾
    2.2.1 搜集偏好
    2.2.2 相似性度量方法
    2.2.3 用戶相似度計(jì)算
    2.2.4 加權(quán)法構(gòu)建推薦物品序列
  2.3 基于物品進(jìn)行過濾
    2.3.1 提前構(gòu)造物品字典相似矩陣
    2.3.2 根據(jù)用戶歷史信息加權(quán)平均法構(gòu)建推薦物品列表
  2.4 其他概念
第三章 發(fā)現(xiàn)群組
  3.1 算法流程
  3.2 聚類的可視化
    3.2.1 繪制樹狀圖
    3.2.2 多維縮放
  3.3 其他概念
第四章 搜索與排名
  4.1 算法流程
  4.2 基于內(nèi)容排名和PageRank算法
    4.2.1 基于內(nèi)容排名
    4.2.2 PageRank算法
    4.2.3 簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)
第五章 優(yōu)化
  5.1 算法流程
    5.1.1 隨機(jī)搜索法
    5.1.2 爬坡法
    5.1.3 模擬退火法
    5.1.4 遺傳算法
  5.2 有約束優(yōu)化問題的建模理論
  5.3 網(wǎng)絡(luò)可視化問題的建模理論
第六章 文檔過濾
  6.1 算法流程
  6.2 樸素貝葉斯分類器
    6.2.1 合理推測(cè)
    6.2.2 條件概率訓(xùn)練
    6.2.3 樸素貝葉斯分類器
    6.2.4 基于閾值比率和分類概率來選擇分類
  6.3 費(fèi)舍爾分類器
    6.3.1 合理推測(cè)
    6.3.2 分類概率訓(xùn)練
    6.3.3 費(fèi)舍爾分類器
    6.3.4 基于分類限值和分類概率來選擇分類
  6.4 特征值改進(jìn)
第七章 決策樹建模
  7.1 算法流程
  7.2 信息增益和增益率
    7.2.1 熵和基尼不純度
    7.2.2 信息增益
    7.2.3 增益率
  7.3 根據(jù)增益率最大原則劃分構(gòu)造樹
  7.4 剪枝處理
    7.4.1 預(yù)剪枝
    7.4.2 后剪枝
  7.5 連續(xù)值和缺失值的處理
    7.5.1 連續(xù)值處理
    7.5.2 缺失值處理
  7.6 決策樹可視化
第八章 構(gòu)建價(jià)格模型
  8.1 算法流程
  8.2 相似度定義
    8.2.1 參數(shù)縮放
    8.2.2 參數(shù)優(yōu)選
  8.3 加權(quán)KNN初模型
    8.3.1 反函數(shù)
    8.3.2 減法函數(shù)(負(fù)斜率函數(shù))
    8.3.3 高斯函數(shù)(正態(tài)分布)
  8.4 交叉驗(yàn)證
  8.5 其他
第九章 高階分類:核方法和SVM
  9.1 算法流程
  9.2 數(shù)據(jù)預(yù)操作
    9.2.1 特征數(shù)據(jù)化
    9.2.2 數(shù)據(jù)縮放處理
  9.3 SVM模型
    9.3.1 內(nèi)積理論
    9.3.2 核函數(shù)和核技巧
    9.3.3 參數(shù)選擇問題
  9.4 預(yù)測(cè)分類
  9.5 SVM劃分多類問題
第十章 尋找獨(dú)立特征(非負(fù)矩陣因式分解)
  10.1 算法流程
  10.2 構(gòu)建數(shù)據(jù)矩陣
  10.3 非負(fù)矩陣因式分解 NMF
  10.4 結(jié)果呈現(xiàn)
第十一章 智能進(jìn)化
  11.1 算法流程
  11.2 構(gòu)造程序樹
  11.3 優(yōu)化目標(biāo)
  11.4 遺傳優(yōu)化
  11.5 確定最優(yōu)程序
  11.6 alpha go程序
第十二章 算法總結(jié)

第二章 提供推薦

2.1 算法流程
  • 基于用戶進(jìn)行過濾:
    搜集偏好→確定相似性度量方法→用戶相似度計(jì)算→加權(quán)平均法構(gòu)建推薦物品列表
  • 基于物品進(jìn)行過濾:
    在小樣本時(shí),提前構(gòu)造物品字典相似矩陣→獲取用戶歷史信息→根據(jù)用戶歷史信息加權(quán)平均法構(gòu)建推薦物品列表
2.2 基于用戶進(jìn)行過濾
2.2.1 搜集偏好

用戶對(duì)歷史影片的評(píng)價(jià)可以構(gòu)建為:

image.png
2.2.2 相似性度量方法:
2.2.3 用戶相似度計(jì)算

即采用度量方法進(jìn)行計(jì)算。

2.2.4 加權(quán)法構(gòu)建推薦物品序列

經(jīng)相似度計(jì)算后,得到如下的權(quán)重列表:


image.png

影片D的預(yù)測(cè)評(píng)分為:(0.5 * 3+0.3 * 6)/(0.5+0.3)=4.125分
影片E的預(yù)測(cè)評(píng)分為:(0.5 * 5+0.3 * 4)/(0.5+0.3)=4.625分
最終推薦序列為:
(E,4.625分;D,4.125分)

2.3 基于物品進(jìn)行過濾
2.3.1 提前構(gòu)造物品字典相似矩陣
image.png

可以得到各個(gè)物品之間的相似度

2.3.2 根據(jù)用戶歷史信息加權(quán)平均法構(gòu)建推薦物品列表

用戶歷史信息:


image.png

最終得出物品推薦:
(E,3.8;C,3.28;D,0.5;)

(ps,基于物品的推薦可以快速提供推薦列表,從而避免了臨時(shí)的大規(guī)模計(jì)算,但是推薦的精準(zhǔn)性依賴于前置的物品相似度計(jì)算。所以需要及時(shí)對(duì)物品相似度進(jìn)行更新。)

2.4 其他概念:

協(xié)作型過濾:對(duì)一大群人進(jìn)行信息搜索,并對(duì)其中各類人的偏愛進(jìn)行考察和排名,從而確定哪些人具備相近的品味。

第三章 發(fā)現(xiàn)群組

對(duì)博客用戶進(jìn)行聚類:根據(jù)單詞出現(xiàn)的頻度對(duì)博客進(jìn)行聚類,可以幫助我們分析出是否存在這樣一類博客用戶,這些人經(jīng)常撰寫相似的主題,或者在寫作風(fēng)格上十分相似。這樣的分析結(jié)果對(duì)于搜索、分類和挖掘當(dāng)前大量的在線博客而言是非常有價(jià)值的。

3.1 算法流程
  • 分級(jí)聚類
    構(gòu)建博客-單詞矩陣(行為博客,列為單詞在該博客中出現(xiàn)次數(shù))→計(jì)算緊密度(相似度)→將最緊密的一組博客聚為一類,將單詞出現(xiàn)次數(shù)的均值更新為新的單詞頻次(聚類中心更新)→反復(fù)聚類,直至所有聚類完成
  • 列聚類
    構(gòu)建單詞-博客矩陣(行為單詞,列為博客中該單詞出現(xiàn)次數(shù))→計(jì)算緊密度(相似度)→將最緊密的一組單詞聚為一類,將單詞出現(xiàn)次數(shù)的均值更新為新的單詞頻次(聚類中心更新)→反復(fù)聚類,直至所有聚類完成
  • k均值聚類
    確定k的數(shù)目→隨機(jī)生成k個(gè)聚類中心→數(shù)據(jù)尋找距離最近的中心點(diǎn)→聚類完成后,更新生成新的聚類中心→反復(fù)聚類,直至迭代完成

ps:1、分級(jí)聚類和列聚類都是層次聚類,由于每次都要重新計(jì)算緊密度,所以數(shù)據(jù)量很大。層次聚類和k聚類的用途其實(shí)是截然不同的。2、如果以博客單詞做聚類分析,通常要進(jìn)行單詞處理,出現(xiàn)頻次過低或過高的單詞都沒有太大意義,可以被剔除掉。

3.2 聚類的可視化
3.2.1 繪制樹狀圖

適用于層次聚類的展示
https://blog.csdn.net/fengchi863/article/details/80537733
scipy包里面的dendrogram模塊

3.2.2 多維縮放

適用于二維展示各個(gè)變量之間的距離
https://www.cnblogs.com/douza/p/5882065.html
需要注意的是,多維縮放無法完全展示緊密性,當(dāng)最終無法再通過移動(dòng)節(jié)點(diǎn)來減少總體誤差的時(shí)候,變停止迭代了。

3.3 其他概念:

監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)、決策樹、向量機(jī)、貝葉斯過濾都是監(jiān)督學(xué)習(xí),聚類、非負(fù)矩陣因式分解是無監(jiān)督學(xué)習(xí)。

第四章 搜索與排名

介紹了一種全文的搜索引擎,允許人們?cè)诖罅康奈臋n中搜索出來一系列單詞,并根據(jù)文檔與單詞的相關(guān)度對(duì)結(jié)果進(jìn)行排名。

4.1 算法流程
  • 基于內(nèi)容的排名(傳統(tǒng)算法):
    對(duì)網(wǎng)址及其內(nèi)容(文檔中的單詞)建立數(shù)據(jù)庫和索引→針對(duì)搜索關(guān)鍵詞的內(nèi)容排名(單詞頻度/文檔位置/單詞距離)→評(píng)價(jià)值的歸一化→輸出排名

  • PageRank算法:
    對(duì)網(wǎng)址及其內(nèi)容(文檔中的單詞)建立數(shù)據(jù)庫和索引→確定含有搜索關(guān)鍵詞的網(wǎng)址→尋找指向該網(wǎng)址的外鏈,并利用外鏈計(jì)算PageRank值→輸出排名(未歸一化,PageRank值本身是一個(gè)無具體范圍的數(shù),但是如果要進(jìn)行加權(quán)的話,也可以對(duì)最后的排名值進(jìn)行歸一化,而不是對(duì)PageRank值歸一化)

  • 基于外部回指連接的PageRank算法:
    對(duì)網(wǎng)址及其內(nèi)容(文檔中的單詞)建立數(shù)據(jù)庫和索引→確定含有搜索關(guān)鍵詞的鏈接→尋找該網(wǎng)址指向的外鏈,并計(jì)算指向外鏈的PageRank值→輸出排名

  • 簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)算法(不具備通用性):
    設(shè)置輸入層為全部搜索關(guān)鍵詞的組合,3個(gè)單詞的組合一共7組;隱藏層個(gè)數(shù)由單詞組合決定(當(dāng)有新的單詞組合時(shí),增加一個(gè)新的隱藏層,所以最多有7個(gè));輸出層為全部網(wǎng)址及其對(duì)應(yīng)排名值→選定輸入到隱藏以及隱藏到輸出均為S型函數(shù)(反雙曲正切變換函數(shù),-1~1),默認(rèn)權(quán)重設(shè)置為:輸入層到隱藏層1/len(wordids),隱藏層到輸出層0.1→比較輸出值和期望值(選中某一網(wǎng)頁即為1,未選中即為0),按照梯度為0.5更新兩層的權(quán)重→完了(沒有迭代?。∷韵喈?dāng)于每次輸入一組進(jìn)去,然后就對(duì)應(yīng)只更改一次權(quán)重。。。。。。)

PS:以上幾種算法,可以各自設(shè)置權(quán)重并返回一個(gè)加權(quán)后的結(jié)果

4.2 基于內(nèi)容排名和PageRank算法
4.2.1 基于內(nèi)容排名
  • 數(shù)據(jù)庫和索引
    內(nèi)容排名和PageRank算法會(huì)創(chuàng)建5張表,內(nèi)容排名會(huì)用到3張表(剩下兩張表之后說):含有網(wǎng)址的表;含有word的表;含有網(wǎng)址、word以及word在網(wǎng)址中位置的表。


    image.png

加入索引是為了提高效率。

  • 基于內(nèi)容排名
    單詞頻度:最簡(jiǎn)單的思想,搜索的單詞在網(wǎng)頁中出現(xiàn)頻率較高,則也有可能是我們要的頁面。
    文檔位置:文檔的主題有可能會(huì)出現(xiàn)在靠近文檔的開始處,統(tǒng)計(jì)單詞在文檔中出現(xiàn)的位置信息,位置越往前的就越有可能是我們想要的結(jié)果。
    單詞距離:如果查詢條件中有多個(gè)單詞,則他們?cè)谖臋n中出現(xiàn)的位置應(yīng)該很靠近。
4.2.2 PageRank算法
  • 數(shù)據(jù)庫和索引
    用到后面兩張表:內(nèi)容中指向有外鏈的網(wǎng)址以及外鏈網(wǎng)址的link表;表明link中外鏈網(wǎng)址含有的linkwords表。

  • PageRank排名
    用到link表,PageRank的意義是表明某個(gè)人在任意次點(diǎn)擊后到達(dá)某一網(wǎng)頁的可能性(不存在范圍限制),有一個(gè)0.85的阻尼引子,表示大多數(shù)用戶在瀏覽一段時(shí)間后會(huì)停止點(diǎn)擊。
    算法流程:先確定含有搜索關(guān)鍵詞的網(wǎng)址A,再通過計(jì)算指向A的網(wǎng)址的加權(quán)PageRank(加權(quán)的意義在于有的網(wǎng)址如果同時(shí)指向了多個(gè)外鏈,則貢獻(xiàn)會(huì)被分散)來獲得A的PageRank值。


    image.png

    如何在一開始對(duì)PageRank值進(jìn)行計(jì)算?解決方法是,為所有PageRank都設(shè)置一個(gè)任意的初始值,然后反復(fù)計(jì)算,迭代若干次。在每次迭代中,每個(gè)網(wǎng)頁的PageRank值將會(huì)越來越接近真實(shí)值。迭代所需要次數(shù)要視網(wǎng)絡(luò)數(shù)量而定。

  • 基于外部回指鏈接的PageRank算法
    用到linkwords表和link表,現(xiàn)在linkwords表中尋找含有搜索關(guān)鍵詞的link,再去link表中尋找被指向網(wǎng)址,以及其PageRank。

  • 比較說明
    PageRank的本質(zhì)是看中網(wǎng)頁的熱度,熱度越高,則被引用的概率會(huì)越大,但是網(wǎng)頁本身的熱度卻不一定是因?yàn)殛P(guān)鍵詞造成,有可能是因?yàn)榫W(wǎng)頁中的其他關(guān)鍵詞。
    外部回指鏈接則看中搜索的精準(zhǔn)性,一般情況下,從指向該網(wǎng)頁的鏈接中所得到的信息會(huì)更有價(jià)值。

ps:PageRank的本質(zhì)雖然與熱度有關(guān),但實(shí)際上可以構(gòu)建其他維度來反映點(diǎn)擊次數(shù)、頁面停留時(shí)間等等,并且這種維度是可以輕松轉(zhuǎn)化為內(nèi)容排名的。

4.2.3 簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)

在上面的算法其實(shí)已經(jīng)說得差不多了,不具備通用性的原因有幾點(diǎn):

  • 輸入層不是數(shù)值,而是限定的組合??
  • 隱藏層的個(gè)數(shù)是遇到新組合就增加一個(gè)??
  • 權(quán)重不是反復(fù)迭代終止的,而是每次只更新一次??
  • 整體局限性太大了,甚至不知道從何說起。。。

首先看一下數(shù)值型的神經(jīng)網(wǎng)絡(luò)怎么求解的:
https://blog.csdn.net/dare_kz/article/details/77603522
當(dāng)然其中也有缺陷,因?yàn)獒槍?duì)輸入輸出為(x1,x2→y)的情況,是需要計(jì)算很多組數(shù)據(jù)的整體誤差的,以整體誤差最小進(jìn)行權(quán)重更新,所以最后求得的模型,有可能進(jìn)行輸入后得到的輸出與準(zhǔn)確值有差異。文中只輸入了一組數(shù)據(jù),得到的模型是完全準(zhǔn)確的,而實(shí)際上模型的準(zhǔn)確性與神經(jīng)層個(gè)數(shù)有關(guān),有點(diǎn)像如果數(shù)據(jù)很多,但是用一個(gè)二次多項(xiàng)式進(jìn)行擬合,肯定是很難完全擬合的,但是如果用一個(gè)N次多項(xiàng)式擬合,絕對(duì)能夠完全擬合。

最后再說一下如果真的要構(gòu)建神經(jīng)網(wǎng)絡(luò)的搜索引擎:

  • 輸入值比起是海量的限定組合,還不如考慮成單詞的疊加(有就為1,無就為0,兩個(gè)都有就是1,1),雖然也是海量,但是至少輸入層很清晰;
  • 神經(jīng)層個(gè)數(shù)海量;
  • 輸出層的期望值記為當(dāng)輸入某一關(guān)鍵詞時(shí),該網(wǎng)頁被點(diǎn)擊選中的概率(由海量數(shù)據(jù)統(tǒng)計(jì)得出),0~1之間,可以持續(xù)更新。最關(guān)鍵的一點(diǎn)是,概率是確定的,因此可以進(jìn)行迭代求解,最后給用戶提供的是穩(wěn)定的且符合期望的模型,而不是每輸入一次新的組合,都會(huì)重新更新權(quán)重,而且權(quán)重還不一定符合期望。。。

第五章 優(yōu)化

用三種場(chǎng)景來說明優(yōu)化算法,分別是

  • 無約束優(yōu)化:組團(tuán)旅游問題,來自美國(guó)各地的家庭成員要在同一天乘坐飛機(jī)到達(dá)同一個(gè)地方,并且在同一天離開,設(shè)計(jì)一個(gè)合理的方案。
  • 有約束優(yōu)化:學(xué)生宿舍優(yōu)化問題,拜托那個(gè)學(xué)生有宿舍首選和次選方案,需要尋找合理方案盡量滿足需求。
  • 網(wǎng)絡(luò)可視化優(yōu)化:用一個(gè)盡量不存在交叉線的網(wǎng)絡(luò)圖來描述人與人之間的網(wǎng)絡(luò)聯(lián)系。
5.1 算法流程

確定成本函數(shù)→隨機(jī)搜索/爬坡法/模擬退火/遺傳算法等優(yōu)化算法求解

5.1.1 隨機(jī)搜索法

隨機(jī)搜索就是一種隨機(jī)嘗試的方法,在實(shí)現(xiàn)過程中隨機(jī)的產(chǎn)生一定數(shù)量的解,并且對(duì)這些解一一進(jìn)行成本值的計(jì)算,取最小值。

5.1.2 爬坡法

https://www.cnblogs.com/gongxijun/p/5873643.html
爬坡法通常指最陡爬坡算法,每次選定具有最優(yōu)結(jié)果的解進(jìn)行爬坡。
爬坡算法的關(guān)鍵是需要設(shè)定好爬坡間隔方向,比如鏈接中:


這樣的鄰近點(diǎn)選擇是沒有問題的。但是書中針對(duì)組團(tuán)旅游問題,成本函數(shù)是實(shí)現(xiàn)總費(fèi)用最低,但是鄰近點(diǎn)選擇是選擇相鄰的航班,我認(rèn)為是存在問題的,主要是自己在構(gòu)造輸入的時(shí)候,是按航班時(shí)間進(jìn)行排序,而如果是按成本排序的話,相鄰的輸入就變成了成本相近的航班,這樣會(huì)更合理一些。
所以爬坡法一定要注意鄰近點(diǎn)選擇。

5.1.3 模擬退火法

https://www.cnblogs.com/gongxijun/p/5873643.html

image.png

即,在早起溫度更高時(shí),非最優(yōu)點(diǎn)也有較大概率會(huì)被選擇,溫度降低后,越來越大的概率選擇最優(yōu)點(diǎn)作為新一輪起點(diǎn)。
模擬退火法實(shí)際是爬坡法的一種。

5.1.4 遺傳算法

隨機(jī)生成一組解,成為一個(gè)種群
(1)直接遺傳
將當(dāng)前種群中代價(jià)最小的一部分解,如 40% 進(jìn)行直接遺傳,傳入下一代種群。
(2)變異
從題解中隨機(jī)選取一個(gè)數(shù)字,對(duì)其進(jìn)行微小的,簡(jiǎn)單的改變。
(3)交叉
選取最優(yōu)解中的兩個(gè)解,將他們按照某種方式進(jìn)行結(jié)合
通過上述三種方法,從上一代種群中構(gòu)建出了下一代種群。而后,這一過程重復(fù)進(jìn)行,知道達(dá)到了指定的迭代次數(shù),或者連續(xù)數(shù)代都沒有改善種群,則整個(gè)過程就結(jié)束了。

5.2 有約束優(yōu)化問題的建模理論

有約束優(yōu)化問題有兩種解決方法:將約束條件作為成本函數(shù)中的懲罰函數(shù),匹配一個(gè)很大的懲罰因子,但是在很多實(shí)際問題上并不是一個(gè)理想的方法。
另一種思路是在生成初始題解的時(shí)候,便將約束條件考慮進(jìn)去,保證生成的初始題解便是完全滿足約束條件的。

5.3 網(wǎng)絡(luò)可視化問題的建模理論

不深入研究,主要是指借助質(zhì)點(diǎn)彈簧算法來確定成本函數(shù),最后利用繪圖模塊將網(wǎng)絡(luò)圖繪制出來。
質(zhì)點(diǎn)彈簧算法:各結(jié)點(diǎn)彼此向?qū)Ψ绞┮酝屏Σ⒃噲D分離,而節(jié)點(diǎn)間的聯(lián)結(jié)則試圖將關(guān)聯(lián)節(jié)點(diǎn)彼此拉近。

第六章 文檔過濾

對(duì)郵件進(jìn)行文檔分類,將其分為垃圾郵件、非垃圾郵件或者更多種類。介紹的算法可以解決更為一般性的問題。

6.1 算法流程
  • 樸素貝葉斯分類器
    構(gòu)建特征值(文中是以文檔中的單詞為特征值)→基于合理推測(cè)基礎(chǔ)上進(jìn)行條件概率訓(xùn)練(監(jiān)督算法)→建立樸素分類器,可以輸出組合單詞的不同種類的概率(非真實(shí))→基于閾值比率和分類概率來選擇分類
  • 費(fèi)舍爾分類器
    構(gòu)建特征值→基于合理推測(cè)基礎(chǔ)上進(jìn)行分類概率訓(xùn)練(監(jiān)督算法)→建立費(fèi)舍爾分類器,可以輸出組合單詞的不同種類的概率(真實(shí)概率,但是會(huì)經(jīng)過對(duì)數(shù)卡方分布變換)→基于分類限值和分類概率來選擇分類

PS:費(fèi)舍爾分類器就是最正常的分類器,樸素貝葉斯理論上求解條件概率后適合費(fèi)舍爾一致的,這里不一致的點(diǎn)在于他沒有求解精準(zhǔn)概率(省去了一個(gè)概率環(huán)節(jié)),而費(fèi)舍爾求解的是精準(zhǔn)概率。所以兩者分開其實(shí)沒有什么意義,我要是選的話肯定直接采用費(fèi)舍爾了。

6.2 樸素貝葉斯分類器
6.2.1 合理推測(cè)

針對(duì)沒有出現(xiàn)過的單詞,我們可以設(shè)定其初始概率為0.5,同時(shí)賦予其一定的權(quán)重。一個(gè)更通用的理解是,如果準(zhǔn)備對(duì)垃圾信息過濾器進(jìn)行訓(xùn)練時(shí),可以利用他人訓(xùn)練過的垃圾過濾器,則將其概率引用過來,并設(shè)定一定的權(quán)重,避免欠缺訓(xùn)練導(dǎo)致的數(shù)據(jù)不準(zhǔn)。

6.2.2 條件概率訓(xùn)練

即監(jiān)督算法進(jìn)行訓(xùn)練的時(shí)候,每次訓(xùn)練結(jié)果得到的都是條件概率(比如,出現(xiàn)好的分類中出現(xiàn)單詞A的概率是0.5,壞的分類中出現(xiàn)單詞A的概率是0.3),所以之后才需要進(jìn)行貝葉斯變換。

6.2.3 樸素貝葉斯分類器
  • 貝葉斯變換:將條件概率變換為特征概率

貝葉斯定理:Pr(A|B)=Pr(B|A)Pr(A)/Pr(B)
在本例中:Pr(Category | Document )=Pr(Document | Category)
Pr(Category) / Pr(Document)
關(guān)鍵就在于,如果采用上述公式得到的特征概率是完全準(zhǔn)確的,但實(shí)際上貝葉斯沒有計(jì)算Pr(Document),得到的結(jié)果是:

Pr(Category A | Document )=Pr(Document | Category A)*Pr(Category A)     
Pr(Category B | Document )=Pr(Document | Category B)*Pr(Category B) 

所以計(jì)算結(jié)果并不是真實(shí)概率值

  • 樸素的含義
    針對(duì)單詞組合,認(rèn)為是獨(dú)立條件概率,直接相乘
6.2.4 基于閾值比率和分類概率來選擇分類

為了避免將好的郵件判定為垃圾郵件,可以設(shè)定閾值比率為3,當(dāng)Pr(Category 壞 | Document )>3 * Pr(Category 好 | Document ) 的時(shí)候才將其分類為垃圾郵件。

6.3 費(fèi)舍爾分類器
6.3.1 合理推測(cè)

同上

6.3.2 分類概率訓(xùn)練

貝葉斯是得到條件概率Pr(Document | Category A)和Pr(Document | Category B),費(fèi)舍爾是直接得到特征概率 Pr(Category A | Document )和Pr(Category B | Document )

6.3.3 費(fèi)舍爾分類器
  • 概率組合
    也認(rèn)為是獨(dú)立條件概率,進(jìn)行相乘
  • 對(duì)數(shù)卡方分布
    所有概率相乘后,取自然對(duì)數(shù),再乘以-2。
    費(fèi)舍爾方法認(rèn)為,如果概率彼此獨(dú)立且隨機(jī)分布,則這一計(jì)算結(jié)果將滿足對(duì)數(shù)卡方分布(0~1)之間。
    但是個(gè)人認(rèn)為不用變換啊,最后概率還是會(huì)在0~1之間。
6.3.4 基于分類限值和分類概率來選擇分類

因?yàn)槭蔷珳?zhǔn)概率,所以在為分類選擇臨界值時(shí)允許更大的靈活性??梢圆辉俨捎瞄撝当嚷?,而是直接設(shè)定概率值的上下限,例如將認(rèn)為是垃圾郵件的下限值設(shè)得很高,比如0.6,這樣可以靈活控制分類。

6.4 特征值改進(jìn)

例子只是簡(jiǎn)單把單詞全部變換成小寫,而且直接進(jìn)行非字母非數(shù)字類字符的分割,實(shí)際上處理過程中還有很多特征需要辨別。例如,如果郵件中出現(xiàn)存在大量大寫字母的情況,實(shí)際很有可能是反應(yīng)了某種特征,而不能全部轉(zhuǎn)化為小寫字母進(jìn)行分類。在實(shí)際分類過程中都需要考慮這些情況。

第七章 決策樹建模

跟蹤用戶的網(wǎng)站訪問信息,有“來源網(wǎng)址”、“用戶位置”、“是否閱讀過FAQ”、“瀏覽網(wǎng)頁數(shù)”、“選擇服務(wù)類型(是否成為會(huì)員)”等信息,利用決策樹建模分析各個(gè)特征值影響,從而預(yù)測(cè)以為用戶成為付費(fèi)顧客的可能性有多大。
這篇文檔的算例足夠清晰:https://blog.csdn.net/asd20172016/article/details/81488259

7.1 算法流程

利用基尼不純度/熵等方法計(jì)算信息增益和增益率→根據(jù)增益率最大原則劃分構(gòu)造樹→遞歸方法反復(fù)構(gòu)造樹→對(duì)樹進(jìn)行剪枝→有必要的話實(shí)現(xiàn)決策樹的可視化

7.2 信息增益和增益率

決策樹的本質(zhì)是持續(xù)選取最優(yōu)特征,將數(shù)據(jù)進(jìn)行分類,讓分類后的兩組或多組數(shù)據(jù)組件的特征盡量相似。也就是原數(shù)據(jù)組間比較混亂→分類后變得沒那么混亂,一般采用熵或基尼不純度來判斷混亂值。

7.2.1 熵和基尼不純度

  • https://blog.csdn.net/datawhale/article/details/95874780
    熵最直觀的一個(gè)例子就是32支球隊(duì),最多判斷6次就可以知道哪只球隊(duì)贏了,所以最混亂的情況下熵為5。熵本身是一個(gè)無范圍限制的數(shù),越小越好(最好的情況就是只用一次就知道哪一支球隊(duì)贏了,因?yàn)槟侵蜿?duì)勝率100%)。
    image.png

    所以用熵公式得到分類后每個(gè)組別的熵后,還需要進(jìn)行加權(quán)來反映整體的熵。
  • 基尼不純度


    image.png

    物理含義是隨即從數(shù)據(jù)集中抽取兩個(gè)樣本,其類別不一致的概率,所以某個(gè)組如果有4個(gè)不同的樣本,基尼指數(shù)是75%?;嶂笖?shù)也是要進(jìn)行信息增益的(加權(quán)),但是一般都是采用的熵進(jìn)行計(jì)算的,下文中也只討論熵。

7.2.2 信息增益
image.png

信息增益公式中的第二項(xiàng)就是加權(quán)后的整體熵,而信息增益表示如果按照這個(gè)特征分類后熵的減少情況。誰減少得越多,那么就選擇這個(gè)特征進(jìn)行繼續(xù)分類。

7.2.3 增益率

如果按照某一特征進(jìn)行分類后,有特別多的組別,實(shí)際上會(huì)導(dǎo)致這個(gè)組別的整體熵天然小!一個(gè)很好理解的例子是如果分類后每一個(gè)分組是一個(gè)編號(hào),那么每個(gè)組件的熵為0,整體加權(quán)后的熵也為0,但這個(gè)是沒有意義的,因?yàn)槟闳绻技?xì)分到編號(hào)去了,那肯定是每個(gè)組特征都一樣啊。所以如果你分類越多,熵自然會(huì)變小,我們要避免分類過多的情況。


image.png

所以入引進(jìn)了增益率后,按照增益率最大來進(jìn)行特征選擇。(書中的例子沒有引進(jìn)增益率,用的是信息增益進(jìn)行選擇)

7.3 根據(jù)增益率最大原則劃分構(gòu)造樹

遞歸函數(shù)反復(fù)構(gòu)造就行了。只是涉及到要不要構(gòu)造到最底層的問題,構(gòu)造到最底層容易導(dǎo)致模型過擬合。

7.4 剪枝處理

剪枝的目的是為了避免決策樹模型的過擬合。因?yàn)闆Q策樹算法在學(xué)習(xí)的過程中為了盡可能的正確的分類訓(xùn)練樣本,不停地對(duì)結(jié)點(diǎn)進(jìn)行劃分,因此這會(huì)導(dǎo)致整棵樹的分支過多,也就導(dǎo)致了過擬合。決策樹的剪枝策略最基本的有兩種:預(yù)剪枝和后剪枝。

7.4.1 預(yù)剪枝

當(dāng)繼續(xù)分類時(shí),只有到信息增益大于某個(gè)值,才繼續(xù)創(chuàng)建分支,如果小于該值,則不再進(jìn)行分支創(chuàng)建。

7.4.2 后剪枝

先構(gòu)建好完整的整棵樹,再嘗試消除多余的節(jié)點(diǎn):對(duì)具有相同父節(jié)點(diǎn)的一組節(jié)點(diǎn)進(jìn)行檢查,判斷如果將其合并,熵的增加量(信息增益的負(fù)值)是否會(huì)小于某個(gè)閾值,如果成立,則合并節(jié)點(diǎn),避免過擬合。

ps,對(duì)于兩種剪枝方式,后剪枝更像是全局尋優(yōu),全部的路線都有了,看看哪個(gè)更好,預(yù)剪枝更像是局部尋優(yōu),一步一步的走,可能為了局優(yōu)而屏蔽了全優(yōu),所以預(yù)剪枝欠擬合的風(fēng)險(xiǎn)大,但是后剪枝的計(jì)算量更大。

7.5 連續(xù)值和缺失值的處理
7.5.1 連續(xù)值處理

針對(duì)連續(xù)值的處理,本質(zhì)上是尋找分割點(diǎn),將連續(xù)值分為幾類。書中提供的可行策略是尋找一個(gè)分割點(diǎn),使得兩組數(shù)據(jù)分割后的整體方差最小。之后再計(jì)算分割后的熵和信息增益。
方差本身就和熵有很強(qiáng)的關(guān)系(熵是反映混亂程度最準(zhǔn)確的,方差在一些特殊情況下并不能準(zhǔn)確反映),因此還不如直接尋找一個(gè)分割點(diǎn),來使得兩組數(shù)據(jù)分割后的熵最小呢- -。(后來思考了一下,好像還是方差可行,因?yàn)橛泻芏嘧兞?,方差?jì)算的是整體的差異程度,而熵的話智能計(jì)算最終類的分類情況,好像不太實(shí)際)
反正基本理論都是一致的,方法很多。

7.5.2 缺失值處理

書中的意思是,對(duì)于缺失值,可以假設(shè)他兩個(gè)分支都走,因此可以計(jì)算分類后每個(gè)組別的熵,但是求信息增益的加權(quán)上,不考慮缺失值的權(quán)重,而只用數(shù)據(jù)來進(jìn)行加權(quán),最終求一個(gè)信息增益。

網(wǎng)頁的案例:


image.png

image.png

先用非缺失值計(jì)算組別熵以及加權(quán)熵,最后得到的是非缺失數(shù)據(jù)的信息增益,再乘上一個(gè)比率就是整體的信息增益。這里存疑,因?yàn)闆]有計(jì)算兩種方法的實(shí)際結(jié)果是不是一樣。但我感覺第二種的邏輯更好理解。

7.6 決策樹可視化

一種是文字可視化,遍歷整棵樹進(jìn)行輸出就行了。
一種是用第三章的方法,來繪制樹狀圖。。。

總結(jié):什么時(shí)候適用于選擇決策樹:決策樹最適合用來處理的,是那些帶分界點(diǎn)的、由大量分類數(shù)據(jù)和數(shù)值數(shù)據(jù)共同組成的數(shù)據(jù)結(jié)構(gòu)。同時(shí),決策樹也可以幫助理解決策過程!但是,如果輸出結(jié)果很多(底層分類很多),決策樹就不適用了!

第八章 構(gòu)建價(jià)格模型

利用一個(gè)葡萄酒數(shù)據(jù)集,進(jìn)行葡萄酒價(jià)格預(yù)測(cè)。葡萄酒的價(jià)格根據(jù)酒的等級(jí)及其儲(chǔ)藏的年代(rating和age兩個(gè)參數(shù))共同決定,并假設(shè)葡萄酒有“峰值年”現(xiàn)象。

8.1 算法流程

基于參數(shù)定義相似度→加權(quán)KNN初模型→交叉驗(yàn)證確定KNN模型

knn模型其實(shí)是理論相對(duì)很簡(jiǎn)單的模型,本質(zhì)是基于輸入?yún)?shù)進(jìn)行預(yù)測(cè)時(shí),希望根據(jù)相似的一組數(shù)據(jù)進(jìn)行預(yù)測(cè),特征越相似,則結(jié)果也是相似的。

8.2 相似度定義

即距離計(jì)算方法,歐幾里得距離算法、皮爾遜都可以。

8.2.1 參數(shù)縮放

如果參數(shù)的量綱相差很大,理論上是要進(jìn)行一定的歸一化或者縮放操作的。如果人工對(duì)參數(shù)有良好的判斷,可以進(jìn)行人工縮放,不然的話可以進(jìn)行自動(dòng)優(yōu)選。

8.2.2 參數(shù)優(yōu)選

參數(shù)優(yōu)選跟之后的交叉驗(yàn)證是相關(guān)的。即把原始數(shù)據(jù)氛圍訓(xùn)練集和測(cè)試集,通過構(gòu)造成本函數(shù)(這里就是誤差率),來尋找最優(yōu)的縮放參數(shù)。尋優(yōu)方法也是爬坡法、遺傳算法、模擬退火都可以。。。

8.3 加權(quán)KNN初模型

KNN模型首先是基于輸入?yún)?shù)進(jìn)行排序,然后選擇最近的k個(gè)元素,并進(jìn)行預(yù)測(cè)。單純的平均可能不準(zhǔn)確,更希望的是加權(quán)平均(跟第一張的概念是一樣的,越相似,則占比要越高)。一般來說近鄰分配權(quán)重的方法有反函數(shù)、減法函數(shù)、高斯等等。

8.3.1 反函數(shù)

反函數(shù)(Inverse Function):對(duì)距離求倒數(shù)并在其之前加一個(gè)小小的常量。

8.3.2 減法函數(shù)(負(fù)斜率函數(shù))

減法函數(shù)(Subtraction Function):用一個(gè)常量值減去距離。如果相減結(jié)果大于0,則權(quán)重為相減的結(jié)果;否則,結(jié)果為0。

8.3.3 高斯函數(shù)(正態(tài)分布)

高斯函數(shù)(Gaussian Function):通過高斯公式計(jì)算出權(quán)重值。

8.4 交叉驗(yàn)證

交叉驗(yàn)證的目的是為了尋找到一個(gè)最優(yōu)的K值,來保證KNN模型具有的誤差最小。計(jì)算誤差的步驟:

  • 隨機(jī)分配訓(xùn)練集和測(cè)試集(一般是95%和5%的比例)
  • 計(jì)算該K值下的誤差(誤差計(jì)算公式可以多樣)
  • 重復(fù)N此,求取平均誤差(這個(gè)才是交叉驗(yàn)證的精髓,不能只驗(yàn)證一次就是誤差)

ps:其實(shí)交叉驗(yàn)證和上面的參數(shù)優(yōu)選沒有什么區(qū)別,也可以用成本函數(shù)的方法尋求K的優(yōu)值,也可以用交叉驗(yàn)證的方式,尋求參數(shù)縮放的優(yōu)值,或者兩者聯(lián)合起來尋優(yōu)也可以。覺得并沒有什么限制。

8.5 其他

文章提到了繪制概率分布:例如,如果當(dāng)評(píng)分為95,年份為20(數(shù)據(jù)只有這兩個(gè)參數(shù))的情況下,如果價(jià)格分布有很大的差異,可以選擇繪制該組數(shù)據(jù)的離散概率或者累積概率(概率分布函數(shù))。

ps,KNN最好的一點(diǎn)是模型訓(xùn)練好了之后,可以隨時(shí)加入新的觀測(cè)數(shù)據(jù)而不增加計(jì)算量(如果你要重新更新K值或者優(yōu)選參數(shù)的話,才需要訓(xùn)練)。KNN的難點(diǎn)在于,如果參量很多,可能很難確定合理的權(quán)重值和縮放參數(shù),而這兩點(diǎn)也恰恰是影響KNN誤差的關(guān)鍵因素。。。

第九章 高階分類:核方法和SVM

利用約會(huì)網(wǎng)站的歷史配對(duì)數(shù)據(jù),進(jìn)行配對(duì)成功可能性的預(yù)測(cè)。數(shù)據(jù)包括:年齡、是否吸煙、是否想要孩子、興趣列表等等。。

9.1 算法流程

數(shù)據(jù)預(yù)操作→構(gòu)建SVM模型→預(yù)測(cè)分類

9.2 數(shù)據(jù)預(yù)操作
9.2.1 特征數(shù)據(jù)化

比如講是否問題,轉(zhuǎn)化為0/1問題;將多文本問題,轉(zhuǎn)化為多值問題;

9.2.2 數(shù)據(jù)縮放處理

對(duì)SVM而言,數(shù)據(jù)縮放處理也是必須的,因?yàn)镾VM本質(zhì)判斷輸入值與分類中心點(diǎn)的距離(向量?jī)?nèi)積),如果不進(jìn)行縮放的話,距離可能完全由某一參量決定,而其他參量不能起到作用。
一個(gè)簡(jiǎn)單的縮放方法時(shí),按最大最小值縮放,將數(shù)據(jù)范圍統(tǒng)一調(diào)整為0~1區(qū)間。

9.3 SVM模型

https://www.cnblogs.com/volcao/p/9465214.html

9.3.1 內(nèi)積理論

SVM是想一找一個(gè)分類線/面,具有最大的margin,來保證將兩類數(shù)據(jù)最大化的分開。


image.png

所以邊界的兩條線是wx+b=±1,中間的那條分界線是wx+b=0。y代表的是輸入點(diǎn)所在的類別(正為1,負(fù)為-1)。所以問題轉(zhuǎn)化為求w和b,在滿足y(wx+b)≥1的約束下,使得2/||w||最大(這個(gè)就是margin,正負(fù)就是兩倍)。
含約束優(yōu)化問題轉(zhuǎn)化為拉格朗日函數(shù)求解,最后變成了求解對(duì)偶問題Ld最大


image.png

解對(duì)偶問題會(huì)求解到很多α的值(大部分α為0,不為0代表對(duì)應(yīng)的向量才是支持向量,影響著分界線的選擇?。薛翈Щ厝デ蠼鈝(就在上圖,有w和α的關(guān)系表達(dá)式的)→把w帶回wx+b=0求解b,最后分界線和margin都可以解出來。

但是如果找不到一個(gè)完美分界面分割呢?那就放寬分類要求,加上一個(gè)ξ值后實(shí)現(xiàn)大于0,同時(shí)優(yōu)化目標(biāo)加上一個(gè)懲罰系數(shù)C:


image.png

最后也就是求w,ξ,C,α,μ使得Lp最小!


image.png

最后再轉(zhuǎn)化,目標(biāo)函數(shù)并沒有區(qū)別,只是原本的0≤α,變味了0≤α≤C了
所以最后也只用求α和C。
9.3.2 核函數(shù)和核技巧

當(dāng)線性不可分的時(shí)候,把數(shù)據(jù)映射到高維空間去。而且理論上,所有的數(shù)據(jù)在某一高維上肯定是線性可分的。

常見的核函數(shù)
image.png

利用核技巧,可以將高維核函數(shù)的內(nèi)積,轉(zhuǎn)化為低維的運(yùn)算。

多項(xiàng)式核需要確定展開的維數(shù)。
高斯核(RBF)是將正態(tài)分布函數(shù)泰勒展開到無窮維,不需要確定維數(shù),但是需要確定gamma。


image.png

https://blog.csdn.net/qq_15295565/article/details/80888607
現(xiàn)在再回看一下目標(biāo)函數(shù):

image.png

這個(gè)MAX的其實(shí)就是Ld,然后xixj→φ(xi)φ(xj)=k(xi,xj),所以已經(jīng)升維了,當(dāng)然里面示一個(gè)含有所有x的大矩陣的內(nèi)積,所有的x都會(huì)遍歷相乘。
最后就是求α→確定w和b,得到wφ(x)+b的公式(ξ已經(jīng)不重要了)
,要判斷新的輸入x是屬于哪一類,就看wφ(x)+b是大于0還是小于0咯,大于0就表示趨于wφ(x)+b=1,小于0就表示趨于wφ(x)+b=-1,所以就可以分類了!

9.3.3 參數(shù)選擇問題

https://blog.csdn.net/wn314/article/details/79972988
RBF實(shí)際上有兩個(gè)參數(shù)需要選擇,一個(gè)是gamma,一個(gè)是C。
gamma的意義是在訓(xùn)練集的基礎(chǔ)上,確定一個(gè)范圍(這個(gè)范圍肯定是大于等于訓(xùn)練集的),認(rèn)為數(shù)據(jù)的存在范圍:https://blog.csdn.net/ITpfzl/article/details/82831301
這里面的圖形展示的比較清楚,gamma越大,高斯分布則越瘦高,則支持向量的樣本更少,容易過擬合。
C是懲罰系數(shù),意義是在分類時(shí)候允許誤差存在,避免過擬合:
https://www.zhihu.com/question/40217487

image.png

可以看出,C越大,則不允許誤差存在,容易導(dǎo)致過擬合。

PS,文中的SVM模型。。umm,有點(diǎn)脫離實(shí)際理論,所以思路可以借鑒,但是實(shí)際不能用。

9.4 預(yù)測(cè)分類

根據(jù)訓(xùn)練好的模型,輸入值,會(huì)告訴你是A類還是B類。

9.5 SVM劃分多類問題

https://blog.csdn.net/u012762305/article/details/37908601
首先,SVM是解決分類問題,一般情況不能預(yù)測(cè)連續(xù)值,那能不能預(yù)測(cè)多個(gè)分類?
最簡(jiǎn)單的方法是:一對(duì)其余法

  • 一類對(duì)余類法(One versus rest,OVR)是最早出現(xiàn)也是目前應(yīng)用最為廣泛的方法之一,其步驟是構(gòu)造k個(gè)兩類分類機(jī)(設(shè)共有志個(gè)類別),其中第i個(gè)分類機(jī)把第i類同余下的各類劃分開,訓(xùn)練時(shí)第i個(gè)分類機(jī)取訓(xùn)練集中第i類為正類,其余類別點(diǎn)為負(fù)類進(jìn)行訓(xùn)練。判別時(shí),輸入信號(hào)分別經(jīng)過k個(gè)分類機(jī)共得到k個(gè)輸出值fi(x)=sgn(gi(x)),若只有一個(gè)+1出現(xiàn),則其對(duì)應(yīng)類別為輸入信號(hào)類別;實(shí)際情況下構(gòu)造的決策函數(shù)總是有誤差的,若輸出不只一個(gè)+1(不只一類聲稱它屬于自己),或者沒有一個(gè)輸出為+1(即沒有一個(gè)類聲稱它屬于自己),則比較g(x)輸出值,最大者對(duì)應(yīng)類別為輸入的類別。
    這種方法的優(yōu)點(diǎn)是,對(duì)k類問題,只需要訓(xùn)練k個(gè)兩類分類支持向量機(jī),故其所得到的分類函數(shù)的個(gè)數(shù)(k個(gè))較少,其分類速度相對(duì)較快。

第十章 尋找獨(dú)立特征(非負(fù)矩陣因式分解)

一個(gè)典型應(yīng)用是“雞尾酒宴會(huì)”問題:在人聲鼎沸的屋子,還是能夠辨別出某人的聲音。
文中的問題是:構(gòu)造一個(gè)新聞系統(tǒng),并從一組報(bào)道中識(shí)別出關(guān)鍵主題來。相當(dāng)于是:
輸入某一篇文章,可以返回其幾個(gè)特征權(quán)重以及特征構(gòu)成(關(guān)鍵單詞,因?yàn)槊總€(gè)特征中各個(gè)單詞也有不同權(quán)重,所以權(quán)重高的是關(guān)鍵單次),同理,也可以返回具有相近的特征的一組文章,可以認(rèn)為這些文章都是一個(gè)主題(具備相近的特征及權(quán)重)。

雞尾酒宴會(huì)中能夠辨別某人聲音,就是因?yàn)樵撀曇翎槍?duì)某特征有較大的權(quán)重,大腦可以識(shí)別該特征的構(gòu)成(聲音頻率、尾音等等)。

10.1 算法流程

構(gòu)建數(shù)據(jù)矩陣→非負(fù)矩陣因式分解→結(jié)果呈現(xiàn)

10.2 構(gòu)建數(shù)據(jù)矩陣
  • 目標(biāo)矩陣
    一個(gè)列表保存文章名,一個(gè)列表保存單詞名,一個(gè)矩陣保存每個(gè)單詞在每篇文章中出現(xiàn)的頻次,行為文章,列為單詞。


    image.png
  • 預(yù)處理
    為了縮減矩陣的大小,可以去掉幾個(gè)只在少數(shù)幾篇文章中出現(xiàn)的單詞,或去掉在過多文章中出現(xiàn)的單詞。(基本上各種算法都會(huì)進(jìn)行預(yù)處理)


    image.png
10.3 非負(fù)矩陣因式分解 NMF

非負(fù)矩陣因式分解的理論其實(shí)很符合人類思維中“局部構(gòu)成整體”的概念。
理論可以參考:https://blog.csdn.net/google19890102/article/details/51190313
將原始的數(shù)據(jù)矩陣分解(特征的)權(quán)重矩陣*特征矩陣的方式,直觀上很容易理解。

比如HURRICANE的文章。主要是由特征1構(gòu)成,而特征1是指HURRICANE和FLORIDA單詞出現(xiàn)批次較高,但其他頻次較低的一個(gè)特征。對(duì)應(yīng)于雞尾酒問題的話就是,如果一個(gè)人音調(diào)很高很尖,那么有一個(gè)反映“音調(diào)很高很尖”的特征上,這個(gè)人具有很大的權(quán)重,人腦對(duì)這樣一個(gè)具有較大權(quán)重且特征明顯的特征反映就很靈敏。



非負(fù)矩陣飲食分解的難點(diǎn)在于求解權(quán)重矩陣和特征矩陣。有兩個(gè)關(guān)鍵因素:

  • 特征數(shù)目
    人為設(shè)定的,特征數(shù)目越多,越容易過擬合。因?yàn)镹MF本身是非監(jiān)督算法,所以也沒有辦法用成本函數(shù)尋求來確定特征數(shù)目的最優(yōu)值。(因?yàn)槟阕约憾疾恢绖澏嗌賯€(gè)特征數(shù)目最合適,所以沒有標(biāo)準(zhǔn)值,無法構(gòu)建成本函數(shù)的)
  • 迭代求解
    需要注意的一點(diǎn)是,非負(fù)矩陣因式分解是利用反復(fù)迭代求解的,所以最后只是求到了兩個(gè)比較接近的矩陣!并不是完全精確(完全精確的話,不就是實(shí)現(xiàn)100%擬合了么)

https://blog.csdn.net/pipisorry/article/details/52098864網(wǎng)站中給出了NMF 在圖像處理方面的應(yīng)用,比較容易理解,因?yàn)镹MF本身尋求特征的方法,很符合人類思維對(duì)圖像各個(gè)特征的識(shí)別,比如人臉識(shí)別,肯定是臉輪廓+五官的特征組合。。。。(沒有深究)

10.4 結(jié)果呈現(xiàn):
最后的結(jié)果可以有兩種呈現(xiàn)形式:

  • 返回最典型的特征(特征權(quán)重會(huì)比較大)的關(guān)鍵詞,以及符合這個(gè)特征的前幾篇文章;
  • 返回某篇特征的幾個(gè)典型特征(以關(guān)鍵詞形式展現(xiàn)),以及特征權(quán)重。

ps,NMF差不多是最新的算法,然后也是最為復(fù)雜的技術(shù)之一。

第十一章 智能進(jìn)化

遺傳編程(GP)是遺傳算法(GA)的特例,遺傳算法一般是解決優(yōu)化問題,參數(shù)是全部轉(zhuǎn)化為數(shù)字編碼的。但是遺傳編程一般是為了構(gòu)造AI程序,參量一般是以程序樹的格式展示。
本文的案例就是構(gòu)造一個(gè)下棋的AI。(不具備參考性,真正的AI要參考alpha go)

11.1 算法流程

構(gòu)造程序樹(編碼)→確定優(yōu)化目標(biāo)→創(chuàng)建初始種類、遺傳交叉變異→確定最優(yōu)值(最優(yōu)程序)

11.2 構(gòu)造程序樹
  • 求擬合函數(shù)


    image.png

    如果是給定的一堆XY數(shù)據(jù)集,要求找到一個(gè)擬合函數(shù),能夠擬合XY的值。那么這個(gè)函數(shù)可以用程序樹的方式展現(xiàn)。一個(gè)函數(shù)可以包含判斷語句、運(yùn)算語句等等(比如上面那個(gè))。需要注意的是,一個(gè)程序出了函數(shù)節(jié)點(diǎn)、常量節(jié)點(diǎn)、還有子節(jié)點(diǎn)(用以實(shí)現(xiàn)遞歸,子節(jié)點(diǎn)又是一個(gè)封裝好的函數(shù)塊),然后整體要進(jìn)行封裝。

  • 下棋的程序
    程序樹下面的函數(shù),需要構(gòu)造成上下左右走(比如用1234代替),也需要加入一些判斷條件(比如判斷對(duì)手在哪個(gè)位置),同時(shí)會(huì)含有很多個(gè)模塊(函數(shù)),一個(gè)模塊對(duì)應(yīng)一步,進(jìn)入到下一步,就調(diào)下一個(gè)模塊。
11.3 優(yōu)化目標(biāo)

優(yōu)化目標(biāo)就是下棋的目標(biāo),不能死了。(如果是擬合函數(shù),就是誤差最小?。?/p>

11.4 遺傳優(yōu)化

針對(duì)程序的遺傳優(yōu)化,就涉及到支干以及子節(jié)點(diǎn)的交叉變異了,理論都是一樣的。

11.5 確定最優(yōu)程序

文章的例子就太淺了,確定最優(yōu)程序的方法是,模擬競(jìng)賽,最后勝出次數(shù)最多的那一個(gè)程序作為最優(yōu)程序??梢岳斫鉃?,那個(gè)程序每一步怎么走都寫好了(如果有判斷語句的話,就自己進(jìn)行判斷),無論對(duì)手怎么走棋,他都是按程序走的,所以這就是不具備參考性的原因。

11.6 alpha go程序

https://my.oschina.net/u/876354/blog/1594849
https://blog.csdn.net/zchang81/article/details/78349269
主要是:

image.png

(1)監(jiān)督學(xué)習(xí)(學(xué)習(xí)別人的棋譜)
首先,policy net是一個(gè)模型。它的輸入是當(dāng)前的棋局(19*19的棋盤,每個(gè)位置有3種狀態(tài),黑、白、空),輸出是最可能(最優(yōu))的著法,每個(gè)空位都有一個(gè)概率(可能性)。著法并非無跡可尋,人類已經(jīng)下了千年的棋了。policy net先向職業(yè)選手學(xué)習(xí),她從KGS圍棋服務(wù)器,學(xué)習(xí)了3000萬個(gè)局面的下一步怎么走。也就是說,大概職業(yè)選手怎么走, AlphaGo已經(jīng)了然于胸。學(xué)習(xí)的目的是,不是單純的記住這個(gè)局面,而是相似的局面也會(huì)了。當(dāng)學(xué)習(xí)的局面足夠多時(shí),幾乎所有局面都會(huì)了。這種學(xué)習(xí)叫做“監(jiān)督學(xué)習(xí)”(supervised learning)。
(2)深度學(xué)習(xí)(提升準(zhǔn)確性)
AlphaGo強(qiáng)的原因之一是policy net這個(gè)模型是通過深度學(xué)習(xí)(deep learning)完成的,深度學(xué)習(xí)是近幾年興起的模擬人腦(神經(jīng)網(wǎng)絡(luò))的機(jī)器學(xué)習(xí)方法,它使AlphaGo學(xué)習(xí)到的policy更加準(zhǔn)確。
(3)增強(qiáng)學(xué)習(xí)(自己跟自己學(xué),生成很多未知的棋局)
AlphaGo從職業(yè)棋手學(xué)完后,感覺沒什么可以從職業(yè)棋手學(xué)的了,為了超越老師和自己,只能自己左右互搏,通過自己跟自己下,找到更好的policy。比如說,她從監(jiān)督學(xué)習(xí)學(xué)到了一個(gè)policy:P0。AlphaGo會(huì)例外做一個(gè)模型P1。P1一開始和P0一樣(模型參數(shù)相同)。稍微改變P1的參數(shù),然后讓P1和P0下,比如,黑用P1,白用P0選點(diǎn),直到下完(終局)。模擬多次后,如果P1比P0強(qiáng)(贏的多),則P1就用新參數(shù),否則,重新在原來基礎(chǔ)上改變參數(shù),我們會(huì)得到比P0強(qiáng)一點(diǎn)點(diǎn)的P1。注意,選點(diǎn)是按照policy的概率的,所以每次模擬是不同的。多次學(xué)習(xí)后AlphaGo會(huì)不斷超越自己,越來越強(qiáng)。這種學(xué)習(xí)我們叫做增強(qiáng)學(xué)習(xí)(reinforcement learning)。它沒有直接的監(jiān)督信息,而是把模型放在環(huán)境中(下棋),通過和環(huán)境的互相作用,環(huán)境對(duì)模型完成任務(wù)的好壞給于反饋(贏了還是輸了),從而模型自行改變自己(更新參數(shù)),更好地完成任務(wù)(贏棋)。增強(qiáng)學(xué)習(xí)之后,AlphaGo在80%的棋局中戰(zhàn)勝以前的自己。
(有空在研究吧)

其他:

  • 馬爾科夫鏈
    https://blog.csdn.net/FnqTyr45/article/details/82598649
    這里面有比較清晰的解釋,表征的是處在當(dāng)下狀態(tài)的時(shí)候,向其他集中狀態(tài)轉(zhuǎn)化的概率,最簡(jiǎn)單的理解是“如果某一天是晴天,那么第二天也很可能是晴天”。
    google pagerank的算法也用到了馬爾科夫鏈的,那個(gè)引用文章的指向加權(quán),好像就是一種馬爾科夫鏈的解釋,暫時(shí)不研究了。

第十二章 算法總結(jié)

集體編程智慧總結(jié).png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 線性回歸 首先,用線性回歸的前提,線性線性,他是能區(qū)分可由一個(gè)直線(面)來回歸模擬的數(shù)據(jù)。如果訓(xùn)練數(shù)據(jù)包含非線性關(guān)...
    喔蕾喔蕾喔蕾蕾蕾閱讀 1,480評(píng)論 0 4
  • ML & DM 集成學(xué)習(xí) 模型融合 ensemble http://wakemeup.space/?p=109 E...
    章魚哥呀閱讀 2,117評(píng)論 0 6
  • ??決策樹(Decision Tree)是一種基本的分類與回歸方法,其模型呈樹狀結(jié)構(gòu),在分類問題中,表示基于特征對(duì)...
    殉道者之花火閱讀 4,926評(píng)論 2 2
  • 以西瓜書為主線,以其他書籍作為參考進(jìn)行補(bǔ)充,例如《統(tǒng)計(jì)學(xué)習(xí)方法》,《PRML》等 第一章 緒論 1.2 基本術(shù)語 ...
    danielAck閱讀 4,901評(píng)論 0 5
  • &胡佳 常州新日催化劑有限公司 【六項(xiàng)精進(jìn)打卡第47天】 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》1遍 共59遍 《大學(xué)》1遍 ...
    807C2閱讀 189評(píng)論 0 0

友情鏈接更多精彩內(nèi)容