其運用迭代的方法減少量化誤差,從而得到最優的二進位制**。
1、對資料空間運用pca(主成分分析)進行降維處理,從而將資料對映在乙個二進位製超立方體頂點上。
2、用||sgn(v)−v||^2的方式判定量化誤差。用b表示降維後的二進位制編碼。用v表示降維後的矩陣v=x*w,則轉化問題為找出min||b-v||2的最優解。又因為可以通過旋轉矩陣找到最近的歐氏距離,則轉化問題為找出min||b-vr||2的最優解,r為旋轉矩陣。
3、通過建立乙個隨機矩陣r,用svr分解r得到正交矩陣。
4、固定r求b,用b=sgn(v×d)得到b
5、固定b求r,對b*v進行svr得到r(依據是正交普魯克方程)
6、反覆迴圈50次得到最優解。
matlab**:
// a code block
for iter=0:50
z = v * r;
ux = ones(size(z,1),size(z,2)).*-1;
ux(z>=0) = 1;
c = ux' * v;
[ub, sigma, ua] = svd(c);
r = ua * ub';
%fprintf('iteration %d has finished\r',iter);
end
ITQ迭代量化方法解析
於換關鍵字,從lsh轉換為hash檢索,這要感謝李某。筆者認為關鍵思想是資料降維後使用矩陣旋轉優化,其他和lsh一樣的。先對原始空間的資料集 x rn d 用pca進行降維處理,設經過pca降維後的資料集為 v rn c 該問題就可以轉化為將該資料集中的資料點對映到乙個二進位製超立方體的頂點上,使得...
關於迭代的理解
參考自 參考自 參考自 迭代 迭代的使用場景 陣列的資料量很大 迭代是迴圈的一種方式,逐個訪問列表的某一項,能夠迴圈輸出陣列中所有的元素 迭代只能對應集合,列表,陣列等。不能對執行 進行迭代.迭代是重複的活動,其目的通常是為了逼近結果。每一次對過程的重複稱為一次 迭代 而每一次迭代得到的結果會作為下...
adaboost迭代次數的理解
對於adaboost演算法而言,迭代幾次就產生幾個基本分類器,當然分類器的個數越多分類的精度越高。那麼怎麼確定迭代的次數呢,在我的理解而言,之所以設定迭代次數,是因為當資料量很大的時候,如果還想讓模型保持極高的精度,那麼所消耗的時間也一定很久,所以為了保證精度的同時保證演算法效率,那麼在程式的迭代的...