lda 協方差矩陣 LDA模型

2021-10-13 20:15:15 字數 2796 閱讀 9414

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部落格_lda​blog.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的取值為 方差 方差是各個資料與平均數之差的平方的平均數。在概率論...