分群演算法
⑴ 數據挖掘演算法有哪些
統計和可視化要想建立一個好的預言模型,你必須了解自己的數據。最基本的方法是計算各種統計變數(平均值、方差等)和察看數據的分布情況。你也可以用數據透視表察看多維數據。數據的種類可分為連續的,有一個用數字表示的值(比如銷售量)或離散的,分成一個個的類別(如紅、綠、藍)。離散數據可以進一步分為可排序的,數據間可以比較大小(如,高、中、低)和標稱的,不可排序(如郵政編碼)。圖形和可視化工具在數據准備階段尤其重要,它能讓你快速直觀的分析數據,而不是給你枯燥乏味的文本和數字。它不僅讓你看到整個森林,還允許你拉近每一棵樹來察看細節。在圖形模式下人們很容易找到數據中可能存在的模式、關系、異常等,直接看數字則很難。可視化工具的問題是模型可能有很多維或變數,但是我們只能在2維的屏幕或紙上展示它。比如,我們可能要看的是信用風險與年齡、性別、婚姻狀況、參加工作時間的關系。因此,可視化工具必須用比較巧妙的方法在兩維空間內展示n維空間的數據。雖然目前有了一些這樣的工具,但它們都要用戶「訓練」過他們的眼睛後才能理解圖中畫的到底是什麼東西。對於眼睛有色盲或空間感不強的人,在使用這些工具時可能會遇到困難。聚集(分群)聚集是把整個資料庫分成不同的群組。它的目的是要群與群之間差別很明顯,而同一個群之間的數據盡量相似。與分類不同(見後面的預測型數據挖掘),在開始聚集之前你不知道要把數據分成幾組,也不知道怎麼分(依照哪幾個變數)。因此在聚集之後要有一個對業務很熟悉的人來解釋這樣分群的意義。很多情況下一次聚集你得到的分群對你的業務來說可能並不好,這時你需要刪除或增加變數以影響分群的方式,經過幾次反復之後才能最終得到一個理想的結果。神經元網路和K-均值是比較常用的聚集演算法。不要把聚集與分類混淆起來。在分類之前,你已經知道要把數據分成哪幾類,每個類的性質是什麼,聚集則恰恰相反。關聯分析關聯分析是尋找資料庫中值的相關性。兩種常用的技術是關聯規則和序列模式。關聯規則是尋找在同一個事件中出現的不同項的相關性,比如在一次購買活動中所買不同商品的相關性。序列模式與此類似,他尋找的是事件之間時間上的相關性,如對股票漲跌的分析。關聯規則可記為A==>B,A稱為前提和左部(LHS),B稱為後續或右部(RHS)。如關聯規則「買錘子的人也會買釘子」,左部是「買錘子」,右部是「買釘子」。要計算包含某個特定項或幾個項的事務在資料庫中出現的概率只要在資料庫中直接統計即可。某一特定關聯(「錘子和釘子」)在資料庫中出現的頻率稱為支持度。比如在總共1000個事務中有15個事務同時包含了「錘子和釘子」,則此關聯的支持度為1.5%。非常低的支持度(比如1百萬個事務中只有一個)可能意味著此關聯不是很重要,或出現了錯誤數據(如,「男性和懷孕」)。要找到有意義的規則,我們還要考察規則中項及其組合出現的相對頻率。當已有A時,B發生的概率是多少?也即概率論中的條件概率。回到我們的例子,也就是問「當一個人已經買了錘子,那他有多大的可能也會買釘子?」這個條件概率在數據挖掘中也稱為可信度,計算方法是求百分比:(A與B同時出現的頻率)/(A出現的頻率)。讓我們用一個例子更詳細的解釋這些概念: 總交易筆數(事務數):1,000包含「錘子」:50包含「釘子」:80包含「鉗子」:20包含「錘子」和「釘子」:15包含「鉗子」和「釘子」:10包含「錘子」和「鉗子」:10包含「錘子」、「鉗子」和「釘子」:5 則可以計算出: 「錘子和釘子」的支持度=1.5%(15/1,000)「錘子、釘子和鉗子」的支持度=0.5%(5/1,000)「錘子==>釘子」的可信度=30%(15/50)「釘子==>錘子」的可信度=19%(15/80)「錘子和釘子==>鉗子」的可信度=33%(5/15)「鉗子==>錘子和釘子」的可信度=25%(5/20)
⑵ 5.2.2 K-Mean聚類演算法
K-Means演算法是典型的基於距離的非層次聚類演算法,在最小化誤差函數的基礎上將數據換分為預定的類數K,採用距離作為相似性的評價指標,即認為兩個對象的距離越近,其相似度就越大。
演算法過程
連續屬性
要先對各個屬性值進行 零 - 均值規范,再進行距離計算。在K-Means中聚類演算法中,一般需要度量樣本之間的距離、樣本與簇之間的距離、簇與簇之間的距離
零-均值規范化
也稱為標准差標准化,經過處理的數據的均值為0,標准差為1。
轉化公式: 當前使用最多的數據標准化方法
實踐中,為得到較好的結果,通常選擇不同初始聚類中心,多次運行K-Means演算法。
在所有對象分配晌渣慎完成後,重新計算K個聚類的中心時,對於連續數據,聚類中心取該簇的均值,但當樣本的某些屬性是分類變數時,均值可能無定義,可梁敬以使用K-眾數方法。宴敬
使用誤差平法和SSE(sum of squared errors)作為度量聚類質量的目標函數,對於兩種不同的聚類結果,選擇誤差平方和較小的分類結果
總結
分群1特點:R間隔相對較大,主要集中在30 80天;消費次數集中在0 15次;消費金額在:0~2000;
分群2特點:R間隔相對較小,主要集中在0 30天;消費次數集中在0 10次;消費金額在:0~1800;
分群3特點:R間隔相對較小,主要集中在0 30天;消費次數集中在10 25次;消費金額在:500~2000;
對比分析
分群3時間間隔短,消費次數多,消費金額大,是高消費、高價值人群。
分群2時間間隔、消費次數、消費金額中等水平,代表著一般價值客戶。
分群1時間間隔長、消費次數較少、消費金額不是特別高,價值較低的客戶群體。
⑶ 3.3-用戶分群分析
| 導語 在產品的增長分析當中,想關注符合某些條件的一部分用戶,不僅想知道這些人的整體行為(訪問次數,訪問時長等),還希望知道其中差異較大的細分群體。 用戶分群方法,能幫助我們對差異較大的群體分別進行深入分析,從而探究指標數字背後的原因,探索實現用滲祥戶增長的途徑。
一、 用戶分群的應用場景
在日常的數據工作中,我們經常接到這樣的需求:想關注符合某些條件的一部分用戶,不僅想知道這些人的整體行為(訪問次數,訪問時長等),還希望知道具體是哪些人符合這些條件。後查看這些人的數據導出用戶名單,針對性的發送tips消息。有時還想進一步查看某些人在使用某功能上的具體操作行為。用戶分群,就是用來滿足這類需求的工具方法,它能幫助我們對差異較大的群體分別進行深入分析,從而探究指標數字背後的原因,探索實現用戶增長的途徑。
如用戶畫像分群,核心價值在於精細化的定位人群特徵,挖掘潛在的用戶群體。使網站、廣告主、企業及廣告公司充分認知群體用戶的差異化特徵,根據群體的差異化特徵,幫助客戶找到營銷機會、運營方向,全面提高客戶的核心影響力。
二、 用戶分群
類型 一 :不分群 ,如全量活躍用戶投放,群發簡訊等,缺點是沒有針對性,容易引起用戶反感。
類型 二 :用戶基本信息分群 ,如根據用戶注冊的信息分群。相比不分群,這種方法已具備一定的針對性, 但是由於對用戶不是真正了解,產生不了很好的結果預期。
類型三:用戶畫像分群 ,如年齡、性別、地域、用戶偏好等,畫像建設的焦點是為用戶群打「標簽」,一個標簽通常是人為規定的高度精煉的特徵標識,最後將用戶分群的標簽綜合,即可勾勒出該用戶群的立體「畫像」。畫像分群讓我們真正了解了用戶的某些特徵,對業務推廣幫助很大。
類型四:根據用戶行為進行分群 ,此階段會在畫像分群的基礎上關注用戶的行為特徵, 如根據用戶的注冊渠道和活躍習慣,制定不同的營銷推廣策略。
類型五:聚類和預測建模分群 ,聚類建模可以根據用戶的綜合特徵指標,將用戶分為不同的群體,如將用戶劃分為娛樂型、掛機型、社交型、辦公型等;預測建模即嘗試去猜測用戶下一步的態度與行為(例如想知道什麼,想做什麼)。正因如此,它對將復雜的行為過程變為營銷自動化,是十分有幫助的。
三、 常見的用戶分群維度
1. 統計指標:年齡,性別,地域
2.付費狀態:免費,試用,付費用戶
3.購買歷史:未付費用戶,一次付費用戶,多次付費用戶
4.訪問位置:用戶使用產品的區域位置
5.使用頻率:用戶使用產品的頻率
6.使用深度:輕度,中度,重度用戶
7.廣告點擊:用戶點擊了廣告 vs 未點擊廣告
四、 常用的聚類分群方法介紹
上面介紹了一些關於分群的方法和思路, 接下來重點講解一下用戶聚類分群,聚類分群可分為層次聚類(合並法,分解法,樹狀圖)和非層次聚類(劃分聚類,譜聚類等),而較常用的互聯網用戶聚類方法為K-means聚類方法和兩步聚類法(均為劃分聚類) 。
聚類分析的特徵 :簡單啟衡、直觀;
主要應用於探索性的研究,其分析的結果可以提供多個可能的解,選擇最終的解需要研究者 的主觀判斷和後續的分析;
不管實際數據中是否真正存在不同的類別,利用聚類分析都能得到若干類別的解;
聚類分析的解依賴於研究者所選擇的聚類變數,增加或刪除一些變數對最終的解都可能產生實質性的影響。
研究者在使用聚類分析時應特別注意可能影響結果的各個因素。
異常值悄喊做和特殊的變數對聚類有較大影響
當分類變數的測量尺度不一致時,需要事先做標准化處理。
聚類分析的弱點:
聚類是一種無監督類分析方法,無法自動發現應該分成多少個類;
期望能很清楚的找到大致相等的類或細分市場是不現實的;
樣本聚類,變數之間的關系需要研究者決定;
不會自動給出一個最佳聚類結果。
聚類分析的應用過程:
(1)選擇聚類變數
在選取特徵的時候,我們會根據一定的假設,盡可能選取對產品使用行為有影響的變數,這些變數一般包含與產品密切相關的用戶態度、觀點、行為。但是,聚類分析過程對用於聚類的變數還有一定的要求: 1.這些變數在不同研究對象上的值具有明顯差異;2.這些變數之間不能存在高度相關。
首先,用於聚類的變數數目不是越多越好,沒有明顯差異的變數對聚類沒有起到實質意義,而且可能使結果產生偏差;其次,高度相關的變數相當於給這些變數進行了加權,等於放大了某方面因素對用戶分類的作用。識別合適的聚類變數的方法:1.對變數做聚類分析,從聚得的各類中挑選出一個有代表性的變數;2.做主成份分析或因子分析,產生新的變數作為聚類變數。
(2)聚類分析
相對於聚類前的准備工作,真正的執行過程顯得異常簡單。數據准備好後,導入到統計工具中跑一下,結果就出來了。這裡面遇到的一個問題是,把用戶分成多少類合適?通常,可以結合幾個標准綜合判斷: 1.看拐點(層次聚類會出來聚合系數圖,一般選擇拐點附近的幾個類別);2.憑經驗或產品特性判斷(不同產品的用戶差異性也不同);3.在邏輯上能夠清楚地解釋。
(3)找出各類用戶的重要特徵
確定一種分類方案之後,接下來,我們需要返回觀察各類別用戶在各個變數上的表現。根據差異檢驗的結果,我們以顏色區分出不同類用戶在這項指標上的水平高低。如下圖,紅色代表「遠遠高於平均水平」,黃色代表「平均水平」,藍色代表「遠遠低於平均水平」。其他變數以此類推。最後,我們會發現不同類別用戶有別於其他類別用戶的重要特徵。
五、 K-means 聚類在QQ用戶分群中的應用案例
在本案例中,我們首先來看最常用的K-Means聚類法(也叫快速聚類法),這是非層次聚類法當中最常用的一種。因其簡單直觀的計算方法和比較快的速度(相對層次聚類法而言),進行探索性分析時,K-Means往往是第一個採用的演算法。並且,由於其廣泛被採用,在協作溝通時也節省了不少用於解釋的時間成本。
1. K-means 的演算法原理:
1. 隨機取k個元素,作為k個簇各自的中心。
2. 計算剩下的元素到k個簇中心的相似度,將這些元素分別劃歸到相似度最高的簇。
3. 根據聚類結果,重新計算k個簇各自的中心,計算方法是取簇中所有元素各自維度的算術平均數。
4. 將全部元素按照新的中心重新聚類。
5. 重復第4步,直到聚類結果不再變化,然後結果輸出。
假設我們提取到原始數據的集合為(X1, X2, …, Xn),並且每個Xi為d維的向量, K-means聚類的目的就是,在給定分類組數k(k ≤ n)值的條件下,將原始數據分成k類,S = {S1, S2, …, Sk},在數值模型上,即對以下表達式求最小值(μi 表示分類Si 的平均值):
2. QQ 用戶分群背景和目標:
QQ日登錄用戶超過5億,覆蓋社會各種群體(不同年齡、不同行業、不同興趣等),需要將大盤用戶進行一定細分,然後針對性的開展運營活動。
3. 聚類變數選取: 用戶畫像特徵、用戶狀態特徵、用戶活躍特徵
4. 聚類分析和結果: 通過 相關性分析和變數重要性分析 ,剔除部分效果差的變數,然後對剩餘11個變數進行多次訓練(目標聚類個數,參與的變數,組內個體差異容忍度),最終得出聚類結果
5. 結果解讀和命名
聚類1特徵:年齡未知或低齡,好友少,活躍度和使用粘性都極低 【低端低齡群體】
聚類2特徵:年齡偏小,前台在線和消息活躍均比較高 【學生活躍群體】
聚類3特徵:平均27歲左右,PC端和手機端活躍度均非常高 【職場高粘性群體】
聚類4特徵:平均28歲左右,前台在線和消息活躍都極低 【職場低粘性群體】
聚類5特徵:年齡較高,手機在線時長高,但消息溝通極少 【高齡低活躍群體】
六、 兩步聚類和k-means聚類的效果對比
前面談到的K-Means聚類法有簡單、直觀和快速的優點。但是其缺點是只能採用數值型變數,不能包含類別變數,並且對 異常值非常敏感,離群值很容易嚴重影響聚類結果 。並且,當數據集比較大(在騰訊,這種情況很常見),不能把所有數據點都裝進內存的時候,K-Means就無法在單機上運行。而兩步聚類法則克服了以上缺點,可以包含類別變數和數值型變數,並且當硬體條件不足或數據集非常大時,都能順利運行。這種兩步聚類法可以看成是改進版BIRCH聚類演算法和層次聚類法的結合,先用BIRCH演算法中的「聚類特徵樹」做預聚類,形成子類,然後把子類作為輸入,做層次聚類。
1. 兩步聚類的原理:
第一步:預聚類過程:
構建聚類特徵樹(CFT),分成很多子類。
開始時,把某個觀測量放在樹的根節點處,它記錄有該觀測量的變數信息,然後根據指定的距離測度作為相似性依據,使每個後續觀測量根據它與已有節點的相似性,放到最相似的節點中,如果沒有找到某個相似性的節點,就為它形成一個新的節點。在這一步當中,離群點將會被識別並剔除,不會像在K-Means當中那麼容易地影響結果。
第二步:正式聚類:
將第一步完成的預聚類作為輸入,對之使用分層聚類的方法進行再聚類(以對數似然函數作為距離的度量)。每一個階段,利用施瓦茲貝葉斯信息准則(BIC)評價現有分類是否適合現有數據,
並在最後給出符合準則的分類方案。
可自動確定或者根據業務需要人工指定分類數目;
3. 兩步聚類的效果對比:
對第六點同樣的數據進行兩步聚類,得到模型最優結果如下
6. 兩步聚類結果解讀
聚類1特徵:年齡未知或低齡,好友少,活躍度和使用粘性都極低 【低端低齡群體】
聚類2特徵:年齡偏小,前台在線和消息活躍均比較高【學生或新入職場高活躍群體】
聚類3特徵:平均24歲左右,在線和消息活躍均較低 【青年低活躍群體】
聚類4特徵:平均25歲左右,在線超高但活躍很低 【青年掛機群體】
聚類5特徵:平均28歲左右,手機使用較少但PC活躍很高 【職場辦公群體】
聚類6特徵:年齡較高,手機在線時長高,但消息溝通極少 【高齡低活躍群體】
七、 業務案例 – 通過K-Means聚類,挖掘特殊行為模式的手機QQ客戶群
1. 業務需求
在本案中,產品經理希望了解登錄不活躍手機QQ用戶的行為模式,並且能針對不同的行為組合,對龐大的用戶群體進行細分,從而關注不同群體的不同需求,甚至挖掘垂直領域需求,從而在產品或運營側採取措施,拉活沉默用戶,提高DAU。
2. 分析目標
1. 發現手Q使用行為模式異於大盤典型用戶的細分群體
2. 粗估每個細分群體的用戶數量
3. 了解每個細分群體的行為特徵和用戶畫像
4. 基於上述結果,在拉活方面,提出產品或運營建議或明確進一步探索的方向
3. 分析過程
a) 特徵提取
分析聚焦於用戶在手機QQ的點擊行為,例如刪除消息,查看好友資料頁面,點擊好友動態按鈕等,於是我們從用戶的點擊上報信息著手,對每個用戶的點擊次數進行加總。在本例中,考慮到用戶行為的典型性,選取了4個完整的周,共28天的數據,並且時間窗當中無任何節日。另外,考慮到計算性能和探索性分析需要反復迭代的場景,只從QQ大盤當中隨機抽取千份之一的用戶作為代表。
b) 特徵篩選
在特徵提取階段一共提取了接近200個 功能點的點擊數據 。但是這些特徵當中,有些覆蓋面非常低,只有百份之一的用戶在28天當中曾經使用,這些低覆蓋的特徵會首先被去除。
另外,前面談到高度相關的變數也會干擾聚類過程,這里對所有特徵對兩兩進行計算 皮爾遜相關系數 ,對高相關特徵(相關系數大於0.5)則只保留其中保留覆蓋面最廣的特徵,以便最大限度地體現用戶差異。
c) 特徵改造-探索
經過上面兩步後,筆者曾進行過多次聚類探索,但無一例外,聚類結果都呈現出一個超級大類搭配數十個非常小的小類(幾個或十幾個用戶)。這樣的結果,顯然與我們的分析目標是想違背的。其一,這里挖掘出的小群體體積太小,從業務角度來說沒有價值;其二,超級大類基本等同與大盤用戶,沒有能找出其中的用戶差異。
為什麼會有這樣的結果呢,主要是因為點擊行為基本上遵循的是 冪分布 ,大量用戶集中在低頻次區間,而極少量用戶卻會有極高的頻次,這樣在典型的聚類演算法中,高頻次用戶都會被聚集成人數極少的小類,而大量的低頻詞用戶就會被聚集成一個超級大類。
對於這種情況,典型的解決方法是 對頻次取對數 , 使冪分布轉化為近似的正態分布再進行聚類 ,在本次研究中,取自然對數後,聚類效果僅有少量改善,但仍然停留在一個超級大類加上若幹人數極少的小類的情況。背後原因,是點擊行為數據的特點之一:核心功能和熱門項目,例如聊天框、好友動態按鈕等點擊人數極多,而 相對冷門的功能則有大量的0值 。這樣的情況下,取對數是沒有改善的。
回到本次分析的目標當中,我們需要「發現手Q使用行為模式異於大盤典型用戶的細分群體」,如果丟棄這些冷門功能只看熱門選項,則無法找出一些相對小眾的行為模式達成分析目標。而這種數值稀疏的情況則讓筆者想起了文本分類。在文本分類的詞袋模型當中,每個「文檔「的詞向量同樣存在大量的0值,詞袋模型的解決方法是對詞向量用TF-IDF方法進行加權。下面簡單介紹這種方法
d) 特徵改造-TF-IDF
在文本分類的詞袋模型當中,需要將一篇篇「文檔」(Document)(例如一篇新聞,一條微博,一條說說)按照其討論的主題聚合在一起,而一篇文檔裡面有很多詞(Term)。TF(Term-Frequency 詞頻率)就是指一個詞在一篇文檔里的出現次數在整篇文檔總詞數當中的佔比,這樣簡單的計算就知道一篇文檔中什麼詞更多,而不會受到文檔本身長度的影響。
另一方面,有些詞是是什麼文章都會用的「大眾」詞,這些詞對於文章主題的分辨是沒什麼幫助的(例如新聞當中的「報道」「記者」等等)。對於這樣的「大眾」詞,就要降低他的權重,所以可以通過(文檔總數/含有某個詞的文檔數)這樣的計算達到目的,每篇文章都有的詞權重會取0,包含的文檔數越少,數值越大。這計算就是IDF(Inverse Document Frequency 逆文檔頻率)。
按照上面的討論,讀者可能已經想到了,如果把「文檔」的概念變為「用戶」,把「詞的出現次數」替換為「功能的點擊次數「,就正好可以用來把用戶行為的類型進行分類。首先是低頻率用戶的功能偏好會通過TF的計算得到反映,不會因為總體上用得少在與高頻用戶的對比當中被籠統歸為一個低頻用戶的類。同時IDF也讓一些小眾功能有更大的權重,更容易在聚類中突出小眾偏好。
e) 聚類結果
通過這樣的特徵改造,再用K-Means演算法進行聚類,得出的結果就比較符合分析目標了,從大盤數據中,我們找到了在QQ上經常刪除消息的中學生,狂刷附近的人而又很少聊天的寂寞男,把QQ當成新聞客戶端的大城市青年,很少聊天卻常常訪問好友頁面的默默關注者,並且初略估計出了各個群體的大小,行為特徵和背景特徵。並在此基礎上結合用戶研究數據去探索產品改進的建議。
總結
用戶分群對於用戶數據研究領域最大的改變,在於打破數據孤島並真實了解用戶。分析某個指標數字背後的用戶具備哪些特徵(他們的人群屬性、行為特點等),進而發現產品問題背後的原因,並從中發現產品有效改進提升的機會或方向。
在進行聚類分析時,特徵的選擇和准備非常重要: 1. 合適的變數在各個樣本之類需要有明顯差異;2.變數之間不能有強相關關系,否則需要用PCA等方法先進行降維;3.需要根據數據本身的特點和業務特性對數據進行變換(如標准化,取對數等)
而聚類演算法的選擇則需要結合數據特點(是否有變數,離群值,數據量,是否成簇狀),以及計算速度(探索性分析往往需要較快的計算速度),精確度(能否精確識別出群落)等方面去選擇合適的演算法。對演算法中的參數,例如K-Means當中的類別數K,則需要結合技術指標和業務背景,選取邏輯上說得通的分類方案。
⑷ pso的演算法結構
對微粒群演算法結構的改進方案有很多種,對其可分類為:採用多個子種群;改進微粒學習對象的選取策略;修改微粒更新迭代公式;修改速度更新策略;修改速度限制方法、位置限制方法和動態確定搜索空間;與其他搜索技術相結合;以及針對多模問題所作的改進。
第一類方案是採用多個子種群。柯晶考慮優化問題對收斂速度和尋優精度的雙重要求並借鑒多群體進化演算法的思想,將尋優微粒分成兩組,一組微粒採用壓縮因子的局部模式PSO演算法,另一組微粒採用慣性權重的全局模式PSO演算法,兩組微粒之間採用環形拓撲結構。對於高維優化問題,PSO演算法需要的微粒個數很多,導致計算復雜度常常很高,並且很難得到好的解。因此,出現了一種協作微粒群演算法(Cooperative ParticleSwarm Optimizer, CPSO-H),將輸入向量拆分成多個子向量,並對每個子向量使用一個微粒群來進行優化。雖然CPSO-H演算法使用一維群體來分別搜索每一維,但是這些搜索結果被一個全局群體集成起來之後,在多模問題上的性能與原始PSO演算法相比有很大的改進。Chow使用多個互相交互的子群,並引入相鄰群參考速度。馮奇峰提出將搜索區域分區,使用多個子群並通過微粒間的距離來保持多樣性。陳國初將微粒分成飛行方向不同的兩個分群,其中一分群朝最優微粒飛行,另一分群微粒朝相反方向飛行;飛行時,每一微粒不僅受到微粒本身飛行經驗和本分群最優微粒的影響,還受到全群最優微粒的影響。Niu在PSO演算法中引入主—從子群模式,提出一種多種群協作PSO演算法。Seo提出一種多組PSO演算法(Multigrouped PSO),使用N組微粒來同時搜索多模問題的N個峰。Selleri使用多個獨立的子群,在微粒速度的更新方程中添加了一些新項,分別使得微粒向子群歷史最優位置運動,或者遠離其他子群的重心。王俊年借鑒遞階編碼的思想,構造出一種多種群協同進化PSO演算法。高鷹借鑒生態學中環境和種群競爭的關系,提出一種基於種群密度的多種群PSO演算法。
第二類方案是改進微粒學習對象的選取策略。Al-kazemi提出多階段PSO演算法,將微粒按不同階段的臨時搜索目標分組,這些臨時目標允許微粒向著或背著它自己或全局最好位置移動。Ting對每個微粒的pBest進行操作,每一維從其他隨機確定的維度學習,之後如果新的pBest更好則替換原pBest;該文還比較了多種不同學習方式對應的PSO演算法的性能。Liang提出一種新穎的學習策略CLPSO,利用所有其他微粒的歷史最優信息來更新微粒的速度;每個微粒可以向不同的微粒學習,並且微粒的每一維可以向不同的微粒學習。該策略能夠保持群體的多樣性,防止早熟收斂,可以提高PSO演算法在多模問題上的性能;通過實驗將該演算法與其它幾種PSO演算法的變種進行比較,實驗結果表明該演算法在解決多模復雜問題時效果很好。Zhao在PSO演算法中使用適應值最好的n個值來代替速度更新公式中的gBest。Abdelbar提出一種模糊度量,從而使得每個鄰域中有多個適應值最好的微粒可以影響其它微粒。Wang也採用多個適應值最好的微粒信息來更新微粒速度,並提出一種模糊規則來自適應地確定參數。崔志華提出一種動態調整的改進PSO演算法,在運行過程中動態調整極限位置,使得每個微粒的極限位置在其所經歷的最好位置與整體最好位置所形成的動態圓中分布。與原始PSO演算法相反,有一類方法是遠離最差位置而非飛向最優位置。Yang提出在演算法中記錄最差位置而非最優位置,所有微粒都遠離這些最差位置。與此類似,Leontitsis在微粒群演算法中引入排斥子的概念,在使用個體最優位置和群體最優位置信息的同時,在演算法中記錄當前的個體最差位置和群體最差位置,並利用它們將微粒排斥到最優位置,從而讓微粒群更快地到達最優位置。孟建良提出一種改進的PSO演算法,在進化的初期,微粒以較大的概率向種群中其他微粒的個體最優學習;在進化後期,微粒以較大的概率向當前全局最優個體學習。Yang在PSO演算法中引入輪盤選擇技術來確定gBest,使得所有個體在進化早期都有機會引領搜索方向,從而避免早熟。
第三類方案是修改微粒更新公式。Hendtlass在速度更新方程中給每個微粒添加了記憶能力。He在速度更新方程中引入被動聚集機制。曾建潮通過對PSO演算法的速度進化迭代方程進行修正,提出一種保證全局收斂的隨機PSO演算法。Zeng在PSO演算法中引入加速度項,使得PSO演算法從一個二階隨機系統變為一個三階隨機系統,並使用PID控制器來控制演算法的演化。為了改進PSO演算法的全局搜索能力,Ho提出一種新的微粒速度和位置更新公式,並引入壽命(Age)變數。
第四類方案是修改速度更新策略。Liu認為過於頻繁的速度更新會弱化微粒的局部開采能力並減慢收斂,因此提出一種鬆弛速度更新(RVU)策略,僅當微粒使用原速度不能進一步提高適應值時才更新速度,並通過試驗證明該策略可以大大減小計算量並加速收斂。羅建宏對同步模式和非同步模式的PSO演算法進行了對比研究,試驗結果表明非同步模式收斂速度顯著提高,同時尋優效果更好。Yang在微粒的更新規則中引入感情心理模型。Liu採用一個最小速度閾值來控制微粒的速度,並使用一個模糊邏輯控制器來自適應地調節該最小速度閾值。張利彪提出了對PSO演算法增加更新概率,對一定比例的微粒並不按照原更新公式更新,而是再次隨機初始化。Dioan利用遺傳演算法(GA)來演化PSO演算法的結構,即微粒群中各微粒更新的順序和頻率。
第五類方案是修改速度限制方法、位置限制方法和動態確定搜索空間。Stacey提出一種重新隨機化速度的速度限制和一種重新隨機化位置的位置限制。Liu在[76]的基礎上,在PSO演算法中引入動量因子,來將微粒位置限制在可行范圍內。陳炳瑞提出一種根據微粒群的最佳適應值動態壓縮微粒群的搜索空間與微粒群飛行速度范圍的改進PSO演算法。
第六類方案是通過將PSO演算法與一些其他的搜索技術進行結合來提高PSO演算法的性能,主要目的有二,其一是提高種群多樣性,避免早熟;其二是提高演算法局部搜索能力。這些混合演算法包括將各種遺傳運算元如選擇、交叉、變異引入PSO演算法,來增加種群的多樣性並提高逃離局部最小的能力。Krink通過解決微粒間的沖突和聚集來增強種群多樣性,提出一種空間擴展PSO演算法(Spatial ExtensionPSO,SEPSO);但是SEPSO演算法的參數比較難以調節,為此Monson提出一種自適應調節參數的方法。用以提高種群多樣性的其他方法或模型還包括「吸引—排斥」、捕食—被捕食模型、耗散模型、自組織模型、生命周期模型(LifeCycle model)、貝葉斯優化模型、避免沖突機制、擁擠迴避(Crowd Avoidance)、層次化公平競爭(HFC)、外部記憶、梯度下降技術、線性搜索、單純形法運算元、爬山法、勞動分工、主成分分析技術、卡爾曼濾波、遺傳演算法、隨機搜索演算法、模擬退火、禁忌搜索、蟻群演算法(ACO)、人工免疫演算法、混沌演算法、微分演化、遺傳規劃等。還有人將PSO演算法在量子空間進行了擴展。Zhao將多主體系統(MAS)與PSO演算法集成起來,提出MAPSO演算法。Medasani借鑒概率C均值和概率論中的思想對PSO演算法進行擴展,提出一種概率PSO演算法,讓演算法分勘探和開發兩個階段運行。
第七類方案專門針對多模問題,希望能夠找到多個較優解。為了能使PSO演算法一次獲得待優化問題的多個較優解,Parsopoulos使用了偏轉(Deflection)、拉伸(Stretching)和排斥(Repulsion)等技術,通過防止微粒運動到之前已經發現的最小區域,來找到盡可能多的最小點。但是這種方法會在檢測到的局部最優點兩端產生一些新的局部最優點,可能會導致優化演算法陷入這些局部最小點。為此,Jin提出一種新的函數變換形式,可以避免該缺點。基於類似思想,熊勇提出一種旋轉曲面變換方法。
保持種群多樣性最簡單的方法,是在多樣性過小的時候,重置某些微粒或整個微粒群。Lvbjerg在PSO演算法中採用自組織臨界性作為一種度量,來描述微粒群中微粒相互之間的接近程度,來確定是否需要重新初始化微粒的位置。Clerc提出了一種「Re-Hope」方法,當搜索空間變得相當小但是仍未找到解時(No-Hope),重置微粒群。Fu提出一種帶C-Pg變異的PSO演算法,微粒按照一定概率飛向擾動點而非Pg。赫然提出了一種自適應逃逸微粒群演算法,限制微粒在搜索空間內的飛行速度並給出速度的自適應策略。
另一種變種是小生境PSO演算法,同時使用多個子種群來定位和跟蹤多個最優解。Brits還研究了一種通過調整適應值計算方式的方法來同時找到多個最優解。Li在PSO演算法中引入適應值共享技術來求解多模問題。Zhang在PSO演算法中採用順序生境(SequentialNiching)技術。在小生境PSO演算法的基礎上,還可以使用向量點積運算來確定各個小生境中的候選解及其邊界,並使該過程並行化,以獲得更好的結果。但是,各種小生境PSO演算法存在一個共同的問題,即需要確定一個小生境半徑,且演算法性能對該參數很敏感。為解決該問題,Bird提出一種自適應確定niching參數的方法。
Hendtlass在PSO演算法中引入短程力的概念,並基於此提出一種WoSP演算法,可以同時確定多個最優點。劉宇提出一種多模態PSO演算法,用聚類演算法對微粒進行聚類,動態地將種群劃分成幾個類,並且使用微粒所屬類的最優微粒而非整個種群的最好微粒來更新微粒的速度,從而可以同時得到多個近似最優解。Li在PSO演算法中引入物種的概念,但是由於其使用的物種間距是固定的,該方法只適用於均勻分布的多模問題;為此,Yuan對該演算法進行擴展,採用多尺度搜索方法對物種間距加以自適應的調整。
此外,也有研究者將PSO演算法的思想引入其他演算法中,如將PSO演算法中微粒的運動規則嵌入到進化規劃中,用PSO演算法中的運動規則來替代演化演算法中交叉運算元的功能。
⑸ 客戶分群
一、什麼是客戶分群?
將現有消費群體按一定規則分成若干個特徵鮮明的小群體,從而使得:
* 不同組別間特徵差異明顯;
* 同一群組內客戶特徵相似。
二、為什麼要客戶分群?
* 客戶群體分化,大眾化營銷失去優勢,精準化營銷逐漸被認可;
* 可深入了解客戶,提升消費者對品牌的黏性,提升銷售的效率和效益;
* 減少不必要的營銷經費和花費。
三、聚類演算法:
1、層次聚類:
(1)過程:個體兩兩聚合(樣本間距離)--小群體兩兩合並(群體間距離)--較大群體兩兩聚合(群體間距離)--形成一個大群體;
(2)優缺點:
a、不足:由於反復計算距離,運算速度較慢;
b、優點:
* 可以是分類或連續性變數
* 既可對變數聚類(R型聚類),也可對記錄聚類(Q型聚類)
* 一次運行即可得到完整的分類序列
2、K-means聚類
(1)含義:將所有觀測分成k個群體,是的群體間距離盡量大,同時群體內部的觀測液襪櫻的『距離和』最小,由於運算簡單,因此是目前流行的聚類方法。
(2)聚類步驟:設好襪定要分群的組數(K)--隨機每組的中心--逐一計算每一記錄到各組中心點的距離,將離中心最近的個體歸到對應的組--重新計算均值,以此作為再次迭代的中心--用新的中心點重新對個體進行歸組,及重復前面兩步驟,直到達到要求
(3)優缺點:
a、優點:
* 速度快於層次聚類
* 內存佔用小
b、不足:
* 只能對記錄聚類,不能對變數聚類。
* 對初始聚類中心有一定的依賴性
* 由於要事先選定聚類數,所以要嘗試多次,以找出最佳聚類。
2、EM演算法:
(1)含義:最大期望(EM)演算法是在概率模型中尋找參數最大似然估計,或最大後驗估計的演算法,其中概率模型依賴於無法觀測的隱含變數。
(2)兩步驟:
a、E步(Expectation)根據參數初始值或上一次迭代的模型參數來計算出隱含變數的後驗概率,其實就是隱含變數的期望,作為隱含變數的現估計值。
b、M步(Maximization)將似然函數最大化以獲得新的參數值。
注意:似然函數最大化指組內距離平方和最小。
四、距離計算:
1、樣本間距離計算:
(1)通用公式:閔可夫斯基距離
(2)歐式距離,即直線距離,p=2
(3)曼哈頓距鬧叢離,折線距離,大於歐氏距離,p=1
(4)切比雪夫距離,p趨向無窮大,選最大距離
2、群體間距離
(1)最短距離法,指組間最近兩個樣本點的距離
(2)最長距離法,指組間最遠兩個樣本點的距離
(3)重心法,群體先平均再求距離
(4)類平均法,群體先求距離再平均
五、變數選擇:
1、基於業務場景選擇變數
2、變數間相關性盡量低(無共線性),根據VIF和R square
3、具體可從人口統計學(個人信息數據)、商家的消費者數據(通過RFM衍生變數)、第三方行為數據(消費者的需求和興趣)三個方面進行選擇
六、如何預處理變數?
1、填充缺失值
首先確認是否錯誤,是否是零值;如果不是,Category可根據情況進行填充,Numeric數據可先Quantile,再用均值、中位數、線性插值等填充。
2、異常值處理
可用Caping-Floor將數據達到95%以內,(除非異常值有價值,需單獨處理)
3、字元型變數轉換處理
比如male 0,female 1
4、標准化(統一量綱),量綱不一致為導致距離計算的偏差
方法一:Z-Score標准化
sed(X)=(X-Xcap)/Sp
方法二:離差標准化
(x-min(x))/(max(x)-min(x))
七、初始中心點的選擇
(1)選擇彼此距離盡可能遠的點作為中心點;
(2)先通過采樣,基於層次聚類確定K個簇,以簇的中心點作為K-means的中心點輸入
(3)多次隨機選擇中心點訓練K-means,選擇效果最好的聚類
⑹ 用戶分群
1. 什麼是「用戶分群」
用戶分群被分為普通分群和預測分群。普通分群是依據用戶的屬性特徵和行為特徵將用戶群體進行分類,預測分群是根據用戶以往的行為屬性特徵,運用機器學習演算法來預測他們將來會發生某些事件的概率。
舉例來說,互聯網金融產品的用戶按照風險投資偏好這一屬性分為保守、穩健和激進,按照投資行為可分為已投資和未投資。你可以根據這一屬性和行為將滿足某種條件的用戶群體提取出來,譬如激進型但未投資的這群用戶,然後分析友團這一群體的行為特徵從而優化產品促進用戶投資,或者根據其瀏覽的項目頁面推薦用戶可能會感興趣的項目。
在 1.6 版本新增的預測分群功能中,概率在前端展示時會被映射到 4、3、2、1、0(很有可能、有可能、一般、不太可能、很不可能)5 個等級。預測周期可以是未來 7 天或未來 30 天。
2. 用戶分群界面功能簡介
2.1. 創建普通分群
在左側功能欄點擊「用戶分群」會進入用戶分群功能界面,如上圖。在神策分析中,只有管理員許可權的賬號才能使用分群功能。基於性能考慮,目前最多支持20個分群。
a.新建分群
點擊「用戶分群」右側的加號,進入編輯分群內液返容的界面。
b.分群名稱
必填項。命名以英文字母開頭,只能輸入字母,數字和下劃線。建議使用分群對應意義的英文名。
c.分群顯示名
必填項。可以是中文也可以是英文,建議使用示意明確的中文名。
d.分群執行方式
分群執行方式包括單次和例行,默認選項是單次。單次需要使用者手動執行產生最新結果,例行是系統每日凌晨計算分群結果。
e.用戶屬性條件
點擊用戶屬性編輯欄右下角的加號,可添加多個用戶屬性條件。
f.用戶行為條件
點擊用戶行為編輯欄右下角的加號,可添加多個用戶歷史行為條件,譬如某事件在某段時間內發生的多少頻次的用戶群體,也可對行為事件添鬧告飢加篩選條件。
g.用戶行為序列條件
點擊用戶行為序列編輯欄右下角的加號,可添加滿足某一系列行為事件的條件。
h.預測分群功能(1.6版本新增)
神策數據分析工具中新增的預測分群功能,目前僅支持單次類型的預測分群。使用之前請在 推送管理 中添加推送配置。
2.2. 執行普通分群
使用者輸入用戶屬性、用戶行為和用戶行為序列條件後,點擊左下側的保存按鈕,然後執行即可,如上圖。表示本周已投過資且瀏覽過基金和P2P產品的激進型用戶群體。而且因為分群執行方式選擇是「例行」,所以會在每日凌晨自動計算更新用戶群體數據。
2.3. 使用普通分群
創建和執行後的分群結果保存在左側欄的列表中,分為三類:單次、例行和分析結果。單次和例行列表分別是執行方式為單次和例行時的分群,分析結果列表是在使用用戶行為分析、漏斗分析、留存分析和分布分析後保存的用戶群體。
如上圖,分群結果可以作為用戶屬性用於行為事件分析、漏斗分析、留存分析和分布分析,通過條件「為真」和「為假」選擇滿足或者不滿足分群條件的用戶群體。譬如,圖中我們選擇6月份注冊且完成訂單轉化的男性用戶,分析7月的購買行為。
當然,我們也可以將用戶分群的具體用戶信息提取出來,用於簡訊推送等運營活動。
2.4. 預測分群
用戶在選擇未來 7 天或者 30 天,做過某個特定事件或者任意事件若干次後,填好分群名和顯示名,點擊保存,就可以創建一個預測分群。如果選擇的事件是至少做過若干次,則可以起到預測活躍用戶的效果,如上圖所示。點擊執行後,等待一段時間,進入查看預測結果頁面,就可以看到如下圖所示的預測分群結果。此結果的分析方法和普通分群的一致。
下圖顯示的是預測流失用戶的一個例子,如果在未來一段時間內(如 7 天或 30 天)內沒有做過任何事件,我們就可以認為此用戶流失。
3. 典型應用場景
以互聯網金融網站為例,我們可以針對具有某類特徵的用戶群體進行理財項目推薦。譬如,通過用戶分群篩選出對基金項目和P2P項目感興趣的風險投資偏好為激進型的用戶群,如下圖。
根據分群結果,可以提取出這類用戶群體的信息,如下圖。通過用戶賬號或者手機號為其推薦高風險高回報的P2P或者基金項目。
預測分群的典型應用是預測未來一段時間內的活躍用戶和流失用戶,這樣可以在活躍用戶流失之前,採用一定的流失召回方法將他們拉回。
⑺ Tableau | 分群
用戶分群,產品分群是互聯網裡面精細激拆化運營一個方法。
這個分群用2個方法實現:
還是一如既往的是Tableau官方案例數據:示例超市
用【銷售額】和【利潤率】對客戶進行分類,在分析裡面點擊 群集 ,這個案例手動設置的群集數是4。
點擊群集,選擇「描述群集」可以查看分群的依據。
勾選「顯示縮放的中心」,會對銷售額和利潤率進行預處理。處理方法的公式(也稱為最小值-最大值標准化)為 (x – min(x))/(max(x) - min(x))。
其他說明:
群集即聚類,物以類聚的理念,Tableau使用 k 均值演算法進行群集。對於啟尺給定的群集數量 k,演算法將數據劃分為 k 個群集。每個群集都有一個中心(質心),它是該群集中所有點的平均值。K 均值迭代過程來查找中心,該過程可最大程度地縮短群集中各個點與群明旁棗集中心之間的距離。
如上圖所示,選擇的指標依舊是【銷售額】和【利潤率】
其他說明: