IMBALANCED DATASET

Huseynov Ruslan
9 min readApr 15, 2024

--

Balanssız Data nədir?

Tutaq ki, biz Azərbaycanın şimal bölgəsi üzrə diş xəstəliklərinin olub-olmamasına dair 10000 nəfərdən ibarət məlumat dəsti topladıq.Topladığımız nümunə dəstindən qanda yodun az olmasına görə 1000 nəfər diş xəstəliklərinə tutulmuş,yerdə qalan 9000 nəfər isə sağlamdır.Buradan aydın şəkildə görünür ki,topladığımız məlumat dəstində diş xəstəliyi olan insanlarla olmayan insanlar arasında balanssız paylanma vardır.Biz bu məlumat dəstini iki sinifə ayırsaq, bir sinifin digər sinifdən daha çox üstünlük təşkil etdiyi belə məlumat dəstlərinə Balanssız məlumat dəstləri deyilir.

Balanssız məlumat dəstlərimizi necə idarə etməliyik ?

Biz bu topladığımız məlumat dəsti üzərində ML(Machine Learning) modeli qursaq yalnış təxmin etmək (predict) şansımız çox yüksəkdir.Qurduğumuz ML model bizə qeyri dəqiq nəticələr verəcəkdir.ML modelimizin düzgün təxmini üçün əvvəlcə biz datasetimizi düzgün bir şəkildə balanslı bir hala gətirməliyik.Balanssız məlumat dəstlərimizi idarə etmək və balanslaşdırmaq üçün ən məşhur üsullardan biri Yenidən Nümunə Götürməkdir(ReSampling).Yenidən nümunə götürmənin növləri aşağıdakılardır :

  1. Under-sampling methods
  2. Over-sampling methods
  3. Combination of over and under-sampling methods
  4. Ensemble methods

ReSampling növləri 4 kateqoriyaya bölünür.Hər biri ayrı-ayrılıqda geniş mövzuları əhatə edir.Çalışacam bu məqalədə Under-sampling method -lar barədə məlumat verim.

Imbalanced-learn python package

Under Sampling methodlarına keçməmişdən əvvəl sizlərə pythonun imblearn kitabxanası haqqında qısa məlumat vermək istəyirəm.Imbalanced-learn MİT lisenziyalıdır,açıq mənbəlidir(open source).Machine Learning kitabxanası olan scikit-learn -ə əsaslanır və balanssız datasetimiz üzərində uyğun metodu seçərək nümunələr üzərində balanslaşdırma apara bilərik.

Under-sampling methods

Biz datamıza Under sampling metodlarını tətbiq etdikdə bizim datamızda olan çoxluq sinifini(majority class) müxtəlif üsullarla azaltmaqla azlıq sinifinə(minority class) bərabərləşdirmək üçün istifadə edilir.Bu proses minority və majority class -lar balanslaşdırılana qədər davam etdirilir.Biz datamıza Under Samplingi tətbiq etmək üçün aşağıdakı metodlardan istifadə edə bilərik:

  1. Cluster Centroids
  2. Condensed Nearest Neighbour(CNN)
  3. Edited Nearest Neighbours(ENN)
  4. Repeared Edited Nearest Neighbours (RENN)
  5. AIIKNN
  6. Instance Hardness Threshold
  7. NearMiss
  8. Neighbourhood Cleaning Rule
  9. One Sided Selection
  10. Random Under Sampler
  11. TomekLinks

Mənfi cəhətləri :

Biz datamıza Under Sampling metodlarını tətbiq edərək data üzərində balanslaşdırılma aparsaq əldə etdiyimiz nümunələrin böyük bir qismini itiririk.Qeyd etsək ki,bu məlumatları toplayan zaman müxtəlif yollardan cə çox vəsaitdən istifadə edilibsə heş kəs bu nümunələrin itkisinə yol vermək istəməz.ML modelimizin düzgün qərar verməməsinə,performansının yüksək olmamasına səbəb ola bilər.Datamızda milyonlarla məlumatımız olduğu halda bu metodlardan istifadə etməyimiz məqsədə uyğun olar.

ClusterCentroids (CCMUT)

