Программный код в Big data и Power law

В статье приводятся оригинальные модули Python и даётся краткое пояснение по их применению в задачах распределённой децентрализованной сети по типу блокчейн или, другими словами, в процессах самоорганизованной критичности (SOC). В научных публикациях чаще встречается физический термин SOC в качестве концепции, включающей процессы турбулентности, детонации, землетрясения, нейросети, фондовая волатильность, социальный рейтинг и другие.

Для процессов SOC характерно отсутствие управляющих параметров и масштабная инвариантность. Универсальность сложных процессов SOC со степенным законом Power law имеет тот же характер, как и универсальность простых линейных систем, не обладающих масштабной инвариантностью, по отношению к закону нормального распределения вероятности.

Зависимость от масштаба возникает при аналого-цифровом преобразовании битов в позиционную систему счисления и проявляется в законе нормального распределения вероятности в виде дисперсии и математического ожидания. Потеря масштабной инвариантности в позиционной системе счисления компенсируется приобретением принципа причинности. Например, в Древнем Риме, где была принята непозиционная система счисления (римские цифры), смогли вычислить, что «после того — не вследствие того» и удивились бы истории с падающим на Ньютона яблоком. Позиционная система счисления («а в попугаях-то я гораздо длиннее») не способна создавать империи, распределённые децентрализованные сети.

Значительные достижения в анализе Big data заставляют предположить связь с распределением вероятности Пуассона: чем больше данных, тем чаще должны встречаться пуассоновские события и вопрос лишь в поиске подходящей метрики и системы счисления.

В статье приводится программный модуль ab initio метрики SNR с оригинальным алгоритмом отношения сигнала к шуму или обратной дробной (фрактальной) энтропией 1/S. В модуле Standard_Poisson строится непозиционная двухмерная система счисления и через вызываемый модуль SNR вычисляется метрика. Распределение Пуассона строится в криволинейном пространстве с гиперболическими координатами. В стандартном модуле используется математический генератор случайных чисел и основным результатом является совпадение среднего значения с дисперсией. В экспериментальном модуле допустимо использование криптографического генератора случайных чисел и получение характеристик операционной системы конкретного компьютера на основе big data, через сравнение отклонений с результатами эталона, стандартного модуля. Например, определить показ видеороликов одновременно с работой криптографического генератора и т.п. Обрабатываться могут данные представленные и в позиционной (разрядной) системе счисления.

Для процессов SOC (турбулентности, детонации, пассивной радиолокации и т.п.) характерно чередование сжатия и разрежения, когда за достаточно короткий промежуток времени попадают пуассоновские события разрежения и сжатия. Таким образом, наиболее интересными событиями являются совпадения разрежения и сжатия. По столбцам данных строится точечная диаграмма, как на обложке статьи.

Закон странного распределения вероятности
Закон странного распределения вероятности

В общем, Power law является степенным законом распределения вероятности в одномерном криволинейном пространстве гиперболических координат со степенью Колмогорова (-5/3). Есть работа Милованова, где предсказывается появление нового трансцендентного числа С=1.327… в пространствах целой размерности от 2 до 5. В прямолинейном пространстве, где определяются экспериментальные данные, значение степени вычисляется в районе (-2.4). На «хвостах» степенного распределения Колмогорова расположилось распределение Пуассона редких случайных событий и как бы «держит» валидацию всего распределения в целом.

Выводы.

Закон нормального распределения вероятности: простые линейные системы, равномерная централизованная сеть, позиционная система счисления, зависимость от масштаба, принцип причинности, функциональный подход, метод оптимизации.

Закон странного распределения вероятности или Power law: сложные динамические системы с тенденцией к самоорганизации, распределённая децентрализованная сеть, непозиционная система счисления, масштабная инвариантность, нарушение принципа причинности, исключительно численные методы, метод критичности дробной (фрактальной) обратной энтропии.

Валидация измерений определяется тем или иным законом распределения. Для закона странного распределения вероятности валидация определяется совпадением среднего с дисперсией для редких случайных событий и степенью Колмогорова (-5/3) в гиперболических координатах распределения вероятности. В предлагаемом комплекте программ валидация основана на совпадении среднего и дисперсии для пуассоновских событий, что будет легко проверить.  Аналитический вид странного распределения вероятности для сложных систем в принципе невозможен.

Предполагается применение алгоритма в расчётах, как «чёрный ящик», где алгоритм помогает в обработке больших данных, без детального научного обоснования и пояснений. В связи с этим, ожидаемый уровень общения — «middle», 40+ лет.

Программный модуль метрика ab initio SNR

#Разработчики данного модуля: Владимиров Виталий Владимирович, Макарик Александр Анатольевич
#Адреса для связи: Alexandr Makarik 
import numpy as np
from numba import njit
import math
import matplotlib.pyplot as plt
from scipy.stats import norm

