Existem várias maneiras de prever valores ausentes, mas o SVD clássico não é um deles. O bom é que o aprendizado de máquina agora oferece muitas maneiras de fazer isso, algumas das quais baseadas na fatoração da matriz, outras completamente diferentes da fatoração da matriz. Você pode escolher e criar um modelo completamente personalizado, e isso geralmente é feito agora, porque as ferramentas são poderosas o suficiente hoje. A fatoração da matriz ainda é certamente uma boa maneira de prever valores ausentes em dados esparsos, mas o próprio SVD não é.
A resposta aceita aqui, aparentemente aconselhou o interlocutor a escolher qualquer valor constante como 0 ou 99 ou -3 ou o que quer que seja, para atribuir os valores ausentes com antecedência e depois executar o SVD nisso. Essa é uma resposta ruim se o objetivo é prever em conjuntos de dados esparsos. Mas se, em vez disso, o objetivo do OP é simplesmente executar o SVD, a pré-atribuição de qualquer valor constante funcionará bem; portanto, escolha qualquer valor e execute o SVD se os resultados não importarem para o OP. Eu disse que o SVD é uma solução ruim para a previsão de valores ausentes, porque assumir um valor constante em todos os locais esparsos pode acabar sendo a introdução de literalmente mais pontos de ruído do que bons pontos de dados.
Qual é o sentido de aprender barulho? E por que você sugeriria que os valores ausentes são realmente o mesmo valor constante, quando o objetivo do exercício é prever o que são? Você não espera que os valores ausentes sejam realmente iguais, certo? Isso vai subestimar o número de componentes principais que resultam se houver dados constantes tão difundidos em seu conjunto de dados, por um lado. Também é um problema de previsão muito fácil. Você não precisa de um algoritmo de aprendizado ou mesmo de algoritmo de fatoração. Você acabou de dizer que os valores ausentes são uma constante conhecida. Não há necessidade de imputar! Você já fez isso manualmente, apenas adivinhando o modo antiquado.
Você pode ficar mais sofisticado com o SVD e pré-imputar os valores ausentes usando uma distribuição aleatória derivada empiricamente usando a média e o desvio padrão dos dados conhecidos (não ausentes). Mas há aleatoriedade em vez de padrões nos dados e você presumivelmente esperava que a fatoração da matriz e a redução da dimensionalidade inerentes a essa técnica encontrassem os padrões que você espera que existam. Você não descobrirá muitos padrões de uso em ruídos aleatórios, portanto, também não está ajudando a usá-lo dessa maneira.
A conclusão é que a saída do SVD - ou qualquer outro algoritmo - será em grande parte lixo sempre que houver uma quantidade impressionante de dados indesejados fornecidos pelo investigador. Nenhum algoritmo pode aprender um bom modelo com a maioria dos dados indesejados. Apenas diga não a toda essa "abordagem".
Parece provável que o objetivo do OP seja prever e usar um projeto de fatoração de matriz como parte do algoritmo de aprendizado. Nesse caso, o mais interessante é que você pode escrever sua própria função de custo, que omite crucialmente o custo, quaisquer previsões feitas com relação aos valores ausentes. Nenhum dado indesejado é alimentado para o algoritmo de aprendizado dessa maneira.Use um bom otimizador baseado em descida por gradiente, como Adam (existem outros). Você pode obter uma solução que seja mensurável com precisão em qualquer grau de treinamento, desenvolvimento e conjunto de dados de teste, desde que siga uma boa metodologia de projeto de aprendizado de máquina. Sinta-se à vontade para adicionar termos e complexidade ao seu modelo, como viés de usuário, viés de item, viés global, regularização ou qualquer outra coisa necessária para controlar o erro de viés e o erro de variação dos requisitos do seu projeto e dos conjuntos de dados disponíveis.
Um moderno pacote de desenvolvimento de aprendizado de máquina faz disso uma abordagem prática agora. O TensorFlow, por exemplo (ou Microsoft CNTK et al), pode ajudá-lo a fazer exatamente o que eu descrevi em um conjunto de dados esparso, usando um modelo de fatoração de matriz.