0

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 ) であることを学びましたが、距離と内積の値を保持します。しかし、絶対距離/内積値ではなく、相対的な > または < プロパティのみを保持したいのです。

ランダム投影のもう 1 つの問題は、大幅な次元削減 (10000 ~ 3000) に適していることです。

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

以下は、必要なものを説明するための私の Python-Pseudo-Code です。

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'
4

1 に答える 1

1

そのような既製の変換はありません。私が気づいていないことがあったとしても、そのようなプロパティを正確に保存する変換はありません。次元を減らすと、本質的に情報が失われます。

于 2013-12-09T03:40:31.183 に答える