# создаем синус make.sin <- function(){ t <- seq(0,50,0.1) s <- sin(t) return(s) } S <- make.sin()
noise <- rnorm(length(S)) S <- (S+noise)+1000
# х енкель для создания скользящего окна hankel <- function(data, r=5) { do.call(cbind, lapply(0:(r-1),function(i) { data[(i+1):(length(data)-(r-1-i))]}))} S <- hankel(S)
# делаем зиг и целевую с него library(TTR) make.zz <- function(ch=0.2){ zz <- ZigZag(S[,ncol(S)], change = ch, percent = T, retrace = F, lastExtreme = T) n <- 1:length(zz); for(i in n) { if(is.na(zz[i])) zz[i] = zz[i-1]} dz<-c(NA,diff(zz)) sig<-ifelse(dz>0, 1, ifelse(dz<0, 0, NA)) return(list(label=sig , zz=zz)) } Y <- make.zz()
layout(1:2) # рисуем для наглядности синусоиду , # зигзаг на ней и внизу бинарный сигнал бай/сел plot(S[,ncol(S)],t="l") lines(Y$zz,col=4,lwd=2) plot(Y$label ,t="l")
# подготовка данных dat <- na.omit( cbind.data.frame(var=S, label=Y$label) )
label <- as.factor(dat$label) dat <- dat[,-ncol(dat)]
# тренировки модели tr <- 1:400 ts <- 401:nrow(S)
library(randomForest) # тренируем модель как есть те целевая # не заглядывает в будущее на один шаг
まっすぐに話すこと、日曜日だから急がないこと、何事にも真実があること。先生の方法はヤブ医者ではなく、基礎的な土台がある良い方法だと思います。
何を隠そう、私は「私の」方法について何も言っていないのです。
何か笑っているようなので、一緒に教えてください。
ありがとうございます、もう笑っちゃいました。
ありがとうございます、もう笑っちゃいました。
計算結果を見るのが望ましいと思います
しかし、個々の機能の実装の細かいニュアンスに問題がある場合もありますので、ご自分のツールを確認されることをお勧めします。例えば、"categorical view "のZZ の表示は1本分右にずれていますが、私の場合、ZZ knee が終わり、ZZ derivative indicator の符号が変わるところでは、ずれていません。チェックは簡単で、学習曲線が高いところでは、より正しい、主なものは、兆候がのぞき見せずにする必要があり、ターゲットがのぞき見することを義務付けられている、それが彼らの本質である。しかし、実は、特にZZ(その傾き)は、将来を見据えたトレンドと、現時点での理想的なポジションの方向 性を示しているため、すぐにターゲットとなるのです。
よし、半日休みだ...。
Rでは3分でできますから、もしSanychがそんなに実験がしたいのなら、その3分を費やせばよかったのです。
その「3分間」で何をすべきなのか、あなたは理解できていますか?理解できたら、最初にスピードアップや編集をせずに、3分間で行う様子をカムタジアビデオに記録してください。
その「3分間」で何をすべきなのか、あなたは理解できていますか?理解できたら、最初にスピードアップや編集をせずに、3分間で行う様子をカムタジアビデオに記録してください。
ここで...
ただし、純粋な正弦波は予測可能なので、正弦波にノイズを加えたが、いずれの場合もモデルはエラーなく予測した
make.sin <- function(){
t <- seq(0,50,0.1)
s <- sin(t)
return(s)
}
S <- make.sin()
noise <- rnorm(length(S))
S <- (S+noise)+1000
# х енкель для создания скользящего окна
hankel <- function(data, r=5) {
do.call(cbind,
lapply(0:(r-1),function(i) { data[(i+1):(length(data)-(r-1-i))]}))}
S <- hankel(S)
# делаем зиг и целевую с него
library(TTR)
make.zz <- function(ch=0.2){
zz <- ZigZag(S[,ncol(S)], change = ch, percent = T, retrace = F, lastExtreme = T)
n <- 1:length(zz);
for(i in n) { if(is.na(zz[i])) zz[i] = zz[i-1]}
dz<-c(NA,diff(zz))
sig<-ifelse(dz>0, 1, ifelse(dz<0, 0, NA))
return(list(label=sig , zz=zz))
}
Y <- make.zz()
layout(1:2)
# рисуем для наглядности синусоиду ,
# зигзаг на ней и внизу бинарный сигнал бай/сел
plot(S[,ncol(S)],t="l")
lines(Y$zz,col=4,lwd=2)
plot(Y$label ,t="l")
# подготовка данных
dat <- na.omit( cbind.data.frame(var=S, label=Y$label) )
label <- as.factor(dat$label)
dat <- dat[,-ncol(dat)]
# тренировки модели
tr <- 1:400
ts <- 401:nrow(S)
library(randomForest)
# тренируем модель как есть те целевая
# не заглядывает в будущее на один шаг
rf1 <- randomForest(label[tr]~., dat[tr,])
pr1 <- predict(rf1, dat[ts,])
# теперь тренируем вторую модель которая
# уже пробует предсказать следующее значение
label2 <- label[-1]
dat2 <- dat[-nrow(dat),]
rf2 <- randomForest(label2[tr]~., dat2[tr,])
pr2 <- predict(rf2, dat2[ts,])
# проверяем результаты
library(caret)
#ошибка без попытки предсказать
confusionMatrix(pr1,label[ts])
#ошибка с предсказанием на шаг
confusionMatrix(pr2,label2[ts])
アベレージ ノー 予測
精度:0.7895
よそくあり
精度:0.6702
P.S. 私が少し読み違えたのは、予測値の中でMomentumの代わりに、5つの値の後にサイン波そのものがあることです。ノイズを重畳した5値
mytarmailS:
アベレージ ノー 予測
精度:0.7895
よそくあり
精度:0.6702
それで...
森での加速度は、ZZは特定の瞬間に未来を予測するため、シフトする必要がなく、証明するために必要だったZZシフトなしで10%高くなっています。
ほらね...。
ZZは特定の瞬間に未来を予測するため、ずらす必要はなく、証明に必要だったZZをずらすことなく、森のスコアは10%アップするのです。
何の証明にもならない。
ルールは簡単で、学習用のデータを準備する際、シグナルをどのように生成したかに関わらず、ターゲットを左(「未来」)に1本ずつシフトさ せることです。その理由に心当たりはありますか?
ご存じない方は、詳しく説明します。
グッドラック