0
本文作者: AI研習(xí)社-譯站 | 2018-09-26 11:48 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :
Customer segmentation using Machine Learning K-Means Clustering
翻譯 | 呂鑫燦、就2 校對 | 就2 整理 | 志豪
原文鏈接:
http://www.patterns7tech.com/customer-segmentation-using-machine-learning-k-means-clustering/
Rajshekhar Bodhale | 2017年11月17日 | 機(jī)器學(xué)習(xí)
基于信息技術(shù)的大多數(shù)平臺正在生成大量數(shù)據(jù)。這些數(shù)據(jù)稱為大數(shù)據(jù),它承載了大量的商業(yè)智能。這些數(shù)據(jù)互相交融以滿足不同的目標(biāo)和可能性。應(yīng)用機(jī)器學(xué)習(xí)技術(shù)就很有可能為客戶創(chuàng)造價值。
我們在會計學(xué)和物聯(lián)網(wǎng)領(lǐng)域擁有基于大數(shù)據(jù)的平臺,可以持續(xù)生成客戶行為和設(shè)備監(jiān)控數(shù)據(jù)。
識別目標(biāo)客戶群或者基于不同維度分析(推導(dǎo))模式非常關(guān)鍵,并且實在的為平臺提供了優(yōu)勢。
假設(shè)你有1000個客戶使用你的平臺并且不斷地產(chǎn)生體量龐大的大數(shù)據(jù),任何關(guān)于這方面的深入見解都將產(chǎn)生新的價值。
作為Patterns7團(tuán)隊不斷嘗試的機(jī)器學(xué)習(xí)計劃和創(chuàng)新事物的一部分,我們對K-Means聚類算法進(jìn)行了實驗,這為客戶帶來的價值非常驚人。
聚類是將一組數(shù)據(jù)點(diǎn)劃分為少量聚類的過程。在本部分中,你將理解并學(xué)習(xí)到如何實現(xiàn)K-Means聚類。
K-Means聚類是一種常用于將數(shù)據(jù)集自動劃分為K個組的方法,它屬于無監(jiān)督學(xué)習(xí)算法。
K均值的目的是使每個點(diǎn)到其對應(yīng)的聚類質(zhì)心的距離的平方和最小。給定一組觀測值(x1,x2,...,xn),其中每一個觀測值都是d維實數(shù)向量,K均值聚類旨在將n個觀測值劃分為k(k≤n)個集合S={S1,S2,...,Sk}以最小化聚類內(nèi)的平方和,其中μi是Si中的點(diǎn)的平均值。
保證K-Means算法收斂到局部最優(yōu)。
這是一種通用算法,可用于任何類型的分組。部分使用案例如下:
行為細(xì)分:按購買歷史記錄細(xì)分,按應(yīng)用程序、網(wǎng)站或者購買平臺上的活動細(xì)分。
庫存分類:按照銷售活動分組存貨(準(zhǔn)備庫存)。
傳感器測量:檢測運(yùn)動傳感器中的活動類型,并分組圖像。
檢測機(jī)器人或異常:從機(jī)器人中分離出有效地活動組。
步驟1:選擇集群的數(shù)量K。
步驟2:隨機(jī)選擇K個點(diǎn),作為質(zhì)心。(不一定要從你的數(shù)據(jù)集中選擇)
步驟3:將每個數(shù)據(jù)點(diǎn)分配到-> 構(gòu)成K簇的最近的質(zhì)心。
步驟4:計算并重新放置每個集群的新質(zhì)心。
步驟5:將每個數(shù)據(jù)點(diǎn)重新分配到最近的質(zhì)心。如果有任何重置發(fā)生,轉(zhuǎn)到步驟4,否則轉(zhuǎn)到FIN。
對于python,我使用的是Spyder Editor。
下面,我們將展示K-means算法如何處理客戶費(fèi)用和發(fā)票數(shù)據(jù)的例子。
我們有500個客戶數(shù)據(jù),我們關(guān)注兩個客戶特征: 客戶發(fā)票,客戶費(fèi)用。
一般來說,只要數(shù)據(jù)樣本的數(shù)量遠(yuǎn)遠(yuǎn)大于特征的數(shù)量,該算法可以用于任意數(shù)量的特征。
對于這個示例,我們已經(jīng)清理和做了一些簡單的數(shù)據(jù)轉(zhuǎn)換。下面是pandas DataFrame的數(shù)據(jù)樣本。
導(dǎo)入庫,
1、numpy 即用于數(shù)學(xué)工具的,以在我們的代碼中包含任何類型的數(shù)學(xué)
2、matplotlib 繪制漂亮的圖表
3、pandas 用于導(dǎo)入數(shù)據(jù)集和管理數(shù)據(jù)集
下圖顯示了500個客戶的數(shù)據(jù)集,總發(fā)票在x軸,總費(fèi)用在y軸。
上面描述的算法找到一個特定的預(yù)先選擇K的集群和數(shù)據(jù)集標(biāo)簽。
為了找到數(shù)據(jù)中的集群數(shù)量,用戶需要運(yùn)行K-means聚類算法對K個值的范圍進(jìn)行聚類并比較結(jié)果。一般來說,沒有確定K的精確值的方法,但是可以使用以下技術(shù)得到精確的估計值。
通常用于比較不同K值之間的結(jié)果的度量之一是:
數(shù)據(jù)點(diǎn)與它們的集群中心之間的平均距離。
因為增加集群的數(shù)量總是會減少到數(shù)據(jù)點(diǎn)的距離,所以增加K總是會減少這個度量,當(dāng)K等于數(shù)據(jù)點(diǎn)的數(shù)量時達(dá)到0的極限。因此,這個指標(biāo)不能作為唯一的目標(biāo)。相反,將與質(zhì)心的平均距離作為K的函數(shù)繪制出來,并使用“彎頭點(diǎn)”(急劇下降的速度)來粗略地確定K。
用彎頭法求出最優(yōu)簇數(shù)K=3。對于本例,使用Python包scikit-learn進(jìn)行計算,如下所示:
# K-Means Clustering
# importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# importing tha customer Expenses Invoices dataset with pandas
dataset=pd.read_csv('Expense_Invoice.csv')
X=dataset.iloc[: , [3,2]].values
# Using the elbow method to find the optimal number of clusters
from sklearn.cluster import KMeans
wcss = []
for i in range(1, 11):
kmeans=KMeans(n_clusters=i, init='k-means++', max_iter= 300, n_init= 10, random_state= 0)
kmeans.fit(X)
wcss.append(kmeans.inertia_)
plt.plot(range(1, 11),wcss)
plt.title('The Elbow Method')
plt.xlabel('Number of clusters K')
plt.ylabel('Average Within-Cluster distance to Centroid (WCSS)')
plt.show()
# Applying k-means to the mall dataset
kmeans=KMeans(n_clusters=3, init='k-means++', max_iter= 300, n_init= 10, random_state= 0)
y_kmeans=kmeans.fit_predict(X)
# Visualizing the clusters
plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 100, c = 'red', label='Careful(c1)')
plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 100, c = 'green', label='Standard(c2)')
plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 100, c = 'blue', label='Target(c3)')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 250, c = 'yellow',
label='Centroids')
plt.title('Clusters of customer Invoices & Expenses')
plt.xlabel('Total Invoices ')
plt.ylabel('Total Expenses')
plt.legend()
plt.show()
步驟4:查看結(jié)果
下面的圖表顯示了結(jié)果。
“謹(jǐn)慎型客戶”誰的收入越少,他們花的也就越少。
“一般客戶”收入是平均的,他們花得更少,
“目標(biāo)客戶”是誰的收入更多,他們花得更多。
想要繼續(xù)查看該篇文章更多代碼、鏈接和參考文獻(xiàn)?
戳鏈接:
http://www.gair.link/page/TextTranslation/691
AI研習(xí)社每日更新精彩內(nèi)容,點(diǎn)擊文末【閱讀原文】即可觀看更多精彩內(nèi)容:
Google 啟動新搜索引擎,幫助科學(xué)家找到需要的數(shù)據(jù)集
立志成為數(shù)據(jù)科學(xué)家?掌握以下基礎(chǔ)
等你來譯:雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
建立一個基于深度學(xué)習(xí)的混合型的內(nèi)容協(xié)同電影推薦系統(tǒng)
決策樹:一種像人腦一樣工作的算法
如何用 Dask 數(shù)據(jù)框架運(yùn)行并行數(shù)據(jù)分析
蒙特卡洛模擬航空公司超訂
游戲 AI 入門指南
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。