督學(xué)習(xí)的核心技術(shù)與實(shí)戰(zhàn)應(yīng)用)
1. 從“分類”到“聚類”一個根本性的思維轉(zhuǎn)換在數(shù)據(jù)分析和建模的初期很多朋友尤其是剛接觸數(shù)學(xué)建模的同學(xué)常常會把“聚類”和“分類”混為一談。這其實(shí)是一個很關(guān)鍵的認(rèn)知門檻。我剛開始做項目時也犯過這個錯誤結(jié)果模型跑出來的結(jié)果完全沒法解釋白白浪費(fèi)了幾天時間。今天我們就以“清風(fēng)數(shù)模筆記”中常提到的思路為引子徹底把“聚類模型”這件事掰開揉碎了講清楚。簡單來說分類Classification是“有師學(xué)習(xí)”。你手里有一份已經(jīng)標(biāo)好標(biāo)簽的數(shù)據(jù)集比如一堆鳶尾花的測量數(shù)據(jù)并且每一朵花都明確告訴你它是“山鳶尾”、“變色鳶尾”還是“維吉尼亞鳶尾”。你的任務(wù)是學(xué)習(xí)這些已知樣本的特征與標(biāo)簽之間的映射關(guān)系然后去預(yù)測新來的、沒有標(biāo)簽的花屬于哪一類。分類模型就像一個經(jīng)驗豐富的老師你給了它標(biāo)準(zhǔn)答案標(biāo)簽讓它學(xué)習(xí)規(guī)則。而聚類Clustering是“無師學(xué)習(xí)”。你手里只有一堆數(shù)據(jù)比如1000個客戶的年齡、消費(fèi)金額、活躍度等信息但沒有任何人告訴你這些客戶應(yīng)該分成幾類每一類叫什么名字。聚類的任務(wù)就是讓算法自己去發(fā)現(xiàn)數(shù)據(jù)中內(nèi)在的、自然的“分組”結(jié)構(gòu)把相似的客戶聚到一起把不相似的分開。聚類模型更像是一個探索者它在未知的數(shù)據(jù)森林里自己尋找那些“物以類聚”的群落。為什么這個區(qū)別如此重要因為這意味著你的問題定義和模型目標(biāo)完全不同。如果你錯誤地對一個沒有標(biāo)簽的數(shù)據(jù)用了分類算法那無異于讓一個學(xué)生去參加沒有標(biāo)準(zhǔn)答案的考試他只能瞎蒙。聚類解決的是“探索性數(shù)據(jù)分析”的問題它的核心價值在于發(fā)現(xiàn)未知的模式。在數(shù)學(xué)建模競賽中面對一個全新的、背景復(fù)雜的賽題聚類往往是打開局面、理解數(shù)據(jù)分布的第一步。比如分析城市交通擁堵模式、對電商用戶進(jìn)行分群營銷、對文本主題進(jìn)行自動歸納等等第一步往往都是聚類。2. 聚類模型的核心三要素距離、質(zhì)心與評價理解了聚類的本質(zhì)是“物以類聚”那么“如何定義‘相似’”、“聚類的中心點(diǎn)是什么”、“怎么知道聚得好不好”就成了三個必須回答的核心問題。這構(gòu)成了聚類模型特別是最經(jīng)典的K-Means算法的理論基礎(chǔ)。2.1 距離度量相似性的數(shù)學(xué)定義“相似”這個詞在數(shù)學(xué)上需要被量化這就是距離度量。不同的距離公式?jīng)Q定了算法如何看待數(shù)據(jù)點(diǎn)之間的“遠(yuǎn)近”從而直接影響聚類的結(jié)果。歐氏距離這是最直觀的距離就是我們高中學(xué)的兩點(diǎn)間的直線距離。公式是 √[(x?-y?)2 (x?-y?)2 ...]。它適用于各個維度重要性相同、且數(shù)據(jù)分布相對“球形”的情況。但它的一個顯著缺點(diǎn)是受量綱影響巨大。比如一個維度是年薪單位萬元另一個維度是年齡單位歲如果不做處理年薪的微小波動幾萬元就會完全主導(dǎo)距離計算年齡的影響幾乎被忽略。曼哈頓距離也叫城市街區(qū)距離。想象在曼哈頓的棋盤式街道上你不能斜著穿樓只能沿著街道走。它的公式是 |x?-y?| |x?-y?| ...。它對異常值不如歐氏距離敏感在某些場景下更穩(wěn)健。余弦相似度它關(guān)注的是兩個向量在方向上的差異而不是絕對距離。公式是 (A·B) / (||A|| * ||B||)。值越接近1方向越一致。這在文本挖掘中極其有用。比如兩篇文章一篇長一篇短但主題詞分布比例相似用歐氏距離可能很遠(yuǎn)因為長度差異大但用余弦相似度會很高正確地將它們歸為同一主題。實(shí)操心得在應(yīng)用聚類前數(shù)據(jù)標(biāo)準(zhǔn)化如Z-Score標(biāo)準(zhǔn)化是幾乎必須的步驟。這能消除量綱影響讓每個特征在距離計算中擁有“平等的話語權(quán)”。我常用的做法是先用標(biāo)準(zhǔn)化后的數(shù)據(jù)跑一遍聚類看看效果。2.2 質(zhì)心與迭代K-Means是如何工作的K-Means是聚類中最著名、最常用的算法它的思想非常直觀完美體現(xiàn)了“距離”和“質(zhì)心”這兩個概念。初始化你首先需要告訴算法你希望把數(shù)據(jù)分成K個簇這就是“K”的含義。然后隨機(jī)選擇K個點(diǎn)作為初始的“質(zhì)心”可以就是數(shù)據(jù)集中的K個點(diǎn)。分配階段遍歷數(shù)據(jù)集中的每一個點(diǎn)計算它到K個質(zhì)心的距離通常用歐氏距離將它分配給距離最近的那個質(zhì)心所在的簇。這樣所有數(shù)據(jù)點(diǎn)就被劃分到了K個簇中。更新階段對于每一個新形成的簇重新計算這個簇所有點(diǎn)的平均值將這個平均值點(diǎn)設(shè)為該簇新的質(zhì)心。迭代重復(fù)“分配”和“更新”這兩個步驟直到滿足停止條件比如質(zhì)心的位置不再發(fā)生明顯變化或者達(dá)到最大迭代次數(shù)。這個過程就像一個不斷優(yōu)化的過程質(zhì)心牽引著點(diǎn)的歸屬點(diǎn)的歸屬又反過來修正質(zhì)心的位置最終達(dá)到一個穩(wěn)定狀態(tài)。2.3 簇內(nèi)距離與輪廓系數(shù)如何評價聚類效果模型跑完了給你分出了K個簇你怎么知道它分得好不好這里有兩個核心的評價視角簇內(nèi)相似性高同一個簇里的點(diǎn)應(yīng)該盡可能彼此相似距離近。簇間差異性大不同簇之間的點(diǎn)應(yīng)該盡可能不相似距離遠(yuǎn)。最常用的內(nèi)部評價指標(biāo)是輪廓系數(shù)。對于單個樣本點(diǎn)i計算a(i)i到同簇內(nèi)所有其他點(diǎn)距離的平均值。a(i)越小說明它越應(yīng)該屬于這個簇。計算b(i)i到其他每一個簇中所有點(diǎn)平均距離的最小值。b(i)越小說明i離其他某個簇越近。輪廓系數(shù) s(i) [b(i) - a(i)] / max{a(i), b(i)}。s(i)的取值范圍在[-1, 1]之間。s(i)越接近1說明樣本i聚類越合理越接近-1說明它可能被分錯了簇接近0則說明它在兩個簇的邊界上。所有樣本的s(i)的均值就是整個聚類結(jié)果的輪廓系數(shù)。踩坑實(shí)錄不要只看輪廓系數(shù)的絕對值要結(jié)合肘部法則一起看。肘部法則通過繪制不同K值對應(yīng)的簇內(nèi)誤差平方和SSE的曲線尋找那個“拐點(diǎn)”像手肘一樣作為K的參考值。但實(shí)戰(zhàn)中這個“肘部”可能不明顯。我的經(jīng)驗是將肘部法則確定的K值范圍與輪廓系數(shù)最高的K值進(jìn)行交叉驗證同時必須結(jié)合業(yè)務(wù)意義進(jìn)行最終判斷。比如你把客戶分成5類輪廓系數(shù)0.6分成8類輪廓系數(shù)0.65。但業(yè)務(wù)上只能設(shè)計3套營銷策略那么強(qiáng)分成8類就沒有實(shí)際意義。3. 超越K-Means其他經(jīng)典聚類算法與應(yīng)用場景K-Means雖好但并非萬能。它假設(shè)簇是凸形的、各向同性的且對異常值敏感。當(dāng)數(shù)據(jù)形狀復(fù)雜或包含噪聲時我們需要其他武器。3.1 層次聚類構(gòu)建數(shù)據(jù)的“家譜樹”層次聚類不需要預(yù)先指定K值。它有兩種策略凝聚法自底向上一開始每個點(diǎn)都是一個簇然后迭代地將最相似的兩個簇合并直到所有點(diǎn)歸為一個簇。分裂法自頂向下一開始所有點(diǎn)在一個簇然后迭代地分裂最不相似的簇直到每個點(diǎn)都是一個簇。這個過程會生成一個樹狀圖。你可以像砍樹一樣在樹的某一高度橫切一刀就得到了對應(yīng)數(shù)量的簇。它的優(yōu)點(diǎn)是直觀通過樹狀圖展示全貌且可以得到不同粒度下的聚類結(jié)果。缺點(diǎn)是計算復(fù)雜度高不適合大數(shù)據(jù)集。應(yīng)用場景生物分類學(xué)構(gòu)建物種進(jìn)化樹、文檔層次化主題歸類、小規(guī)模樣本的探索性分析。3.2 DBSCAN基于密度的“抗噪”高手DBSCAN是我個人在處理復(fù)雜形狀數(shù)據(jù)和含噪聲數(shù)據(jù)時的首選。它不需要指定簇的個數(shù)K而是基于兩個參數(shù)eps鄰域半徑。如果一個點(diǎn)的eps半徑內(nèi)至少有MinPts個點(diǎn)則這個點(diǎn)被稱為核心點(diǎn)。MinPts形成稠密區(qū)域所需的最小點(diǎn)數(shù)。它的核心思想是簇是由密度可達(dá)關(guān)系連接起來的核心點(diǎn)的最大集合。不屬于任何簇的點(diǎn)被標(biāo)記為噪聲離群點(diǎn)。DBSCAN的強(qiáng)大之處能發(fā)現(xiàn)任意形狀的簇不像K-Means只能發(fā)現(xiàn)球狀簇。對噪聲不敏感能有效識別并過濾掉離群點(diǎn)。不需要預(yù)先指定簇的個數(shù)。應(yīng)用場景地理信息分析如找出城市中的熱點(diǎn)區(qū)域、異常檢測噪聲點(diǎn)可能就是異常、復(fù)雜形狀分布的數(shù)據(jù)如同心圓、半月形數(shù)據(jù)。參數(shù)調(diào)優(yōu)經(jīng)驗DBSCAN的eps和MinPts參數(shù)設(shè)置是關(guān)鍵。一個實(shí)用的方法是K距離圖法對每個點(diǎn)計算它到第k個最近鄰點(diǎn)的距離然后對所有點(diǎn)的這個距離進(jìn)行排序并繪圖。通常圖中拐點(diǎn)對應(yīng)的距離可以作為eps的參考值MinPts通常從k開始嘗試k是數(shù)據(jù)維度一個經(jīng)驗起點(diǎn)。3.3 高斯混合模型軟聚類與概率視角K-Means是一種“硬分配”一個點(diǎn)非此即彼地屬于某一個簇。高斯混合模型則是一種“軟分配”它假設(shè)數(shù)據(jù)是由多個高斯分布混合生成的。一個點(diǎn)屬于各個簇的概率是一個介于0到1之間的值所有概率之和為1。GMM通過期望最大化算法進(jìn)行迭代估計出每個高斯分布的參數(shù)均值、協(xié)方差和混合權(quán)重。它的優(yōu)勢在于提供概率歸屬更靈活。可以描述橢球形的簇通過協(xié)方差矩陣比K-Means的球形假設(shè)更一般化。是許多更高級模型的基礎(chǔ)。應(yīng)用場景圖像分割、語音識別、市場細(xì)分中客戶歸屬的模糊描述。4. 聚類實(shí)戰(zhàn)全流程從數(shù)據(jù)到解釋理論懂了算法也了解了現(xiàn)在我們來走一遍完整的聚類建模流程。這里我結(jié)合一個模擬的電商用戶細(xì)分案例把每一步的細(xì)節(jié)和容易踩的坑都講清楚。4.1 第一步業(yè)務(wù)理解與數(shù)據(jù)準(zhǔn)備假設(shè)我們有一份電商用戶行為數(shù)據(jù)包含用戶ID最近一次消費(fèi)間隔天消費(fèi)頻率次數(shù)消費(fèi)總金額元瀏覽商品品類數(shù)。業(yè)務(wù)目標(biāo)對用戶進(jìn)行分群以制定差異化的營銷策略如針對高價值用戶推送VIP服務(wù)針對流失風(fēng)險用戶進(jìn)行喚醒。數(shù)據(jù)預(yù)處理處理缺失值簡單的字段如“瀏覽品類數(shù)”若缺失不多可用中位數(shù)填充。但像“消費(fèi)金額”這樣的核心字段若大量缺失該用戶樣本可能就需要剔除或單獨(dú)標(biāo)記。特征工程這里我們直接使用R最近一次消費(fèi)、F消費(fèi)頻率、M消費(fèi)金額這三個經(jīng)典RFM模型指標(biāo)。也可以考慮構(gòu)建新特征如“客單價”M/F、“平均消費(fèi)間隔”等。異常值處理檢查“消費(fèi)總金額”是否有極端值比如輸入錯誤多打了幾個0??梢允褂孟渚€圖或3σ原則識別并根據(jù)業(yè)務(wù)決定是修正、剔除還是保留可能他就是超級VIP。數(shù)據(jù)標(biāo)準(zhǔn)化由于R、F、M量綱不同天、次、元必須進(jìn)行標(biāo)準(zhǔn)化。我通常使用StandardScaler進(jìn)行Z-Score標(biāo)準(zhǔn)化。# Python示例代碼 (使用sklearn) import pandas as pd from sklearn.preprocessing import StandardScaler # 假設(shè)df是包含R, F, M列的DataFrame features df[[R, F, M]] scaler StandardScaler() scaled_features scaler.fit_transform(features)4.2 第二步探索性分析與算法選型在正式聚類前先對標(biāo)準(zhǔn)化后的數(shù)據(jù)做個初步觀察。可視化由于我們只有三個特征可以畫一個3D散點(diǎn)圖初步觀察分布。如果特征多可以用PCA先降維到2維或3維再可視化。初步判斷如果散點(diǎn)圖顯示數(shù)據(jù)可能呈現(xiàn)幾個明顯的“團(tuán)塊”K-Means會是個不錯的起點(diǎn)。如果數(shù)據(jù)點(diǎn)連綿一片或者形狀奇怪就要考慮DBSCAN或GMM。確定K值如果用K-Means/層次聚類肘部法則計算K從1到10的SSE畫圖。尋找SSE下降速度突然變緩的點(diǎn)。from sklearn.cluster import KMeans sse [] for k in range(1, 11): kmeans KMeans(n_clustersk, random_state42) kmeans.fit(scaled_features) sse.append(kmeans.inertia_) # inertia_即SSE # 繪制sse隨k變化的曲線輪廓系數(shù)法計算每個K對應(yīng)的平均輪廓系數(shù)取最大值對應(yīng)的K。from sklearn.metrics import silhouette_score silhouette_scores [] for k in range(2, 11): # 輪廓系數(shù)要求至少2個簇 kmeans KMeans(n_clustersk, random_state42) cluster_labels kmeans.fit_predict(scaled_features) silhouette_avg silhouette_score(scaled_features, cluster_labels) silhouette_scores.append(silhouette_avg) # 繪制輪廓系數(shù)隨k變化的曲線在我的模擬數(shù)據(jù)中肘部法則在K3或4處出現(xiàn)拐點(diǎn)輪廓系數(shù)在K3時最高。結(jié)合業(yè)務(wù)上希望用戶分群不宜過多便于策略執(zhí)行我初步選擇K3。4.3 第三步模型訓(xùn)練、評估與對比使用K-Means進(jìn)行訓(xùn)練kmeans KMeans(n_clusters3, random_state42) # 設(shè)置random_state保證結(jié)果可復(fù)現(xiàn) cluster_labels kmeans.fit_predict(scaled_features) df[Cluster_Kmeans] cluster_labels評估計算整體輪廓系數(shù)score_kmeans silhouette_score(scaled_features, cluster_labels)。查看每個簇的樣本數(shù)量分布確保沒有出現(xiàn)某個簇只有極少數(shù)樣本的極端情況。查看每個簇在原始R、F、M特征上的均值進(jìn)行初步解讀cluster_profile df.groupby(Cluster_Kmeans)[[R, F, M]].mean() print(cluster_profile)嘗試DBSCAN作為對比from sklearn.cluster import DBSCAN # 通過之前的K距離圖假設(shè)我們確定eps0.5, min_samples5 dbscan DBSCAN(eps0.5, min_samples5) cluster_labels_db dbscan.fit_predict(scaled_features) # DBSCAN會將噪聲點(diǎn)標(biāo)記為-1 df[Cluster_DBSCAN] cluster_labels_db print(fDBSCAN發(fā)現(xiàn)的簇數(shù)量: {len(set(cluster_labels_db)) - (1 if -1 in cluster_labels_db else 0)}) print(f噪聲點(diǎn)數(shù)量: {list(cluster_labels_db).count(-1)})對比分析如果DBSCAN發(fā)現(xiàn)了更多有意義的簇且噪聲點(diǎn)合理可能是真正的低價值或異常用戶那么DBSCAN的結(jié)果可能更揭示數(shù)據(jù)的真實(shí)結(jié)構(gòu)。如果DBSCAN將大部分點(diǎn)都?xì)w為噪聲或一個簇說明參數(shù)可能需要調(diào)整或者數(shù)據(jù)本身可能并不具備明顯的密度簇結(jié)構(gòu)。4.4 第四步結(jié)果解讀與業(yè)務(wù)落地這是聚類分析價值變現(xiàn)的關(guān)鍵一步模型輸出的一堆數(shù)字標(biāo)簽必須翻譯成業(yè)務(wù)語言。1. 繪制雷達(dá)圖/剖面圖 將每個簇在R、F、M上的標(biāo)準(zhǔn)化后均值或原始均值繪制成雷達(dá)圖可以直觀對比各簇特征。2. 為每個簇“畫像” 根據(jù)雷達(dá)圖和統(tǒng)計描述為每個簇命名和描述簇0假設(shè)R值高最近沒買F值低M值低。畫像“流失風(fēng)險用戶”或“睡眠用戶”。最近一次購買時間久購買不頻繁總消費(fèi)低。業(yè)務(wù)動作發(fā)送喚醒優(yōu)惠券、推送新品通知。簇1R值低最近剛買F值高M(jìn)值高。畫像“高價值活躍用戶”或“VIP用戶”。復(fù)購率高消費(fèi)能力強(qiáng)。業(yè)務(wù)動作提供專屬客服、提前訪問新品、積分加倍獎勵。簇2R值中等F值中等M值中等。畫像“一般價值用戶”或“潛力用戶”。業(yè)務(wù)動作通過交叉銷售推薦相關(guān)商品嘗試提升其購買頻率或客單價。3. 深入分析查看每個簇的用戶在“瀏覽商品品類數(shù)”上是否有顯著差異也許高價值用戶瀏覽更專注品類數(shù)少但深度深而潛力用戶瀏覽更廣泛品類數(shù)多。將聚類結(jié)果與其他維度如 demographic 人口統(tǒng)計信息如果有的話做交叉分析驗證分群的合理性。4. 形成報告與策略 將上述分析過程、結(jié)論、用戶畫像以及對應(yīng)的精細(xì)化運(yùn)營策略建議整理成一份清晰的數(shù)據(jù)報告。這才是聚類分析閉環(huán)的終點(diǎn)。5. 高級話題與常見陷阱規(guī)避掌握了基礎(chǔ)流程我們再來探討幾個進(jìn)階問題和實(shí)踐中必定會遇到的“坑”。5.1 高維數(shù)據(jù)與降維當(dāng)特征太多時怎么辦我們的例子只有3個特征?,F(xiàn)實(shí)中特征可能成百上千如文本TF-IDF向量、用戶行為序列。在高維空間所有點(diǎn)對之間的距離都變得非常相似這叫“維數(shù)災(zāi)難”直接聚類效果很差。解決方案特征選擇剔除不相關(guān)或冗余的特征??梢杂梅讲钸^濾剔除方差極低的特征、相關(guān)性分析、基于模型的特征重要性排序等方法。特征降維在保留大部分信息的前提下將數(shù)據(jù)投影到低維空間。主成分分析最常用的線性降維方法。找到數(shù)據(jù)方差最大的幾個正交方向主成分。通常取前2-3個主成分用于可視化前N個累計貢獻(xiàn)率超過85%的主成分用于后續(xù)聚類。t-SNE優(yōu)秀的非線性降維方法特別擅長在2D/3D空間展示高維數(shù)據(jù)的簇結(jié)構(gòu)。但切記t-SNE主要用于可視化由于其算法特性降維后的距離關(guān)系不能直接用于下游的聚類算法輸入。重要提示正確的流程是用PCA/t-SNE對原始高維數(shù)據(jù)降維并可視化觀察可能的簇結(jié)構(gòu)。然后使用原始高維數(shù)據(jù)或經(jīng)過PCA保留主要成分后的數(shù)據(jù)進(jìn)行實(shí)際的聚類計算。聚類和可視化可以分開進(jìn)行。5.2 聚類穩(wěn)定性與驗證你的結(jié)果可靠嗎K-Means的初始質(zhì)心是隨機(jī)選擇的這可能導(dǎo)致每次運(yùn)行結(jié)果略有不同。如何評估其穩(wěn)定性設(shè)置隨機(jī)種子在研究和開發(fā)階段固定random_state參數(shù)以保證結(jié)果可復(fù)現(xiàn)。多次運(yùn)行在生產(chǎn)環(huán)境中可以多次運(yùn)行K-Means比如10次選擇SSE最小的一次作為最終結(jié)果。外部驗證如果有真實(shí)標(biāo)簽雖然聚類是無監(jiān)督學(xué)習(xí)但有時我們會有部分先驗知識或事后標(biāo)注。這時可以使用調(diào)整蘭德指數(shù)、互信息等指標(biāo)將聚類結(jié)果與真實(shí)標(biāo)簽對比。注意這僅用于評估算法性能而不是聚類本身的目的。5.3 典型陷阱與避坑指南忽略數(shù)據(jù)標(biāo)準(zhǔn)化這是新手最常犯的錯誤會導(dǎo)致距離計算被某個大數(shù)量級特征完全主導(dǎo)聚類結(jié)果毫無意義。盲目追求高輪廓系數(shù)輪廓系數(shù)是一個相對指標(biāo)不同數(shù)據(jù)集之間可比性不強(qiáng)。強(qiáng)行選擇輪廓系數(shù)最高的K可能會得到在業(yè)務(wù)上無法解釋的細(xì)小簇。過度解讀噪聲點(diǎn)在使用DBSCAN時那些被標(biāo)記為-1的噪聲點(diǎn)需要仔細(xì)分析。它們可能是數(shù)據(jù)錄入錯誤、真正的異常行為如欺詐也可能是算法參數(shù)設(shè)置不當(dāng)導(dǎo)致的。不要簡單地丟棄要結(jié)合業(yè)務(wù)判斷。混淆相關(guān)性與因果關(guān)系聚類發(fā)現(xiàn)了A類用戶喜歡買咖啡和電腦。這并不意味著“買咖啡”導(dǎo)致“買電腦”它們可能只是同一類人群如程序員的兩種共同消費(fèi)習(xí)慣。不要從聚類結(jié)果中直接推導(dǎo)因果關(guān)系?!昂谙洹笔浇桓督o業(yè)務(wù)部門的結(jié)果不能只是一串簇標(biāo)簽。必須配合清晰的用戶畫像、特征描述和 actionable 的策略建議否則聚類就失去了價值。聚類模型是一個強(qiáng)大的探索性工具它的價值不在于模型的復(fù)雜程度而在于能否從數(shù)據(jù)中提煉出對業(yè)務(wù)有直接指導(dǎo)意義的洞見。從理解“無監(jiān)督”的本質(zhì)開始謹(jǐn)慎地處理數(shù)據(jù)明智地選擇算法和參數(shù)最后將數(shù)學(xué)結(jié)果轉(zhuǎn)化為商業(yè)語言這整個過程才是數(shù)據(jù)建模工作中最具挑戰(zhàn)也最有魅力的部分。