ClusterCentroids klasterləşdirmə üsulları ilə mərkəzlərə əsaslanan yeni dəst yaradaraq under-sampling methodunu həyata keçirir.Alqoritm olaraq KMeans-dən istifadə edir.Yəni majority class-da olan nümunələrin klasterlərini KMeans alqoritmasının klaster mərkəzi ilə əvəz etməklə data üzərində balanslaşdırma aparırıq.Yeni yaradılan dəst orijinal nümunələr əvəzinə KMeans methodunun mərkəzləri ilə sintez edilir.Nəticədə bu method ilə majority class dəyişdirilir minority class ilə olduğu kimi saxlanılır.Klasterləşdirmə nəzarətsiz öyrənmə( unsupervised learning) yanaşmasıdır.Lakin CCMUT yalnız klaster mərkəzini tapmaq konsepsiyasından istifadə edir.Klasterlər majority class -a aid məlumat nöqtələrini əhatə edərək yaradılır.Majority class-ın klaster mərkəzini tapdıqdan sonra klaster mərkəzinə ən uzaq olan klasterə aid nümunə ən əhəmiyyətsiz instansiya hesab olunur.Bunun əksi isə ən yaxın klasterə aid nümunə isə ən vacib nümunə hesab edilir.Biz aşağıdakı kimi ClusterCentroids-dən istifadə edə bilərik.

CondensedNearestNeighbour(CNN)

CNN metodu vasitəsiylə datasetimizi balanslaşdırarkən qatılaşdırılmış yaxın qonşu qaydasından istifadə edir.CNN ML modelimizin performasında heç bir itki ilə nəticələnməyən nümunələr tolusunun alt çoxluğunu axtarır,həmçinin buna minimum ardıcıl dəstdə deyilir.CNN 1-NN alqoritmindən istifadə edir.Əlimizdəki yığılmış balanssız datasetimizi düzgün təsnif edə bilən nümunələr alt dəsti yaradır.CNN -nin mənfi cəhətlərindən biri odurki nümunələr ilkin olaraq təsadüfi seçilir.Bu da öz növbəsində lazımsız nümunələrin saxlanması ilə nəticələnir.Bu problemi həll etmək üçün CNN Tomek Linksə uyğunlaşdırılaraq nümunələr götürülməlidir.

EditedNearestNeighbours(ENN)

EditedNearestNeighbours under sampling methodunun CNN methodundan fərqi CNN methodunda 1 ən yaxın qonşu(1-KNN) yanaşmasından istifadə edirdisə,ENN -də 3 ən yaxın qonşu(KNN,K=3) yanaşmasından istifadə edilir.Bu yanaşma ilk dəfə Dennis Wilson tərəfindən 1972-ci ildə “Redaktə edilmiş məlumatlardan istifadə edərək ən yaxın qonşu qaydalarının asimptopik xasələri” adlı məqaləsində təklif edilmişdir.Biz datamıza ENN -i tətbiq edərək datamızdaki majority class -da olan səhv təsnif edilən nümunələrin silinməsinə və düzgün təsnif edilənlərin qalmasına imkan yaradar.Qısaca ENN aşağıdakı ardıcıllıqla işləyir :

  1. Balanssız datasetimiz üçün 3 KNN alqoritmindən istifadə edirik
  2. Hər observation üçün 3 ən yaxın qonşusunu tapırıq
  3. Seçilən qonşuların razılığı əsasında observation-ları saxlayırıq və ya aradan qaldırırıq

RepeatEditedNearestNeighbours(RENN)

RepeatEditedNearestNeighbours methodu ENN kimi 3 ən yaxın qonşu yanaşmasından istifadə edir(KNN K=3).Lakin bu proses RENN-in “max_iter” parametri vasitəsiylə təkrarlanır.Biz bu parametrə müəyyən say daxil edərək prosesi həmin say qədər təkrarlayırıq.RENN aşağıdakı ardıcıllıqla işləyir :

  1. KNN alqoritmasından istifadə edir
  2. Hər obsevation üçün 3 ən yaxın qonşunu tapırıq
  3. Seçilən qonşuların razılığı əsasında observation-ları saxlayırıq və ya aradan qaldırırıq
  4. Prosesi təkrarlayırıq (Repeat)

RENN methodu ENN methodundan fərqli olaraq daha çox nümunə çıxarır.RENN methodu həmişə eyni sayda qonşu ilə KNN qurur.

AIIKNN

AIIKNN methodunun əsas prinsipi çoxluq təşkil edən majority class -dan qonşu sərhəddinə ən yaxın olan nümunələri çıxarmaqdır.AIIKNN methodunun iş prinsibi aşağıdakı kimidir :

  1. ENN methodunu təkrarlayaraq prosesə başlamaq
  2. Başlanğıcda ən yaxın 1 qonşunu taparaq prosesə başlayır
  3. Seçilən qonşuların razılığı əsasında observation-ları saxlayırıq və ya aradan qaldırırıq
  4. Hər iterasiyada KNN-ə 1 qonşu əlavə edir
  5. Qonşuların sayını kontrol edirik
  6. Ən sonda majority class minority class -la balanslaşdırılır

