Na prática, o que as pessoas fazem com os valores ausentes da matriz de recomendação, que é o objetivo de fazer o cálculo? Meu palpite ao ler o post de Simon é que ele APENAS usa os termos que não faltam para construir um modelo.
Isso mesmo - esse é o objetivo dele e do seu modelo para prever os termos ausentes, certo? É um ponto crucial que muitos realmente esquecem. Eles acham que podem simplesmente "assumir" pré-atribuir uma constante a dados ausentes sem se preocupar com o mundo, e as coisas vão funcionar magicamente bem o suficiente com um SVD. Lixo para dentro, para fora: é real, e é melhor você assistir. É melhor você não alimentar dados indesejados para um modelo se quiser algo útil.
Certamente NÃO é "melhor deduzir quaisquer valores ausentes" no conjunto de dados esparso majoritário e, em seguida, execute o SVD com alguma esperança de atribuir valores para você (que você já imputou antes de executar o SVD, certo?). O que você acha que um modelo é mágico? Não há mágica nem tecnologia para superar a maioria dos dados de lixo. Você não pode mentir para um modelo de que dados são dados reais quando não são reais, mas na verdade são apenas algumas porcarias que você simplesmente inventou do nada.
O SVD faz outras coisas úteis, então certamente não estou dizendo que o SVD é inútil. Vá em frente e use SVD apenas em conjuntos de dados completos, talvez com os quais você inteligentemente imputou valores ausentes ao já usar um modelo de aprendizado de máquina com toda a devida atenção ao erro de polarização e erro de variação durante seu desenvolvimento.
O aprendizado de máquina é o caminho. Portanto, se você ainda deseja saber como imputar valores usando um projeto de fatoração de matriz, certamente existem boas maneiras de fazer exatamente isso usando o aprendizado de máquina, e o mais importante é que eles não alimentam nenhum dado indesejado em um modelo para tentar aprender sem sentido.
Exatamente, esse modelo de fatoração da matriz de aprendizado de máquina é apresentado muito bem pelos instrutores do curso on-line de mineração de conjuntos de dados maciços de Stanford, no módulo 5. Eles mostram a matemática e explicam o modelo. Eles não o codificam para você.
Tudo bem porque você pode codificá-lo por conta própria, se entender o aprendizado básico de máquina. Você sabe o que são uma função de perda e uma função de custo? Regularização? Gradiente descendente? Você concorda com a multiplicação e adição de matrizes? Erro de polarização e erro de variação? Se sim, então você é bom. Caso contrário, considere fazer o curso on-line de aprendizado de máquina de Andrew Ng na Coursera, que é um dos muitos bons pontos de partida. Depois, faça também o curso on-line Mining Massive Data Sets, que fala exatamente sobre fatoração de matriz e aprendizado de máquina para fazer modelos de recomendação.
Basta dizer que você pode projetar completamente e codificar seu próprio modelo de fatoração, que lida com dados perdidos muito bem, assim como Simon Funk, e você pode fazê-lo do zero, mas não é tão difícil como antes. em seus dias, porque agora você pode usar uma ferramenta como TensorFlow ou Microsoft CNTK, que faz muito por você. Defina uma função de perda e uma função de custo, escolha um otimizador, particione seu conjunto de dados em treinamento, dev, teste com os dados realmente disponíveis (dados rotulados) e deixe executar. Sério, funciona. Não é fácil depurar o TF e seus erros de criação de gráficos, mas pode funcionar muito bem no final e requer menos de uma página de código.
Especificamente, uma maneira de não alimentar dados falsos para um modelo de aprendizado de máquina de fatoração de matriz é pular os elementos da matriz dos dados ausentes em suas funções de perda e custo .