一、什么是用戶畫像?
男,31歲,已婚,收入1萬以上,愛美食,團購達人,喜歡紅酒配香煙。
這樣一串描述即為用戶畫像的典型案例。如果用一句話來描述,即:用戶信息標簽化。
如果用一幅圖來展現(xiàn),即:

二、為什么需要用戶畫像
用戶畫像的核心工作是為用戶打標簽,打標簽的重要目的之一是為了讓人能夠理解并且方便計算機處理,如,可以做分類統(tǒng)計:喜歡紅酒的用戶有多少?喜歡紅酒的人群中,男、女比例是多少?
也可以做數(shù)據(jù)挖掘工作:利用關(guān)聯(lián)規(guī)則計算,喜歡紅酒的人通常喜歡什么運動品牌?利用聚類算法分析,喜歡紅酒的人年齡段分布情況?
大數(shù)據(jù)處理,離不開計算機的運算,標簽提供了一種便捷的方式,使得計算機能夠程序化處理與人相關(guān)的信息,甚至通過算法、模型能夠“理解” 人。當計算機具備這樣的能力后,無論是搜索引擎、推薦引擎、廣告投放等各種應(yīng)用領(lǐng)域,都將能進一步提升精準度,提高信息獲取的效率。
三、如何構(gòu)建用戶畫像
構(gòu)建用戶畫像的步驟:

采集數(shù)據(jù):數(shù)據(jù)的來源有多種,很多公司有自己的CRM系統(tǒng),或者有智能采集系統(tǒng)日志的工具,常用的采集方式包括API、SDK和傳感器采集等,可以通過想要挖掘什么標簽來反推需要的數(shù)據(jù)源。
數(shù)據(jù)清洗:原始數(shù)據(jù)源存在“臟數(shù)據(jù)”,包括數(shù)據(jù)空缺和噪聲、不一致、重復、錯誤等問題,為了保證后期挖掘的準確性,避免對決策造成影響,須對原始數(shù)據(jù)進行預處理。
數(shù)據(jù)標準化:用戶畫像的建立需要有整合多源數(shù)據(jù)(跨屏跨媒體)的能力,例如一個實體可能使用多個設(shè)備,擁有網(wǎng)絡(luò)世界的多個賬號,則須把多個身份ID組合,建立統(tǒng)一的標準,才能完整標識實體的用戶畫像。
用戶建模:通過算法模型來定義人群的用戶畫像,常見為分類模型和聚類模型,例如樸素貝葉斯、決策樹、SVM,神經(jīng)網(wǎng)絡(luò),k-means等。
標簽挖掘:通過平臺來進行標簽的加工和計算,通常需要部署環(huán)境,如通過Hadoop平臺進行訓練和學習,大規(guī)模的并行計算。
標簽驗證:須通過真實case驗證標簽挖掘結(jié)果的正確性,保證標簽對應(yīng)的處理結(jié)果跟預期大體相符。此步驟有時可以跟上個步驟(標簽挖掘)對調(diào),即可以先用小樣本數(shù)據(jù)驗證模型的可靠性,再依照結(jié)果進行調(diào)整,再進行挖掘。
數(shù)據(jù)可視化:即視覺呈現(xiàn)群體或個人的用戶畫像,包括柱狀圖/餅狀圖/表格等,可根據(jù)實際情況選擇合適的可視化方式。
上面介紹了用戶畫像的相關(guān)概念、基本要素和構(gòu)建步驟,下面介紹如何去完成開發(fā),先附上效果圖一張