@njit(fastmath=True)
def calcChisl(m):
    n=m.size-1
    s=0
    for i in range (2, n - 1):
        s = s + m[i] * (2 * m[i] - m[i + 2] - m[i - 2])
        
    s = s + m[0] * (2 * m[0] - m[2] - m[n - 1])
    s = s + m[1] * (2 * m[1] - m[3] - m[n])

    s = s + m[n - 1] * (2 * m[n - 1] - m[0] - m[n - 3])
    s = s + m[n] * (2 * m[n] - m[1] - m[n - 2])
    return s
    
@njit(fastmath=True)
def calcZnam(m):
    n=m.size-1
    s=0
    for i in range (2, n - 1):
        s = s + m[i] * (6 * m[i] - 4 * m[i + 1] + m[i + 2] + m[i - 2] - 4 * m[i - 1])
        
    s = s + m[0] * (6 * m[0] - 4 * m[1] + m[2] + m[n - 1] - 4 * m[n])
    s = s + m[1] * (6 * m[1] - 4 * m[2] + m[3] + m[n] - 4 * m[0])

    s = s + m[n - 1] * (6 * m[n - 1] - 4 * m[n] + m[0] + m[n - 3] - 4 * m[n - 2])
    s = s + m[n] * (6 * m[n] - 4 * m[0] + m[1] + m[n - 2] - 4 * m[n - 1])
    return s

def calcSNR(arr):
    a=calcChisl(arr)/calcZnam(arr)
    return a
    
if __name__ == '__main__':
    print('Тест Нормального распределения SNR')
    for n in range(2,20):
        x_axis = np.arange(-n, n+1, 1)
        Y=norm.pdf(x_axis)
        S=calcSNR(Y)
        #plt.plot(x_axis, Y )
        #plt.title(calcSNR(Y))
        #plt.show()
        print(n,S)
        

Основной модуль Standard_Poisson; двухмерная непозиционная система счисления.

!!! Создать папку для результатов расчёта mining_simple идальнейшей обработке данных в Excel.

print("Загружаем библиотеки:")
print('Numpy')
import numpy as np
import os
print('MatplotLib')
import matplotlib.pyplot as plt
print('Math')
import math
from random import SystemRandom
import time
cryptogen=SystemRandom()
print('Загружаем авторский модуль SNR')
import SNR

n = 31                     # n - нечётное
myCompr = 2.6              # нижняя граница сжатия compression
myUnder = -2.2             # верхняя граница разрежения underpressure

allK=0
kCompr=0
kUnder=0
pathToOutDir=os.path.dirname(os.path.abspath(__file__))+"\\"

startTime=time.time()

resultCompr=[]
resultUnder=[]
timeMiningArray=[]
lastMiningCountCompr=0
lastMiningCountUnder=0
addedComprCount = 0
addedUnderCount = 0
lastTime = 0
sumSNRCompr = 0
sumSNRUnder = 0

uArr=np.array([])

#timeMiningArray.append(['Времени прошло','Число сжатий','Число разрежений','Сжатий в такте','Разрежений в такте','Мощность сжатия в такте','Мощность разрежения в такте'])

for l in range(500):  
    print('====',l,'====')
    np.random.seed(l)
    for j in range(1):
        passedTime = round((time.time()-startTime),5)
        addedComprCount = len(resultCompr)-lastMiningCountCompr
        addedUnderCount = len(resultUnder)-lastMiningCountUnder
        timeMiningArray.append([passedTime,len(resultCompr),len(resultUnder),addedComprCount,addedUnderCount,sumSNRCompr,sumSNRUnder])
        lastMiningCountCompr=len(resultCompr)
        lastMiningCountUnder=len(resultUnder)
        lastTime=passedTime
        print('===',j,'===',' Пр.',passedTime, 'сек.', 'А/П:',len(resultCompr),len(resultUnder),'Доб.(А/П):',addedComprCount,addedUnderCount,sumSNRCompr,sumSNRUnder)
        
        rndVectors = [np.random.randint(0,2,n)  for k in range(10**4)]
        rndVectors = [v for v in rndVectors if v.var() != 0]
        rollRndVectors=[]
        
        for v in rndVectors:
            try:
                rollMatr = np.array([np.roll(v,r) for r in range(n)])
                rollMatrInv = np.linalg.inv(rollMatr)
                rollVector = rollMatrInv[0]
                rollRndVectors.append(rollVector)
            except:
                pass
            finally:
                pass
        
        allK+=len(rndVectors)+len(rollRndVectors)
        rndSNRs=np.array([SNR.calcSNR(v) for v in rndVectors])
        rollSNRs=np.array([SNR.calcSNR(v) for v in rollRndVectors])
        X = rndSNRs
        Y = rollSNRs
        uArr = np.log(X/Y)*(1/2)            # Гиперболический угол      
        Compr = [v for v in uArr if v>myCompr]
        Under = [v for v in uArr if v

© Habrahabr.ru