【NLP】十分鍾快覽自然語言處理學習總結


十分鍾學習自然語言處理概述

作者:白寧超

2016年9月23日00:24:12

摘要:近來自然語言處理行業發展朝氣蓬勃,市場應用廣泛。筆者學習以來寫了不少文章,文章深度層次不一,今天因為某種需要,將文章全部看了一遍做個整理,也可以稱之為概述。關於這些問題,博客里面都有詳細的文章去介紹,本文只是對其各個部分高度概括梳理。本文原創,轉載注明出處十分鍾學習自然語言處理概述  )

1 什么是文本挖掘?

文本挖掘是信息挖掘的一個研究分支,用於基於文本信息的知識發現。文本挖掘的准備工作由文本收集、文本分析和特征修剪三個步驟組成。目前研究和應用最多的幾種文本挖掘技術有:文檔聚類、文檔分類和摘要抽取。

2 什么是自然語言處理?

自然語言處理是計算機科學領域與人工智能領域中的一個重要方向。它研究人與計算機之間用自然語言進行有效通信的理論和方法。融語言學、計算機科學、數學等於一體的科學。
自然語言處理原理:形式化描述-數學模型算法化-程序化-實用化
語音的自動合成與識別、機器翻譯、自然語言理解、人機對話、信息檢索、文本分類、自動文摘等。

3 常用中文分詞?