Bizim bu methoddan istifadə edərək datasetimizdə balanslaşdırma edərkən təyin etdiyimiz maksimum iterasiya yerinə yetdikdən sonra qonşuların sayını saxlayırıq və yaxudda ki, majority class minority class-la balanslaşdırıldıqda proses sonlandırılır.

InstancedHardnessThreshold

Sağdakı şəkildə göründüyü kimi 1-ci şəklimizdə majority və minority classlarımız üst -üstə (overlap) düşmür.Lakin 2-ci şəklimizdə class-lar üstə üstə düşür.Classların üst-üstə düşdüyü yerlər başqa sinifdən nümunələri təkrarladıqda baş verir.Datasetimizdə həm sinif balanssızlığı həmdəki siniflərin üst-üstə düşməsi baş verdikdə təsnifat problemi daha da çətinləşir.Biz bu problemi aradan qaldırmaq üçün InstancedHardnessThreshold metodundan istifadə edəcəyik.İHT sərt nümunələri çıxarmaqla datamızın balanssızlığını azaltmaq üçün ReSampling üsuludur.İHT metodunun aşağıdaki parametrləri mövcuddur :

  1. Estimator — Datamızda sərt nümunələrimizi(İH) qiymətləndirmək üçün öyrənmə alqoritmasıdır.Standart alqoritm olaraq RandomForest-dən istifadə edirik
  2. Sampling_strategy — Datamızdan nümunə götürmək üçün seçmə üsuludur
  3. Cv — Nümunələrimizin sərtliyini qiymətləndirərkən istifadə edəcəyimiz cross validation qatlarının sayıdır

Qısa olaraq deyə bilərik ki, İHT minority class nümunələri ilə üst-üstə düşən əksər sinif nümunələrinin çıxarılması yanaşması ilə kifayət qədər xüsusi nümunə götürmə üsuludur.

NearMiss

NearMiss methodu majority class nümunələrinin minority class nümunələrinə olan məsafəsinə əsaslanaraq nümunələrimizi seçən under-sampling methodudur.Bu methodun 3 versiyası mövcuddur : NearMiss-1, NearMiss-2, NearMiss-3. NearMiss methodunun işləmə prinsipi majority və minority class-ların paylanmasına baxaraq majority class-larımızdan nümunələrimizi təsadüfi silməklə həyata keçirir. Müxtəlif siniflərə aid nümunələr bir-birinə çox yaxın olduqda bu method daha böyük sinifin məlumat nümunələrini aradan qaldıraraq datatesimizdə olan balanssızlığı tarazlaşdırmağa çalışır.Bu method əvvəlcə minority classda olan nümunələrlə majority class-da olan nümunələr arasındakı ən yaxın məsafəni hesablayır.Sonra minority classa ən qısa məsafəyə malik olan majority class-da olan nümunələri silərək balansladırılmanı təmin edir.NearMiss methodunun versiyaları haqqında qısa məlumatı aşağıdakı kimi göstərmək olar :

  1. NearMiss 1 — Bu versiyada nümunələrimiz böyük paylanma və 3 ən yaxın kiçik paylanma arasında orta minimum məsafəninhesablanması ilə nümunələri balanslaşdırır.
  2. NearMiss 2 — Nümunələrimiz daha böyük paylanma və ən uzaq 3 kiçik paylanma arasında orta minimum məsafənin hesablanması ilə nümunələri balanslaşdırır.
  3. NearMiss 3 — Bu versiyada əsasən minority class nümunələri nəzərə alınaraq saxlanılır.Saxlanılan və daha böyük paylanma arasındakı məsafə götürülərək ən böyük məsafə aradan qaldırılır

NeighbourhoodCleaningRule(NCL)

NeighbourhoodCleaningRule qısaca NCL metodu lazımsız məlumatları silmək üçün CNN qaydasını və səs-küylü və qeyri-müəyyən nümunələri silmək üçün ENN qaydasından istifadə edən resampling üsuludur.NCL datasetimizdəki majority və minority class -larda olan nümunələri ilə ayrıca məşğul olur.NCL nümunələri silmək üçün ENN -dən istifadə edir.Təlim dəstimizdə hər bir nümunə üçün 3 ən yaxın qonşunu tapır.Nümunələr majority class -a aiddirsə və onun 3 ən yaxın qonşusu tərəfindən verilən təsnifat seçilmiş nümunənin sinifinin əksidirsə, seçilmiş nümunə silinir.Əgər seçilmiş nümunə minority class-a aiddirsə və onun 3 ən yaxın qonşusu tərəfindən səhv təsnif edilirsə, majority class-a aid olan ən yaxın qonşular silinir.NCL metodu One-Sided Selection metoduna çox bənzəyir.İki üsul arasındakı fərq NCL nümunələrin azaldılmasına daha az diqqət edir, bunun əvəzinə nümunələrin təmizlənməsinə fokuslanır. Bu metod ən yaxın 3 qonşu startegiyasından istifadə edərək mənfi lazımsız nümunələri aradan qaldırır.Bundan sonra təyin olunan qonşular vasitəsiylə majority classda olan hər bir müsbət nümunə tapılaraq aradan qaldırılır.

