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
如果你开始了一个月的事情--为你的电脑使用不间断电源,我曾经有2个星期的计算,灯都灭了))
而GPU版本的期望值并不高,在我看来,重写代码的时间更长,如果作者没有做,其他人不太可能将这项任务完成到最后。
好了,作者已经比照了一切,现在我只需要运行它。总之,我最大限度地运行了3天,得到了一个有9个输入的模型,说实话,这是我现在的一个记录。我真的不想优化它这么久。但正如他们所说。市场需要它。因此,寻找能力,如果有人有机会在优化器上优化数据集,甚至在20-30个核心上,我将非常感激。
Mihail Marchukajtes:
学习天数、周数。
显然你的算法不是最优的,在这样的小数据集上,你可以使用Knn这样的bruteforcing算法,它是准最优的,如果算法比Knn慢,可能是一个不好的ML算法或者配置不好。在这样的数据集上,整个训练周期和整个数据集的运行不应超过一秒钟。
我在上面解释过。100个分片,每个分片训练1000个epochs,等等。优化器的本质是计算数据集,以便对其适用性没有疑问。也就是说,他把这个文件上上下下形象地旋转,而你一直把它比作一个神经元的单一训练。IMHO。它本质上是一个人工智能系统,其中各种优化和预处理与神经元训练一起发生,并且训练本身运行数百次。如果有什么....
我在上面解释过。100个分片,每个分片训练1000个epochs,等等。你只是固定在一个神经元的单一训练上,而优化器的意义在于计算数据集,这样就不会有关于其拟合度的问题。也就是说,他把这个文件上上下下具象地旋转,而你一直把它比作单个神经元的单一训练。IMHO。它本质上是一个人工智能系统,其中各种优化和预处理与神经元训练一起发生,并且训练本身运行数百次。如果有什么....
MLP有95%的时间是在猜测......我不认为你在做正确的自行车)没有冒犯的意思。
你有一个错误。
表中最开始的一列是行号,这一列不能用于预测,但由于某种原因,只有jPrediction需要。
目标的分布是这样的:前一半的线条是0级,后一半的线条是1级。因此,神经元只是记住,如果行数小于228,它就是0类,否则就是1类。
你有一个错误。
表中最开始的一列是行号,你不能在预测中使用这一列,但由于某些原因,它只对jPrediction是强制性的。
目标的分布是这样的:前一半的线条是0级,后一半的线条是1级。因此,神经元只是记住,如果行号小于228,就是0类,否则就是1类。
哦,顺便说一句,是的。没有注意到这只是一个数字。
没有它 要保持的输入:4,50,53,59,61,64,92,98,101,104。
训练的平均误差(60.0%)=0.269(26.9%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2
验证的平均误差(20.0%)情节=0.864(86.4%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2
测试的平均误差(20.0%)情节=0.885(88.5%)nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2
显然是训练过度。因此,我需要以不同的方式对输入进行筛选。
也许按投入的重量进行筛选?就像你在这个主题的第一个帖子中对问题所做的那样...
我正试图重写你所附的R脚本,以便它能确定列的名称和数量...但我不知道足够的R。
我正在尝试重写你所附的R脚本,以便它能确定列的名称和数量...但我不知道足够的R。
当时我还在开始学习R,这个脚本几乎完全是在rattle(R中数据挖掘的可视化环境)中生成的,这就是为什么它如此复杂,并为各种场合定制。
这...
应改为...
而且应该是可以的。
总的来说,这是一个糟糕的方法,你不应该以这种方式定义输入的重要性。由于某些原因,那次很有效,但它再也没有帮助我。
最好将预测因素的重要性定义如下
重要性评估的结果如下。表中的预测指标越高越好。只有VVolum6、 VDel1、 VVolum9、 VQST10 通过测试。
在rattle中,我们可以在这4个预测因子上一次建立6个模型,SVM在验证和测试数据上显示出约55%的准确率。不错。
MLP95%的时间都是正确的......。我不认为你的自行车是正确的)没有冒犯的意思。
我也做自己的自行车,但基于几十年来成熟的MLP(据说已经过时了,需要更酷的东西来工作)。
也可以试试alglib决策树,它们的计数速度和性能都比mlp好。Diplerning也更快,但不是在alglib中。
最主要的是速度/质量比,等待一个星期甚至一天甚至一个小时有什么意义呢,所以你永远不会找到最佳组合)模型需要几秒钟来学习,然后你可以用遗传学来进行参数或预测器的自动模拟,那么它就是纯人工智能,否则就是垃圾)