在用戶行為分析中,常常需要同時處理多個特征,例如訪問次數、消費金額、停留時長、收藏數量等。這些特征雖然都能反映用戶活躍程度或消費傾向,但它們的單位、量綱和取值范圍通常并不一致。如果直接將原始數據用于綜合評分或相似度計算,數值較大的特征往往會對結果產生過強影響,從而削弱分析的合理性。
因此,在正式分析之前,通常需要先進行特征縮放。最常見的兩種處理方法就是歸一化與標準化。前者通常用于將數據壓縮到統一范圍,便于綜合評分;后者則更適合用于距離計算和相似性分析。
本實例以一組電商平臺用戶行為數據為例,使用 NumPy 完成以下任務:對用戶特征進行歸一化和標準化處理,在此基礎上計算用戶評分,并通過距離計算找出最相近的用戶。
一、理論基礎
1、特征縮放的意義
在多特征數據分析中,不同特征往往具有不同的數值尺度。
例如,月消費金額可能是數千元,而收藏商品數可能只有十幾個。如果不先統一尺度,后續的加權評分、距離度量等計算就容易被大數值特征“主導”。
特征縮放的主要目的有三點:
? 消除不同特征之間的量綱差異
? 避免大范圍特征對結果產生不成比例的影響
? 使不同特征能夠在同一尺度下共同參與分析
2、歸一化
歸一化通常指最小—最大歸一化,即將某一特征的全部取值線性壓縮到 [0, 1] 區間。
公式為:
其中:
? x 表示原始值
? x_min 表示該特征的最小值
? x_max 表示該特征的最大值
? x' 表示歸一化后的結果
歸一化后的數據具有兩個明顯特點:
? 所有值都落在同一固定區間內
? 仍然保留原始數據的大小規律
因此,它非常適合用于綜合評分、加權比較等場景。
3、標準化
標準化通常指Z-score 標準化,即把每個特征轉換為“相對于均值偏離多少個標準差”的形式。
公式為:
其中:
? x 表示原始值
? μ 表示該特征的均值
? σ 表示該特征的標準差
? z 表示標準化后的結果
標準化后的數據不一定落在固定區間內,但其各列通常具有“均值為 0、標準差為 1”的性質。它更適合用于距離計算、聚類分析、近鄰查找等任務,因為它能較好地消除不同特征尺度差異對距離度量的干擾。
4、兩種方法的使用區別
歸一化與標準化都屬于特征縮放技術,但適用重點不同:
? 當任務強調“統一評分尺度”時,通常使用歸一化
? 當任務強調“比較樣本之間的差異程度”時,通常使用標準化
本實例中,用戶評分采用歸一化數據,而用戶距離計算采用標準化數據,這也是該類任務中較常見的處理方式。
二、任務分析
1、原始數據與分析目標
現有 5 位用戶的行為數據,每位用戶包含 4 個特征:月訪問次數、月消費金額、平均停留時長和收藏商品數。數據如下:
用戶
月訪問次數
月消費金額(元)
平均停留時長(分鐘)
收藏商品數
A
25
1500
8.5
12
B
8
3500
3.2
5
C
42
800
15.0
28
D
15
5200
5.8
8
E
35
2200
11.3
18
根據要求,需要完成三項任務:
(1)對每個特征進行歸一化與標準化
(2)在權重為 [0.3, 0.4, 0.2, 0.1] 的條件下計算用戶評分
(3)計算用戶之間的距離,并找出最相近的用戶
2、數據組織方式
在 NumPy 中,這類數據最適合表示為二維數組:
? 每一行表示一個用戶
? 每一列表示一個行為特征
因此,本實例的數據矩陣形狀為 (5, 4),即 5 個用戶、4 個特征。后續所有按特征進行的統計,如最小值、最大值、均值、標準差,都應按列計算。在 NumPy 中,這通常通過 axis=0 實現。
3、本實例涉及的 NumPy 知識點
本例雖然是一個綜合應用題,但所用的 NumPy 知識點并不復雜,主要包括以下幾類。
(1)數組創建
使用 np.array() 將原始用戶行為數據組織成二維數組,便于后續統一運算。
(2)按列統計
為了進行歸一化與標準化,需要先得到每一列特征的統計量:
np.std(data, axis=0):求每列標準差這些結果本身都是長度為 4 的一維數組,分別對應 4 個特征。
(3)廣播機制
歸一化與標準化都不是逐個元素手工計算,而是直接利用 NumPy 的廣播機制完成整列運算。例如:
(data - min_vals) / (max_vals - min_vals)這里 data 是二維數組,min_vals 和 max_vals 是一維數組。NumPy 會自動將一維數組沿行方向擴展,使每一列與對應統計量進行匹配運算。
(4)點積計算綜合評分
用戶評分本質上是“特征向量 × 權重向量”的加權求和,因此可以使用:
np.dot(normalized_data, weights)若 normalized_data 的形狀為 (5, 4),weights 的形狀為 (4,),則結果是長度為 5 的一維數組,對應每位用戶的綜合評分。
(5)距離計算
用戶之間的相似程度可通過歐氏距離衡量。
歐氏距離公式為:
在代碼中,可先計算兩個用戶標準化向量的差,再平方、求和、開平方。
(6)排序找近鄰
要找出某個用戶最相近的兩個用戶,可對該用戶與所有用戶的距離進行排序。這里會用到:
np.argsort(distances)它返回的是“按距離從小到大排序后的下標”。由于每個用戶與自身的距離一定為 0,因此排序后的第一個下標就是當前用戶自己,需要從后面的結果中取最近鄰。
4、處理流程設計
本實例可以按以下順序完成:
(1)構造原始用戶行為數據數組;
(2)分別計算歸一化數據和標準化數據;
(3)使用歸一化數據進行加權評分;
(4)使用標準化數據計算用戶距離矩陣;
(5)根據距離矩陣找出每個用戶的最近鄰,并進一步找出全局最相近的用戶對。
這一流程體現了一個比較完整的數據分析基本框架:
數據準備 → 特征預處理 → 指標計算 → 相似性分析
三、示例代碼
四、結果解讀
1、歸一化結果的意義
歸一化后,每個特征都被壓縮到 [0, 1] 區間。
值越接近 1,表示該用戶在該特征上越接近整體最大水平;值越接近 0,則說明越接近整體最小水平。
因此,歸一化結果適合用于“誰更高、誰更低”的統一比較,也適合做加權評分。
2、標準化結果的意義
標準化后的結果不再表示“絕對大小”,而表示“偏離平均水平的程度”。
? 正值表示高于平均水平
? 負值表示低于平均水平
? 絕對值越大,偏離程度越明顯。
因此,它更適合用于比較用戶行為模式之間的差異。
3、用戶評分的意義
本實例給定的權重為:
[0.3, 0.4, 0.2, 0.1]表示四個特征的重要程度分別為:
月訪問次數:0.3
月消費金額:0.4
平均停留時長:0.2
收藏商品數:0.1
由于“月消費金額”的權重最高,因此它對最終評分的影響最大。評分越高,說明該用戶在綜合行為表現上越強。
4、距離矩陣的意義
距離矩陣中的每個元素表示兩個用戶之間的差異程度。
距離越小,說明兩位用戶越相似;距離越大,說明二者的行為模式差異越明顯。
主對角線上的值恒為 0,因為任意用戶與自身的距離總是 0。
小結
歸一化和標準化都是常用的特征縮放方法。前者適合綜合評分,后者更適合距離計算與相似性分析。本實例借助 NumPy 的數組、按列統計、廣播、點積與排序等操作,完成了用戶行為數據的預處理、評分與近鄰查找,體現了 NumPy 在數據分析中的基礎應用。
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.