中文文本詞與詞之間沒有像英文那樣有空格分隔,因此很多時候中文文本操作都涉及切詞,這里整理了一些中文分詞工具。
StanfordNLP(直接使用CRF 的方法,特征窗口為5。)漢語分詞工具(個人推薦

哈工大語言雲

庖丁解牛分詞

盤古分詞  ICTCLAS(中科院)漢語詞法分析系統 

IKAnalyzer(Luence項目下,基於java的) 

FudanNLP(復旦大學)

4 詞性標注方法?句法分析方法?

原理描述:標注一篇文章中的句子,即語句標注,使用標注方法BIO標注。則觀察序列X就是一個語料庫(此處假設一篇文章,x代表文章中的每一句,X是x的集合),標識序列Y是BIO,即對應X序列的識別,從而可以根據條件概率P(標注|句子),推測出正確的句子標注。  

顯然,這里針對的是序列狀態,即CRF是用來標注或划分序列結構數據的概率化結構模型,CRF可以看作無向圖模型或者馬爾科夫隨機場。   用過CRF的都知道,CRF是一個序列標注模型,指的是把一個詞序列的每個詞打上一個標記。一般通過,在詞的左右開一個小窗口,根據窗口里面的詞,和待標注詞語來實現特征模板的提取。最后通過特征的組合決定需要打的tag是什么。

5 命名實體識別?三種主流算法,CRF,字典法和混合方法  

1 CRF:在CRF for Chinese NER這個任務中,提取的特征大多是該詞是否為中國人名姓氏用字,該詞是否為中國人名名字用字之類的,True or false的特征。所以一個可靠的百家姓的表就十分重要啦~在國內學者做的諸多實驗中,效果最好的人名可以F1測度達到90%,最差的機構名達到85%。  

2 字典法:在NER中就是把每個字都當開頭的字放到trie-tree中查一遍,查到了就是NE。中文的trie-tree需要進行哈希,因為中文字符太多了,不像英文就26個。  

3 對六類不同的命名實體采取不一樣的手段進行處理,例如對於人名,進行字級別的條件概率計算。   中文:哈工大(語言雲)上海交大    英文:stanfordNER等

6 基於主動學習的中醫文獻句法識別研究  

6.1 語料庫知識?       

語料庫作為一個或者多個應用目標而專門收集的,有一定結構的、有代表的、可被計算機程序檢索的、具有一定規模的語料的集合。    

語料庫划分:① 時間划分② 加工深度划分:標注語料庫和非標注語料庫③ 結構划分⑤ 語種划分⑥ 動態更新程度划分:參考語料庫和監控語料庫    

語料庫構建原則:①   代表性②   結構性③   平衡性④   規模性⑤   元數據:元數據對       

語料標注的優缺點

①   優點: 研究方便。可重用、功能多樣性、分析清晰。

②   缺點: 語料不客觀(手工標注准確率高而一致性差,自動或者半自動標注一致性高而准確率差)、標注不一致、准確率低

6.2 條件隨機場解決標注問題?      

條件隨機場用於序列標注,中文分詞、中文人名識別和歧義消解等自然語言處理中,表現出很好的效果。原理是:對給定的觀察序列和標注序列,建立條件概率模型。條件隨機場可用於不同預測問題,其學習方法通常是極大似然估計。      

我愛中國,進行序列標注案例講解條件隨機場。(規則模型和統計模型問題)   

條件隨機場模型也需要解決三個基本問題:特征的選擇(表示第i個觀察值為“愛”時,相對yi,yi-1的標記分別是B,I),參數訓練和解碼。     

6.3 隱馬爾可夫模型      

應用:詞類標注、語音識別、局部句法剖析、語塊分析、命名實體識別、信息抽取等。應用於自然科學、工程技術、生物科技、公用事業、信道編碼等多個領域。   

馬爾可夫鏈:在隨機過程中,每個語言符號的出現概率不相互獨立,每個隨機試驗的當前狀態依賴於此前狀態,這種鏈就是馬爾可夫鏈。   

多元馬爾科夫鏈:考慮前一個語言符號對后一個語言符號出現概率的影響,這樣得出的語言成分的鏈叫做一重馬爾可夫鏈,也是二元語法。二重馬爾可夫鏈,也是三元語法,三重馬爾可夫鏈,也是四元語法      

隱馬爾可夫模型思想的三個問題 

問題1(似然度問題):給一個HMM λ=(A,B) 和一個觀察序列O,確定觀察序列的似然度問題 P(O|λ) 。(向前算法解決)          

問題2(解碼問題):給定一個觀察序列O和一個HMM λ=(A,B),找出最好的隱藏狀態序列Q。(維特比算法解決)          

問題3(學習問題):給定一個觀察序列O和一個HMM中的狀態集合,自動學習HMM的參數A和B。(向前向后算法解決)

6.4 Viterbi算法解碼      

思路:

1 計算時間步1的維特比概率

2 計算時間步2的維特比概率,在(1) 基礎計算

3 計算時間步3的維特比概率,在(2) 基礎計算

4 維特比反向追蹤路徑         

維特比算法與向前算法的區別:     

(1)維特比算法要在前面路徑的概率中選擇最大值,而向前算法則計算其總和,除此之外,維特比算法和向前算法一樣。     

(2)維特比算法有反向指針,尋找隱藏狀態路徑,而向前算法沒有反向指針。      

HMM和維特比算法解決隨機詞類標注問題,利用Viterbi算法的中文句法標注  

6.5 序列標注方法       參照上面詞性標注    

6.6 模型評價方法      

模型:方法=模型+策略+算法   

模型問題涉及:訓練誤差、測試誤差、過擬合等問題。通常將學習方法對未知數據的預測能力稱為泛化能力。

模型評價參數:      

准確率P=識別正確的數量/全部識別出的數量   

錯誤率 =識別錯誤的數量/全部識別出的數量   

精度=識別正確正的數量/識別正確的數量      

召回率R=識別正確的數量/全部正確的總量(識別出+識別不出的)   

F度量=2PR/(P+R)      

數據正負均衡適合准確率    數據不均適合召回率,精度,F度量   

幾種模型評估的方法:

K-折交叉驗證、隨機二次抽樣評估等    ROC曲線評價兩個模型好壞  

7 基於文本處理技術的研究生英語等級考試詞匯表構建系統  

完成對2002--2010年17套GET真題的核心單詞抽取。其中包括數據清洗,停用詞處理,分詞,詞頻統計,排序等常用方法。真題算是結構化數據,有一定規則,比較容易處理。此過程其實就是數據清洗過程)最后把所有單詞集中匯總,再去除如:a/an/of/on/frist等停用詞(中文文本處理也需要對停用詞處理,諸如:的,地,是等)。處理好的單詞進行去重和詞頻統計,最后再利用網絡工具對英語翻譯。然后根據詞頻排序。    

7.1 Apache Tika?      

