Sobes.tech
Middle

როგორ გავაკეთოთ რიცხვითი მნიშვნელობები ნორმალურ განაწილებაში და მინიმუმამდე დავიყვანოთ გამონაკლისების გავლენა?

sobes.tech AI

პასუხი AI-სგან

ნომრიული მონაცემების ნორმალურ განაწილებაზე მიცემისა და გამონაკლისების ზემოქმედების მინიმუმისთვის გამოიყენება რამდენიმე მიდგომა:

  1. მონაცემთა ტრანსფორმაციები:

    • ლოგარითმული ტრანსფორმაცია (log(x)) — ამცირებს ასიმეტრიულობას და წნეხს დიდ მნიშვნელობებს.
    • კვანძის ფესვი ან წინააღმდეგო ტრანსფორმაცია — ასევე ეხმარება განაწილების ნორმალიზებაში.
    • Box-Cox ტრანსფორმაცია — პარამეტრიული, რომელიც ირჩევს ოპტიმალურ პარამეტრს ნორმალურ განაწილებაზე მიუახლოვებისთვის.
    • Yeo-Johnson ტრანსფორმაცია — ანალოგი Box-Cox-ის, მუშაობს ასევე უარყოფით მნიშვნელობებთან.
  2. გამონაკლისების დამუშავება:

    • შეზღუდვა (capping) — მნიშვნელობების ზევით და ქვემოთ შეზღუდვა (მაგალითად, 1%-ისა და 99%-ის პერცენტილებზე).
    • გამონაკლისების შეცვლა — მაგალითად, მედიანით ან უახლოესი "ნორმალური" მნიშვნელობით.
    • მყარი მეთოდების გამოყენება სკალირებისთვის — მაგალითად, RobustScaler sklearn-ში, რომელიც იყენებს მედიანს და ინტერკარტილს.
  3. მასშტაბირება და ნორმალიზაცია:

    • ტრანსფორმაციების შემდეგ შეიძლება გამოიყენოს სტანდარტიზაცია (საშუალოს გამოთვლა და სტანდარტული გადანაწილების განაწილება) მონაცემების ნულოვანი საშუალო და ერთიანი განაწილებისთვის.

Python-ის და sklearn-ის ბიბლიოთეკის გამოყენებით მაგალითი:

from sklearn.preprocessing import PowerTransformer, RobustScaler
import numpy as np

# გამონაკლისებით მონაცემები
data = np.array([[1], [2], [3], [4], [100]])

# ნორმალურ განაწილებაზე მიუახლოვების ტრანსფორმაცია
pt = PowerTransformer(method='yeo-johnson')
ndata_transformed = pt.fit_transform(data)

# გამონაკლისების გათვალისწინებით სკალირება
scaler = RobustScaler()
ndata_scaled = scaler.fit_transform(data_transformed)

print(data_scaled)

ამგვარად, ტრანსფორმაციების და გამონაკლისების დამუშავების მეთოდების კომბინირებით, მონაცემებს შეიძლება მიეცეს უფრო ნორმალური განაწილება და შემცირდეს ექსტრემალური მნიშვნელობების ზეგავლენა.