OneSidedSelection

Under Sampling metodu olan OneSidedSelection(OSS) TomekLinks və CNN metodlarını birləşdirən resampling metodlarından biridir.Datasetimizə OSS metodunu tətbiq etdikdə Tomek Links nümunə götürmə metodu kimi istifadə edilərək səs-küylü və sərhəddə olan majority class nümunələrini aradan qaldırır.CNN vasitəsiylə qərarlaşdırılmış sərhədddən uzaq olan majority classdan nümunələri çıxarmaq üçün istifadə edilir.OneSidedSelection metodunun işləmə prinsipini qısa olaraq aşağıdakı kimi qeyd etmək olar :

  1. Datasetimizdəki minority class -da toplanan bütün nümunələrdən yeni bir qrup yaradırıq.
  2. Sonrakı addım datasetimizdəki majority class-dan təsadüfi seçim(random) əsasında 1 obsevation əlavə edirik.
  3. Yeni yaratdığımız qrupu 1-KNN ilə train edirik.
  4. Qalan majority class -da olan obsevationlar üzrə proqnozlar veririk.
  5. Verilən proqnozlar sinifə uyğun gəlmirsə nümunələrimizi yenidən yaratdığımız qrupa göndəririk.
  6. Yaratdığımız yeni qrupda Tomek Linkləri tapırıq və silirik.

RandomUnderSampler

RandomUnderSampling metodu təsadüfi( random) olaraq Datasetimizdəki majority class -da olan nümunələri silərək nümunələri azaldaraq minority qrupa uyğun balanslaşdırır.RandomUnderSampling metodundan istifadə edərkən böyük miqdarda məlumat itkisi baş verir.Bu metodu datasetimizə tətbiq etdikdə minority və majority class-da olan nümunələr arasında qərar sərhəddini öyrənməyi çətinləşdirə bilər və bu ML modeli qurarkən təsnifat problemində itki ilə nəticələnə bilər.Bu metoddan istifadə datasetimizdə ciddi balanssızlıq olmasına baxmayaraq,minority class-ın kifayət qədər nümunələrə malik olduğu halda istifadəsi məqsədə uyğun olar.Qeyd etsək ki,bu məlumatları toplayan zaman müxtəlif yollardan və çox vəsaitdən istifadə edilibsə heç kəs bu nümunələrin itkisinə yol vermək istəməz.Datamızda milyonlarla nümunə məlumatımız olduğu halda bu methoddan istifadə etməyimiz daha məqsədə uyğun olar.

TomekLinks

TomekLinks nədir?

Əgər 2 nümunə ən yaxın qonşudursa və fərqli siniflərdədirlərsə onlar TomekLinksdir.Biz balanssız datasetimizə TomekLinks metodunu tətbiq edərək balanslaşdırma aparmaq istəsək aşağıdakı aradıcıllığı yerinə yetirməliyik :

Datasetimizdə majority və minority classlarda olan nümunələr arasında ən yaxın qonşu olanları tapırıq.

Məsəlçün :

Majority classımızda olan 1 nümunəmizi “a” ilə işarələyək, minority classımızda olan 1 nümunəni isə “b” ilə işarələyək.Datasetimizə bu metodu tətbiq etmək üçün “a”-nın ən yaxın qonşusu “b” olmalıdır və yaxuddakı bunun əksi baş verməlidir. Bu 2 observation ayrı -ayrı siniflərə aid olmalıdırlar.(minority və majority) Bu üsulla minority class nümunələri ilə majority class nümunələri arasında ən yaxın qonşu olan majority class observationları seçilib silinərək balanslaşdırma prosesini yerinə yetiririk.

Beləliklə Imbalanced Dataset problemlərinin həlli üçün 11 Under Sampling metodu barədə ətraflı məlumat verməyə çalışdım.Ümid edirəm oxuyanlar və bu sahədə çalışanlar üçün yararlı olar.Növbəti məqalələrdə görüşənədək.

--

--

Huseynov Ruslan
Huseynov Ruslan

Written by Huseynov Ruslan

Lead GIS engineer,Python Developer,Certified TensorFlow Developer

No responses yet