Apache Tika內容抽取工具,其強大之處在於可以處理各種文件,另外節約您更多的時間用來做重要的事情。   

Tika是一個內容分析工具,自帶全面的parser工具類,能解析基本所有常見格式的文件   

Tika的功能:•文檔類型檢測   •內容提取  •元數據提取  •語言檢測

7.2 文本詞頻統計?詞頻排序方法?      

算法思想:

1 歷年(2002—2010年)GET考試真題,文檔格式不一。網上收集                

2 對所有格式不一的文檔進行統計處理成txt文檔,格式化(去除漢字/標點/空格等非英文單詞)和去除停用詞(去除891個停用詞)處理。                

3 對清洗后的單詞進行去重和詞頻統計,通過Map統計詞頻,實體存儲:單詞-詞頻。(數組也可以,只是面對特別大的數據,數組存在越界問題)。排序:根據詞頻或者字母

4 提取核心詞匯,大於5的和小於25次的數據,可以自己制定閾值。遍歷list<實體>列表時候,通過獲取實體的詞頻屬性控制選取詞匯表尺寸。                

5 最后一步,中英文翻譯。     

8 朴素貝葉斯模型的文本分類器的設計與實現  

8.1 朴素貝葉斯公式  

0:喜悅  1:憤怒 2:厭惡 3:低落  

8.2 朴素貝葉斯原理  

-->訓練文本預處理,構造分類器。(即對貝葉斯公式實現文本分類參數值的求解,暫時不理解沒關系,下文詳解)  

-->構造預測分類函數  

-->對測試數據預處理  

-->使用分類器分類    

對於一個新的訓練文檔d,究竟屬於如上四個類別的哪個類別?我們可以根據貝葉斯公式,只是此刻變化成具體的對象。    

> P( Category | Document):測試文檔屬於某類的概率    

> P( Category)):從文檔空間中隨機抽取一個文檔d,它屬於類別c的概率。(某類文檔數目/總文檔數目)    

> (P ( Document | Category ):文檔d對於給定類c的概率(某類下文檔中單詞數/某類中總的單詞數)    

> P(Document):從文檔空間中隨機抽取一個文檔d的概率(對於每個類別都一樣,可以忽略不計算。此時為求最大似然概率)    

>  C(d)=argmax {P(C_i)*P(d|c_i)}:求出近似的貝葉斯每個類別的概率,比較獲取最大的概率,此時文檔歸為最大概率的一類,分類成功。  

綜述

1.  事先收集處理數據集(涉及網絡爬蟲和中文切詞,特征選取)      

2.  預處理:(去掉停用詞,移除頻數過小的詞匯【根據具體情況】)      

3.  實驗過程:

數據集分兩部分(3:7):30%作為測試集,70%作為訓練集         

增加置信度:10-折交叉驗證(整個數據集分為10等份,9份合並為訓練集,余下1份作為測試集。一共運行10遍,取平均值作為分類結果)優缺點對比分析      

4. 評價標准:          

宏評價&微評價          

平滑因子

8.3 生產模型與判別模型區別       

1)生產式模型:直接對聯合分布進行建模,如:隱馬爾科夫模型、馬爾科夫隨機場等       

2)判別式模型:對條件分布進行建模,如:條件隨機場、支持向量機、邏輯回歸等。          

生成模型優點:1)由聯合分布2)收斂速度比較快。3)能夠應付隱變量。 缺點:為了估算准確,樣本量和計算量大,樣本數目較多時候不建議使用。          

判別模型優點:1)計算和樣本數量少。2)准確率高。缺點:收斂慢,不能針對隱變量。  

8.4 

ROC曲線      

ROC曲線又叫接受者操作特征曲線,比較學習器模型好壞可視化工具,橫坐標參數假正例率,縱坐標參數是真正例率。曲線越靠近對角線(隨機猜測線)模型越不好。      

好的模型,真正比例比較多,曲線應是陡峭的從0開始上升,后來遇到真正比例越來越少,假正比例元組越來越多,曲線平緩變的更加水平。完全正確的模型面積為1

9 統計學知識

信息圖形化(餅圖,線形圖等)

