什麼是 餘弦相似度(Cosine Similarity)?
餘弦相似度是一種衡量兩個非零向量之間夾角餘弦值的度量方法,常用於評估文本或資料點之間的相似程度。
餘弦相似度深度解說
核心概念
餘弦相似度是一種在向量空間中衡量兩個向量方向相似程度的指標。它通過計算兩個向量之間夾角的餘弦值來判斷它們的相似性。與歐氏距離等其他距離度量方法不同,餘弦相似度更關注向量的方向,而非它們的絕對大小。這使得它在處理文本資料等具有不同長度的資料時非常有用。
餘弦相似度的公式如下:
cosine_similarity(A, B) = (A · B) / (||A|| * ||B||)
其中:
A和B是兩個向量。A · B是向量A和B的點積。||A||和||B||分別是向量A和B的歐幾里得範數(長度)。
餘弦相似度的值域為 [-1, 1]:
- 1 表示兩個向量指向完全相同的方向。
- 0 表示兩個向量正交(不相關)。
- -1 表示兩個向量指向完全相反的方向。
運作原理
餘弦相似度的運作原理基於向量空間模型。在向量空間模型中,每個資料點(例如文本、圖像或用戶)都被表示為一個向量。向量的每個維度代表資料的一個特徵,而維度的值則表示該特徵的重要性或強度。
計算餘弦相似度的步驟如下:
- 向量化 (Vectorization): 將資料轉換為向量表示。例如,對於文本資料,可以使用詞袋模型 (Bag-of-Words)、TF-IDF 或詞嵌入 (Word Embedding) 等方法將文本轉換為向量。
- 計算點積 (Calculate Dot Product): 計算兩個向量的點積。點積是兩個向量對應元素乘積之和。
- 計算範數 (Calculate Norm): 計算每個向量的歐幾里得範數(長度)。歐幾里得範數是向量各元素平方和的平方根。
- 計算餘弦相似度 (Calculate Cosine Similarity): 將點積除以兩個範數的乘積,得到餘弦相似度。
實際應用
餘弦相似度在許多領域都有廣泛的應用,包括:
- 文本相似度 (Text Similarity): 衡量兩個文本的相似程度。例如,可以用於檢測抄襲、對文章進行聚類或推薦相似的文章。
- 推薦系統 (Recommendation Systems): 根據用戶的歷史行為和偏好,推薦用戶可能感興趣的商品、內容或服務。例如,可以將用戶的歷史行為表示為向量,並使用餘弦相似度來尋找與該用戶最相似的其他用戶,然後推薦這些用戶喜歡的商品。
- 圖像檢索 (Image Retrieval): 根據查詢圖像,尋找與查詢圖像相似的其他圖像。例如,可以將圖像轉換為特徵向量,並使用餘弦相似度來尋找與查詢圖像最相似的圖像。
- 資訊檢索 (Information Retrieval): 根據查詢,尋找與查詢相關的文檔。例如,可以將查詢和文檔都轉換為向量,並使用餘弦相似度來尋找與查詢最相似的文檔。
- 聚類分析 (Clustering Analysis): 將相似的資料點分組到一起。例如,可以使用餘弦相似度來衡量資料點之間的相似性,並使用聚類演算法將相似的資料點分組到一起。
常見誤區
- 餘弦相似度考慮了向量的大小: 餘弦相似度只考慮向量的方向,不考慮向量的大小。如果兩個向量指向相同的方向,即使它們的大小不同,它們的餘弦相似度仍然是 1。
- 餘弦相似度總是比歐氏距離更好: 餘弦相似度和歐氏距離各有優缺點。餘弦相似度更適合處理具有不同長度的資料,而歐氏距離更適合處理具有相同尺度的資料。選擇哪種度量方法取決於具體的應用場景。
- 餘弦相似度只能用於處理文本資料: 餘弦相似度可以用於處理任何可以表示為向量的資料,包括文本、圖像、音訊和用戶行為資料。
與相關技術的比較
- 歐氏距離 (Euclidean Distance): 歐氏距離衡量的是兩個向量之間的直線距離。與餘弦相似度不同,歐氏距離考慮了向量的大小。在某些情況下,歐氏距離可能更適合衡量相似性,例如當向量的大小具有實際意義時。
- 皮爾遜相關係數 (Pearson Correlation Coefficient): 皮爾遜相關係數衡量的是兩個變數之間的線性相關程度。與餘弦相似度類似,皮爾遜相關係數也考慮了資料的中心化,即減去平均值。因此,皮爾遜相關係數更適合衡量具有線性關係的資料。
- Jaccard 相似係數 (Jaccard Index): Jaccard 相似係數衡量的是兩個集合的相似程度。它定義為兩個集合交集的大小除以它們並集的大小。Jaccard 相似係數更適合處理集合資料,例如用戶購買的商品或瀏覽的網頁。
相關術語
常見問題
延伸學習
想看 餘弦相似度 的完整影片教學?前往 美第奇 AI 學院