Original Title: A fast and effective approach for classification medical data sets
Source: doi.org/10.53894/ijirss.v6i3.1580
Disclaimer: Summary generated by AI based on the provided document. Please refer to the original paper for full scientific accuracy.

វិធីសាស្ត្រលឿននិងមានប្រសិទ្ធភាពសម្រាប់ការចាត់ថ្នាក់សំណុំទិន្នន័យវេជ្ជសាស្ត្រ

ចំណងជើងដើម៖ A fast and effective approach for classification medical data sets

អ្នកនិពន្ធ៖ Ivan Ivanov (Sofia University, Bulgaria), Borislava Toleva (Sofia University, Bulgaria), Vincent James Hooper (Prince Mohammad Bin Fahd University Al Khobar, Saudi Arabia)

ឆ្នាំបោះពុម្ព៖ 2023, International Journal of Innovative Research and Scientific Studies

វិស័យសិក្សា៖ Machine Learning

១. សេចក្តីសង្ខេបប្រតិបត្តិ (Executive Summary)

បញ្ហា (The Problem)៖ ការសិក្សានេះដោះស្រាយបញ្ហានៃភាពមិនមានតុល្យភាពចំណាត់ថ្នាក់ (Class imbalance) នៅក្នុងសំណុំទិន្នន័យវេជ្ជសាស្ត្រធំៗ ដែលជារឿយៗធ្វើឱ្យប៉ះពាល់ដល់ភាពត្រឹមត្រូវនៃម៉ូដែលទស្សន៍ទាយជំងឺផ្សេងៗ។

វិធីសាស្ត្រ (The Methodology)៖ អ្នកស្រាវជ្រាវបានស្នើវិធីសាស្ត្រកុំព្យូទ័រដ៏ងាយស្រួលនិងជាក់ស្តែងដោយប្រើប្រាស់មុខងារដែលមានស្រាប់នៅក្នុងកម្មវិធី Python ជំនួសឱ្យការប្រើប្រាស់ក្បួនអាល់កូរីតស្មុគស្មាញ ដើម្បីធ្វើឱ្យទិន្នន័យមានតុល្យភាព។

លទ្ធផលសំខាន់ៗ (The Verdict)៖

២. ការវិភាគលើប្រសិទ្ធភាព និងដែនកំណត់ (Performance & Constraints)

វិធីសាស្ត្រ (Method) គុណសម្បត្តិ (Pros) គុណវិបត្តិ (Cons) លទ្ធផលគន្លឹះ (Key Result)
Proposed Algorithm (Random Forest + Balanced Class Weight + Stratified Split)
ក្បួនអាល់កូរីតដែលបានស្នើ (ប្រើ Random Forest រួមជាមួយប៉ារ៉ាម៉ែត្រ 'balanced' និង Stratified Split)
មានភាពត្រឹមត្រូវខ្ពស់ ដោះស្រាយបញ្ហាទិន្នន័យអតុល្យភាពបានល្អ និងដំណើរការលឿនដោយមិនចាំបាច់សរសេរកូដស្មុគស្មាញ។ ទាមទារការកំណត់ប៉ារ៉ាម៉ែត្រឱ្យបានត្រឹមត្រូវដើម្បីទទួលបានលទ្ធផលល្អបំផុត ហើយនៅតែជាម៉ូដែល Machine Learning បុរាណ។ ទទួលបានភាពត្រឹមត្រូវ (Accuracy) 0.99 លើទិន្នន័យមហារីកសុដន់ និង 0.98 លើទិន្នន័យជំងឺទឹកនោមផ្អែម។
Standard ML Algorithms (Baseline without Stratification/Balancing)
ក្បួនអាល់កូរីត ML ស្តង់ដារ (មិនប្រើ Stratification ឬ Balancing)
ងាយស្រួលប្រើប្រាស់តាមលំនាំដើម (default) របស់កម្មវិធី។ លទ្ធផលវាយតម្លៃអាចមានភាពលម្អៀង (biased) ទៅរកក្រុមទិន្នន័យភាគច្រើន (majority class) ធ្វើឱ្យការទស្សន៍ទាយខុសលើក្រុមអ្នកជំងឺ។ ទទួលបាន Precision ទាបសម្រាប់ក្រុមភាគតិច (ឧ.ត្រឹម 0.57 ក្នុងទិន្នន័យជំងឺទឹកនោមផ្អែម)។
Advanced Resampling & Deep Learning (e.g., SMOTE, XGBoost, ANN)
វិធីសាស្ត្រ Advanced Resampling និង Deep Learning (ឧ. SMOTE, XGBoost, ANN)
អាចផ្តល់លទ្ធផលប្រកួតប្រជែងនិងរៀនលំនាំស្មុគស្មាញនៃទិន្នន័យបានល្អ (ឧទាហរណ៍ XGBoost)។ ស៊ីពេលកុំព្យូទ័រច្រើន ទាមទារការគណនាស្មុគស្មាញ និងត្រូវការជំនាញសរសេរកូដកម្រិតខ្ពស់។ ទទួលបាន Recall 96.75% និង Accuracy 97.19% សម្រាប់ XGBoost (ប្រកួតប្រជែងជាមួយវិធីដែលបានស្នើ)។

ការចំណាយលើធនធាន (Resource Cost)៖ វិធីសាស្ត្រនេះទាមទារធនធានកុំព្យូទ័រតិចតួចបំផុត ដោយសារវាប្រើប្រាស់មុខងារដែលមានស្រាប់នៅក្នុងកម្មវិធី Python ដោយមិនត្រូវការម៉ាស៊ីនកុំព្យូទ័រខ្នាតធំឡើយ។

៣. ការពិនិត្យសម្រាប់បរិបទកម្ពុជា/អាស៊ីអាគ្នេយ៍

ភាពលំអៀងនៃទិន្នន័យ (Data Bias)៖

ការសិក្សានេះប្រើប្រាស់សំណុំទិន្នន័យសាធារណៈពីមន្ទីរពេទ្យនៅប្រទេសអាល្លឺម៉ង់ (Frankfurt Diabetes) និងសហរដ្ឋអាមេរិក (Wisconsin Breast Cancer) ដែលភាគច្រើនតំណាងឱ្យប្រជាជនលោកខាងលិច។ ទិន្នន័យវេជ្ជសាស្ត្រនៅប្រទេសកម្ពុជាអាចមានលក្ខណៈខុសប្លែកពីនេះ ដូចជាអត្រាប្រេវ៉ាឡង់នៃជំងឺ របបអាហារ និងកត្តាហ្សែន។ ដូច្នេះ ការអនុវត្តម៉ូដែលនេះនៅកម្ពុជា ទាមទារឱ្យមានការសាកល្បងនិងកែសម្រួលលើទិន្នន័យក្នុងស្រុកជាមុនសិន។

លទ្ធភាពនៃការអនុវត្ត (Applicability)៖

វិធីសាស្ត្រនេះមានប្រយោជន៍ និងស័ក្តិសមខ្លាំងណាស់សម្រាប់វិស័យសុខាភិបាលនិងការស្រាវជ្រាវនៅកម្ពុជា ដោយសារវាងាយស្រួល ចំណាយតិច និងមានប្រសិទ្ធភាពខ្ពស់។

សរុបមក វិធីសាស្ត្រនេះផ្តល់នូវដំណោះស្រាយបច្ចេកវិទ្យាដ៏សាមញ្ញ និងមិនគិតថ្លៃ ដែលជួយលើកកម្ពស់សមត្ថភាពវិភាគទិន្នន័យវេជ្ជសាស្ត្រនៅក្នុងប្រទេសកំពុងអភិវឌ្ឍន៍ដូចជាកម្ពុជា។

៤. ផែនការសកម្មភាពសម្រាប់និស្សិត (Actionable Roadmap)