集中趨勢度量(平均值 中位數 眾數 方差等)

概率

排列組合

分布(幾何二項泊松正態卡方)

統計抽樣

樣本估計

假設檢驗

回歸

10 stanfordNLP

句子理解、自動問答系統、機器翻譯、句法分析、標注、情感分析、文本和視覺場景和模型, 以及自然語言處理數字人文社會科學中的應用和計算。

11 APache OpenNLP

Apache的OpenNLP庫是自然語言文本的處理基於機器學習的工具包。它支持最常見的NLP任務,如斷詞,句子切分,部分詞性標注,命名實體提取,分塊,解析和指代消解。

句子探測器:句子檢測器是用於檢測句子邊界

標記生成器:該OpenNLP斷詞段輸入字符序列為標記。常是這是由空格分隔的單詞,但也有例外。

名稱搜索:名稱查找器可檢測文本命名實體和數字。

POS標注器:該OpenNLP POS標注器使用的概率模型來預測正確的POS標記出了標簽組。

細節化:文本分塊由除以單詞句法相關部分,如名詞基,動詞基的文字,但沒有指定其內部結構,也沒有其在主句作用。

分析器:嘗試解析器最簡單的方法是在命令行工具。該工具僅用於演示和測試。請從我們網站上的英文分塊

12 Lucene

Lucene是一個基於Java的全文信息檢索工具包,它不是一個完整的搜索應用程序,而是為你的應用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta(雅加達) 家族中的一個 開源項目。也是目前最為流行的基於Java開源全文檢索工具包。

目前已經有很多應用程序的搜索功能是基於 Lucene ,比如Eclipse 幫助系統的搜索功能。Lucene能夠為文本類型的數 據建立索引,所以你只要把你要索引的數據格式轉化的文本格式,Lucene 就能對你的文檔進行索引和搜索。

13 Apache Solr

Solr它是一種開放源碼的、基於 Lucene Java 的搜索服務器。Solr 提供了層面搜索(就是統計)、命中醒目顯示並且支持多種輸出格式。它易於安裝和配置, 而且附帶了一個基於HTTP 的管理界面。可以使用 Solr 的表現優異的基本搜索功能,也可以對它進行擴展從而滿足企業的需要。

Solr的特性包括:

•高級的全文搜索功能

•專為高通量的網絡流量進行的優化

•基於開放接口(XML和HTTP)的標准

•綜合的HTML管理界面

•可伸縮性-能夠有效地復制到另外一個Solr搜索服務器

•使用XML配置達到靈活性和適配性

•可擴展的插件體系 solr中文分詞

14 機器學習降維

主要特征選取、隨機森林、主成分分析、線性降維

15 領域本體構建方法   

1 確定領域本體的專業領域和范疇

2 考慮復用現有的本體

3 列出本體涉及領域中的重要術語

4 定義分類概念和概念分類層次

5 定義概念之間的關系

16 構建領域本體的知識工程方法:

主要特點:本體更強調共享、重用,可以為不同系統提供一種統一的語言,因此本體構建的工程性更為明顯。

方法:目前為止,本體工程中比較有名的幾種方法包括TOVE 法、Methontology方法、骨架法、IDEF-5法和七步法等。(大多是手工構建領域本體)

現狀: 由於本體工程到目前為止仍處於相對不成熟的階段,領域本體的建設還處於探索期,因此構建過程中還存在着很多問題。

方法成熟度: 以上常用方法的依次為:七步法、Methontology方法、IDEF-5法、TOVE法、骨架法。

17 特征工程


 

1 特征工程是什么?

數據和特征決定了機器學習的上限,而模型和算法只是逼近這個上限而已。特征工程本質是一項工程活動,目的是最大限度地從原始數據中提取特征以供算法和模型使用。通過總結和歸納,人們認為特征工程包括以下方面:


特征處理是特征工程的核心部分,特征處理方法包括數據預處理,特征選擇,降維等。

2 特征提取:特征提取是指將機器學習算法不能識別的原始數據轉化為算法可以識別的特征的過程。

