El año pasado, en NIPS 2017, Ali Rahimi y Ben Recht ganaron el premio de la prueba del tiempo por su trabajo "Características aleatorias para máquinas de grano a gran escala", donde introdujeron características aleatorias, que luego se codificaron como el algoritmo de fregaderos de cocina aleatorios. Como parte de la publicidad de su trabajo, mostraron que su modelo podría implementarse en 5 líneas de matlab.
% Approximates Gaussian Process regression
% with Gaussian kernel of variance gamma^2
% lambda: regularization parameter
% dataset: X is dxN, y is 1xN
% test: xtest is dx1
% D: dimensionality of random feature
% training
w = randn(D,d);
b = 2 * pi * rand(D, 1);
Z = cos(gamma * w * X + b * ones(1,N));
alpha = (lambda * eye(D) +Z * Z') \ (Z * y);
% testing
ztest = alpha' * cos(gamma * w * xtest + b);
Cómo el algoritmo anterior aprende algo no está claro para mí. ¿Cómo funciona un fregadero de cocina al azar? ¿Cómo aproxima los procesos gaussianos y admite máquinas de vectores?
Editar
Al volver a observar la charla de Rahimi, el término fregaderos de cocina al azar no se introduce en el documento por el que ganaron el premio, sino al final de la trilogía de documentos que comienzan con "Características aleatorias para máquinas de grano a gran escala". Los otros documentos son:
Creo que el fragmento de código presentado anteriormente es una especialización del Algoritmo 1 en el último artículo.