ដើម្បីអនុវត្តតាមការសិក្សានេះ និស្សិតគួរអនុវត្តតាមជំហានខាងក្រោម៖

  1. ជំហានទី១៖ សិក្សាមូលដ្ឋានគ្រឹះនៃ Python និងបណ្ណាល័យវិភាគទិន្នន័យ: និស្សិតត្រូវចាប់ផ្តើមរៀនសរសេរកូដ Python កម្រិតមូលដ្ឋាន និងស្វែងយល់ពីរបៀបប្រើប្រាស់បណ្ណាល័យ Scikit-learn និង Pandas ដើម្បីអាន និងរៀបចំទិន្នន័យសម្រាប់ការវិភាគ។
  2. ជំហានទី២៖ ប្រមូល និងរៀបចំសំណុំទិន្នន័យរោគវិនិច្ឆ័យ (Diagnostic Data): ទាញយកសំណុំទិន្នន័យសាធារណៈ (ឧទាហរណ៍ពី KaggleUCI Machine Learning Repository) ឬសហការជាមួយមន្ទីរពេទ្យដើម្បីប្រមូលទិន្នន័យអ្នកជំងឺ ដោយផ្តោតលើទិន្នន័យដែលមានលក្ខណៈអតុល្យភាព (Imbalanced data)។
  3. ជំហានទី៣៖ អនុវត្ត Stratified Split និង Class Weight: សរសេរកូដដើម្បីបំបែកទិន្នន័យហ្វឹកហាត់និងសាកល្បងដោយប្រើមុខងារ train_test_split ជាមួយនឹងប៉ារ៉ាម៉ែត្រ stratify=y។ បន្ទាប់មក បង្កើតម៉ូដែល (ឧ. RandomForestClassifier) ដោយបញ្ចូលប៉ារ៉ាម៉ែត្រ class_weight='balanced'
  4. ជំហានទី៤៖ វាយតម្លៃសមត្ថភាពរបស់ម៉ូដែល (Model Evaluation): ប្រើប្រាស់ Confusion Matrix និង Classification Report ដើម្បីគណនា Accuracy, Precision, Recall។ ត្រូវផ្តោតការយកចិត្តទុកដាក់លើតម្លៃ Recall នៃក្រុមភាគតិច (minority class) ដើម្បីប្រាកដថាម៉ូដែលមិនមានភាពលម្អៀង។
  5. ជំហានទី៥៖ សាកល្បងប្រៀបធៀបជាមួយម៉ូដែលផ្សេងៗ: អនុវត្តដំណើរការខាងលើដដែលៗលើម៉ូដែលផ្សេងទៀតដូចជា Logistic Regression និង Support Vector Machine (SVM) ដើម្បីស្វែងរកម៉ូដែលណាដែលផ្តល់លទ្ធផលល្អបំផុតសម្រាប់ទិន្នន័យជាក់លាក់របស់អ្នក។

៥. វាក្យសព្ទបច្ចេកទេស (Technical Glossary)

ពាក្យបច្ចេកទេស ការពន្យល់ជាខេមរភាសា (Khmer Explanation) និយមន័យសាមញ្ញ (Simple Definition)
class imbalance វាគឺជាស្ថានភាពនៅក្នុងសំណុំទិន្នន័យដែលក្រុមមួយមានចំនួនសមាជិកច្រើនលើសលប់ធៀបនឹងក្រុមមួយទៀត (ឧទាហរណ៍ ទិន្នន័យអ្នកមិនមានជំងឺ ៩៩% និងអ្នកមានជំងឺត្រឹម ១%) ដែលធ្វើឱ្យម៉ូដែលកុំព្យូទ័រងាយនឹងទស្សន៍ទាយត្រូវតែលើក្រុមភាគច្រើន។ ដូចជាសាលារៀនមួយដែលមានសិស្សប្រុស ៩៩នាក់ និងសិស្សស្រី ១នាក់ ធ្វើឱ្យគ្រូពិបាកក្នុងការរៀបចំសកម្មភាពដែលតម្រូវឱ្យមានតុល្យភាពយេនឌ័រ។
stratified train/test split គឺជាការបែងចែកសំណុំទិន្នន័យជាពីរចំណែក (មួយសម្រាប់បង្រៀនម៉ូដែល និងមួយទៀតសម្រាប់សាកល្បង) ដោយប្រព័ន្ធនឹងគណនាដើម្បីធានាថាសមាមាត្រនៃក្រុមនីមួយៗត្រូវបានរក្សាទុកឱ្យនៅដូចដើម មិនលម្អៀងទៅក្រុមណាមួយឡើយ។ ដូចជាការដួសសម្លមួយចានចេញពីឆ្នាំង ដោយប្រាកដថាអ្នកទទួលបានទាំងសាច់និងបន្លែក្នុងសមាមាត្រដូចគ្នានឹងអ្វីដែលមាននៅក្នុងឆ្នាំងទាំងមូល។
class_weight='balanced' ជាប៉ារ៉ាម៉ែត្រ (កូដបញ្ជា) មួយនៅក្នុងកម្មវិធី Python ដែលប្រាប់ម៉ូដែលឱ្យផ្តល់ទម្ងន់ ឬសារៈសំខាន់ខ្ពស់ជាងទៅលើក្រុមទិន្នន័យភាគតិច ដើម្បីប៉ះប៉ូវភាពខ្វះខាតចំនួនទិន្នន័យរបស់វា និងការពារកុំឱ្យម៉ូដែលមើលរំលងពួកគេ។ ដូចជាការផ្តល់ពិន្ទុគុណនឹងពីរដល់សិស្សខ្សោយនៅក្នុងការប្រកួត ដើម្បីជួយឱ្យពួកគេមានឱកាសប្រកួតប្រជែងស្មើភាពជាមួយសិស្សពូកែ។
Confusion matrix ជាតារាងម៉ាទ្រីសដែលបង្ហាញយ៉ាងលម្អិតពីលទ្ធផលនៃការទស្សន៍ទាយរបស់ម៉ូដែល ដោយបញ្ជាក់ពីចំនួនដងដែលវាទាយត្រូវពិតប្រាកដ និងចំនួនដងដែលវាទាយខុស (ទាយថាមានជំងឺ តែការពិតអត់, ឬទាយថាអត់ តែការពិតមាន) សម្រាប់ប្រភេទនីមួយៗ។ ដូចជារបាយការណ៍ប្រឡងដែលប្រាប់ច្បាស់ថា សិស្សឆ្លើយត្រូវប៉ុន្មានខ ឆ្លើយខុសប៉ុន្មានខ និងរំលងប៉ុន្មានខ ជាជាងការប្រាប់ត្រឹមតែពិន្ទុសរុប។
Recall ជារង្វាស់វាយតម្លៃមួយនៅក្នុង Machine Learning (ជួនកាលហៅថា Sensitivity) ដែលប្រាប់ថា ក្នុងចំណោមករណីវិជ្ជមានទាំងអស់ (ឧ. អ្នកដែលមានជំងឺពិតប្រាកដ) តើម៉ូដែលអាចរកឃើញ និងទស្សន៍ទាយត្រូវចំនួនប៉ុន្មានភាគរយ។ ដូចជាការវាយតម្លៃសំណាញ់ចាប់ត្រីមួយថាតើវាអាចចាប់ត្រីដែលមានក្នុងស្រះបានប៉ុន្មានក្បាល ហើយរបូតរត់រួចអស់ប៉ុន្មានក្បាល។
Random forest ជាក្បួនអាល់កូរីតដែលបង្កើតមែកធាងសម្រេចចិត្ត (Decision Trees) ជាច្រើន ហើយយកចម្លើយរួមពីមែកធាងទាំងអស់នោះមកបោះឆ្នោតជ្រើសរើសយកលទ្ធផលចុងក្រោយ ដើម្បីកាត់បន្ថយកំហុស និងបង្កើនភាពត្រឹមត្រូវខ្ពស់។ ដូចជាការសួរបញ្ជាក់ពីគ្រូពេទ្យ ១០នាក់ផ្សេងៗគ្នាដើម្បីរោគវិនិច្ឆ័យជំងឺមួយ ជាជាងជឿទៅលើការវិនិច្ឆ័យរបស់គ្រូពេទ្យតែម្នាក់ឯង។
cross validation ជាបច្ចេកទេសវាយតម្លៃម៉ូដែលដោយបែងចែកទិន្នន័យជាច្រើនផ្នែក ហើយឆ្លាស់គ្នាយកផ្នែកនីមួយៗមកធ្វើជាទិន្នន័យសាកល្បង ដើម្បីប្រាកដថាម៉ូដែលពិតជាមានសមត្ថភាពទស្សន៍ទាយបានត្រឹមត្រូវមែន មិនមែនកើតឡើងដោយចៃដន្យ។ ដូចជាការឱ្យសិស្សម្នាក់ធ្វើតេស្តសាកល្បង ៥ដងផ្សេងៗគ្នា ដោយប្រើវិញ្ញាសាខុសៗគ្នា ដើម្បីប្រាកដថាគាត់ពិតជាចេះមែន មិនមែនចេះតែទាយត្រូវ។

៦. ប្រធានបទពាក់ព័ន្ធ (Further Reading)

អត្ថបទដែលបានបោះពុម្ពនៅលើ KhmerResearch ដែលទាក់ទងនឹងប្រធានបទនេះ៖

ប្រធានបទ និងសំណួរស្រាវជ្រាវដែលទាក់ទងនឹងឯកសារនេះ ដែលអ្នកអាចស្វែងរកបន្ថែម៖