實例解析:文本是由一系列文字組成的,這些文字在經過分詞后會形成一個詞語集合,對於這些詞語集合(原始數據),機器學習算法是不能直接使用的,我們需要將它們轉化成機器學習算法可以識別的數值特征(固定長度的向量表示),然后再交給機器學習的算法進行操作。再比如說,圖片是由一系列像素點構(原始數據)成的,這些像素點本身無法被機器學習算法直接使用,但是如果將這些像素點轉化成矩陣的形式(數值特征),那么機器學習算法就可以使用了。特征提取實際上是把原始數據轉化為機器學習算法可以識別的數值特征的過程,不存在降維的概念,特征提取不需要理會這些特征是否是有用的;而特征選擇是在提取出來的特征中選擇最優的一個特征子集。

文本分類特征提取步驟:

假設一個語料庫里包含了很多文章,在對每篇文章作了分詞之后,可以把每篇文章看作詞語的集合。然后將每篇文章作為數據來訓練分類模型,但是這些原始數據是一些詞語並且每篇文章詞語個數不一樣,無法直接被機器學習算法所使用,機器學習算法需要的是定長的數值化的特征。因此,我們要做的就是把這些原始數據數值化,這就對應了特征提取。如何做呢?

  1. 對訓練數據集的每篇文章,我們進行詞語的統計,以形成一個詞典向量。詞典向量里包含了訓練數據里的所有詞語(假設停用詞已去除),且每個詞語代表詞典向量中的一個元素。
  2. 在經過第一步的處理后,每篇文章都可以用詞典向量來表示。這樣一來,每篇文章都可以被看作是元素相同且長度相同的向量,不同的文章具有不同的向量值。這也就是表示文本的詞袋模型(bag of words)。
  3. 針對於特定的文章,如何給表示它的向量的每一個元素賦值呢?最簡單直接的辦法就是0-1法了。簡單來說,對於每一篇文章,我們掃描它的詞語集合,如果某一個詞語出現在了詞典中,那么該詞語在詞典向量中對應的元素置為1,否則為0。

在經過上面三步之后,特征提取就完成了。對於每一篇文章,其中必然包含了大量無關的特征,而如何去除這些無關的特征,就是特征選擇要做的事情了。

3 數據預處理:未經處理的特征,這時的特征可能有以下問題:(標准化的前提是特征值服從正態分布,標准化后,其轉換成標准正態分布)

  • 特征的規格不一樣。無量綱化可以解決。
  • 信息冗余:對於某些定量特征,其包含的有效信息為區間划分,例如學習成績,假若只關心“及格”或不“及格”,那么需要將定量的考分,轉換成“1”和“0”表示及格和未及格。二值化可以解決這一問題。
  • 定性特征不能直接使用:某些機器學習算法和模型只能接受定量特征的輸入,那么需要將定性特征轉換為定量特征。假設有N種定性值,則將這一個特征擴展為N種特征,當原始特征值為第i種定性值時,第i個擴展特征賦值為1,其他擴展特征賦值為0。
  • 存在缺失值:缺失值需要補充。
  • 信息利用率低:不同的機器學習算法和模型對數據中信息的利用是不同的。

使用sklearn中的preproccessing庫來進行數據預處理,可以覆蓋以上問題的解決方案。

4 特征選擇:當數據預處理完成后,我們需要選擇有意義的特征輸入機器學習的算法和模型進行訓練。特征選擇是指去掉無關特征,保留相關特征的過程,也可以認為是從所有的特征中選擇一個最好的特征子集。特征選擇本質上可以認為是降維的過程。

1)Filter(過濾法):按照發散性或者相關性對各個特征進行評分,設定閾值或者待選擇閾值的個數,選擇特征。如:方差選擇法、相關系數法、卡方檢驗法、互信息法

方差選擇法:使用方差選擇法,先要計算各個特征的方差,然后根據閾值,選擇方差大於閾值的特征。
相關系數法:使用相關系數法,先要計算各個特征對目標值的相關系數以及相關系數的P值。
卡方檢驗法:經典的卡方檢驗是檢驗定性自變量對定性因變量的相關性。假設自變量有N種取值,因變量有M種取值,考慮自變量等於i且因變量等於j的樣本頻數的觀察值與期望的差距,構建統計量。
互信息法:   經典的互信息也是評價定性自變量對定性因變量的相關性的。

