簡體   English   中英

我如何找到一個投影來保留內部產品的相對價值?

[英]How can I find a projection to preserve the relative value of inner product?

我想用100維向量v進行降維,然后得到10維向量v'。

並且必須保留以下屬性:

For arbitrary vector w1, w2(100-dimension)
if v * w1 > v * w2(* rep inner product)
After reduction....
v' * w1' > v' * w2'

我了解到隨機投影是一種方法( http://scikit-learn.org/stable/modules/random_projection.html ),但它保留了距離和內積的價值。 但是我只想保持相對>或<屬性,而不是絕對距離/內積值。

隨機投影的另一個問題是它適合大尺寸縮小(10000-3000)。

from sklearn.random_projection import johnson_lindenstrauss_min_dim
johnson_lindenstrauss_min_dim gives us a bound.

以下是我的Python偽代碼來說明我需要的內容:

import sys
import math
import numpy as np
def compare(a, b_lst):
    d_lst = []
    indx = 0
    for b in b_lst:
        d_lst.append((index, np.dot(a, b)))
        indx += 1
   return sorted(d_lst, key = lambda v : v[1])

x = np.random.rand(1, 100)
y = np.random.rand(5, 100)
result1 = compare(x, y)

# do projection
transformer = projection_method(object_dimension = 10)
x1 = transformer.transform(x)
y1 = transformer.transform(y)
result2 = compare(x1, y1)

for i in xrange(len(result1)):
    if result1[i][0] != result2[i][0]: # compare sorted index
        print 'failed'
        sys.exit(-1)
print 'passed'

沒有這樣的現成轉換。 即使有些我不知道的東西,也不會進行任何轉換來精確地保留這樣的屬性。 通過減小維度,您本質上會丟失信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM