Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como fazer correspondência entre o dado no espaço "normal" e o espaço do TSNE?

Ok. Já tenho os modelos treinados e tudo com a minha base de dados de pacientes da alura-care. Imagine que eu tenha um novo paciente que realizou todos os exames da mesma forma que os pacientes dos dados iniciais antes de serem transformados.

Mas como vou saber em que porção do meu gráfico no espaço do TSNE ele se localiza?

Pelo que entendi na documentação do PCA, ele tem um método que é o 'transform'. Ou seja, depois que eu treinei com a minha base de dados (pca.fit_transform(x)) e gerei minha visualização, eu consigo fazer uma espécie de "predict" com o transform no exame do meu paciente novo e localizá-lo no meu gráfico. Eu testei com a primeira linha do dataset e deu correspondência (tipo abaixo), não sei se entendi errado.

pca.transform([np.array(valores_exames_v5.iloc[0])])

Mas o TSNE não parece ter um método equivalente. Nesse caso como eu conseguiria saber se o meu paciente se encontra no limite entre o benigno e malígno para que eu possa pedir novos exames pra reforçar o diagnóstico?

Teria que fazer o processo de converter os dados de novo (dessa vez incluindo o paciente novo no dataset)?

2 respostas
solução!

Oii Gean, tudo bem?

Desculpa pela demora de responder aqui pra ti. Vamos lá!

Realmente não existe a função transform no t-SNE, ou seja, não tem como você saber o que precisa sem treinar o modelo de novo com o novo dado.

Isso ocorre porque, por mais parecidos que os modelos sejam (PCA e t-SNE), o t-SNE é iterativo e aprende um mapeamento não paramétrico, ou seja, ele não aprende uma função explícita que mapeia os dados da entrada do espaço pro mapa, então realmente precisa fazer a inserção dos novos dados e rodar tudo de novo. Uma outra solução que o próprio criador do t-SNE é treinar um regressor multivariado para prever a localização a partir dos inputs, mas demanda um trabalho maior.

Se você quiser saber mais sobre o t-SNE, além da documentação, existe o Github do criador do modelo, ele explica bem sobre vários detalhes, inclusive sobre o porque não existir o transform.

Se precisar de mais alguma coisa, estou por aqui!

Bons estudos ^^

Obrigado pela atenção, Sthefanie. Vou dar uma olhada nesse Github.