2)Wrapper(包裝法):根據目標函數(通常是預測效果評分),每次選擇若干特征,或者排除若干特征。如:遞歸特征消除法

遞歸特征消除法:遞歸消除特征法使用一個基模型來進行多輪訓練,每輪訓練后,消除若干權值系數的特征,再基於新的特征集進行下一輪訓練。

3)Embedded(嵌入法):先使用某些機器學習的算法和模型進行訓練,得到各個特征的權值系數,根據系數從大到小選擇特征。類似於Filter方法,但是是通過訓練來確定特征的優劣。

基於懲罰項的特征選擇法:使用帶懲罰項的基模型,除了篩選出特征外,同時也進行了降維。使用feature_selection庫的SelectFromModel類結合帶L1懲罰項的邏輯回歸模型。如:基於懲罰項的特征選擇法、基於樹模型的特征選擇法

基於樹模型的特征選擇法:樹模型中GBDT也可用來作為基模型進行特征選擇,使用feature_selection庫的SelectFromModel類結合GBDT模型。

4)深度學習方法:從深度學習模型中選擇某一神經層的特征后就可以用來進行最終目標模型的訓練了。

5 降維: 當特征選擇完成后,可以直接訓練模型了,但是可能由於特征矩陣過大,導致計算量大,訓練時間長的問題,因此降低特征矩陣維度也是必不可少的。常見的降維方法:L1懲罰項的模型、主成分分析法(PCA)、線性判別分析(LDA)。PCA和LDA有很多的相似點,其本質是要將原始的樣本映射到維度更低的樣本空間中 。所以說PCA是一種無監督的降維方法,而LDA是一種有監督的降維方法。
1)主成分分析法(PCA): 使用decomposition庫的PCA類選擇特征。
2)線性判別分析法(LDA): 使用lda庫的LDA類選擇特征。

18 模型評估之交叉驗證

k折交叉驗證(k-fold cross-validation)用一部分數據來訓練模型,然后用另一部分數據來測試模型的泛化誤差。該算法的具體步驟如下:

  1. 隨機將訓練樣本等分成k份。
  2. 對於每一份驗證數據Sj,算法在S1, …, SJ-1, SJ+1, …, Sk上進行特征選擇,並且構造文本分類器。把得到的文本分類器在驗證集Sj上求泛化誤差。
  3. 把k個泛化誤差求平均,得到最后的泛化誤差。

19 EM算法

EM算法:當模型里含有隱變量的時候,直接求解參數的極大似然估計就會失效。這時就需要用到來對參數進行迭代求解。EM算法說白了也是求含有隱變量的參數的極大似然估計。常用於混合模型(高斯混合模型,伯努利混合模型),訓練推理主題模型(topic model)時的pSLA等等。

EM算法步驟:給定可觀測變量的集合為X,隱藏變量的集合為Z,模型參數用W的聯合概率分布,即,p(X,Z|W),目標是要最大化似然函數p(X|W),也就是要求出W使得p(X|W)最大。

  1. 選擇參數W的初始值,Wold即隱變量Z的后驗概率,即p(Z|X,Wold)
  2. E步:利用初始值Wold計算隱變量Z的后驗概率分布,p(Z|X,Wold),進而找出logp(X,Z|W)在Z的后驗概率下的期望Q(W,Wold)。
  3. M步:極大化Q(W,Wold),以求出W。
  4. 檢查收斂條件,如果滿足收斂條件則停止;否則,令Wold= Wnew,然后跳轉到第2步,繼續迭代執行。

20、推薦算法

推薦算法通常是在推薦模型中實現的,而推薦模型會負責收集諸如用戶偏好、物品描述這些可用作推薦憑借的數據,據此預測特定用戶組可能感興趣的物品。

