elibrarius: Se você iniciar algo por um mês - use uma fonte de alimentação ininterrupta para o seu computador, uma vez tive 2 semanas de cálculos, a luz estava apagada)) E a versão GPU não espera muito, para reescrever o código parece-me mais longo e se o autor não o tiver feito, é improvável que outra pessoa termine esta tarefa até ao fim.
Bem, o autor fez um paralelo com tudo, agora só preciso de o gerir. De qualquer forma, eu esgotei a corrida por 3 dias e consegui um modelo com 9 entradas, o que é um recorde para mim agora para ser honesto. Não quero optimizá-lo por tanto tempo. Mas como se costuma dizer. O mercado exige isso. Portanto, procurando capacidades, se alguém tem a oportunidade de otimizar o conjunto de dados sobre o otimizador, e mesmo sobre 20-30 núcleos, eu ficaria muito grato.
Aparentemente seu algoritmo não é ótimo, em conjuntos de dados tão pequenos você pode usar com segurança algoritmos bruteforcing como o Knn, que são quase ótimos, se o algoritmo for mais lento que o Knn é provavelmente um algoritmo ML ruim ou mal configurado. Em tal conjunto de dados, todo o ciclo de treinamento e execução de todo o conjunto não deve levar mais do que um segundo.
pantural: Aparentemente seu algoritmo não é ótimo, em conjuntos de dados tão pequenos, você pode usar algoritmos de força bruta como o Knn, que são quase ótimos, se o algoritmo for mais lento que o Knn, provavelmente é um algoritmo ML ruim ou mal configurado. Nesse conjunto de dados, todo o ciclo de treinamento e execução de todo o conjunto não deve levar mais do que um segundo.
Eu expliquei acima. 100 fendas cada fenda é treinada 1000 épocas etc. A essência do otimizador é calcular o conjunto de dados para que não haja dúvidas sobre a sua adequação. Ou seja, ele gira este ficheiro para cima e para baixo figurativamente, e você continua a compará-lo a um único treino de um neurónio. IMHO. É essencialmente um sistema de IA em que todo tipo de otimização e pré-processamento acontece junto com o treinamento de neurônios, e o treinamento em si funciona centenas de vezes. Se algo....
Eu expliquei acima. 100 fendas, cada fenda é treinada para 1000 épocas, etc. Você está apenas fixado em um único treinamento de um neurônio, enquanto o objetivo do otimizador é calcular o conjunto de dados para que não haja dúvidas sobre sua bondade de ajuste. Ou seja, ele gira este ficheiro para cima e para baixo figurativamente, e você continua a compará-lo a um único treino de um único neurónio. IMHO. É essencialmente um sistema de IA em que todo tipo de otimização e pré-processamento acontece junto com o treinamento de neurônios, e o treinamento em si funciona centenas de vezes. Se algo....
Eu sou geralmente contra todo esse treinamento, mas sua máquina é exatamente o que um burro inventou, até eu posso entendê-la.
elibrarius: O MLP está a adivinhar 95% das vezes... Acho que não estás a fazer a bicicleta certa) Sem ofensa.
Você tem um erro. A primeira coluna na tabela é o número da linha, e esta coluna não pode ser usada na previsão, mas só é necessária para a jPredição por algum motivo.
O alvo é distribuído de modo que a primeira metade das linhas seja de classe 0, e a segunda metade das linhas seja de classe 1. Então o neurônio simplesmente se lembra que se o número da linha for inferior a 228, é classe 0, caso contrário é classe 1.
Você tem um erro. A primeira coluna na tabela é um número de linha e você não pode usar esta coluna na previsão, mas é obrigatória apenas para a previsão jPrediction por algum motivo.
O alvo é distribuído de modo que a primeira metade das linhas seja de classe 0, e a segunda metade das linhas seja de classe 1. Então, o neurônio simplesmente se lembra que se o número da linha for inferior a 228, é classe 0, caso contrário, é classe 1.
Oh, a propósito, sim. Não reparei que é apenas um número.
Sem ele Entradas para guardar: 4,50,53,59,61,64,92,98,101,104,
Erro médio no treinamento (60,0%) =0,269 (26,9%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2 Erro médio na validação (20,0%) gráfico =0,864 (86,4%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2 Erro médio no gráfico de teste (20,0%) =0,885 (88,5%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2
Claramente sobretreinamento. Por isso, preciso de peneirar as entradas de uma forma diferente.
Talvez peneirar por peso de insumos? Como você fez para o problema no primeiro post da linha...
Estou a tentar reescrever o teu guião R anexado para que possa determinar nomes e número de colunas... mas não conheço R suficiente.
Estou a tentar reescrever o guião R que anexaste, para que ele determine os nomes e o número de colunas... mas não conheço R suficiente.
Eu ainda estava começando a aprender R então, o roteiro é quase inteiramente gerado em guizo (ambiente visual para datamining em R), por isso é tão complexo e personalizado para todas as ocasiões.
Em geral, é uma má abordagem, não se deve definir a importância dos inputs dessa forma. Por alguma razão, funcionou daquela vez, mas nunca mais me ajudou.
É melhor definir a importância dos prognosticadores da seguinte forma
library(vtreat)
sourceTable <- read.table("BuySell.csv", sep=";", header = TRUE, stringsAsFactors = FALSE)
#Эта строка кода относится только к конкретно этому файлу.
#В этом csv первая колонка и первая строка специально заполнены для конкретной модели, и тут не нужны. Удалить.
#для обычных csv файлов такую команду выполнять не нужно.
sourceTable <- sourceTable[-1,-1]
#число колонок
sourceTable_ncol <- ncol(sourceTable)
#Оценка для классификации, только для двух классов.
#Outcometarget должен быть равен значению одного из классов.
#На выбор или эта функция designTreatmentsC, или designTreatmentsN, или designTreatmentsZ (ниже, закоменчены)
#Взаимная корреляция предкиторов учитывается только в designTreatmentsC, и у повторяющихся или похожих предикторов оценка будет понижаться
set.seed(0)
treats <- designTreatmentsC(dframe = sourceTable,
varlist = colnames(sourceTable)[-sourceTable_ncol],
outcomename = colnames(sourceTable)[sourceTable_ncol],
outcometarget = 1,
verbose = FALSE
)
# #оценка для регрессии или если больше двух классов
# sourceTable[,sourceTable_ncol] <- as.numeric(sourceTable[,sourceTable_ncol])
# set.seed(0)
# treats <- designTreatmentsN(dframe = sourceTable,
# varlist = colnames(sourceTable)[-sourceTable_ncol],
# outcomename = colnames(sourceTable)[sourceTable_ncol],
# verbose = FALSE# )
# #Оценка предикторов без учёта цели.
# set.seed(0)
# treats <- designTreatmentsZ(dframe = sourceTable,
# varlist = colnames(sourceTable)[-sourceTable_ncol],
# verbose = FALSE# )
#
#табличка только с названием колонки и её оценкой важности
resultTable <- treats$scoreFrame[,c("varName", "sig")]
#сортировка
resultTable <- resultTable[order(resultTable$sig),]
#согласно общему правилу, оценка предиктора (sig) должна быть меньше 1/<общее число предикторов>
#чем оценка меньше, тем лучше
resultTable$testPassed <- resultTable$sig < 1/(sourceTable_ncol-1)
#для создания модели и прогноза лучше использовать только те предкторы у которых testPassed == TRUE
resultTable
Os resultados da avaliação da importância são os seguintes. Quanto mais alto o prognosticador na mesa, melhor. SomenteVVolum6, VDel1, VVolum9, VQST10 passaram no teste.
No guizo podemos construir 6 modelos ao mesmo tempo sobre estes 4 preditores, e SVM mostra uma precisão de cerca de 55% na validação e dados de teste. Nada mal.
elibrarius: O MLP acerta 95% das vezes... Acho que não estás a fazer a bicicleta certa) Sem ofensa. Eu faço minha própria moto também, mas com base em décadas de MLP comprovado (que se diz ser obsoleto e precisa de algo mais fresco para trabalhar).
E tente também árvores de decisão de algibeiras, elas contam mais rápido e têm melhor desempenho do que mlp. A diplomacia também é mais rápida, mas não em algibe.
O principal é a relação velocidade/qualidade, para que serve esperar uma semana ou mesmo um dia ou até uma hora, para que nunca encontre a combinação ideal) O modelo leva alguns segundos para aprender, depois você pode usar a genética para a autosimulação de parâmetros ou preditores, depois é pura IA, senão é lixo)
Se você iniciar algo por um mês - use uma fonte de alimentação ininterrupta para o seu computador, uma vez tive 2 semanas de cálculos, a luz estava apagada))
E a versão GPU não espera muito, para reescrever o código parece-me mais longo e se o autor não o tiver feito, é improvável que outra pessoa termine esta tarefa até ao fim.
Bem, o autor fez um paralelo com tudo, agora só preciso de o gerir. De qualquer forma, eu esgotei a corrida por 3 dias e consegui um modelo com 9 entradas, o que é um recorde para mim agora para ser honesto. Não quero optimizá-lo por tanto tempo. Mas como se costuma dizer. O mercado exige isso. Portanto, procurando capacidades, se alguém tem a oportunidade de otimizar o conjunto de dados sobre o otimizador, e mesmo sobre 20-30 núcleos, eu ficaria muito grato.
Mihail Marchukajtes:
dias de aprendizagem, semanas.
Aparentemente seu algoritmo não é ótimo, em conjuntos de dados tão pequenos, você pode usar algoritmos de força bruta como o Knn, que são quase ótimos, se o algoritmo for mais lento que o Knn, provavelmente é um algoritmo ML ruim ou mal configurado. Nesse conjunto de dados, todo o ciclo de treinamento e execução de todo o conjunto não deve levar mais do que um segundo.
Eu expliquei acima. 100 fendas cada fenda é treinada 1000 épocas etc. A essência do otimizador é calcular o conjunto de dados para que não haja dúvidas sobre a sua adequação. Ou seja, ele gira este ficheiro para cima e para baixo figurativamente, e você continua a compará-lo a um único treino de um neurónio. IMHO. É essencialmente um sistema de IA em que todo tipo de otimização e pré-processamento acontece junto com o treinamento de neurônios, e o treinamento em si funciona centenas de vezes. Se algo....
Eu expliquei acima. 100 fendas, cada fenda é treinada para 1000 épocas, etc. Você está apenas fixado em um único treinamento de um neurônio, enquanto o objetivo do otimizador é calcular o conjunto de dados para que não haja dúvidas sobre sua bondade de ajuste. Ou seja, ele gira este ficheiro para cima e para baixo figurativamente, e você continua a compará-lo a um único treino de um único neurónio. IMHO. É essencialmente um sistema de IA em que todo tipo de otimização e pré-processamento acontece junto com o treinamento de neurônios, e o treinamento em si funciona centenas de vezes. Se algo....
O MLP está a adivinhar 95% das vezes... Acho que não estás a fazer a bicicleta certa) Sem ofensa.
Você tem um erro.
A primeira coluna na tabela é o número da linha, e esta coluna não pode ser usada na previsão, mas só é necessária para a jPredição por algum motivo.
O alvo é distribuído de modo que a primeira metade das linhas seja de classe 0, e a segunda metade das linhas seja de classe 1. Então o neurônio simplesmente se lembra que se o número da linha for inferior a 228, é classe 0, caso contrário é classe 1.
Você tem um erro.
A primeira coluna na tabela é um número de linha e você não pode usar esta coluna na previsão, mas é obrigatória apenas para a previsão jPrediction por algum motivo.
O alvo é distribuído de modo que a primeira metade das linhas seja de classe 0, e a segunda metade das linhas seja de classe 1. Então, o neurônio simplesmente se lembra que se o número da linha for inferior a 228, é classe 0, caso contrário, é classe 1.
Oh, a propósito, sim. Não reparei que é apenas um número.
Sem ele Entradas para guardar: 4,50,53,59,61,64,92,98,101,104,
Erro médio no treinamento (60,0%) =0,269 (26,9%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2
Erro médio na validação (20,0%) gráfico =0,864 (86,4%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2
Erro médio no gráfico de teste (20,0%) =0,885 (88,5%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2
Claramente sobretreinamento. Por isso, preciso de peneirar as entradas de uma forma diferente.
Talvez peneirar por peso de insumos? Como você fez para o problema no primeiro post da linha...
Estou a tentar reescrever o teu guião R anexado para que possa determinar nomes e número de colunas... mas não conheço R suficiente.
Estou a tentar reescrever o guião R que anexaste, para que ele determine os nomes e o número de colunas... mas não conheço R suficiente.
Eu ainda estava começando a aprender R então, o roteiro é quase inteiramente gerado em guizo (ambiente visual para datamining em R), por isso é tão complexo e personalizado para todas as ocasiões.
Isto...
deve ser mudado para...
E deve ficar tudo bem.
Em geral, é uma má abordagem, não se deve definir a importância dos inputs dessa forma. Por alguma razão, funcionou daquela vez, mas nunca mais me ajudou.
É melhor definir a importância dos prognosticadores da seguinte forma
Os resultados da avaliação da importância são os seguintes. Quanto mais alto o prognosticador na mesa, melhor. SomenteVVolum6, VDel1, VVolum9, VQST10 passaram no teste.
No guizo podemos construir 6 modelos ao mesmo tempo sobre estes 4 preditores, e SVM mostra uma precisão de cerca de 55% na validação e dados de teste. Nada mal.
O MLP acerta 95% das vezes... Acho que não estás a fazer a bicicleta certa) Sem ofensa.
Eu faço minha própria moto também, mas com base em décadas de MLP comprovado (que se diz ser obsoleto e precisa de algo mais fresco para trabalhar).
E tente também árvores de decisão de algibeiras, elas contam mais rápido e têm melhor desempenho do que mlp. A diplomacia também é mais rápida, mas não em algibe.
O principal é a relação velocidade/qualidade, para que serve esperar uma semana ou mesmo um dia ou até uma hora, para que nunca encontre a combinação ideal) O modelo leva alguns segundos para aprender, depois você pode usar a genética para a autosimulação de parâmetros ou preditores, depois é pura IA, senão é lixo)