步驟為:獲取數(shù)據(jù)-->分析數(shù)據(jù)-->生成用戶畫像-->網(wǎng)站實現(xiàn)
獲取數(shù)據(jù):在我們的實際開發(fā)中,原始數(shù)據(jù)是通過在數(shù)據(jù)庫中獲取,本文為了方便通過test.txt文件讀取數(shù)據(jù);
分析數(shù)據(jù):在該步驟中,我們需要對讀取的數(shù)據(jù)進行切割,并提取關(guān)鍵詞及計算關(guān)鍵詞的權(quán)重,這里我們我們利用Python的一個中文分詞工具jieba,如果還沒安裝的可以使用pip安裝(安裝命令為:pip install jieba);
生成用戶畫像:在這個步驟中,我們需要把獲得關(guān)鍵詞生成云詞圖,這里借用wordcloud生成云詞圖(如果還沒安裝可以通過命令pip install wordcloud進行安裝)
# -*- coding: utf-8 -*-
__author__ = 'heroli'
#wordcloud生成中文詞云
from wordcloud import WordCloud
import jieba
# 詞頻計算
import jieba.analyse as analyse
from scipy.misc import imread
import os
from os import path
import matplotlib.pyplot as plt
class WC(object):
? ? # 繪制詞云
? ? def draw_wordcloud(self):
? ? ? ? #讀入一個txt文件
? ? ? ? comment_text = open('static/test.txt','r').read()
? ? ? ? #結(jié)巴分詞,生成字符串,如果不通過分詞,無法直接生成正確的中文詞云
? ? ? ? cut_text = " ".join(jieba.cut(comment_text))
? ? ? ? result = jieba.analyse.textrank(cut_text, topK=1000, withWeight=True)
? ? ? ? # 生成關(guān)鍵詞比重字典
? ? ? ? keywords = dict()
? ? ? ? for i in result:
? ? ? ? ? ? keywords[i[0]] = i[1]
? ? ? ? d = path.dirname(__file__) # 當前文件文件夾所在目錄
? ? ? ? color_mask = imread("static/images/alice.png") # 讀取背景圖片
? ? ? ? cloud = WordCloud(
? ? ? ? ? ? #設(shè)置字體,不指定就會出現(xiàn)亂碼
? ? ? ? ? ? font_path="./fonts/Simfang.ttf",
? ? ? ? ? ? # font_path=path.join(d,'simsun.ttc'),
? ? ? ? ? ? width=200,
? ? ? ? ? ? height=200,
? ? ? ? ? ? #設(shè)置背景色
? ? ? ? ? ? background_color='white',
? ? ? ? ? ? #詞云形狀
? ? ? ? ? ? mask=color_mask,
? ? ? ? ? ? #允許最大詞匯
? ? ? ? ? ? max_words=2000,
? ? ? ? ? ? #最大號字體
? ? ? ? ? ? max_font_size=40
? ? ? ? )
? ? ? ? word_cloud = cloud.generate(cut_text)# 產(chǎn)生詞云
? ? ? ? word_cloud.to_file("static/images/user_img.jpg") #保存圖片
? ? ? ? #? 顯示詞云圖片
? ? ? ? # plt.imshow(word_cloud)
? ? ? ? # plt.axis('off')
? ? ? ? # plt.show()
if __name__ == '__main__':
? ? wc = WC()
? ? wc.draw_wordcloud()
Kmeans聚類算法 python sklearn 用戶畫像
1、基本概念;
聚類分析簡稱聚類(clustering),是一個把數(shù)據(jù)集劃分成子集的過程,每一個子集是一個簇(cluster),使得簇中的樣本彼此相似,但與其他簇中的樣本不相似。
聚類分析不需要事先知道樣本的類別,甚至不用知道類別個數(shù),因此它是一種典型的無監(jiān)督學習算法,一般用于數(shù)據(jù)探索,比如群組發(fā)現(xiàn)和離群點檢測,還可以作為其他算法的預處理步驟。
在工作中遇到用戶畫像、群組劃分問題,而kmeans聚類這一無監(jiān)督學習算法,可以在無數(shù)據(jù)標注訓練情況下,基于距離按將群組劃分不同的簇。
主要的聚類算法一般可以劃分為以下幾類:
方法:
劃分方法:1.發(fā)現(xiàn)球形互斥的簇 2.基于距離 3.可用均值或中心點代表簇中心 4.對中小規(guī)模數(shù)據(jù)有效
層次方法:1.聚類是一個層次分解 2.不能糾正錯誤的合并或劃分 3.可以集成其他技術(shù)
基于密度的方法:1.可以發(fā)現(xiàn)任意形狀的簇 2.簇是對象空間中被低密度區(qū)域分隔的稠密區(qū)域 3.簇密度 4.可能過濾離群點
基于網(wǎng)格的方法:1.使用一種多分辨率網(wǎng)格數(shù)據(jù)結(jié)構(gòu) 2.快速處理
2、Kmeans算法
Kmeans屬于劃分方法的經(jīng)典聚類方法。
算法步驟如下:
選擇K個點作為初始質(zhì)心(隨機產(chǎn)生或者從D中選?。?
repeat?
? ? 將每個點分配到最近的質(zhì)心,形成K個簇?
? ? 重新計算每個簇的質(zhì)心?
until 簇不發(fā)生變化或達到最大迭代次數(shù)2.1 k值選取
k的值是用戶指定的,表示需要得到的簇的數(shù)目。在運用Kmeans算法時,我們一般不知道數(shù)據(jù)的分布情況,不可能知道數(shù)據(jù)的集群數(shù)目,所以一般通過枚舉來確定k的值。另外,在實際應(yīng)用中,由于Kmean一般作為數(shù)據(jù)預處理,或者用于輔助分類貼標簽,所以k一般不會設(shè)置很大。
2.2 初始質(zhì)心的選取
Kmeans算法對初始質(zhì)心的選取比較敏感,選取不同的質(zhì)心,往往會得到不同的結(jié)果。初始質(zhì)心的選取方法,常用以下兩種的簡單方法:一種是隨機選取,一種是用戶指定。
需要注意的是,無論是隨機選取還是用戶指定,質(zhì)心都盡量不要超過原始數(shù)據(jù)的邊界,即質(zhì)心每一維度上的值要落在原始數(shù)據(jù)集每一維度的最小與最大值之間。
2.3 距離度量方法
距離度量方法(或者說相似性度量方法)有很多種,常用的有歐氏距離,余弦相似度,街區(qū)距離,漢明距離等等。在Kmeans算法中,一般采用歐氏距離計算兩個點的距離,歐氏距離如下:
舉個例子,X=(1000,0.1),Y=(900,0.2),那么它們的歐氏距離就是:
舉這個例子是為了說明,當原始數(shù)據(jù)中各個維度的數(shù)量級不同時,它們對結(jié)果的影響也隨之不同,那些數(shù)量級太小的維度,對于結(jié)果幾乎沒產(chǎn)生任何影響。比如所舉的例子中的第二個維度的0.1,0.2,與第一個維度1000的數(shù)量級相差了一萬倍。
為了賦予數(shù)據(jù)每個維度同等的重要性,我們在運用歐氏距離時,必須先對數(shù)據(jù)進行規(guī)范化,比如將每個維度都縮放到[0,1]之間。
2.4 質(zhì)心的計算
在Kmeans算法中,將簇中所有樣本的均值作為該簇的質(zhì)心。這也是Kmeans名字的由來吧。
2.5 算法停止條件
在兩種情況下算法應(yīng)該停止:一種是達到了指定的最大迭代次數(shù),一種是算法已經(jīng)收斂,即各個簇的質(zhì)心不再發(fā)生變化。關(guān)于算法的收斂,在2.5部分討論。
2.6 代價函數(shù)與算法收斂
Kmeans算法的代價函數(shù)比較簡單,就是每個樣本點與其所屬質(zhì)心的距離的平方和(誤差平方和,Sum of Squared Error,簡稱SSE):
與其他機器學習算法一樣,我們要最小化這個代價函數(shù),但這個函數(shù)沒有解析解,所以只能通過迭代求解的方法來逼近最優(yōu)解(這一點也和眾多機器學習算法一樣吧)。所以你再看看算法步驟,其實就是一個迭代過程。
由于代價函數(shù)(SSE)是非凸函數(shù),所以在運用Kmeans算法時,不能保證收斂到一個全局的最優(yōu)解,我們得到的一般是一個局部的最優(yōu)解。
因此,為了取得比較好的效果,一般會多跑幾次算法(用不同的初始質(zhì)心),得到多個局部最優(yōu)解,比較它們的SSE,選取SSE最小的那個。
方法優(yōu)點:
k-平均算法是解決聚類問題的一種經(jīng)典算法,算法簡單、快速。
對處理大數(shù)據(jù)集,該算法是相對可伸縮的和高效率的,因為它的復雜度大約是O(nkt),其中n是所有對象的數(shù)目,k是簇的數(shù)目,t是迭代的次數(shù)。通常k<<n。這個算法經(jīng)常以局部最優(yōu)結(jié)束。
算法嘗試找出使平方誤差函數(shù)值最小的k個劃分。當簇是密集的、球狀或團狀的,而簇與簇之間區(qū)別明顯時,它的聚類效果很好。
缺點:
K 是事先給定的,這個 K 值的選定是非常難以估計的;
對初值敏感,對于不同的初始值,可能會導致不同的聚類結(jié)果。一旦初始值選擇的不好,可能無法得到有效的聚類結(jié)果;
該算法需要不斷地進行樣本分類調(diào)整,不斷地計算調(diào)整后的新的聚類中心,因此當數(shù)據(jù)量非常大時,算法的時間開銷是非常大的。
不適合于發(fā)現(xiàn)非凸面形狀的簇,或者大小差別很大的簇;
對于”噪聲”和孤立點數(shù)據(jù)敏感,少量的該類數(shù)據(jù)能夠?qū)ζ骄诞a(chǎn)生極大影響。
3、Kmeans算法實現(xiàn)
采用python實現(xiàn),基于numpy、sklearn庫,其中從sklearn.cluster中import KMeans。為了可視化聚類效果,對二維數(shù)據(jù)進行聚類并用matplot畫出數(shù)據(jù)不同簇的劃分。
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
@author: liuweima
"""
from sklearn.cluster import KMeans
from sklearn.externals import joblib
import numpy
import time
import matplotlib.pyplot as plt
import sys
reload(sys)
sys.setdefaultencoding('utf8')
if __name__ == '__main__':
? ? ## step 1: 加載數(shù)據(jù)
? ? print "step 1: load data..."
? ? dataSet = []
? ? loss = []
? ? fileIn = open('path')
? ? for line in fileIn.readlines():
? ? ? ? lineArr = line.strip('\xef\xbb\xbf')? ? ? # '\xef\xbb\xbf'是BOM,標識讀入的文件是UTF-8編碼,需strip()切掉
? ? ? ? lineArr = lineArr.strip().split('\t')? ? ? #注意自己文件中每行數(shù)據(jù)中是用什么對列數(shù)據(jù)做分割? 建議先用Word 規(guī)范一下要打開的文件
? ? ? ? dataSet.append([float(lineArr[0])/1.99759326,(float(lineArr[1])-100)/192230])? #數(shù)據(jù)規(guī)范化【0,1】
? ? print dataSet
? ? #設(shè)定不同k值以運算
? ? for k in range(2,10):
? ? ? ? clf = KMeans(n_clusters=k) #設(shè)定k? ?。。。。。。。。?!這里就是調(diào)用KMeans算法
? ? ? ? s = clf.fit(dataSet) #加載數(shù)據(jù)集合
? ? ? ? numSamples = len(dataSet)
? ? ? ? centroids = clf.labels_
? ? ? ? print centroids,type(centroids) #顯示中心點
? ? ? ? print clf.inertia_? #顯示聚類效果
? ? ? ? mark1 = ['or', 'ob', 'og', 'ok', '^r', '+r', 'sr', 'dr', '<r', 'pr']
? ? ? ? #畫出所有樣例點 屬于同一分類的繪制同樣的顏色
? ? ? ? for i in xrange(numSamples):
? ? ? ? ? ? #markIndex = int(clusterAssment[i, 0])
? ? ? ? ? ? plt.plot(dataSet[i][0], dataSet[i][1], mark1[clf.labels_[i]]) #mark[markIndex])
? ? ? ? mark2 = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb']
? ? ? ? # 畫出質(zhì)點,用特殊圖型
? ? ? ? centroids =? clf.cluster_centers_
? ? ? ? for i in range(k):
? ? ? ? ? ? plt.plot(centroids[i][0], centroids[i][1], mark2[i], markersize = 12)
? ? ? ? ? ? #print centroids[i, 0], centroids[i, 1]
? ? ? ? plt.show()
? ? ? ? loss.append(clf.inertia_)
? ? for m in range(8):? #因為k 取值是2-9 (!不包括10) m取值是0-7
? ? ? ? plt.plot(m,loss[m],'bo')
? ? plt.show()
質(zhì)心的初始化、最大迭代次數(shù)都為默認值。
貼出,k取range(2,30)時,kmeans的誤差平方和(SSE)曲線圖。
為了彌補經(jīng)典kmeans聚類算法的不足,出現(xiàn)了一些改進型kmeans
比如二分Kmeans算法(bisectingKmeans)是為了克服Kmeans算法收斂于局部最小值的問題而提出的。
該算法首先將所有點作為一個簇,然后將該簇一分為二。之后選擇其中一個簇繼續(xù)劃分,選擇哪一個簇進行劃分
取決于對其劃分是否可以最大程度降低SSE的值,上述過程不斷迭代,直到得到用戶指定的簇數(shù)目為止。
或者先使用MeanShift算法自動生成k值刪除游離點。
一個標簽通常是人為規(guī)定的高度精煉的特征標識,如年齡段標簽:25~35歲,地域標簽:北京,標簽呈現(xiàn)出兩個重要特征:語義化,人能很方便地理解每個標簽含義。這也使得用戶畫像模型具備實際意義。能夠較好的滿足業(yè)務(wù)需求。如,判斷用戶偏好。短文本,每個標簽通常只表示一種含義,標簽本身無需再做過多文本分析等預處理工作,這為利用機器提取標準化信息提供了便利。
人制定標簽規(guī)則,并能夠通過標簽快速讀出其中的信息,機器方便做標簽提取、聚合分析。所以,用戶畫像,即:用戶標簽,向我們展示了一種樸素、簡潔的方法用于描述用戶信息。
1.數(shù)據(jù)源分析:靜態(tài)信息數(shù)據(jù)(用戶相對穩(wěn)定的信息,如圖所示,主要包括人口屬性、商業(yè)屬性等方面數(shù)據(jù)。這類信息,自成標簽,如果企業(yè)有真實信息則無需過多建模預測,更多的是數(shù)據(jù)清洗工作)、動態(tài)信息數(shù)據(jù),(用戶不斷變化的行為信息,如果存在上帝,每一個人的行為都在時刻被上帝那雙無形的眼睛監(jiān)控著,廣義上講,一個用戶打開網(wǎng)頁,買了一個杯子;與該用戶傍晚溜了趟狗,白天取了一次錢,打了一個哈欠等等一樣都是上帝眼中的用戶行為。當行為集中到互聯(lián)網(wǎng),乃至電商,用戶行為就會聚焦很多,如上圖所示:瀏覽凡客首頁、瀏覽休閑鞋單品頁、搜索帆布鞋、發(fā)表關(guān)于鞋品質(zhì)的微博、贊“雙十一大促給力”的微博消息。等等均可看作互聯(lián)網(wǎng)用戶行為。在互聯(lián)網(wǎng)上,用戶行為,可以看作用戶動態(tài)信息的唯一數(shù)據(jù)來源。如何對用戶行為數(shù)據(jù)構(gòu)建數(shù)據(jù)模型,分析出用戶標簽,將是本文著重介紹的內(nèi)容。)
2.目標分析:用戶畫像的目標是通過分析用戶行為,最終為每個用戶打上標簽,以及該標簽的權(quán)重。如,紅酒 0.8、李寧 0.6。
標簽,表征了內(nèi)容,用戶對該內(nèi)容有興趣、偏好、需求等等。
權(quán)重,表征了指數(shù),用戶的興趣、偏好指數(shù),也可能表征用戶的需求度,可以簡單的理解為可信度,概率。
3.數(shù)據(jù)建模方法:
如何根據(jù)用戶行為,構(gòu)建模型產(chǎn)出標簽、權(quán)重。一個事件模型包括:時間、地點、人物三個要素。每一次用戶行為本質(zhì)上是一次隨機事件,可以詳細描述為:什么用戶,在什么時間,什么地點,做了什么事。
1、定性與定量相結(jié)合的研究方法
定性化研究方法就是確定事物的性質(zhì),是描述性的;定量化研究方法就是確定對象數(shù)量特征、數(shù)量關(guān)系和數(shù)量變化,是可量化的。
一般來說,定性的方法,在用戶畫像中,表現(xiàn)為對產(chǎn)品、行為、用戶個體的性質(zhì)和特征作出概括,形成對應(yīng)的產(chǎn)品標簽、行為標簽、用戶標簽。
定量的方法,則是在定性的基礎(chǔ)上,給每一個標簽打上特定的權(quán)重,最后通過數(shù)學公式計算得出總的標簽權(quán)重,從而形成完整的用戶模型。
所以說,用戶畫像的數(shù)據(jù)建模是定性與定量的結(jié)合。
2、數(shù)據(jù)建?!o標簽加上權(quán)重
給用戶的行為標簽賦予權(quán)重。
用戶的行為,我們可以用4w表示: WHO(誰);WHEN(什么時候);WHERE(在哪里);WHAT(做了什么),具體分析如下:
WHO(誰):定義用戶,明確我們的研究對象。主要是用于做用戶分類,劃分用戶群體。網(wǎng)絡(luò)上的用戶識別,包括但不僅限于用戶注冊的ID、昵稱、手機號、郵箱、身份證、微信微博號等等。
WHEN(時間):這里的時間包含了時間跨度和時間長度兩個方面。“時間跨度”是以天為單位計算的時長,指某行為發(fā)生到現(xiàn)在間隔了多長時間;“時間長度”則為了標識用戶在某一頁面的停留時間長短。
越早發(fā)生的行為標簽權(quán)重越小,越近期權(quán)重越大,這就是所謂的“時間衰減因子”。
WHERE(在哪里):就是指用戶發(fā)生行為的接觸點,里面包含有內(nèi)容+網(wǎng)址。內(nèi)容是指用戶作用于的對象標簽,比如小米手機;網(wǎng)址則指用戶行為發(fā)生的具體地點,比如小米官方網(wǎng)站。權(quán)重是加在網(wǎng)址標簽上的,比如買小米手機,在小米官網(wǎng)買權(quán)重計為1,,在京東買計為0.8,在淘寶買計為0.7。
WHAT(做了什么):就是指的用戶發(fā)生了怎樣的行為,根據(jù)行為的深入程度添加權(quán)重。比如,用戶購買了權(quán)重計為1,用戶收藏了計為0.85,用戶僅僅是瀏覽了計為0.7。
當上面的單個標簽權(quán)重確定下來后,就可以利用標簽權(quán)重公式計算總的用戶標簽權(quán)重:
標簽權(quán)重=時間衰減因子×行為權(quán)重×網(wǎng)址權(quán)重
舉個栗子:A用戶今天在小米官網(wǎng)購買了小米手機;B用戶七天前在京東瀏覽了小米手機。

由此得出單個用戶的標簽權(quán)重,打上“是否忠誠”的標簽。
通過這種方式對多個用戶進行數(shù)據(jù)建模,就能夠更廣的覆蓋目標用戶群,為他們都打上標簽,然后按照標簽分類:總權(quán)重達到0.9以上的被歸為忠實用戶,ta們都購買了該產(chǎn)品……。這樣的一來,企業(yè)和商家就能夠根據(jù)相關(guān)信息進行更加精準的營銷推廣、個性化推薦。
用戶畫像
1.什么是用戶畫像?
交互設(shè)計之父AlanCooper最早提出了用戶畫像(persona)的概念,認為“用戶畫像是真實用戶的虛擬代表,是建立在一系列真實數(shù)據(jù)之上的目標用戶模型”。通過對用戶多方面的信息的了解,將多種信息集合在一起并形成在一定類型上的獨特的特征與氣質(zhì),這就形成了用戶的獨特的“畫像”??聪聢D會更加直接????

2.為什么要用用戶畫像?
目前用戶畫像主要應(yīng)用于商業(yè)領(lǐng)域,其核心工作是為用戶打標簽,打標簽的目的之一是為了讓人能夠理解并且最重要的是方便計算機處理。標簽提供了一種便捷的方式,使得計算機能夠程序化處理與人相關(guān)的信息,甚至通過算法、模型能夠“理解”人。當計算機具備這樣的能力后,無論是搜索引擎、推薦引擎、廣告投放等各種應(yīng)用領(lǐng)域,都將能進一步提升精準度,提高信息獲取的效率。通過對人群基本屬性、行為習慣、商業(yè)價值等多種維度信息數(shù)據(jù)綜合分析,精準的進行目標受眾的畫像和定位,能夠?qū)崿F(xiàn)基于大數(shù)據(jù)的精準營銷,這也就是用戶畫像的用處所在了。
3.如何實現(xiàn)用戶畫像?
一個標簽通常是人為規(guī)定的高度精煉的特征標識,如年齡段標簽:25~35歲,地域標簽:北京,標簽呈現(xiàn)出兩個重要特征(看下圖):

人為制定標簽規(guī)則,并能夠通過標簽快速讀出其中的信息,機器方便做標簽提取、聚合分析。所以,用戶畫像,也稱用戶標簽,為我們提供了一種簡潔的方式去描述用戶信息。
懂得了如何處理用戶信息之后,接下來如何實現(xiàn)用戶畫像呢?首先我們需明確我們的畫像方向,例如:影迷偏好、消費者能力等等,人工設(shè)計畫像的方向,可方便后面的數(shù)據(jù)采集以及模型構(gòu)建。詳細請看下圖:

主要的思路就是:
用戶微觀畫像的建立→用戶畫像的標簽建?!脩舢嬒竦臄?shù)據(jù)架構(gòu)
4.標簽與用戶畫像的聯(lián)系
提了這么久的標簽,那么標簽和用戶畫像到底是什么關(guān)系呢?簡單來說,它們是整體和局部的關(guān)系,用戶畫像是整體,標簽是局部,這種關(guān)系通過“標簽體系”體現(xiàn)。整體和局部總包含兩方面的關(guān)系:
(1)化整為零:整體如何反映在局部;
(2)化零為整:局部如何組成整體。
舉例來說:“人有一雙眼睛一個鼻子”,那么:
(1)化整為零:對每個人都應(yīng)該觀察到一雙眼睛和一個鼻子;
(2)化零為整:只有位置合適的一雙眼睛和一個鼻子我們才認為他是一個人。
標簽建模是用戶畫像中核心的一塊:

用戶畫像的驗證主要是以下兩個方面:
(1)標簽打得準不準
(2)標簽打得全不全
但目前的重點還是放在準確性的驗證上~

6.用戶畫像中對基本屬性的預測方式
懂得了理論之后,當然不僅僅紙上談兵,用到實處才是硬道理~用戶畫像目前采用機器學習模型+少量的人工規(guī)則來實現(xiàn)的~
那么接下來我將邁出用戶畫像建模的一小步,使用GBDT算法(前一篇博客有所提及)來實現(xiàn)對性別這個基本屬性的預測。
主要分為以下幾個步驟:
(1)訓練和測試語料準備
(2)特征選擇與特征權(quán)重計算
(3)線下模型訓練與測試
(4)線下效果評估
(5)線上應(yīng)用
(6)線上效果評估
具體的操作如下:
安裝xgboost-Python(xgboost是GBDT算法的實現(xiàn),適合用于大量數(shù)據(jù)處理中,在前一篇博客也有所提及)