النتائج 1 إلى 13 من 13
  1. #1
    الصورة الرمزية 2013Lemsantah
    2013Lemsantah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي الشبكة عصبیة عمیقة مع RBM مكدسة. التدریب الذاتي ، ضبط النفس

    ھذا الموضوع ھو تطبيق للشبكة العصبية العميقة واختيار التنبؤ. سوف نقوم بتغطية ميزات الشبكة العصبية
    كما سيتم الكشف عن إمكانية استخدام نموذج ماركوف المخفي لتحسين أداء الشبكة العصبية. في ."darch "وتطبيقھا في حزمة ، RBM Stacked
    .الختام ، سوف نقوم برمجيا بتنفيذ مستشار خبير تنفيذي


    محتويات
    -1. ھيكل DBN
    -2.إعداد واختيار البيانات
    -1.2. متغيرات المدخلات
    -2.2. متغبرات الانتاج
    -3.2. إطار البيانات الأولية
    -1.3.2. حذف المتغيرات المرتبطة بشكل كبير
    -4.2.اختيار أھم المتغيرات
    -3.الجزء التجريبي
    - 1.3.بناء النماذج
    -1.1.3. وصف موجز لحزمة " darch"
    -2.1.3. بناء نموذج DBN. المعلمات.
    -2.3. تشكيل التدريب واختبار العينات
    -1.2.3.موازنة الطبقات والمعالجة المسبقة
    -2.2.3.ترميز المتغير الھدف
    -3.3.تدريب النموذج
    -1.3.3. قبل التدريب
    -2.3.3. الكون المثالى
    -4.3. نموذج اختبار .œetrics.
    -1.4.3. فك التنبؤات.
    -2.4.3.تحسين نتائج التنبؤ
    -معايرة
    -تنعيم مع طراز سلسلة ماركوف
    -تصحيح الإشارات المتوقعة على منحنى الرصيد النظري
    -3.4.3. المقاييس
    -4. ھيكل المستشار الخبير
    -1.4. وصف عملية المستشار الخبير
    -2.4. التحكم الذاتي. تدريب ذاتي
    -التثبيت والإطلاق
    -طرق وأساليب تحسين المؤشرات النوعية
    -استنتاج


    المقدمة
    عند إعداد البیانات لإجراء التجارب ،سوف نشكل العینة الأولیة وننظفھا ونختار.المتغیرات المھمة .
    سننظر في طرق تقسیم العینة الأولیة إلى عینات التدریب والاختبار والتحقق من الصحة .
    باستخدام حزمة "
    darch "سنبني ً نموذجا لشبكة DBN, ونقوم بتدریبه على مجموعات البیانات الخاصة بنا. بعد اختبار النموذج ، سنحصل على المقاییس التي ستمكننا من تقییم جودة النموذج. سننظر في العدید من الفرص التي تقدمھا الحزمة لتكوین إعدادات الشبكة العصبیة،وسنرى ً أیضا كیف یمكن لنماذج ماركوف المخفیة أن تساعدنا في تحسین توقعات الشبكة العصبیة .
    سنقوم بتطویر مستشار خبیر حیث سیتم تدریب نموذج بشكل دوري على الطایر دون انقطاع في التجارة ، بناء على نتائج المراقبة المستمرة.
    سیتم استخدام نموذج
    DBN من حزمة darch في المستشار الخبیر .
    وسنقوم ً أیضا بتضمین المستشار الخبیر الذي تم إنشاؤه باستخدام
    DBN SAE .
    وعلاوة على ذلك ، سنشیر إلى طرق وأسالیب لتحسین المؤشرات النوعیة للنموذج .


    -1. ھیكل شبكة عصبیة عمیقة تم اعدادھا بواسطة RBM مكدسة SRBM_DN

    وأذكر أن SRBM_DN یتكون من عدد n من RBM یساوي عدد الطبقات المخفیة للشبكة العصبیة ، وبالأساس ، الشبكة العصبیة نفسھا. التدریب یتكون من مرحلتین .

    تتضمن المرحلة الأولى التدریب المسبق. یتم تدریب كل إدارة قائمة على النتائج بشكل منھجي دون مشرف على مجموعة المدخلات (بدون ھدف). بعد.ھذا الوزن من الطبقات المخفیة ، یتم نقل الإدارة المستندة إلى النتائج إلى الطبقات الخفیة ذات الصلة من الشبكة العصبیة
    المرحلة الثانیة تتضمن
    TUNING-FINE حیث یتم تدریب الشبكة العصبیة مع مشرف .

    حزمة "
    darch" تساعدنا على تنفیذ فرص أوسع في بناء النموذج وضبطه. سیتم توفیر المزید من التفاصیل عند إنشاء النموذج. یوضح الشكل 1 البنیة وعملیة تدریب DN_SRBM
    اضغط على الصورة لعرض أكبر

