lda是一種文件主題生成模型,也稱為乙個三層貝葉斯概率模型,包含詞、主題和文件三層結構。
作為一種非監督機器學習技術,可以用來識別大規模文件集或語料庫中潛藏的主題資訊。它採用了詞袋的方法,這種方法將每一篇文件視為乙個詞頻向量,從而將文字資訊轉化為了易於建模的數字資訊。但是詞袋方法沒有考慮詞與詞之間的順序,這簡化了問題的複雜性,同時也為模型的改進提供了契機。每一篇文件代表了一些主題所構成的乙個概率分布,而每乙個主題又代表了很多單詞所構成的乙個概率分布。
舉個例子
我們日常生活中總是產生大量的文字,如果每個文字儲存為一篇文章,那麼每篇文件從人的觀察來說就是有序的詞的序列d=(w1,w1,...,wn)
包含m篇文章的語料庫,每個文件有nm個單詞,一共涉及到k個主題;
每篇文件都有各自的主題,主題分布是多項式分布,該多項式分布的引數服從dirichlet分布,該dirichlet分布的引數為α;
每個主題都有各自的詞分布,詞分布為為多項式分布,該多項式分布的引數服從dirichlet分布,該dirichlet分布的引數為η;
對於某篇文件d中的第n個詞,首先從該文件的主題分布中採用乙個主題,然後再這個主題對應的詞分布中採用乙個詞,不斷重複該操作,直到m篇文件全部完成上述過程。
按照前述lda演算法流程,我們可以給基於numpy來實現乙個簡單的lda模型。基本關 鍵點包括計算分組均值與協方差、類間散度矩陣和svd分解等。具體實現過程如下代 碼所示:
import numpy as np
class lda():
def __init__(self):
self.w = none
def calculate_covariance_matrix(self, x, y=none):
# 計算協方差矩陣
m = x.shape[0]
x = x - np.mean(x, axis=0)
y = x if y == none else y - np.mean(y, axis=0)
return 1 / m * np.matmul(x.t, y)
# 對資料進行向量轉換
def transform(self, x, y):
self.fit(x, y)
x_transform = x.dot(self.w)
return x_transform
# lda擬合過程
def fit(self, x, y):
# 按類劃分
x0 = x[y == 0]
x1 = x[y == 1]
# 分別計算兩類資料自變數的協方差矩陣
sigma0 = self.calculate_covariance_matrix(x0)
sigma1 = self.calculate_covariance_matrix(x1)
# 計算類內散度矩陣
sw = sigma0 + sigma1
# 分別計算兩類資料自變數的均值和差
u0, u1 = x1.mean(0), x2.mean(0)
mean_diff = np.atleast_1d(u0 - u1)
# 對類內散度矩陣進行奇異值分解
u, s, v = np.linalg.svd(sw)
# 計算類內散度矩陣的逆
sw_ = np.dot(np.dot(v.t, np.linalg.pinv(s)), u.t)
# 計算w
self.w = sw_.dot(mean_diff)
# lda分類**
def predict(self, x):
y_pred =
for sample in x:
h = sample.dot(self.w)
y = 1 * (h < 0)
return y_pred
再比如下面這個例子
對於這個樣本集我們可以將資料投影到x軸或者y軸,但這都不是最佳的投影方向,因為這兩個方向都不能最好地反映資料的分布。很明顯還存在最佳的方向可以描述資料的分布趨勢,那就是圖中紅色直線所在的方向。也是資料樣本做投影,方差最大的方向。向這個方向做投影,投影後資料的方差最大,資料保留的資訊最多。
圖中還有一條耀眼的黃色直線,向這條直線做投影即能使資料降維,同時還能保證兩類資料仍然是線性可分的。上面的這個資料集如果使用lda降維,找出的投影方向就是黃色直線所在的方向。
lda-原理解析_nine days-csdn部落格_ldablog.csdn.net
lda 協方差矩陣 LDA演算法詳解
線性鑑別分析法 線性鑑別分析 linear discriminant analysis,lda 有時也稱 fisher 線性判別 fisher linear discriminant fld 這種演算法是 ronald fisher 於年發明的,是模式識別的經典演算法 i 在 年由belhumeur...
lda 協方差矩陣 LDA演算法詳解
精品文件 線性鑑別分析法 線性鑑別分析 linear discriminant analysis,lda 有時也稱 fisher 線性判別 fisher linear discriminant fld 這種演算法是 ronald fisher 於年發明的,是模式識別的經典演算法 i 在 年由belh...
協方差 協方差矩陣
期望 離散型隨機變數的一切可能的取值xi與對應的概率pi xi 之積的和稱為該離散型隨機變數的數學期望 設級數絕對收斂 記為 e x 隨機變數最基本的數學特徵之一。它反映隨機變數平均取值的大小。又稱期望或均值。求法 設離散型隨機變數x的取值為 方差 方差是各個資料與平均數之差的平方的平均數。在概率論...