1、基於協同過濾算法:
原理:用戶行為中尋找特定模式,創建用戶專屬的推薦內容。
例子:你的朋友喜歡電影哈利波特I,那么就會推薦給你,這是最簡單的基於用戶的協同過濾算法,還有一種是基於Item的協同過濾算法,這種方法訓練過程比較長,但是訓練完成后,推薦過程比較快。
輸入內容:只取決於使用數據(評價、購買、下載、用戶偏好)
類型:基於相似類型的協同
過濾(比如基於興趣類似的用戶或者基於類似的物品) 基於模型的協同過濾
<-----基於用戶的協同過濾案例--->
假設我們有一些用戶已經表達了他們對某些書籍的偏好,他們越喜歡某本書,對這本書的評分也越高(評分范圍是1分到5分)。我們可以在一個矩陣中重現他們的這種偏好,用行代表用戶,用列代表書籍。
在基於用戶的協同過濾算法中,我們要做的第一件事就是根據用戶對書籍的偏好,計算出他們彼此間的相似度。我們從某個單獨用戶的角度來看一下這個問題,以圖一中第一行的用戶為例。通常我們會將每個用戶都作為向量(或者數組),其中包含了用戶對物品的偏好
。通過多種類似的指標對用戶進行對比是相當直接的。在本例中,我們會使用余弦相似點。我們將第一位用戶與其他五位相對比,可以發現第一位與其他用戶的相似度有多少(第一位用戶與其他用戶的相似性。可以在一個單獨的維度中繪制用戶間的余弦相似性。)。就
像大多相似度指標一樣,向量之間的相似度越高,彼此也就越相似。在本例中,第一位用戶與其中兩位有兩本相同的書籍,相似度較高;與另兩位只有一本相同書籍,相似度較低;與最后一位沒有相同書籍,相似度為零。
更常見的情況下,我們可以計算出每名用戶與所有用戶的相似程度,並在相似性矩陣中表現出來(用戶間的相似矩陣,每個用戶的相似度是基於用戶閱讀書籍間的相似性。)。這是一個對稱矩陣,也就是說其中一些有用的屬性是可以執行數學函數運算的。單元格的背景
色表明了用戶彼此間的相似程度,紅色越深則相似度越高。
現在,我們准備使用基於用戶的協同過濾來生成給用戶的推薦。對於特定的用戶來說,這代表着找出與其相似性最高的用戶,並根據這些類似用戶喜愛的物品進行推薦,具體要參照用戶相似程度來加權。我們先以第一個用戶為例,為其生成一些推薦。首先我們找到與這
名用戶相似程度最高的n名用戶,刪除這名用戶已經喜歡過的書籍,再對最相似用戶閱讀過的書籍進行加權,之后將所有結果加在一起。在本例中,我們假設n=2,也就是說取兩名與第一位用戶最相似的用戶,以生成推薦結果,這兩名用戶分別是用戶2及用戶3(圖四)。
由於第一名用戶已經對書籍1和書籍5做出了評分,推薦結果生成書籍3(分數4.5)及書籍4(分數3)。
基於用戶的CF:
1、分析各個用戶對item的評價(通過瀏覽記錄、購買記錄等);
2、依據用戶對item的評價計算得出所有用戶之間的相似度;
3、選出與當前用戶最相似的N個用戶;
4、將這N個用戶評價最高並且當前用戶又沒有瀏覽過的item推薦給當前用戶。
最后,我們要為用戶1推薦物品,則找出與用戶1相似度最高的N名用戶(設N=2)評價的物品,去掉用戶1評價過的物品,則是推薦結果。