الاســـم:	ل. 1 الشكل DN SRBM.PNG
المشاهدات:	31
الحجـــم:	38.9 كيلوبايت
الرقم:	493037
    2. إعداد واختیار البیانات

    1.2.متغیرات المدخلات (علامات ، متنبئات)

    سوف نستخدم 11مؤشرا جمیع مؤشرات التذبذب : ADX ، aroon ، ATR ، CCI ، chaikinVolatility ، CMO ، MACD ، RSI ، stoch ، SMI
    تم اختیار العدید من المتغیرات من بعض المؤشرات. بھذه الطریقة قمنا بتشكیل مجموعة المدخلات من 17 متغیرا. لنأخذ أسعار من آخر 6000 شریط على الیورو مقابل الدولار الأمیركي
    М30 ونحسب قیم المؤشرات باستخدام الدالة .() In

    كود PHP:
    #---2---------------------------------------------
    In <- function(16){
      require(
    TTR)
      require(
    dplyr)
      require(
    magrittr)
      
    adx <- ADX(pricep) %>% as.data.frame %>% 
        
    mutate(.,oscDX DIp DIn) %>% 
        
    transmute(.,DXADXoscDX) %>% 
        as.
    matrix()
      
    ar <- aroon(price[ ,c('High''Low')], p) %>% 
        
    extract(,3)
      
    atr <- ATR(pricepmaType "EMA") %>%
        
    extract(,1:2)
      
    cci <- CCI(price[ ,2:4], p)
      
    chv <- chaikinVolatility(price[ ,2:4], p)
      
    cmo <- CMO(price[ ,'Med'], p)
      
    macd <- MACD(price[ ,'Med'], 12269) %>% 
        as.
    data.frame() %>% 
        
    mutate(., vsig signal %>% 
                 
    diff %>% c(NA,.) %>% multiply_by(10)) %>% 
        
    transmute(., sign signalvsig) %>% 
        as.
    matrix()
      
    rsi <- RSI(price[ ,'Med'], p)
      
    stoh <- stoch(price[ ,2:4], nFastK p
                    
    nFastD =3nSlowD 3
                    
    maType "EMA") %>%
                                    as.
    data.frame() %>% 
                                    
    mutate(., oscK fastK fastD) %>%
                                    
    transmute(.,slowDoscK) %>% 
                                    as.
    matrix()
      
    smi <- SMI(price[ ,2:4],pnFast 2
                 
    nSlow 25nSig 9)
      
    kst <- KST(price[ ,4])%>% as.data.frame() %>% 
                                    
    mutate(., oscKST kst signal) %>%
                                    
    select(.,oscKST) %>% as.matrix()
      
    In <- cbind(adxaratrccichvcmomacd
                  
    rsistohsmikst)
      return(
    In)

    .سوف نحصل على مصفوفة بیانات الإدخال على المخرجات

    2.2. بیانات الإخراج (متغیر الھدف)

    كمتغیر ھدف نحصل على إشارات تم الحصول علیھا باستخدام ZZ وظیفة حساب zigzagوالإشارة :
    كود PHP:
    #----3------------------------------------------------
    ZZ <- function(pr pricech ch mode="m") {
      require(
    TTR)
      require(
    magrittr)
      if (
    ch 1ch <- ch/(10 ^ (Dig 1))
      if (
    mode == "m") {pr <- pr[ ,'Med']}
      if (
    mode == "hl") {pr <- pr[ ,c("High""Low")]}
      if (
    mode == "cl") {pr <- pr[ ,c("Close")]}
      
    zz <- ZigZag(prchange chpercent F
                   
    retrace FlastExtreme T)
      
    <- 1:length(zz)
      
    dz <- zz %>% diff %>% c(., NA)
      
    sig <- sign(dz)
      for (
    i in n) { if (is.na(zz[i])) zz[i] = zz[1]}
      return(
    cbind(zzsig))



    معلمات الوظیفة:
    pr = السعر - مصفوفة من أسعار OHLCMed.
    ch = الحد الأدنى لطول الانحناء zigzagفي النقاط (4 علامات) أو بالقیمة الحقیقیة على سبیل المثال 0035.0 = ch .
    ترجع الدالة المصفوفة مع متغیرین - في الواقع ، zigzagوالإشارة التي تم الحصول علیھا على قاعدة زاویة متعرجة في نطاق [-1 . 1] نحول الإشارة من شریط واحد إلى الیسار (نحو المستقبل). سیتم استخدام ھذه الإشارة المحددة لتدریب الشبكة العصبیة.
    نحن نحسب الإشارات لـ ZZ بطول انحناء لا یقل عن 37 نقطة (4 علامات).

    كود PHP:
    out <- ZZ(ch 37mode "m")
    Loading required packageTTR
    Loading required package
    magrittr
    table(out[ ,2])

      -
    1    1 
    2828 3162 


    كما نرى ، الطبقات غیر متوازنة قلیلاً. عند تشكیل نماذج لتدریب النموذج ، سنتخذ التدابیر اللازمة لتھدئتھا

    2.3.إطار البیانات الأولیة
    لنكتب دالة ستنشئ إطار البیانات الأولي ، وتنظفھا من البیانات غیر المؤكدة (NA) وتحول المتغیر المستھدف إلى العامل مع فئتین "-1 "و "+1 ."تجمع ھذه الوظیفة بین الوظائف المكتوبة مسبقا في .() ZZ , و سنقوم على الفور بقص آخر 500 شریط سیتم استخدامھا لتقییم جودة توقعات النموذج
    كود PHP:
    #-----4---------------------------------
    form.data <- function(1637len 500){
      require(
    magrittr)
      
    <- In(n)
      
    out <- ZZ(ch zmode "m")
      
    data <- cbind(xout[ ,2]) %>% 
        as.
    data.frame %>% head(., (nrow(x)-len))%>%
            
    na.omit
      data$y 
    <- as.factor(data$y)
      return(
    data)

    1.3.2. حذف المتغیرات المرتبطة بشكل كبیر

    سنقوم بحذف المتغیرات مع معامل ارتباط أعلى من 9.0 من مجموعتنا الأولیة. سنقوم بكتابة دالة ستشكل إطار البیانات الأولي ، وإزالة المتغیرات .المرتبطة للغایة وإرجاع البیانات النظیفة
    .یمكننا التحقق مسبقا من المتغیرات التي لھا علاقة فوق 9.0
    كود PHP:
    data <- form.data(1637# prepare data frame
    descCor <- cor(data[ ,-ncol(data)])# remove a target variable
    summary(descCor[upper.tri(descCor)])
       
    Min1st Qu.  Median    Mean 3rd Qu.    Max
    -
    0.1887  0.0532  0.2077  0.3040  0.5716  0.9588 
    highCor <- caret::findCorrelation(descCorcutoff 0.9)
    highCor
    [112  9 15
    colnames(data[ ,highCor])
    [
    1"rsi" "cmo" "SMI" 
    وبالتالي ، فإن المتغیرات المذكورة أعلاه قابلة للإزالة. سنقوم بحذفھا من إطار البیانات
    كود PHP:
    data.<- data[ ,-highCor]
    colnames(data.f)
     [
    1"DX"     "ADX"    "oscDX"  "ar"     "tr"    
     
    [6"atr"    "cci"    "chv"    "sign"   "vsig"  
    [11"slowD"  "oscK"   "signal" "vol"    "Class" 
    سنكتبھا بشكل مضغوط في وظیفة واحدة

    كود PHP:
    #---5-----------------------------------------------
    cleaning <- function(1637cut 0.9){
      
    data <- form.data(nz)
      
    descCor <- cor(data[ ,-ncol(data)])
      
    highCor <- caret::findCorrelation(descCorcutoff cut)
      
    data.<- data[ ,-highCor]
      return(
    data.f)
    }
    data.<- cleaning() 
    لا یتفق جمیع مؤلفي الحزم والباحثین على ضرورة إزالة البیانات المترابطة بشكل كبیر من المجموعات. ومع ذلك ، ینبغي مقارنة النتائج باستخدام كلا.الخیارین ھنا. في حالتنا ، سنحدد الخیار مع الحذف

    .4.2. اختیار أھم المتغیرات
    وسیتم اختیار المتغیرات الھامة على أساس ثلاثة مؤشرات: الأھمیة العالمیة ، والأھمیة المحلیة (بالتزامن) والأھمیة الجزئیة حسب الفئة. سیتم جمع جمیع الإجراءات السابقة واللاحقة في وظیفة واحدة من أجل الاكتناز. بمجرد التنفیذ ، سنحصل على ثلاث مجموعات كنتیجة :
    - مع أفضل المتغیرات في المساھمة والتفاعل
    - مع أفضل المتغیرات للفئة "-1 "
    - مع أفضل المتغیرات للفئة "+1"


    كود PHP:
    #-----6------------------------------------------------
    prepareBest <- function(nzcutmethod){
      require(
    randomUniformForest
      require(
    magrittr)
      
    data.<<- cleaning(nzcut cut)
      
    idx <- rminer::holdout(data.f$Class)
      
    prep <- caret::preProcess(data.f[idx$tr, -ncol(data.f)], method method)
      
    x.train <- predict(prepdata.f[idx$tr, -ncol(data.f)])
      
    x.test <- predict(prepdata.f[idx$ts, -ncol(data.f)])
      
    y.train <- data.f[idx$trncol(data.f)]
      
    y.test <- data.f[idx$tsncol(data.f)]
    #---------
      
    ruf <- randomUniformForestx.trainy.train,
                                  
    xtest x.testytest y.test,
                                  
    mtry 1ntree 300,
                                  
    threads 2nodesize 1
                           
    )
      
    imp.ruf <- importance(rufXtest x.test)
      
    best <- imp.ruf$localVariableImportance$classVariableImportance %>% 
                      
    head(., 10) %>% rownames()
    #-----partImport
      
    best.sell <- partialImportance(x.test
                                    
    imp.ruf
                                    
    whichClass "-1",
                                    
    nLocalFeatures 7) %>% 
                                    
    row.names() %>% 
                                    as.
    numeric() %>% 
                                    
    colnames(x.test)[.]
      
    best.buy <- partialImportance(x.test,
                                       
    imp.ruf,
                                       
    whichClass "1",
                                    
    nLocalFeatures 7) %>% 
                                    
    row.names() %>% 
                                    as.
    numeric() %>% 
                                    
    colnames(x.test)[.]
      
    dt <- list(best bestbuy best.buysell best.sell)
      return(
    dt)

    سنوضح ترتیب الحسابات الوظیفیة. المعلمات الرسمیة:
    n - معلمة معطیات الدخل .
    z - معلمة معطیات المخرجات .
    cut - الترابط بین المتغیرات .
    method - طریقة المعالجة المسبقة للبیانات .
    - ترتیب الحسابات :
    - إنشاء المجموعة الأولیة من data التي تمت إزالة المتغیرات المرتبطة بھا ، وحفظھا لمزید من الاستخدام.
    - تحدید مؤشرات تدریب واختبار عینات من idx .
    - تحدید معلمات ما قبل المعالجة من الإعدادیة .
    - تقسیم العینة الأولیة إلى عینات تدریب واختبار ، مع إدخال بیانات المدخلات .
    - الحصول على نموذج روف واختباره على المجموعات التي تم الحصول علیھا .
    - حساب أھمیة متغیرات ruf.imp .
    - اختیار أفضل 10 من أھم المتغیرات من حیث المساھمة والتفاعل .
    - حدد 7 أھم المتغیرات لكل فئة "-1 "و "+1" sell.best ، buy.best
    - نشاء قائمة مع أفضل ثلاث مجموعات من التنبؤات - .sell.best ، buy.best .


    سنقوم بحساب ھذه العینات وتقییم القیم ذات الأھمیة العالمیة والمحلیة والجزئیة للمتغیرات المحددة


    كود PHP:
    dt <- prepareBest(16370.9c("center""scale","spatialSign"))
    Loading required packagerandomUniformForest
    Labels 
    -1 1 have been converted to 1 2 for ease of computation and will be used internally 
           
    as a replacement.

    - Global Variable Importance (14 most important based on information gain) :
    Notemost predictive features are ordered by 'score' and plottedMost discriminant ones
    should also be taken into account by looking 
    'class' and 'class.frequency'.

       
    variables score class class.frequency percent
    1        cci  4406    
    -1            0.51  100.00
    2     signal  4344    
    -1            0.51   98.59
    3        ADX  4337    
    -1            0.51   98.43
    4       sign  4327    
    -1            0.51   98.21
    5      slowD  4326    
    -1            0.51   98.18
    6        chv  4296    
    -1            0.52   97.51
    7       oscK  4294    
    -1            0.52   97.46
    8        vol  4282    
    -1            0.51   97.19
    9         ar  4271    
    -1            0.52   96.95
    10       atr  4237    
    -1            0.51   96.16
    11     oscDX  4200    
    -1            0.52   95.34
    12        DX  4174    
    -1            0.51   94.73
    13      vsig  4170    
    -1            0.52   94.65
    14        tr  4075    
    -1            0.50   92.49
       percent
    .importance
    1                   7
    2                   7
    3                   7
    4                   7
    5                   7
    6                   7
    7                   7
    8                   7
    9                   7
    10                  7
    11                  7
    12                  7
    13                  7
    14                  7


    Local Variable importance
    Variables interactions 
    (10 most important variables at first (columns) and second (rowsorder) :
    For 
    each variable (at each order), its interaction with others is computed.

                    
    cci  slowD    atr     tr     DX
    atr          0.1804 0.1546 0.1523 0.1147 0.1127
    cci          0.1779 0.1521 0.1498 0.1122 0.1102
    slowD        0.1633 0.1375 0.1352 0.0976 0.0956
    DX           0.1578 0.1319 0.1297 0.0921 0.0901
    vsig         0.1467 0.1209 0.1186 0.0810 0.0790
    oscDX        0.1452 0.1194 0.1171 0.0795 0.0775
    tr           0.1427 0.1168 0.1146 0.0770 0.0750
    oscK         0.1381 0.1123 0.1101 0.0725 0.0705
    sign         0.1361 0.1103 0.1081 0.0704 0.0685
    signal       0.1326 0.1068 0.1045 0.0669 0.0650
    avg1rstOrder 0.1452 0.1194 0.1171 0.0795 0.0775
                   vsig  oscDX   oscK signal     ar
    atr          0.1111 0.1040 0.1015 0.0951 0.0897
    cci          0.1085 0.1015 0.0990 0.0925 0.0872
    slowD        0.0940 0.0869 0.0844 0.0780 0.0726
    DX           0.0884 0.0814 0.0789 0.0724 0.0671
    vsig         0.0774 0.0703 0.0678 0.0614 0.0560
    oscDX        0.0759 0.0688 0.0663 0.0599 0.0545
    tr           0.0733 0.0663 0.0638 0.0573 0.0520
    oscK         0.0688 0.0618 0.0593 0.0528 0.0475
    sign         0.0668 0.0598 0.0573 0.0508 0.0455
    signal       0.0633 0.0563 0.0537 0.0473 0.0419
    avg1rstOrder 0.0759 0.0688 0.0663 0.0599 0.0545
                    chv    vol   sign    ADX avg2ndOrder
    atr          0.0850 0.0850 0.0847 0.0802      0.1108
    cci          0.0824 0.0824 0.0822 0.0777      0.1083
    slowD        0.0679 0.0679 0.0676 0.0631      0.0937
    DX           0.0623 0.0623 0.0620 0.0576      0.0881
    vsig         0.0513 0.0513 0.0510 0.0465      0.0771
    oscDX        0.0497 0.0497 0.0495 0.0450      0.0756
    tr           0.0472 0.0472 0.0470 0.0425      0.0731
    oscK         0.0427 0.0427 0.0424 0.0379      0.0685
    sign         0.0407 0.0407 0.0404 0.0359      0.0665
    signal       0.0372 0.0372 0.0369 0.0324      0.0630
    avg1rstOrder 0.0497 0.0497 0.0495 0.0450      0.0000


    Variable Importance based on interactions 
    (10 most important) :
       
    cci    atr  slowD     DX     tr   vsig  oscDX 
    0.1384 0.1284 0.1182 0.0796 0.0735 0.0727 0.0677 
      oscK signal   sign 
    0.0599 0.0509 0.0464 

    Variable importance over labels 
    (10 most important variables conditionally to each label) :
           Class -
    Class 1
    cci        0.17    0.23
    slowD      0.20    0.09
    atr        0.14    0.15
    tr         0.04    0.12
    oscK       0.08    0.03
    vsig       0.06    0.08
    oscDX      0.04    0.08
    DX         0.07    0.08
    signal     0.05    0.04
    ar         0.04    0.02 

    النتائج
    1. من حیث الأھمیة العالمیة جمیع المتغیرات المدخلات 14 متساویة .
    2. یتم تعریف أفضل 10 من خلال المساھمة الشاملة (أھمیة عالمیة) والتفاعل (أھمیة محلیة) .
    3. .یتم عرض سبعة أفضل المتغیرات ذات الأھمیة الجزئیة لكل فئة في المخططات أدناه

    اضغط على الصورة لعرض أكبر

الاســـم:	الشكل 2 ..PNG
المشاهدات:	37
الحجـــم:	49.7 كيلوبايت
الرقم:	493046

    اضغط على الصورة لعرض أكبر

الاســـم:	الشكل3.PNG
المشاهدات:	25
الحجـــم:	49.8 كيلوبايت
الرقم:	493047
    كما نرى ، فإن المتغیرات الأكثر أھمیة للفئات المختلفة تختلف في الھیكل والترتیب. وھكذا ، إذا كان المتغیر البطيء بالنسبة للفئة "-1 "ھو الأكثر أھمیة ،.فإن الفئة "+1 "تكون في المرتبة الرابعة فقط.لذلك ، لدینا مجموعات من البیانات جاھزة. الآن یمكننا المضي قدما في التجارب

    - الجزء التجریبي

    ستجرى التجارب باللغة - R -

    (3.2.3 R (Open R Microsoft

    -1.3. بناء النماذج .

    1.1.3 .وصف موجز لحزمة " darch"

    النسخة "دارك". تقدم حزمة 0.10.0 مجموعة واسعة من الوظائف التي لا تسمح فقط بإنشاء النموذج وتدریبه ، ولكن ، حرفیًا ، قم ببناءه بالطوب وضبطه وفقا لتفضیلاتك. كما ھو موضح سابقا ، تتكون الشبكة العصبیة العمیقة من عدد n من (n = طبقات -1)RBM وMLP الشبكة العصبیة مع عدد من الطبقات. یتم تنفیذ التدریب المسبق للعملیة علی النتائج علی بیانات غیر منسقة من دون مشرف. یتم إجراء ضبط دقیق للشبكة العصبیة مع مشرفعلى البیانات المنسقة. إن تقسیم مراحل التدریب یمنحنا الفرصة لاستخدام البیانات المختلفة في الحجم (ولكن لیس البنیة!) أو للحصول على العدید منالنماذج الدقیقة المتنوعة على أساس التدریب المسبق فقط. علاوة على ذلك ، إذا كانت البیانات الخاصة بالتدریب المسبق والضبط الدقیق متشابھة ، فمنالممكن تدریبھا دفعة واحدة ، بدلاً من الانقسام على مرحلتین. أو یمكنك تخطي التدریب المسبق واستخدام الشبكة العصبیة متعددة الطبقات فقط ، أو ، من ناحیة أخرى ، استخدام RBM فقط بدون الشبكة العصبیة. في نفس الوقت لدینا الوصول إلى جمیع المعاییر الداخلیة. الحزمة مخصصة للمستخدمین المتقدمین. علاوة على ذلك ، سوف نقوم بتحلیل العملیات المقسمة: التدریب المسبق والضبط الدقیق .

    -2.1.3.بناء نموذج DBN. المعلمات .

    سنصف عملیة بناء وتدریب واختبار نموذج DBN

    -1. نقوم بإنشاء كائن العمق العمیق المسمى 'Darch' باستخدام ُ المنشئ مع المعلمات الضرورية

    (newDArch(layers, batchSize, ff=FALSE, logLevel=INFO, genWeightFunc=generateWeights

    أین:

    - layers :تشیر إلى عدد الطبقات والخلایا العصبیة في كل طبقة. على سبیل المثال: طبقات= (2،10،10،5) c - طبقة مدخلات بھا 5 عصبونات (مرئیة) ، طبقتان مخفیتان مع عشرة عصبون لكل طبقة، وطبقة خرج واحدة مع مخرجات 2 .
    - BatchSize : حجم العینة الصغیرة أثناء التدریب .
    - ff : تشیر إلى ما إذا كان ینبغي استخدام صیغة ff للأوزان والانحرافات والخروج. یتم تطبیق تنسیق ff لحفظ كمیات كبیرة من البیانات مع الضغط .
    - LogLevel : .مستوى التسجیل والإخراج عند تنفیذ ھذه الوظیفة .
    - GenWeightFunction :وظیفة لتولید مصفوفة الأوزان RBM ھناك فرصة لاستخدام وظیفة التنشیط للمستخدم .

    یحتوي كائن darch الذي تم إنشاؤه على( طبقات- 1) RBM مجتمعة في شبكة التراكم التي سیتم استخدامھا لتدریب الشبكة العصبیة. اثنین من السمات fineTuneFunction و executeFunction ,تحتوي على وظائف لضبط دقیق backpropagation افتراضیا والتنفیذ runDarch افتراضیا . یتم تنفیذ تدریب الشبكة العصبیة مع اثنین من وظائف التدریب .() fineTuneDArch و () preTrainDArch : تقوم الوظیفة الأولى بتدریب شبكة الإدارة القائمة على النتائج دون مشرف باستخدام طریقة التباعد التبادلي. تستخدم الدالة الثانیة دالة المشار إلیھا في سمة fineTuneFunction لإجراء ضبط دقیق للشبكة العصبیة. بعد أداء الشبكة العصبیة ، یمكن العثور على مخرجات كل طبقة في سمة executeOutputs أو طبقة خرج فقط في سمة executeOutput

    -2. وظیفة ما قبل التدريب الكائن darch
    ,(preTrainDArch(darch, dataSet, numEpoch = 1, numCD = 1, ..., trainOutputLayer = F

    أین :

    - "Darch "
    : مثیل لفئة darch
    - dataSet
    : مجموعة البیانات للتدریب
    - numEpoch
    : عدد مرات التدریب
    - numCD
    : عدد مرات تكرار أخذ العینات. عادة ، واحد یكفي
    - ...
    : معلمات إضافیة یمكن نقلھا إلى وظیفة trainRBM
    - trainOutputLayer
    : القیمة المنطقیة التي توضح ما إذا كان یجب تدریب طبقة الخرج للإدارة القائمة على النتائج
    تؤدي الوظیفة وظیفة تدریب trainRBM() لكل RBM عن طریق النسخ بعد أوزان التدریب والتحیزات إلى طبقات الشبكة العصبیة ذات الصلة من الكائن darch


    -3.
    وظیفةضبط دقيق للكائن darch
    fineTuneDArch(darch, dataSet, dataSetValid = NULL, numEpochs = 1, bootstrap = T
    isBin = FALSE, isClass = TRUE, stopErr = -Inf, stopClassErr = 101,
    ( ...,stopValidErr = -Inf, stopValidClassErr = 101, أین : - Darch : عينة من فئة "Darch " ؛
    -
    dataSet : مجموعة من البیانات للتدریب (یمكن استخدامھا للتحقق من الصحة) والاختبار
    -
    dataSetValid : مجموعة من البیانات المستخدمة للتحقق من الصحة
    -
    numxEpoch :عدد مرات التدریب
    -
    bootstrap : منطقي ، ھل ھو ضروري لتطبیقbootstrapعند إنشاء بیانات التحقق من الصحة
    -
    isBin : یشیر إلى ما إذا كان یجب تفسیر بیانات المخرجات على أنھا قیم منطقیة. بشكل افتراضي FALSE إذا كانت TRUE فسیتم تفسیركل قیمة أعلى من 0.5 على أنھا 1 ، وأقل - مثل 0
    -
    isClass : یشیر إلى ما إذا كانت الشبكة مدربة للتصنیف. إذا كانت TRUE فسیتم تحدید إحصائیات التصنیف TRUE افتراضیًا
    -
    stopErr : . -معیار إیقاف تدریب الشبكة العصبیة بسبب خطأ حدث أثناء التدریب Inf بشكل افتراضي
    -
    stopClassErr : معیار إیقاف تدریب الشبكة العصبیة بسبب خطأ التصنیف حدث أثناء التدریب. 101 افتراضی
    -stopValidErr : معیار إیقاف الشبكة العصبیة بسبب خطأ في بیانات التحقق من الصحة Inf بشكل افتراضي
    - stopValidClassErr : معیار لوقف الشبكة العصبیة بسبب خطأ التصنیف أثناء التحقق من الصحة. 101 افتراضی
    -... : معلمات إضافیة یمكن تمریرھا إلى وظیفة التدریب

    تقوم الدالة بتدريب الشبكة باستخدام دالة تم حفظها في سمة fineTuneFunction لكائن darch. يمكن نقل بيانات المدخلات (trainData ، validData ، testData) والفئات التي تنتمي إليها (targetData ، validTargets ، testTargets) مثل dataSet أو ff-matrix. البيانات والفئات للتدقيق والاختبار ليست إلزامية. إذا تم توفيرها ، فسيتم تنفيذ الشبكة العصبية مع هذه المجموعات من البيانات ، وسيتم حساب الإحصائيات. تشير السمة isBin إلى ما إذا كان يجب تفسير بيانات المخرجات على أنها ثنائية. إذا كان isBin = TRUE ، يتم تفسير كل قيمة خرج أعلى من 0.5 على أنها 1 ، وإلا - مثل 0. أيضًا ، يمكننا ضبط معيار التوقف للتدريب على أساس الخطأ (stopErr ، stopValidErr) أو التصنيف الصحيح (stopClassErr ، stopValidClassErr) على التدريب أو مجموعات التحقق.

    جميع معلمات الدوال لها قيم افتراضية. ومع ذلك ، تتوفر أيضًا قيم أخرى. لذلك ، على سبيل المثال:
    وظيفة من الخلايا العصبية تفعيل - sigmoidUnitDerivative، linearUnitDerivative، softmaxUnitDerivative، tanSigmoidUnitDerivative متاحة. يتم استخدام sigmoidUnitDerivative بشكل افتراضي.

    إن وظائف الشبكة العصبية الدقيقة - التكاثر العكسي بشكل افتراضي ، rpropagation المرن للانتشار متوفرة أيضاً في أربعة أشكال (Rprop +" ، "Rprop-" ، "iRprop +" ، "iRprop-") و minimizeClassifier (يتم تدريب هذه الوظيفة بواسطة مصنف شبكة داتش باستخدام طريقة التدرج المترافقة غير الخطية). بالنسبة إلى الخوارزميتين الأخيرتين ولأولئك الذين لديهم معرفة عميقة بالموضوع ، يتم توفير تنفيذ منفصل لضبط الشبكة العصبية بتشكيل لمعلماتهم المتعددة. فمثلا:


    "+rpropagation(darch, trainData, targetData, method="iRprop
    decFact=0.5, incFact=1.2, weightDecay=0, initDelta=0.0125
    (...,minDelta=0.000001, maxDelta=50
    أين:


    -darch : كائن darch للتدريب.
    -trainData : مجموعة بيانات المدخلات للتدريب .
    -targetData : الناتج المتوقع لمجموعة التدريب .
    -method - طريقة التدريب. "iRprop +" بشكل افتراضي. "Rprop +" ، "Rprop-" ، "iRprop-" ممكنة .
    -decFact : خفض عامل التدريب. 0.5 بشكل افتراضي.
    -incfact : زيادة عامل للتدريب. 1.2 افتراضيا.
    -weightDecay : انخفاض الوزن في التدريب. 0 بشكل افتراضي.
    -initDelta : قيمة التهيئة في التحديث. 0.0125 افتراضيا.
    -minDelta : حد أدنى لحجم الخطوة. 0.000001 بشكل افتراضي.
    -maxDelta : الحد العلوي لحجم الخطوة. 50 افتراضيا.
    تقوم الدالة بإرجاع كائن darch بواسطة الشبكة العصبية المدربة.



    -3.2. تشكيل التدريب واختبار العينات.
    وللغد بقية
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  2. #2
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    1) موضوع عنيق وجيد وغير مطروووق
    2) كيف تنقل الداتا من الميتا الى R والعكس؟"
    3) بعض الاسطر تشبع ترجمة قوقل--اتمنى اخي التعريب التام للمقال-او يكون انقلش من اوله الى اخره

  3. #3
    الصورة الرمزية 2013Lemsantah
    2013Lemsantah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    -3.2.
    تشكيل التدريب واختبار العينات
    .

    سنقوم بكتابة دالة تقوم بمحاذاة (إذا لزم الأمر) عدد الفئات في العينة نحو العدد الأعلى ، وتقسيم العينة إلى نماذج تدريب واختبار ، وإجراء ما قبل المعالجة (التطبيع ، إذا لزم الأمر) وإرجاع القائمة مع العينات ذات الصلة - التدريب والاختبار. لتحقيق التوازن ، سنستخدم الدالة ()caret :: upSample التي تضيف عينات عشوائياً مع استبدال ، مما يجعل توزيع الفئة متساوياً. يجب أن أقول أنه ليس كل الباحثين يجدون أنه من الضروري تحقيق التوازن بين الطبقات. ولكن ، كما هو معروف بالفعل ، الممارسة هي معيار للحقيقة ، وتظهر نتائج تجاربي المتعددة أن العينات المتوازنة تظهر دائما نتائج أفضل في التدريب. على الرغم من ذلك ، فإنه لا يمنعنا من التجربة بمفردنا.

    للمعالجة المسبقة ، سنستخدم الدالة ()caret :: preProcess . سيتم حفظ معلمات المعالجة المسبقة في متغير prepr.
    كود PHP:
    #---7----------------------------------------------------
    prepareTrain <- function(y
                             
    ratimod "stratified"
                             
    balance F
                             
    normmeth)
    {
      require(
    magrittr)
      require(
    dplyr)
      
    <- rminer::holdout(yratio rati,
                           
    mode mod)
      
    train <- cbind(x[t$tr, ], y[t$tr])
      if(
    balance){
        
    train <- caret::upSample(train[ ,best], 
                                 
    train$y
                                 list = 
    F)%>% tbl_df
        train 
    <- cbind(train[ ,best], select(train= Class))
      }
      
    test <- cbind(x[t$ts, ], y[t$ts])
      if (
    norm) {
        
    prepr <<- caret::preProcess(train[ ,best], method meth)
        
    train predict(preprtrain[ ,best])%>% cbind(., train$y)
        
    test =  predict(preprtest[ ,best] %>% cbind(., test$y))
      }
      
    DT <- list(train train,
                 
    test test)
      return(
    DT)

    تعليق واحد بشأن المعالجة المسبقة: سيتم تطبيع متغيرات المدخلات في نطاق (-1 ، 1).

    2.2.3.ترميز المتغير الهدف

    عند حل مهام التصنيف ، يكون المتغير الهدف عاملاً له عدة مستويات (فئات). في نموذج يتم تعيينه على أنه متجه (عمود) ، والذي يتكون من الحالات المستهدفة اللاحقة. على سبيل المثال ، ("y = с ("1"، "1"، "2"، "3"، "1. لتدريب الشبكة العصبية ، يجب ترميز المتغير المستهدف (تحويله) إلى المصفوفة مع عدد الأعمدة المساوية لعدد الفئات. في كل صف من هذه المصفوفة ، قد يحتوي عمود واحد فقط 1. هذا التحويل مع استخدام وظيفة تنشيط ()softmax في طبقة الخرج ، يسمح بالحصول على احتمالات حالات لمتغير الهدف المتوقع في كل صنف. سيتم استخدام الدالة ()classvec2classmat للترميز. هذه ليست الطريقة الوحيدة أو الأفضل لترميز المتغير المستهدف ، ولكننا سنستخدمه لأنه بسيط. يتحقق التحويل العكسي (فك الشفرة) للقيم المتوقعة للمتغير المستهدف من خلال طرق مختلفة سوف نغطيها قريباً.


    3.3.تدريب النموذج

    1.3.3 قبل التدريب
    كما ذكرنا أعلاه ، أولاً ، نقوم بإنشاء كائن العمق العميق المسمى DArch ، والذي يتضمن العدد المطلوب من RBM مع معلمات التدريب الأولي بشكل افتراضي ، والشبكة العصبية التي تبدأ بأوزان عشوائية ووظيفة تنشيط الخلايا العصبية التي يتم إعدادها بشكل افتراضي. في مرحلة إنشاء الكائن ، يمكن تغيير معلمات ما قبل التدريب ، إذا لزم الأمر. بعد ذلك ، سيتم تدريب شبكة الإدارة القائمة على النتائج مسبقاً بدون مشرف بإرسال عينة التدريب (بدون متغير الهدف) إلى المخرجات. بعد اكتمالها ، نحصل على DECRCH حيث يتم نقل الأوزان والتحيزات التي تم الحصول عليها خلال التدريب على الإدارة القائمة على النتائج إلى الشبكة العصبية. يجب أن نضع مسبقا توزيع الخلايا العصبية المخفية في طبقات في شكل متجه (على سبيل المثال):
    كود PHP:
    L<- c1450502
    عدد الخلايا العصبية في طبقة الإدخال يساوي عدد المتغيرات المدخلات. ستحتوي طبقتان مخفيتان على 50 خلية عصبية ، وسيكون لطبقة المخرجات طبقتين. اسمحوا لي أن أشرح الجزء الأخير. إذا كان للمتغير المستهدف (العامل) مستويين (الفئات) ، فيكون الناتج في الواقع كافياً. لكن تحويل المتجه إلى المصفوفة مع عمودين ، كل واحد منهما يتوافق مع فئة واحدة ، يسمح لنا بتطبيق وظيفة softmaxactivation ، التي تعمل بشكل جيد في مهام التصنيف ، في طبقة المخرجات. علاوة على ذلك ، تعطي لنا المخرجات على شكل الاحتمالات الطبقية فرصًا إضافية في التحليل اللاحق للنتائج.


    عدد الحقب عندما يتم تعيين التدريب تجريبيا ، عادة في حدود 10-50.


    سيبقى عدد تكرار أخذ العينات بشكل افتراضي ، ولكن يمكن زيادة هذه المعلمة إذا كنت ترغب في التجربة. سيتم تعريفه في وظيفة منفصلة:
    كود PHP:
    #----8--------------------------------------------------------------
    pretrainDBN <- function(LBsdSnEnCDInM 0.5FinM 0.9)
    {
      require(
    darch)
    # create object DArch
      
    dbn <- newDArch(layers LbatchSize BslogLevel 5)
    # set initial moment 
      
    setInitialMomentum(dbn) <- InM 
    # set final moment   
      
    setFinalMomentum(dbn) <- FinM
    # set time of switching moments from initial to final    
      
    setMomentumSwitch(dbn) <- round(0.8 nE)
      
    dbn <- preTrainDArch(dbndataSet dS
                      
    numEpoch nE,
                      
    numCD nCD
                      
    trainOutputLayer T)
      return(
    dbn)

    .2.3.3 الكون المثالى


    كما تمت مناقشته سابقاً ، توفر الحزمة backpropagation () ، rpropagation () ، minimizeClassifier () ، minimizeAutoencoder () من أجل الضبط الدقيق. لن يتم النظر في الأخيرين السابقين ، لأنهما غير موثقين بما فيه الكفاية في الحزمة ، ولا توجد أمثلة على كيفية تطبيقها.


    دعونا النظر في وظيفتين الأولى. يتم تعيين أول (backpropagation) بشكل افتراضي في كائن DАrch ويستخدم معلمات الشبكة العصبية التدريب المتوفرة هنا. تحتوي الدالة الثانية (rpropagation) أيضًا على معلمات افتراضية وأربعة طرق تدريب (موصوفة أعلاه) وهي "iRprop +" بشكل افتراضي. يمكنك بالتأكيد تغيير كل من المعلمات وطريقة التدريب. من السهل تطبيق هذه الوظائف: تغيير دالة ضبط في ()FineTuneDarch

    كود PHP:
    setFineTuneFunction(dbn) <- rpropagation 
    بالإضافة إلى ضبط الضبط الدقيق ، يجب علينا تعيين (عند الضرورة) وظيفة تنشيط الخلايا العصبية في كل طبقة. نحن نعلم أنه يتم تعيين sigmoidUnit في جميع الطبقات بشكل افتراضي. وهي متوفرة في حزمة sigmoidUnitDerivative ، linearUnitDerivative ، tanSigmoidUnitDerivative ، softmaxUnitDerivative. سيتم تعريف الضبط بوظيفة منفصلة مع القدرة على اختيار وظيفة الضبط الدقيق. سنقوم بجمع الوظائف الممكنة للتنشيط في قائمة منفصلة:
    كود PHP:
    actFun <- list(sig sigmoidUnitDerivative,
                   
    tnh tanSigmoidUnitDerivative,
                   
    lin linearUnitDerivative,
                   
    soft softmaxUnitDerivative
    سوف نكتب وظيفة fine-tuneلتدريب وتوليد شبكتين عصبيتين: الأولى - مدربة باستخدام وظيفة backpropagation ، والثانية - مع rpropagation:
    كود PHP:
    #-----9-----------------------------------------
    fineMod <- function(variant=1dbnindS
                        
    hd 0.5id 0.2,
                        
    act c(2,1), nE 10)
    {
      
    setDropoutOneMaskPerEpoch(dbnin) <- FALSE
      setDropoutHiddenLayers
    (dbnin) <- hd
      setDropoutInputLayer
    (dbnin) <- id
      layers 
    <<- getLayers(dbnin)
      
    stopifnot(length(layers)==length(act))
      if(
    variant || variant >2) {variant 1}
      for(
    i in 1:length(layers)){
        
    fun <- actFun %>% extract2(act[i])
        
    layers[[i]][[2]] <- fun
      
    }
      
    setLayers(dbnin) <- layers
      
    if(variant == || variant == 2){ # backpropagation
        
    if(variant == 2){# rpropagation
          #setDropoutHiddenLayers(dbnin) <- 0.0
          
    setFineTuneFunction(dbnin) <- rpropagation
        
    }
        
    mod fineTuneDArch(darch dbnin
                            
    dataSet dS
                            
    numEpochs nE,
                            
    bootstrap T)
        return(
    mod)
      }

    - بعض التوضيحات حول المعلمات الرسمية للدالة.


    - variant : اختيار وظيفة ضبط دقيقة (1- العكارة الخلفية ، 2- rpropagation).
    - dbnin : نموذج الإيصال نتج عن التدريب المسبق.
    - dS : مجموعة بيانات من أجل الضبط الدقيق (dataSet).
    - HD : معامل أخذ العينات (hiddenDropout) في الطبقات المخفية للشبكة العصبية.
    - id : معامل أخذ العينات (inputDropout) في طبقة المدخلات من الشبكة العصبية.
    - act : متجه مع دلالة على وظيفة تنشيط الخلايا العصبية في كل طبقة من الشبكة العصبية. طول المتجه هو وحدة واحدة أقصر من عدد الطبقات.
    - nE : عدد مرات التدريب.


    -4.3 اختبار النموذج. Мetrics.

    يتم اختبار النموذج المدرّب على عينات الاختبار. يجب اعتبار أننا سنقوم بحساب مقياسين: الدقة الرسمية والنوعية K. وسيتم توفير المعلومات ذات الصلة أدناه.
    لهذا الغرض ، سنحتاج إلى نوعين مختلفين من البيانات ، وسأشرح لك السبب. لحساب الدقة ، نحتاج إلى قيم للمتغير المستهدف ، و ZigZag ، كما نتذكر من قبل ، لم يتم تعريفها بشكل متكرر في الأشرطة الأخيرة.
    لذلك ، فإن عينة الاختبار لحساب الدقة التي سنحددها مع الدالة prepareTrain () ، وبالنسبة للمؤشرات النوعية ، سنستخدم الوظيفة التالية

    كود PHP:
    #---10-------------------------------------------
    prepareTest <- function(nznormlen 501)
    {
      
    <- In() %>% na.omit %>% extract( ,best) %>% 
        
    tail(., len)
      
    CO <- price[ ,"CO"] %>% tail(., len)
      if (
    norm) {
        
    <- predict(prepr,x)
      }
      
    dt <- cbind(xCO CO) %>% as.data.frame()
      return(
    dt)

    سيتم اختبار النماذج على آخر 500 شريط من التاريخ.


    للاختبار الفعلي ، سيتم تطبيق testAcc () و testBal ().

    كود PHP:
    #---11-----
    testAcc <- function(objtyp "bin"){
      
    x.ts <- DT$test[ ,best] %>% as.matrix()
      
    y.ts <- DT$test$y %>% as.integer() %>% subtract(1)
      
    out <- predict(objnewdata x.tstype typ
      if (
    soft){out <- max.col(out)-1} else {out %<>% as.vector()}               
      
    acc <- length(y.ts[y.ts == out])/length(y.ts) %>% 
        
    round(., digits 4)
      return(list(
    Acc accy.ts y.tsout))
    }
    #---12-----
    testBal <- function(objtyp "bin") {
      require(
    fTrading)
      
    <- DT.test[ ,best]
      
    CO <- DT.test$CO
      out 
    <- predict(objnewdata xtype typ
      if(
    soft){out <- max.col(out)-1} else {out %<>% as.vector()} 
      
    sig <- ifelse(out == 0, -11)
      
    sig1 <- Hmisc::Lag(sig) %>% na.omit
      bal 
    <- cumsum(sig1 tail(COlength(sig1)))
      
    <- tail(bal1)/length(bal) * 10 Dig
      Kmax 
    <- max(bal)/which.max(bal) * 10 Dig
      dd 
    <- maxDrawDown(bal)
      return(list(
    sig sigbal balK
                  
    Kmax Kmaxdd dd))

    تقوم الدالة الأولى بإرجاع Acc وقيم متغير الهدف (حقيقي أو متوقع) لإجراء تحليل إضافي محتمل. ترجع الدالة الثانية إشارات التأرجح المتوقعة لـ EA ، والتوازن الذي تم الحصول عليه بناءً على هذه الإشارات (bal) ، ومعامل الجودة (К) ، والقيمة القصوى لهذا المعامل على المنطقة المختبرة (Kmax) والحد الأقصى من التراجع (dd) في نفس المنطقة.


    عند حساب الرصيد ، من المهم أن تتذكر أن الإشارة الأخيرة المتنبأ بها تشير إلى شريط المستقبل الذي لم يتم تكوينه بعد ، لذلك يجب حذفه في الحسابات. لقد فعلنا ذلك عن طريق تحريك متجه sig بواسطة شريط واحد إلى اليمين.

    -1.4.3. فك تشفير التنبؤات .

    يمكن فك الشفرة التي تم الحصول عليها (تحويلها من المصفوفة إلى المتجه) باستخدام طريقة "WTA". الفئة تساوي رقم العمود مع الحد الأقصى لقيمة الاحتمال ، ويمكن تعيين حد القيمة لهذا الاحتمال ، والذي لم يتم تحديد الفئة فيه.
    كود PHP:
    out <- classmat2classvec(outthreshold 0.5
    or
    out <- max.col(out)-
    إذا تم تعيين الحد الأقصى على 0.5 ، وكان أكبر احتمال في الأعمدة أقل من هذا الحد ، فسنحصل على فئة إضافية ("غير محددة"). يجب أن تؤخذ في الاعتبار عند حساب مقاييس مثل الدقة.
    -2.4.3.تحسين نتائج التنبؤ

    هل من الممكن تحسين نتيجة التنبؤ بعد استلامها؟ هناك ثلاث طرق ممكنة يمكن تطبيقها.


    -معايرة :


    المعايرة هي حساب النطاقات المحتملة التي تعطي التوافق الأكثر دقة مع البيانات الحقيقية. لهذا الغرض ، هناك وظيفة خاصة في حزمة CORElearn:
    كود PHP:
    CORElearn::calibrate(correctClasspredictedProbclass1 1,  
                         
    method c("isoReg""binIsoReg""binning""mdlMerge"),  
                         
    weight=NULLnoBins=10assumeProbabilities=FALSE
    معلمات الدالة:


    -correctClass : المتجه مع التسميات الصحيحة للفئات لتصنيف المشكلة
    -predictedProb : متجه مع الفئة المتوقعة 1 (الاحتمال) من نفس الطول مثل correctClass
    -method : واحد من التالي ("isoReg" ، "binIsoReg" ، "binning" ، "mdlMerge"). لمزيد من المعلومات ، يرجى قراءة وصف الحزمة
    -weight : المتجه (إذا كان محددًا)يجب أن يكون هو نفس الطول مثل classClass ، وأن يوفر أوزانًا لكل ملاحظة ، وإلا فإن الأوزان لجميع الملاحظات تساوي 1 بشكل افتراضي
    -noBins : تعتمد قيمة المعلمة على الطريقة وتحدد العدد المطلوب أو الأولي من القنوات
    -assumeProbabilities : منطقية ، إذا كانت TRUE ، ثم القيمة المتوقعة في المتوقع هو المتوقع في النطاق [0 ، 1] ، i. ه. كتقييم إمكانية ، وإلا يمكن استخدام الخوارزمية كإنحدار بسيط متساوي التوتر.

    يتم تطبيق هذه الطريقة لمتغير الهدف مع مستويين تم تعيينهما بواسطة متجهvector.

    - تنعيم نتائج التنبؤ مع نموذج سلسلة ماركوف :

    هذا موضوع ضخم ومعقد ويستحق مادة منفصلة ، لذلك لن أتعمق في النظرية ، وأقدم المعلومات الأساسية.


    عملية ماركوف - هي عملية عشوائية ذات ميزة تالية: في أي وقت من الأوقات t0 ، يعتمد احتمال أي حالة من النظام في المستقبل فقط على حالته الحالية ولا يعتمد على وقت وكيفية وصول النظام إلى هذا الحالة.


    تصنيف عمليات ماركوف العشوائية:

    -مع حالات منفصلة ووقت منفصل (سلسلة ماركوف) .
    - مع حالات مستمرة ووقت منفصل (تناسق ماركوف) .
    - مع حالات منفصلة ووقت مستمر (سلسلة ماركوف المستمرة) .
    - مع حالة مستمرة ومستمرة.

    عمليات ماركوف فقط مع الحالات المنفصلة S1، S2، ...، Sn.

    Markov chainسلسلة ماركوف - عملية ماركوف عشوائية مع حالات منفصلة ووقت منفصل.تعتبر اللحظات t1 و t2 و ... عندما يمكن للنظام S تغيير حالته كخطوات لاحقة للعملية. إنه ليس الوقت t ، لكن الخطوة رقم 1،2 ، ... ، k ، ... يتم استخدامها كوسيطة تعتمد عليها العملية.


    تتميز العملية العشوائية بتسلسل الحالات ...,(S(0), S(1), S(2), ..., S(k, ، حيث (S (0 هي الحالة الأولية (قبل أول خطوة)؛ (S (1 - الدولة بعد الخطوة الأولى ؛ (S (k - حالة النظام بعد خطوة k-number.


    احتماليات حالات سلسلة ماركوف هي احتمالات بي (k) أنه بعد خطوة الرقم k (وقبل الخطوة (k + 1) -خطأ) سيكون النظام S في( Si (i = 1، 2، ...، n حالة.


    التوزيع الأولي لاحتمالات سلسلة ماركوف - توزيع احتمالات الدول state في بداية العملية.
    احتمال الانتقال (احتمالية الانتقال) على الخطوة k-number من حالة Si إلى حالة Sj - الاحتمال الشرطي بأن النظام S بعد الخطوة k-number سيظهر في حالة Sj ، بشرط أن يكون في حالة Si قبل ذلك (بعد ك - خطوة واحدة).


    سلسلة ماركوف الموحدة - سلسلة ماركوف حيث لا تعتمد احتمالات الانتقال على رقم الخطوة (من الوقت) ، ولكن في ما بين التي تنص على التحول يحدث.
    الاحتمالات الانتقالية لسلسلة ماركوف الموحدة رويج تشكل مصفوفة مربعة بحجم n х n. لديه الميزات التالية:

    -1. يصف كل صف الحالة المختارة للنظام ، وعناصرها - احتمالات جميع التحولات الممكنة في خطوة واحدة من الحالة المحددة (من i-number).
    -2. عناصر الأعمدة - احتمالات كل التحولات الممكنة في خطوة واحدة إلى حالة المجموعة (j).
    -3. إجمالي احتمالات كل صف يساوي واحد.
    -4. على قطري الرئيسي - احتمالات Рij أن النظام لن تخرج من المجموعة Si ، وستبقى هناك.

    يمكن ملاحظة عملية ماركوف وخفائها. يتكون نموذج ماركوف المخفي (HMM) من زوج من العمليات العشوائية المنفصلة {St} و {Xt}. ترتبط العملية المرصودة {Xt} بعملية ماركوف غير الخاضعة للرقابة (المخفية) للحالات {st} من خلال ما يسمى التوزيعات المشروطة.


    بالمعنى الدقيق للكلمة ، فإن عملية ماركوف الملاحظة من الدول (الفئات) من سلسلة زمنية هدفنا ليست موحدة. من الواضح أن احتمال الانتقال من حالة إلى أخرى يعتمد على الوقت المستغرق في الحالة الراهنة. وهذا يعني أنه خلال الخطوات الأولى بعد تغيير الحالة ، فإن احتمال تغييرها ينمو وينمو مع زيادة الوقت المستغرق في هذه الحالة. تسمى هذه النماذج شبه ماركوف (HSMM). لن نتعمق في تحليلها.


    لكن الفكرة هي التالية: بناء على ترتيب منفصل للإشارات المثالية (الهدف) التي تم الحصول عليها من ZigZag ، سنجد معلمات НММ. ثم ، بعد أن توقعنا الإشارات بواسطة الشبكة العصبية ، سنقوم بتخفيفها باستخدام НММ.


    ماذا يعطينا؟ عادة ، في التنبؤ الشبكة العصبية هناك ما يسمى ب "الانبعاثات" ، مناطق تغيير الحالة التي هي 1-2 أشرطة طويلة. نحن نعلم أن المتغير المستهدف لا يحتوي على أطوال صغيرة كهذه. من خلال تطبيق النموذج الذي تم الحصول عليه من المتغير المستهدف إلى الطلب المتوقع ، يمكننا إحضاره إلى المزيد من التحولات المحتملة.


    سنستخدم حزمة "mhsmm" المصممة لحساب نماذج Markov و Semi-Markov المخفية لهذه الحسابات. سنستخدم الدالة smooth.discrete () ، التي تنعم بسلاسة السلسلة الزمنية للقيم المنفصلة.
    كود PHP:
    obj <- smooth.discrete(y
    الترتيب السلس للحالات التي تم الحصول عليها في النهاية بشكل افتراضي - كترتيب أكثر ترجيحًا للحالات التي تم الحصول عليها باستخدام خوارزمية Viterbi (تسمى فك التشفير العالمي). هناك أيضًا خيار لاستخدام طريقة أخرى - تمسّك ، حيث يتم تحديد الحالات الفردية الأكثر احتمالًا (ما يسمى بفك الشفرة المحلية).


    يتم تطبيق طريقة قياسية لتسهيل سلسلة زمنية جديدة
    كود PHP:
    sm.<- predict(obj= new.y
    - تصحيح الإشارات المتوقعة على منحنى الرصيد النظري

    المفهوم هو ما يلي. بوجود خط التوازن ، يمكننا حساب انحرافه عن المتوسط. باستخدام هذه الانحرافات سنقوم بحساب إشارات التصحيح. في لحظات عندما تنحرف الانحرافات ، فإنها إما تعطيل أداء الإشارات المتنبأ بها ، أو جعلها عكسية. الفكرة جيدة بوجه عام ، ولكن هناك عيب واحد. يحتوي شريط الصفر على إشارة متوقعة ، لكن ليس له قيمة توازن ، وبالتالي ، إشارة تصحيح. هناك طريقتان لحل هذه المشكلة:
    من خلال التصنيف - للتنبؤ بإشارة التصحيح استنادًا إلى إشارات التصحيح والانحرافات القائمة ؛ من خلال الانحدار - باستخدام الانحرافات الموجودة على القضبان المشكلة للتنبؤ بانحرافات على الشريط الجديد وتحديد إشارة التصحيح استنادًا إليه.
    هناك حل أسهل ، حيث يمكنك أن تأخذ إشارة التصحيح لشريط جديد على أساس تلك التي تشكلت بالفعل.



    بما أن الأساليب المذكورة أعلاه معروفة لنا بالفعل وقد تم اختبارها ، سنحاول تنفيذ فرص سلاسل ماركوف. حزمة "markovchain" التي ظهرت مؤخرًا لديها مجموعة من الوظائف التي تسمح بتحديد معالم نموذج ماركوف الخفي ولتوضيح الحالات المستقبلية من خلال العديد من الأشرطة المستقبلية من خلال العملية المنفصلة المرصودة. أخذت الفكرة من هذا المقال.



    - 3.4.3 المقاييس

    لتقييم جودة التنبؤ بالنموذج ، يتم تطبيق النطاق الكامل للمقاييس (الدقة ، و AUC ، و ROC وغيرها). لقد ذكرت في المقالة السابقة أن المقاييس الرسمية لا يمكنها تحديد الجودة في حالتنا. هدف Expert Advisor هو الحصول على أقصى ربح من خلال السحب المقبول. لهذا الغرض ، تم تقديم مؤشر الجودة K ، ويظهر متوسط الربح في النقاط لشريط واحد في جزء التاريخ الثابت بطول N. يتم حسابه من خلال قسمة العائد التراكمي (sig، N) بطول المقطع N. سيتم احتساب الدقة فقط بشكل إرشادي.


    أخيرًا ، سنقوم بإجراء الحسابات والحصول على نتائج الاختبار:


    - بيانات الناتج. لدينا بالفعل سعر [] مصفوفة ، تم الحصول عليها نتيجة لأداء وظيفة price.OHLC (). يحتوي على اقتباسات ومتوسط سعر ونصوص القضبان. يمكن الحصول على جميع بيانات الإخراج عن طريق تنزيل "الرمز" الذي يظهر في المرفق إلى Rstudio.

    كود PHP:
    # Find  constanta  
    3437cut 0.9soft TRUE
    # Find preprocessing method  
    method c("center""scale","spatialSign")
    # form the initial set of data
    data.<- form.data(nz)
    # find the set of important predictors 
    best <- prepareBest(nzcut cutnorm Tmethod
    # Calculations take about 3 minutes on the 2-core processor. You can skip this stage if you like, 
    # and use the whole set of predictors in the future. Therefore, comment the previous line and
    # uncomment two lowest lines.
    # data.f <- form.data(n = n, z = z)
    # best <- colnames(data.f) %>% head(., ncol(data.f) - 1)
    # Prepare the set for training neural network
    DT <- prepareTrain(data.f[ , best],
                       
    data.f$y,
                       
    balance TRUE,
                       
    rati 501mod "stratified",
                       
    norm TRUEmeth method

    # Download required libraries
    require(darch)
    require(foreach)
    # Identify available functions for activation
    actFun <- list(sig sigmoidUnitDerivative,
                   
    tnh tanSigmoidUnitDerivative,
                   
    lin linearUnitDerivative,
                   
    soft softmaxUnitDerivative)
    # Convert the target variable
    if (soft) { <- DT$train$y %>% classvec2classmat()} # into matrix
    if (!soft) {DT$train$y %>% as.integer() %>% subtract(1)} # to vector with values [0, 1]
    # create dataSet for training
    dataSet <- createDataSet(
      
    data DT$train[ ,best] %>% as.matrix(), 
      
    targets ,
      
    scale F
    )
    # Identify constants for neural network
    # Number of neurones in the input layer (equals the amount of predictors)
    nIn <- ncol(dataSet@data)
    # Number of neurones in the output layer 
    nOut <- ncol(dataSet@targets)
    # Vector with a number of neurones in every layer of neural network
    # If you use another structure of neural network, this vector should be rewritten
    Layers c(nInnIn nOut)
    # Other data related to training
    Bath 50
    nEp 
    100
    ncd 
    1
    # Pre-training of neural network
    preMod <- pretrainDBN(LayersBathdataSetnEpncd)
    # Additional parameters for fine-tune
    Hid 0.5Ind 0.2nEp 10
    # Train two models, one with backpropagation, other with rpropagation
    # We only do this to compare results
    model <- foreach(1:2, .packages "darch") %do% {
      
    dbn <- preMod
      
    if (!soft) {act c(21)}
      if (
    soft) {act c(24)}
      
    fineMod(variant idbnin dbn
              
    hd Hidid Ind,
              
    dS dataSetact actnE nEp)
    }
    # Test to get Accuracy
    resAcc <- foreach(1:2, .packages "darch") %do% {
      
    testAcc(model[[i]]) 
    }
    # Prepare sample of data to test on quality coefficient
    DT.test <- prepareTest(nzT)
    # Test
    resBal <- foreach(1:2, .packages "darch") %do% {
      
    testBal(model[[i]]) 

    دعونا نرى النتيجة
    :
    كود PHP:
    resAcc[[1]]$Acc
    [10.5728543
    resAcc[[2]]$Acc
    [10.5728543 


    انها سيئة على قدم المساواة لكلا الطرازين.


    بالنسبة لمعامل الجودة:
    كود PHP:
    resBal[[1]]$K
    [15.8
    resBal[[1]]$Kmax
    [120.33673
    resBal[[2]]$Kmax
    [120.33673
    resBal[[2]]$K
    [15.8 

    يظهر نفس الأداء الجيد. ومع ذلك ، فإن السحب الكبير مثير للقلق بشكل أو بآخر:

    كود PHP:
    resBal[[1]]$dd$maxdrawdown
    [10.02767 
    سنحاول تصحيح التراجع باستخدام تصحيح الاشارة التي تم الحصول عليها من الحساب أدناه
    :

    كود PHP:
    bal <- resBal[[1]]$bal
    # signal on the last 500 bars
    sig <- resBal[[1]]$sig[1:500]
    # average from the balance line
    ma <- pracma::movavg(bal,16"t")
    # momentum from the average 
    roc <- TTR::momentum(ma3)%>% na.omit
    # balance line deviation from the average
    dbal <- (bal ma) %>% tail(., length(roc))
    # summarize two vectors
    dbr <- (roc dbal) %>% as.matrix()
    # calculate correction signal
    sig.cor <- ifelse(dbr 01, -1# sign(dbr) gives the same result
    # resulting signal
    <- sig.cor tail(siglength(sig.cor))
    # balance on resulting signal
    Bal <- cumsum(* (price[ ,"CO"]%>% tail(.,length(S))))
    # quality coefficient on the corrected signal
    Kk <- tail(Bal1)/length(Bal) * 10 Dig
    Kk
    [128.30382 
    نتيجة الجودة المعروضة على الإشارة الصحيحة جيدة جدًا. دعونا نرى كيف تظهر خطوط dbal و roc و dbr المستخدمة لحساب إشارة التصحيح على المخطط الخطي.

    كود PHP:
    matplot(cbind(dbrdbalroc), t="l"col=c(1,2,4), lwd=c(2,1,1))
    abline(h=0col=2)
    grid() 
    اضغط على الصورة لعرض أكبر

الاســـم:	الشكل 4.PNG
المشاهدات:	17
الحجـــم:	72.0 كيلوبايت
الرقم:	493070

    يظهر خط التوازن قبل وبعد تصحيح الإشارة في شكل. 5.

    كود PHP:
    plot(c(NA,NA,NA,Bal), t="l")
    lines(balcol2)
    lines(macol4
    اضغط على الصورة لعرض أكبر

الاســـم:	الشكل 5.PNG
المشاهدات:	18
الحجـــم:	47.8 كيلوبايت
الرقم:	493071

    لذا ، لدينا قيمة الإشارة التي تتنبأ بها الشبكة العصبية على شريط الصفر ، ولكن ليس لدينا قيمة تصحيح. نريد استخدام نموذج ماركوف المخفي للتنبؤ بهذه الإشارة. بناءً على الحالات المرصودة لإشارة التصحيح ، سنحدد معلمات النموذج باستخدام قيم عدد قليل من الحالات الأخيرة ، ونتوقع الحالة في شريط واحد للأمام.
    أولاً ، سوف نكتب الدالة correct() ، التي ستحسب إشارة التصحيح استنادًا إلى الإشارة المتوقعة والإشارة الناتجة ومؤشرات الجودة الخاصة بها. بمعنى آخر ، سنقوم بكتابة حسابات مضغوطة مسبقًا.



    أود أن أوضح: "الإشارة" في الموضوع هي سلسلة من الأرقام الصحيحة -1 و 1. "الدولة" "state" هي سلسلة من الأعداد الصحيحة 1 و 2 المقابلة لهذه الإشارات. بالنسبة للتحويلات المتبادلة ، سنستخدم الوظائف:

    كود PHP:
    #---13----------------------------------
            
    sig2stat <- function(x) {%>% as.factor %>% as.numeric}
            
    stat2sig <- function(xifelse(x==1, -11)
            
    #----14--correct-----------------------------------
            
    correct <- function(sig){
              
    sig <- Hmisc::Lag(sig) %>% na.omit
              bal 
    <- cumsum(sig * (price[ ,6] %>% tail(.,length(sig))))
              
    ma <- pracma::movavg(bal16"t")
              
    roc <- TTR::momentum(ma3)%>% na.omit
              dbal 
    <- (bal ma) %>% tail(., length(roc))
              
    dbr <- (roc dbal) %>% as.matrix()
              
    sig.cor <- sign(dbr)
              
    <- sig.cor tail(siglength(sig.cor))
              
    bal <- cumsum(* (price[ ,6]%>% tail(.,length(S))))
              
    <- tail(bal1)/length(bal) * 10 Dig
              Kmax 
    <- max(bal)/which.max(bal) * 10 Dig
              dd 
    <- fTrading::maxDrawDown(bal)
              
    corr <<- list(sig.sig.corsig.res Sbal balKmax KmaxKdd dd)
              return(
    corr)
             } 
    من أجل الحصول على متجه (vector ) الإشارات بالتنبؤ بـ 1 بار في للأمام ، سنستخدم حزمة "markovchain" والدالة pred.sig ().

    كود PHP:
    #---15---markovchain----------------------------------
    pred.sig <- function(sigprev.bar 10nahead 1){
              require(
    markovchain)
            
    # Transform the observed correction signals into states  
              
    stat <- sig2stat(sig)
            
    # Calculate model parameters
            # if there is no model in the environment       
              
    if(!exists('MCbsp')){
                 
    MCbsp <<- markovchainFit(data stat
                                    
    method "bootstrap",
                                    
    nboot 10L,
                                    
    name="Bootstrap MС")
             }
            
    # Set necessary constants
              
    newData <- tail(statprev.bar)
              
    pr <- predict(object MCbsp$estimate
                                    
    newdata newData,
                                    
    n.ahead nahead)
            
    # attach the predicted signal to input signal
              
    sig.pr <- c(sigstat2sig(pr))
              return(
    sig.pr sig.pr)

    الآن ، سنقوم بتدوين حساب الإشارة الناتجة للمستشار الخبير لأداء بشكل مضغوط:
    كود PHP:
    sig <- resBal[[1]]$sig
    sig
    .cor <- correct(sig)
    sig.<- sig.cor$sig.c
    pr
    .sig.cor <- pred.sig(sig.c)
    sig.pr <- pr.sig.cor$sig.pr
    # Resulting vector of signals for Expert Advisor 
    <- sig.pr tail(siglength(sig.pr)) 
    تنعيم الإشارة المتوقعة

    سنقوم بكتابة وظيفة من شأنها أن تسهل الإشارة المنفصلة باستخدام نموذج سلسلة ماركوف المخفية. لهذا الغرض ، سوف نستخدم حزمة "mhsmm".

    كود PHP:
    #---16---smooth------------------------------------
    smoooth <- function(sig){
    # smooth predicted signal
    # define parameters of hidden Markov model
    # if there is no model in the environment yet
        
    require(mhsmm)
        if(!
    exists('obj.sm')){
             
    obj.sm <<- sig2stat(sig)%>% smooth.discrete()
        }
    # smooth the signal with the obtained model
        
    sig.<- predict(obj.smsig2stat(sig))%>% 
                 
    extract2(1)%>% stat2sig()
    # calculate balance with smoothed signal
         
    sig.s1 <- Hmisc::Lag(sig.s) %>% na.omit
         bal 
    <- cumsum(sig.s1 * (price[ ,6]%>% tail(.,length(sig.s1))))
         
    <- tail(bal1)/length(bal) * 10 Dig
         Kmax 
    <- max(bal)/which.max(bal) * 10 Dig
         dd 
    <- fTrading::maxDrawDown(bal)
         return(list(
    sig sig.sbal balKmax KmaxKdd dd))

    سنقوم بحساب ومقارنة الرصيد بناءً على الإشارات والسلسة المتنبأ بها .

    كود PHP:
    sig <- resBal[[1]]$sig
    sig
    .sm <- smoooth(sig)
    plot(sig.sm$balt="l")
    lines(resBal[[1]]$balcol=2
    اضغط على الصورة لعرض أكبر

الاســـم:	الشكل 6.PNG
المشاهدات:	15
الحجـــم:	50.6 كيلوبايت
الرقم:	493073

    وكما نرى ، تحسنت الجودة بشكل طفيف ، لكن لا يزال هناك انخفاض. لن نستخدم هذه الطريقة في "مستشار الخبراء" الخاص بنا.

    كود PHP:
    sig.sm$dd
    $maxdrawdown
    [10.02335
    $from
    [1208
    $to
    [1300 
    4. هيكل خوارزمية EA
    اضغط على الصورة لعرض أكبر

الاســـم:	الشكل 7.PNG
المشاهدات:	21
الحجـــم:	94.2 كيلوبايت
الرقم:	493074
    -1.4. وصف عملية "المستشار الخبير"

    بما أن المستشار الخبير يعمل في مسارين (mql و Rterm) ، فسوف نصف عملية تفاعلهم. سنناقش العمليات التي يتم تنفيذها في كل دفق على حدة.

    -1.1.4 MQL

    بعد وضع المستشار الخبير على الرسم البياني:


    - في الدالة init ()


    - نتحقق من إعدادات المحطة (توفر DLL ، إذن للتداول) .
    - ضبط المؤقت
    - إطلاق Rterm
    - حساب ونقل الثوابت المطلوبة للعمل في بيئة معالجة R .
    - تحقق مما إذا كان يعمل Rterm، إن لم يكن - تنبيه .
    - الخروج من init ().



    - في وظيفة deinit ()


    - نوقف الموقت.
    - حذف الكائنات الرسومية .
    - أوقف Rterm.



    - في وظيفة onTimer ()


    - تحقق مما إذا كان Rterm يعمل .
    - إذا كان Rterm غير مشغول والبار الجديد ([LastTime! = Time [0):
    - ضبط عمق التاريخ اعتمادًا على ما إذا كان هذا هو الإطلاق الأول للمستشار الخبير .
    - تشكيل أربعة متجهات من علامات الاقتباس (فتح ، مرتفع ، منخفض ، إغلاق) ونقلها إلى Rterm .
    - إطلاق البرنامج النصي والمغادرة دون تلقي نتائج أدائها .
    - ضبط get_sig = العلامة الحقيقية.
    - تعيين [LastTime = Time [0.
    وإلا ، إذا كان Rterm يعمل ، فلا يتم احتلاله ويكون العلم get_sig = true:
    - تحديد طول ناقلات SIG التي يجب أن نتلقاها من Rterm .
    - ضبط حجم المتجه المستلم إلى حجم المصدر. عند الفشل في الامتثال ، سوف يسقط Rprocess .
    - الحصول على طلب الإشارات (المتجه) .
    - تحديد العملية التي يتعين القيام بها (شراء ، بيع ، لا شيء) باستخدام آخر إشارة .
    - إذا حصلنا على الإشارة الحقيقية ، وليس ERR ، فقمنا بإعادة ضبط العلامة get_sig = false.
    - الباقي هو المعيار:
    CheckForClose ()
    CheckForOpen ()


    خبيرنا في هذا الجزء هو "المؤدي" الذي ينفذ الطلبات التي تم الحصول عليها من جانبه والتي يمكنها "التفكير" ، يرسل الأوامر ، يتتبع حالة المراكز المفتوحة والأخطاء المحتملة عند فتحها ، ويقوم بالعديد من الوظائف الأخرى للخبير القياسي مستشار.

    -2.1.4. Rterm

    يتكون البرنامج النصي التشغيلي من جزأين. يتم تنفيذ جزء واحد في الإدخال الأول ، والثاني - في التالية.


    -إذا كان الأول:
    -تحميل (إذا لزم الأمر) مكتبات ضرورية من الوديع على الإنترنت ، وتثبيتها في بيئة Rterm .
    -تحديد الوظائف الضرورية .
    -إنشاء مصفوفة الاقتباس .
    -إعداد عينة من البيانات للتدريب واختبار النموذج .
    -إنشاء وتدريب النموذج .
    -اختبار النموذج
    -حساب الإشارات للأداء .
    -تحقق من جودة التنبؤ. إذا كان أعلى أو يساوي الحد الأدنى للمجموعة - تابع. على خلاف ذلك - إرسال تنبيه.
    -اذا لم يكن الأول:
    -إعداد عينة من البيانات للاختبار والتنبؤ .
    -اختبار النموذج على البيانات الجديدة .
    -حساب الإشارات للأداء .
    -تحقق من جودة التنبؤ. إذا تجاوزت أو تساوي الحد الأدنى المحدد - فإننا نتقدم. بخلاف ذلك - تم تعييننا أولاً = TRUE ، أي أننا نطلب إعادة تدريب النموذج.

    -2.4. ضبط النفس والتدريب الذاتي

    يتم تنفيذ مراقبة جودة إشارات التنبؤ باستخدام نموذج باستخدام المعامل. هناك طريقتان لتحديد حدود الجودة المقبولة. أولاً - لتحديد الحد الأقصى لسقوط المعامل بالنسبة لقيمته القصوى. إذا كان К <Kmax * 0.8 ، فعلينا إعادة تدريب أو إيقاف المستشار الخبير من أداء الإشارات. الثانية - لتعيين الحد الأدنى لقيمة К ، بعد الوصول إليها يتطلب نفس الإجراءات. سنستخدم الطريقة الثانية في Expert Advisor.

    -5. التثبيت والإطلاق

    هناك اثنان من المستشارين الخبراء الملحقين بهذه الموضوع: e_DNSAE.mq4 و e_DNRBM.mq4. كلاهما يستخدم نفس عينات البيانات وتقريبا نفس مجموعة الوظائف. الفرق يكمن في نموذج الشبكة العميقة المستخدمة. أول EA يستخدم DN ، بدأ SAE وحزمة "deepnet". يستخدم EA الثاني الاسم المميز ، ويبدأ RBM وحزمة "darch".


    ينطبق التوزيع القياسي:


    • *.mq4 in the ~/MQL4/Expert folder
    • *.mqh in the ~/MQL4/Include folder
    • *.dll in the ~/MQL4/Libraries folder
    • *.r in the C:/RData folder


    نقوم بتصحيح المسار إلى لغة R والنصوص المضبوطة (في كل من mq4: #define و * .r: source ()).


    عندما يتم تشغيل Expert Advisor للمرة الأولى ، سيقوم بتنزيل المكتبات الضرورية من المستودع وتعيينها في بيئة Rterm. يمكنك أيضًا تثبيتها مسبقًا وفقًا للقائمة المرفقة.


    عادةً ما تنخفض عملية R بشكل خاص بسبب غياب المكتبات الضرورية ، والتي تشير بشكل خاطئ إلى المسارات إلى البرامج النصية ، وأخيراً فقط ، بسبب أخطاء بناء جملة البرنامج النصي.


    يتم إرفاق لقطة شاشة الجلسة بالبيانات الأولية بشكل منفصل ، ويمكنك فتحها مع Rstudio للتحقق من أن جميع الوظائف تعمل ، وكذلك إجراء التجارب.

    -6. طرق وأساليب تحسين المؤشرات النوعية.

    هناك طرق قليلة لتحسين المؤشرات النوعية.


    التقييم واختيار المتنبئين - تطبيق خوارزمية جينية للتحسين (GA).
    تحديد المعايير المثلى للمتنبئين والمتغير المستهدف - GA.
    تحديد المعايير المثلى للشبكة العصبية - GA.
    يساعد اتخاذ هذه التدابير على تحسين المؤشرات النوعية بشكل كبير.


    استنتاج
    أظهرت التجارب مع حزمة "darch" النتائج التالية.


    يتم تدريب الشبكة العصبية العميقة ، التي بدأت الإدارة القائمة على النتائج بشكل أسوأ من SAE. هذا بالكاد خبر لنا.
    يتم تدريب الشبكة بسرعة.
    تمتلك الحزمة إمكانات كبيرة في تحسين جودة التنبؤ ، من خلال توفير الوصول إلى جميع المعلمات الداخلية للنموذج تقريبًا.
    تسمح الحزمة باستخدام الشبكة العصبية أو الإدارة المستندة إلى النتائج فقط مع مجموعة كبيرة جدًا من المعلمات بالنسبة إلى غيرها من المعايير القياسية.


    مرفقات

    1. R session of the Sess_DNRBM_GBPUSD_30 process
    2. Zip file with the "e_DNRBM" Expert Advisor
    3. Zip file with the "e_DNSAE" Expert Advisor




    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  4. #4
    الصورة الرمزية 2013Lemsantah
    2013Lemsantah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    1) موضوع
    عنيق
    وجيد وغير مطروووق
    2) كيف تنقل الداتا من الميتا الى R والعكس؟"
    3) بعض الاسطر
    تشبع
    ترجمة قوقل--اتمنى اخي التعريب التام للمقال-او يكون
    انقلش
    من اوله الى اخره
    والله عيب عربي لا يتقن كتابة لغته ويتهكم على ...قوقل... ؟راجع مشاركاتك قبل المشاركة
    بالنسبة للسؤال الثاني - عن طريق الدال ومكتبة مرفقين في المشاركة السابقة
    الموضوع مكون من عشر مقالات في اللغة الروسية كيف لا تريدني ان استعين بقوقل وانا احد اعضاء منتدى الترجمة لقوقل
    اتمنى من كل من يتقن لغة ان يشارك في المنتدى لاننا نساهم في تحسين الترجمة يوما عن يوم للذين لايتقنون اللغات

  5. #5
    الصورة الرمزية WADAH
    WADAH غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2015
    الإقامة
    تركيا
    المشاركات
    199

    افتراضي

    تشكر على الموضوع لكن عندي تحفظ على عدد من النقاط :

    1- أولا إشرح الإستراتيجية التي ستدرب الشبكة العصبية على توقع نتائجها - نماذج ماركوف + كل المؤشرات ؟؟؟؟؟؟؟
    2- هل الشبكة ستعطي اتجاه فقط ثم كيف ستعالج العملية ؟
    3- الأفضل لو جعلت الشبكة العصبية كملف تنفيذي أي مثل برنامج منفصل يتعامل مع الميتا بملف وسيط نصي أو إكسل (شفره لو أحببت ) لكن الكثير من الناس ضاعت هنا ....بالإضافة أن الكثير من المنصات ستعلق
    4- هل جربت هذا العمل ؟ ضع لنا الإحصاءات التنبؤية للشبكة .....

    ملاحظة أخيرة أرجو تقبلها : كأن الموضوع قص ولصق ....

  6. #6
    الصورة الرمزية 2013Lemsantah
    2013Lemsantah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    تشكر على الموضوع لكن عندي تحفظ على عدد من النقاط :

    1- أولا إشرح الإستراتيجية التي ستدرب الشبكة العصبية على توقع نتائجها - نماذج ماركوف + كل المؤشرات ؟؟؟؟؟؟؟
    2- هل الشبكة ستعطي اتجاه فقط ثم كيف ستعالج العملية ؟
    3- الأفضل لو جعلت الشبكة العصبية كملف تنفيذي أي مثل برنامج منفصل يتعامل مع الميتا بملف وسيط نصي أو إكسل (شفره لو أحببت ) لكن الكثير من الناس ضاعت هنا ....بالإضافة أن الكثير من المنصات ستعلق
    4- هل جربت هذا العمل ؟ ضع لنا الإحصاءات التنبؤية للشبكة .....
    الرجاء التمعن في الموضوع ففيه اجابة اسئلتك الثلاث

    ملاحظة أخيرة أرجو تقبلها : كأن الموضوع قص ولصق ....
    ولماذا لا اقبلها كان الافضل ان ابدا من المقال الاول وبما اننا في المقال العاشر لصديقي الكاتب الروسي فلاديمير بيرفنكو للتطوير الشبكات العميقة في لغة R
    سوف اترجمها تباعا انشاء الله
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  7. #7
    الصورة الرمزية WADAH
    WADAH غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2015
    الإقامة
    تركيا
    المشاركات
    199

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة 2013Lemsantah مشاهدة المشاركة
    الرجاء التمعن في الموضوع ففيه اجابة اسئلتك الثلاث


    ولماذا لا اقبلها كان الافضل ان ابدا من المقال الاول وبما اننا في المقال العاشر لصديقي الكاتب الروسي فلاديمير بيرفنكو للتطوير الشبكات العميقة في لغة R
    سوف اترجمها تباعا انشاء الله
    كيف حددت التارغت للخلية العصبية (هذه المشكلة من أعقد المشاكل - وهي تقابل تقريبا في العمل اليدوي السؤال الذي يسأله كل الناس كيف أحدد الهدف (كم نقطة يعني ) ؟ يا أخي اشرح الموضوع خطوة خطوة - هل جربت الخلية بنفسك ؟ ضع نتائج لو تكرمت

  8. #8
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة 2013Lemsantah مشاهدة المشاركة
    والله عيب عربي لا يتقن كتابة لغته ويتهكم على ...قوقل... ؟راجع مشاركاتك قبل المشاركة
    بالنسبة للسؤال الثاني - عن طريق الدال ومكتبة مرفقين في المشاركة السابقة
    الموضوع مكون من عشر مقالات في اللغة الروسية كيف لا تريدني ان استعين بقوقل وانا احد اعضاء منتدى الترجمة لقوقل
    اتمنى من كل من يتقن لغة ان يشارك في المنتدى لاننا نساهم في تحسين الترجمة يوما عن يوم للذين لايتقنون اللغات
    سوء فهم ايضا
    اخي الموضوع جيد وغير مطروق هنا
    ولكن اللغة فعلا متعبة---كأنها ترجمة قوقل--قوقل نفسه مساعد ولكن لابد نراجعه

    مايخصني عربي قح
    كويس انك اقتسبت ردي قبل ان يم حذفه بسبب سوء فهم المشرف

  9. #9
    الصورة الرمزية 2013Lemsantah
    2013Lemsantah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    كيف حددت التارغت للخلية العصبية (هذه المشكلة من أعقد المشاكل - وهي تقابل تقريبا في العمل اليدوي السؤال الذي يسأله كل الناس كيف أحدد الهدف (كم نقطة يعني ) ؟ يا أخي اشرح الموضوع خطوة خطوة - هل جربت الخلية بنفسك ؟ ضع نتائج لو تكرمت
    يبدو انه يجب علي ترجمت المقال الاول لفهم بنية الشبكة العصبية العميقة بشكل جيد
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  10. #10
    الصورة الرمزية 2013Lemsantah
    2013Lemsantah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    سوف اجيب عن الاسئلة التي تؤكد لي ان صاحبها قرا الموضوع او المقالتين بتمعن يعني سؤال غبي لن اجيب عليه
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  11. #11
    الصورة الرمزية Abunawaf
    Abunawaf غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2017
    الإقامة
    السعودية
    المشاركات
    235

    افتراضي

    .. ويبقى قوقل معااااق .. كأني امام هندي . الموضوع دسم . لكن قوقل حوله عصيده ..

  12. #12
    الصورة الرمزية 2013Lemsantah
    2013Lemsantah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    هو في الحقيقة المشكل ليس في لغة قوقل هي ترجمة حرفية لمفردات بعظها اختصاصية اصلا ليست عربية الموضوع متطور جدا على عقول المبتدئين في البرمجة
    انما اردت ان اقول لكم ان علم البرمجيات اكبر من ميتاتريدر
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  13. #13
    الصورة الرمزية 2013Lemsantah
    2013Lemsantah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    اضغط على الصورة لعرض أكبر

الاســـم:	EURUSDH1.png
المشاهدات:	34
الحجـــم:	29.0 كيلوبايت
الرقم:	495699
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17