日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RS(2)--从文本数据到用户画像

發布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RS(2)--从文本数据到用户画像 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“算法猿的成長“,關注公眾號,選擇加“星標“或“置頂”

總第 122 篇文章,本文大約 5100 字,閱讀大約需要 ?15 分鐘

上一篇文章簡單介紹了推薦系統的定義和應用,推薦系統第二篇,簡單介紹用戶畫像的知識, 以及通過文本來構建用戶畫像的知識。

目錄如下:

  • 用戶畫像

    • 用戶畫像的定義

    • 用戶畫像的關鍵

    • 構建用戶畫像的方法

  • 從文本到用戶啊畫像

    • 構建用戶畫像

    • 結構化文本

    • 標簽選擇

  • 小結


用戶畫像

用戶畫像的定義

用戶畫像其實就是從海量的用戶數據中,建模抽象出來每個用戶的屬性標簽體系,這些屬性通常需要具有一定的商業價值。

而如果從計算機的角度,用戶畫像是對用戶信息的向量化表示,向量化是為了給計算機計算,用戶畫像應該是給機器看的,而不是人看的。

用戶標簽體系一般分為多個大類(一級分類),每個大類下有多個小分類(二級分類),小分類下面還可以繼續再劃分更小的三級、四級等分類,大分類通常包括這幾種:

  • 人口屬性。用戶固有屬性,比如年齡性別等;

  • 興趣偏好。用戶的個人偏好,包括品類便好、品牌便好、距離便好、業務單元便好等;

  • 特征人群。具有特定意義的人群劃分,比如學生、旅游達人、有車一族、母嬰、吃貨等;

  • 用戶分級。區分用戶的層級劃分,比如會員等級、消費水平、優惠敏感度等;

  • LBS屬性。和用戶位置相關的各種屬性,比如用戶的常駐城市和國家、家鄉、用戶足跡、居住商圈、工作商圈等

對于一個推薦系統,用戶畫像并不是它的目的,而是在構建推薦系統的過程中產生的一個關鍵環節的副產品

通常推薦系統會分為召回和排序兩個階段,在這兩個階段中都可能會用到用戶畫像。

用戶畫像的關鍵

用戶畫像的關鍵元素是維度和量化。

維度

維度首先要保證每個維度的名稱是可理解的,比如推薦一部手機給用戶的時候,維度包括價格、手機品牌、手機的內存大小、外觀等,這里需要保證用戶和手機的維度能夠匹配上;

維度的數量一般越多,用戶畫像也越精細,但計算代價也會變大,需要做一個權衡。

具體采用哪些維度,需要以推薦的目的為主,而不是為了用戶畫像而做用戶畫像,比如目的是提高點擊率,那就需要考慮哪些因素可能會影響用戶點擊產品,比如推薦手機的時候,手機的品牌、價格、配置因素,都會影響用戶是否會點擊查看手機的具體信息,因此手機產品的標題都會標明這些很重要的信息,比如:“iphone 11 128g, 5999元”。

量化

對用戶畫像的量化,其實就是對數據的處理方式,也可以說就是特征工程,應該以目標為導向,根據推薦效果為查看具體采用哪種量化的方法。

構建用戶畫像的方法

按照對用戶量化的手段來分,可以分成3類方法

1. 查戶口

直接采用原始數據作為用戶畫像的內容,比如注冊資料等人口統計學信息,或者是購買、瀏覽歷史,這種通常只是做了數據清洗的工作,數據本身沒有做任何抽象和歸納,通常對用戶冷啟動等場景非常有用。

2. 堆數據

方法就是堆積歷史數據,做統計工作,也是最常見的用戶畫像數據,比如常見的興趣標簽,從歷史行為中去挖掘出這些標簽,然后在標簽維度上做數據統計,用統計結果作為量化結果。

3. 黑盒子

采用機器學習方法學習出人類無法直觀理解的稠密向量,在推薦系統中承擔的作用非常大。比如:

  • 使用淺語義模型構建用戶閱讀興趣;

  • 采用矩陣分解得到的隱因子;

  • 采用深度模型學習用戶的 Embedding 向量

這個方法的缺點就是得到的用戶畫像數據通常是不可解釋的,不能直接被人看懂。


從文本到用戶畫像

文本數據是互聯網產品中最常見的信息表達形式,數量多、處理快、存儲小,常見的文本數據可以有:

  • 對用戶來說,包括注冊時候的姓名、性別、愛好,發表的評論等;

  • 對于物品,比如物品的標題、描述、物品本身的內容(一般是新聞資訊類)、其他基本屬性的文本等;

接下來會介紹一些從文本數據建立用戶畫像的方法。

構建用戶畫像

根據用戶和物品的文本信息構建出一個基礎版本的用戶畫像,通常步驟是這樣的:

  • 結構化文本:把所有非結構化的文本結構化,去粗取精,保留關鍵信息;

  • 標簽選擇: 根據用戶行為數據,合并用戶和物品的結構化信息

  • 第一步是最關鍵也是最基礎,其準確性、粒度、覆蓋面都決定了用戶畫像的質量。這一步主要用到文本挖掘算法,接下來會介紹常用的文本挖掘算法;

    第二步則是根據用戶歷史行為把物品畫像傳遞給用戶。

    下面會分別介紹這兩步中的一些做法和常用算法。

    結構化文本

    一般原始的文本數據常常是自然語言描述的,也就是“非結構化”的,但計算機處理數據,只能采用結構化的數據索引,檢索,然后向量化再計算,因此對于文本數據需要先進行結構化,再進行后續的處理。

    對于文本信息,可以利用成熟的 NLP ?算法分析得到的信息有以下幾種:

  • 關鍵詞提取:最基礎的標簽來源,也為其他文本分析提供基礎數據,常用的算法是 TF-IDF 和 TextRank

  • 實體識別:識別一些名詞,包括人物、位置和地點、著作、影視劇、歷史事件和熱點事件等,常用基于詞典的方法結合 CRF 模型

  • 內容分類:將文本按照分類體系分類,用分類來表達較粗粒度的結構化信息;

  • 文本:在無人制定分類體系的前提下,通過無監督算法將文本劃分成多個類簇也是很常見的,類簇編號也是用戶畫像的常見構成

  • 主題模型:從大量已有文本中學習主題向量,然后再預測新的文本在各個主體上的概率分布情況,這也是一種聚類思想,主題向量也不是標簽形式,也是用戶畫像的常用構成;

  • 嵌入:即 Embedding,從詞到篇章,都可以學習這種嵌入表達,它的目標是挖掘出字面意思之下的語義信息,并用有限的維度表達出來。

  • 1. TF-IDF

    TF 全稱是 Term Frequency,即詞頻,而 IDF 是 Inverse Document Frequency, 是逆文檔頻率。這個方法提取關鍵詞的思想很樸素:

    在一篇文章中反復出現的詞會很重要,在所有文本中都出現的詞更不重要。

    根據這思想分別量化成 TF 和 IDF 兩個指標:

    • TF:詞頻,在要提取的文本中出現的次數;

    • IDF:在所有文本中,統計每個詞出現在多少文本中,記為 n,也就是文檔頻率,而文本的數量記為 N。

    所以 IDF 的計算公式如下:

    它有這么幾個特點:

  • 所有詞的 N 都是一樣的,因此出現文本數(n)越少的詞,IDF 也就越大

  • 分母中的 1 是防止有的詞的文檔頻率 n 為 0,導致得到無窮大的計算結果;

  • 對于新詞,本身應該是 n=0,但也可以默認賦值為所有詞的平均文檔頻率

  • TF-IDF 的最終計算公式就是 TF * IDF ,這樣可以計算每個詞語的一個權重,根據權重來篩選關鍵詞的方式通常有這兩種:

  • 選擇 top-k 的詞語,簡單直接,缺點是需要考慮 k 的取值,如果能提取的詞語少于 k 個,那所有詞都是關鍵詞,這就是不合理的;

  • 計算所有詞權重的平均值,取權重大于平均值的詞語作為關鍵詞。

  • 另外,根據實際場景,可能會加入一些過濾條件,比如只提取動詞和名詞作為關鍵詞。

    2. TextRank

    TextRank 是著名的 PageRank 算法的衍生算法之一,PageRank 算法是谷歌用來衡量網頁重要性的算法,因此 TextRank 算法的思想也比較相似,可以概括為:

  • 首先在文本中,設定一個窗口寬度,比如 k 個詞,統計窗口內的詞之間的共現關系將其看成無向圖(圖就是網絡,由存在連接關系的節點構成,所謂無向圖,就是節點之間的連接關系不考慮從誰出發,有關系即可);

  • 所有詞的初始化重要性都是 1;

  • 每個節點把自己的權重平均分配給“和自己有連接”的其他節點;

  • 每個節點將所有其他節點分給自己的權重之和,作為自己的新權重;

  • 如此反復迭代第3、4兩步,直到所有的節點權重收斂為止。

  • 通過這個算法計算得到的詞語權重,會呈現這樣的特點:有共現關系的會互相支持對方成為關鍵詞

    3. 內容分類

    在門戶網站的時代,每個網站都有自己的頻道體系,這個頻道體系就是一個非常大的內容分類體系,而到了現在的移動互聯網時代,新聞資訊類的 app 也會對不同的新聞進行分類到對應的不同頻道下,比如熱門、娛樂、體育、科技、金融等這樣的分類體系,這種做法可以得到最粗粒度的結構化信息,也是在用戶冷啟動時探索用戶興趣的方法。

    長文本的內容分類可以提取很多信息,但短文本的內容分類則因為可提取信息較少而比較困難。短文本分類方面經典的算法是 SVM,在工具上現在最常用的是 Facebook 開源的 FastText。

    4. 實體識別

    命名實體識別(Named-Entity Recognition, NER)在 NLP 中常常被認為是序列標注問題,和分詞、詞性標注屬于同一類問題。

    所謂序列標注問題,就是給定一個字符序列,從左到右遍歷每個字符,一邊遍歷一邊對每個字符分類,分類的體系因序列標注問題不同而不同:

  • 分詞問題:劃分詞語,對每個字符分類是 “詞開始”,“詞中間”,“詞結束” 三類之一;

  • 詞性標注:對每個分好的詞,分類為定義的詞性集合之一

  • 實體識別:對每個分好的詞,識別為定義的命名實體集合之一

  • 常用的算法就是**隱馬爾可夫模型(HMM)**或者條件隨機場(CRF)。

    另外還有比較實用的非模型做法:詞典法。提前準備好各種實體的詞典,使用 trie-tree ?數據結構存儲,拿著分好的詞去詞典里找,找到個某個詞就認為是提前定義好的實體了。

    在工業級別的工具上,spaCy 比 NLTK 在效率上優秀一些。

    5. 聚類

    目前常用的聚類方法主要是主題模型,同樣作為無監督算法,以 LDA 為代表的主題模型能夠更準確地抓住主題,并且能夠得到軟聚類的效果即每個文本可以屬于多個類簇。

    LDA 模型需要設定主題個數,如果有時間,可以對主題個數 K 做一些實驗進行挑選,方法是每次計算 K 個主題兩兩之間的平均相似度,選擇一個較低的 K 值;但如果時間不足,那么在推薦系統領域,只要計算資源夠用,主題數量可以盡量多一些

    另外,需要注意的是,得到文本在各個主題上的分布,可以保留概率最大的前幾個主題作為文本的主題。

    LDA 工程上的困難在于并行化,如果文本數量沒有到海量程度,提高單機配置是可以的,開源的訓練工具有 Gensim,PLDA 等。

    6. 詞嵌入

    詞嵌入,即 Word Embedding,前面的幾種方案,除了 LDA,其他都是得到一些標簽,而且都是稀疏的,而詞嵌入可以為每個詞學習得到一個稠密的向量。

    簡單說,一個詞語可能隱藏很多語義信息,比如北京,可能包含“首都、中國、北方、直轄市、大城市”等等,這些語義在所有文本上是有限的,比如 128 個,所以可以用一個 128 維的向量表達每個詞語,向量中各個維度上的值大小代表了詞包含各個語義的多少

    這些向量的用途有:

  • 計算詞語之間的相似度,擴充結構化標簽;

  • 累加得到一個文本的稠密向量;

  • 用于聚類

  • 在這方面最著名的算法就是 Word2Vec,它是用淺層神經網絡學習每個詞語的向量表達,其最大的貢獻是在工程技巧上的優化,使得百萬詞的規模在單機上可以幾分鐘就跑出結果。

    標簽選擇

    完成第一步的結構化文本信息后,可以得到標簽(關鍵詞、分類等)、主題、詞嵌入向量,接下來就是第二步,如何將物品的結構化信息給用戶呢?

    第一種做法是非常簡單粗暴,直接將用戶產生過行為的物品標簽累積在一起;

    第二種方法則是這樣一個思路:將用戶對物品的行為,是否有消費看成一個分類問題,用戶通過實際行動幫助我們標注了若干數據,那么挑選出他實際感興趣的特性就變成了特征選擇問題。

    最常用的是兩個方法:卡方檢驗(CHI)和信息增益(IG)。基本思想是:

  • 把物品的結構化內容看成文檔;

  • 把用戶對物品的行為看成是類別;

  • 每個用戶看見過的物品就是一個文本集合;

  • 在這個文本集合上采用特征選擇算法選出每個用戶關心的東西。

  • 1. 卡方檢驗

    卡方檢驗是一種監督學習算法,即需要提供分類標注信息,為什么需要呢?因為在文本分類任務中,挑選和檢測就是為了分類任務服務;

    卡方檢驗本質上是在檢驗“詞和某個類別 C 相互獨立“這個假設是否成立,如果偏離越大,說明這個詞很可能屬于類別 C,這個詞就是關鍵詞了。

    具體來說,計算一個詞 Wi 和 一個類別 Cj 的卡方值,需要統計四個值:

  • 類別為 Cj 的文本中出現詞語 Wi 的文本數 A;

  • 詞 Wi 在非 Cj 的文本中出現的文本數 B;

  • 類別為 Cj 的文本中沒有出現詞語 Wi 的文本數 C;

  • 詞 Wi 在非 Cj 的文本中沒有出現的文本數 D。

  • 用表格在展示如下:

    卡方檢驗屬于類別Cj不屬于類別Cj總計
    包含詞 WiABA+B
    不包含詞 WiCDC+D
    總計A+CB+DN=A+B+C+D

    卡方值的計算公式如下:

    對于這個計算,有這幾點說明:

  • 每個詞和每個類別都要計算,只要對其中一個類別有幫助的詞都應該留下;

  • 因為是比較卡方值的大小,可以不需要 N ,因為它是總的文本數,每個詞都一樣;

  • 卡方值越大,表示離“詞語和類別相互獨立”的假設越遠,也就是詞語和類別更可能是互相不獨立,也就是詞語可能就是關鍵詞。

  • 2. 信息增益

    信息增益也是一種有監督的關鍵詞選擇方法,需要標注信息。

    首先要了解信息熵這個概念,它其實指的是對一件事情的不確定性的大小,比如給定任意一個文本,讓你猜它屬于什么類別,如果每個類別的文本數量差不多,那么肯定不好猜,但是假如少數類別的文本,比如類別C的文本占據了90%的數量,那么可以猜它是類別 C 的猜中概率就很高。

    這兩種情況的區別激素信息熵不同:

  • 各個類別的文本數量差不多時,信息熵比較大;

  • 少數類別的文本數量明顯較多時,信息熵就較小。

  • 接下來,假如從一堆文本中挑出包含有詞語 W 的文本數,再來猜任意一條文本的類別時,還是會存在上述兩種情況,但如果在整個文本上的情況是 1,挑出包含詞 W 后的情況是 2,那么這種情況就說明 W 發揮了很大作用,這個過程其實也就是信息增益了。

    信息增益計算的步驟如下:

  • 統計全局文本的信息熵;

  • 統計每個詞的條件熵,也就是知道一個詞后再統計文本的信息熵,這里需要統計包含和不包含詞兩部分的信息熵,再按照各自文本比例加權平均;

  • 兩者相減就是每個詞的信息增益。

  • 信息增益應用最廣的就是決策樹分類算法,經典的決策樹分類算法挑選分裂點時就是計算每個屬性的信息增益,始終選擇信息增益最大的節點作為分裂節點。

    卡方檢驗和信息增益的不同之處:前者是針對每個行為單獨篩選一套標簽,后者是全局統一篩選。


    小結

    這篇文章先是介紹了什么是用戶畫像,常用的構建用戶畫像的例子,然后介紹了從文本數據來構建用戶畫像的方法,以及如何結合物品信息和用戶信息。


    參考:

    • 《推薦系統三十六式》第4-5節課程


    精選AI文章

    1.?機器學習入門學習資料推薦

    2.初學者的機器學習入門實戰教程!

    3.常用機器學習算法匯總比較(完)

    4.特征工程之數據預處理(上)

    5.實戰|手把手教你訓練一個基于Keras的多標簽圖像分類器

    精選python文章

    1.?Python 基礎入門--簡介和環境配置

    2.?python版代碼整潔之道

    3.?快速入門 Jupyter notebook

    4.?Jupyter 進階教程

    5.?10個高效的pandas技巧

    精選教程資源文章

    1.?[資源分享] TensorFlow 官方中文版教程來了

    2.?[資源]推薦一些Python書籍和教程,入門和進階的都有!

    3.?[Github項目推薦] 推薦三個助你更好利用Github的工具

    4.?Github上的各大高校資料以及國外公開課視頻

    5.?GitHub上有哪些比較好的計算機視覺/機器視覺的項目?

    歡迎關注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!

    ?

    如果覺得不錯,在看、轉發就是對小編的一個支持!

    總結

    以上是生活随笔為你收集整理的RS(2)--从文本数据到用户画像的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。