<-------基於物品的協同過濾的案例------>
我們還是用同一組用戶(圖一)為例。在基於物品的協同過濾中,與基於用戶的協同過濾類似,我們要做的第一件事就是計算相似度矩陣。但這一回,我們想要針對物品而非用戶來看看它們之間的相似性。與之前類似,我們以書籍作為喜愛者的向量(或數組),將其與
余弦相似度函數相對比,從而揭示出某本書籍與其他書籍之間的相似程度。由於同一組用戶給出的評分大致類似,位於列1的第一本書與位於列5的第五本書相似度是最高的(圖五)。其次是相似度排名第三的書籍,有兩位相同的用戶喜愛;排名第四和第二的書籍只有一
位共同讀者;而排名最后的書籍由於沒有共同讀者,相似度為零。
我們還可以在相似矩陣中展示出所有書籍彼此間的相似程度(圖六)。同樣以背景顏色區分了兩本書彼此間的相似程度,紅色越深相似程度也越高。
現在我們知道每本書彼此間的相似程度了,可以為用戶生成推薦結果。在基於物品的協同過濾中,我們根據用戶此前曾評過分的物品,推薦與其最為相似的物品。在案例中,第一位用戶獲得的推薦結果為第三本書籍,然后是第六本(圖七)。同樣地,我們只取與用戶之
前評論過的書籍最相似的兩本書。
根據上述描述,基於用戶與基於物品的協同過濾似乎非常類似,因此能得出不同的結果這一點確實很有意思。即便在上例中,這兩種方式都能為同一名用戶得出不同的推薦結果,盡管兩者的輸入內容是相同的。在構建推薦時,這兩種形式的協同過濾方式都是值得考慮的
。盡管在向外行描述時,這兩種方法看起來非常類似,但實際上它們能得出非常不同的推薦結果,從而為用戶帶來完全不同的體驗。
根據上述核心思想,可以有如下算法步驟:
建立用戶-物品的倒排表
物品與物品之間的共現矩陣 C[i][j],表示物品 i 與 j 共同被多少用戶所喜歡。
用戶與用戶之間的相似度矩陣 W[i][j] , 根據余弦相似度計算公式計算。
用上面的相似度矩陣來給用戶推薦與他所喜歡的物品相似的其他物品。用戶 u 對物品 j 的興趣程度可以估計為


UserCF 和 ItemCF 的區別和應用
UserCF 算法的特點是:

用戶較少的場合,否則用戶相似度矩陣計算代價很大
適合時效性較強,用戶個性化興趣不太明顯的領域
對新用戶不友好,對新物品友好,因為用戶相似度矩陣不能實時計算
很難提供令用戶信服的推薦解釋
對應地,ItemCF 算法的特點:

適用於物品數明顯小於用戶數的場合,否則物品相似度矩陣計算代價很大
適合長尾物品豐富,用戶個性化需求強的領域
對新用戶友好,對新物品不友好,因為物品相似度矩陣不需要很強的實時性(cosα=(A*B)/(||A||*||B||))
利用用戶歷史行為做推薦解釋,比較令用戶信服
因此,可以看出 UserCF 適用於物品增長很快,實時性較高的場合,比如新聞推薦。而在圖書、電子商務和電影領域,比如京東、天貓、優酷中,ItemCF 則能極大地發揮優勢。在這些網站中,用戶的興趣是比較固定和持久的,而且這些網站的物品更新速度不會特別快,
一天一更新是在忍受范圍內的。


模型評價指標:准確率、召回率、覆蓋率、新穎性、驚喜度、實時性

2、基於內容過濾的推薦算法
原理:用戶喜歡和自己關注過的Item在內容上類似的Item。
例子:你看了哈利波特I,基於內容的推薦算法發現哈利波特II-VI,與你以前觀看的在內容上面(共有很多關鍵詞)有很大關聯性,就把后者推薦給你,這種方法可以避免Item的冷啟動問題(冷啟動:如果一個Item從沒有被關注過,其他推薦算法則很少會去推薦,但是
基於內容的推薦算法可以分析Item之間的關系,實現推薦),
缺點:①推薦的Item可能會重復,典型的就是新聞推薦,如果你看了一則關於MH370的新聞,很可能推薦的新聞和你瀏覽過的,內容一致;②對於一些多媒體的推薦(比如音樂、電影、圖片等)由於很難提內容特征,則很難進行推薦,一種解決方式則是人工給這些Item打
標簽。
輸入內容:取決於物品及用戶的內容/描述

3、混合型推薦算法
原理:結合協同過濾和基於內容兩種方式,以利用某個算法優點解決另一個的缺點
輸入內容:通過用戶/物品內容特征及使用數據以借助兩類數據的優勢

4、流行度推薦算法
原理:根據流行度來推薦物品的算法(比如下載、觀看、影響度較高的)
輸入內容:通過使用數據與物品內容(比如分類)

 

 

 數據挖掘十大算法詳解

數據挖掘150道題目

數據挖掘基礎知識

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM