【发布时间】:2018-03-20 04:09:41
【问题描述】:
这似乎很简单,但我无法让事情正常进行。我有 100 维向量空间,每个空间中有几个匹配的向量。我想找到这样的变换矩阵(W):
a_vector[0] 在向量空间 A x W = b_vector[0] 在向量空间 B(或近似值)。
所以一篇论文提到了这个公式。
所以没有我们通常看到的偏差项,没有激活。
我尝试使用 sklearns 线性回归但没有取得多大成功。
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
regression_model = LinearRegression(fit_intercept=True)
regression_model.fit(X_train, y_train)
regression_model.score(X_test, y_test)
> -1451478.4589335269 (!!???)
y_predict = regression_model.predict(X_test)
regression_model_mse = mean_squared_error(y_predict, y_test)
regression_model_mse = 524580.06
尝试了 tensorflow,但没有取得多大成功。不要关心工具——tensorflow、sklearn——只是寻求解决方案的帮助。
谢谢。
编辑
所以我手动滚动了下面的代码 - 余弦 sim 的最大值(表示预测点与实际点的接近程度 - 1.00 = 完美匹配) - 但它非常慢。
shape = (100,100)
W1 = np.random.randn(*shape).astype(np.float64) / np.sqrt(sum(shape))
avgs = []
for x in range(1000):
shuffle(endevec)
distance = [0]
for i,x in enumerate(endevec):
pred1 = x[0].dot(W1)
cosine = 1 - scipy.spatial.distance.cosine(pred1, x[1])
distance.append(cosine)
diff = pred1 - x[0]
gradient = W1.T.dot(diff) / W1.shape[0]
W1 += -gradient * .0001
avgs.append(np.mean(distance))
sys.stdout.write('\r')
# the exact output you're looking for:
sys.stdout.write(str(avgs[-1]))
sys.stdout.flush()
编辑 2
下面的 Jeanne Dark 有一个很好的答案,可以使用以下方法找到变换矩阵: M=np.linalg.lstsq(source_mtrx[:n],target_mtrx[:n])[0]
在我的匹配 vecs 数据集上,使用这种方法找到的 TM 预测的 vecs 是:
minmax=(-0.09405095875263214, 0.9940633773803711)
mean=0.972490919224675 (1.0 being a perfect match)
variance=0.0011325349465895844
skewness=-18.317443753033665
kurtosis=516.5701661370497
有少量非常大的异常值。
cosine sim 的情节是:
【问题讨论】:
-
回归/OLS 可能不是正确的工具。仅当我们想在给定 W(设计矩阵)和 z(结果向量)的情况下找到 x 时才合适,但看起来您正在寻找给定 x 和 z 的 W。
-
但那是论文中特别提到的工具。
-
我可能误解了你的问题。你能提供一些
x和y的例子吗?为什么会有训练集和测试集?或者甚至提供论文的链接?谢谢! -
X(输入)是向量空间 A 中的 100 个昏暗向量。Y(输出)是向量空间 B 中的 100 个昏暗向量。我想找到这样的变换矩阵
-
X(输入)是向量空间 A 中的 100 个模糊向量。Y(输出)是向量空间 B 中的 100 个模糊向量。这些点是匹配的。我想找到一个转换矩阵,使得 - 来自 A x 矩阵的 vec1 = 来自 B 的 vec1。困难似乎是从 100 暗淡输入到 100 暗淡输出 - 大多数 SGD 通常涉及减少输出暗淡 - 并且输入并且输出是连续的,而不是分类的。这篇论文在下面,但它没有解决这个问题——唯一提到的是我在上面发布的那个。 arxiv.org/abs/1309.4168。谢谢
标签: python matrix transformation stochastic