ការវិភាគភាពរសើបត្រូវបានប្រើដើម្បីកំណត់ផលប៉ះពាល់នៃការប្រមូលផ្តុំនៃកត្តាឯករាជ្យលើអថេរអាស្រ័យក្រោមលក្ខខណ្ឌជាក់លាក់។
វាគឺជាវិធីសាស្រ្តដ៏រឹងមាំមួយសម្រាប់កំណត់ពីរបៀបដែលទិន្នផលរបស់ម៉ូដែលត្រូវបានប៉ះពាល់ដោយការបញ្ចូលរបស់ម៉ូដែលនៅក្នុងលក្ខខណ្ឌទូទៅ។ នៅក្នុងការប្រកាសនេះ ខ្ញុំនឹងបង្ហាញទិដ្ឋភាពទូទៅរហ័សនៃការវិភាគភាពរសើបដោយប្រើ SALib ដែលជាកញ្ចប់វិភាគភាពប្រែប្រួលរបស់ Python ដោយឥតគិតថ្លៃ។
តម្លៃជាលេខដែលគេស្គាល់ថាជាសន្ទស្សន៍ភាពប្រែប្រួល ជារឿយៗតំណាងឱ្យភាពប្រែប្រួលនៃធាតុបញ្ចូលនីមួយៗ។ មានប្រភេទសន្ទស្សន៍ភាពប្រែប្រួលជាច្រើនប្រភេទ៖
- សន្ទស្សន៍លំដាប់ទីមួយ៖ គណនាការរួមចំណែកនៃការបញ្ចូលគំរូតែមួយចំពោះការប្រែប្រួលលទ្ធផល។
- សន្ទស្សន៍លំដាប់ទីពីរ៖ គណនាការរួមចំណែកនៃធាតុបញ្ចូលគំរូពីរចំពោះភាពខុសគ្នានៃលទ្ធផល។
- លិបិក្រមលំដាប់សរុប៖ កំណត់បរិមាណការរួមចំណែករបស់ធាតុបញ្ចូលគំរូចំពោះភាពខុសគ្នានៃលទ្ធផល ដោយរួមបញ្ចូលទាំងផលប៉ះពាល់លំដាប់ទីមួយ (ការបញ្ចូលប្រែប្រួលតែមួយ) និងអន្តរកម្មលំដាប់ខ្ពស់ជាងណាមួយ។
តើ SALib ជាអ្វី?
សាលីប គឺផ្អែកលើ Python ប្រភពបើកចំហ កញ្ចប់ឧបករណ៍សម្រាប់ការវាយតម្លៃភាពរសើប។ វាមានលំហូរការងារដែលផ្ដាច់ចេញ ដែលមានន័យថាវាមិនមានអន្តរកម្មដោយផ្ទាល់ជាមួយគំរូគណិតវិទ្យា ឬការគណនាទេ។ ផ្ទុយទៅវិញ SALib ទទួលបន្ទុកក្នុងការផលិតធាតុបញ្ចូលគំរូ (តាមរយៈមុខងារគំរូមួយ) និងគណនាសន្ទស្សន៍ភាពប្រែប្រួល (តាមរយៈមុខងារវិភាគមួយ) ពីលទ្ធផលគំរូ។
ការវិភាគភាពប្រែប្រួល SALib ធម្មតាមានបួនជំហាន៖
- កំណត់ការបញ្ចូលគំរូ (ប៉ារ៉ាម៉ែត្រ) និងជួរគំរូសម្រាប់នីមួយៗ។
- ដើម្បីបង្កើតការបញ្ចូលគំរូ សូមដំណើរការមុខងារគំរូ។
- វាយតម្លៃគំរូដោយប្រើធាតុបញ្ចូលដែលបានបង្កើត និងរក្សាទុកលទ្ធផលគំរូ។
- ដើម្បីគណនាសន្ទស្សន៍ភាពប្រែប្រួល សូមប្រើមុខងារវិភាគលើលទ្ធផល។
Sobol, Morris, និង FAST គឺគ្រាន់តែជាវិធីសាស្រ្តវិភាគភាពប្រែប្រួលមួយចំនួនដែលផ្តល់ដោយ SALib។ កត្តាជាច្រើនមានឥទ្ធិពលលើវិធីសាស្រ្តណាដែលល្អបំផុតសម្រាប់កម្មវិធីដែលបានផ្តល់ឱ្យ ដូចដែលយើងនឹងឃើញនៅពេលក្រោយ។ សម្រាប់ពេលនេះ សូមចងចាំថា អ្នកគ្រាន់តែត្រូវប្រើមុខងារពីរប៉ុណ្ណោះ គំរូ និងការវិភាគ ដោយមិនគិតពីបច្ចេកទេសអ្វីដែលអ្នកប្រើ។ យើងនឹងណែនាំអ្នកតាមរយៈឧទាហរណ៍ជាមូលដ្ឋានមួយដើម្បីបង្ហាញពីរបៀបប្រើប្រាស់ SALib ។
ឧទាហរណ៍ SALib – Sobol' Sensitivity Analysis
ក្នុងឧទាហរណ៍នេះ យើងនឹងពិនិត្យមើលភាពប្រែប្រួលរបស់ Sobol នៃមុខងារ Ishigami ដូចដែលបានបង្ហាញខាងក្រោម។ ដោយសារភាពមិនច្បាស់លាស់ខ្ពស់ និងភាពមិនដូចគ្នានេះ មុខងារ Ishigami ត្រូវបានប្រើយ៉ាងទូលំទូលាយដើម្បីវាយតម្លៃវិធីសាស្ត្រវិភាគភាពមិនច្បាស់លាស់ និងភាពប្រែប្រួល។
ជំហានមានដូចខាងក្រោម៖
1. ការនាំចូល SALib
ជំហានដំបូងគឺត្រូវបន្ថែមបណ្ណាល័យដែលត្រូវការ។ គំរូ និងមុខងារវិភាគរបស់ SALib ត្រូវបានរក្សាទុកដោយឡែកនៅក្នុងម៉ូឌុល Python ។ ការនាំចូលគំរូផ្កាយរណប និងមុខងារវិភាគ Sobol ត្រូវបានបង្ហាញខាងក្រោម។
យើងក៏ប្រើមុខងារ Ishigami ដែលអាចប្រើបានជាមុខងារសាកល្បងនៅក្នុង SALib ។ ជាចុងក្រោយ យើងនាំចូល NumPy ខណៈដែល SALib ប្រើវាដើម្បីរក្សាទុកការបញ្ចូល និងលទ្ធផលគំរូនៅក្នុងម៉ាទ្រីស។
2. ការបញ្ចូលគំរូ
បន្ទាប់មកការបញ្ចូលគំរូត្រូវតែត្រូវបានកំណត់។ មុខងារ Ishigami ទទួលយកធាតុបញ្ចូលចំនួនបី៖ x1, x2, និង x3។ នៅក្នុង SALib យើងបង្កើតពាក្យបញ្ជាដែលបញ្ជាក់ចំនួននៃការបញ្ចូល ឈ្មោះរបស់ពួកគេ និងដែនកំណត់លើការបញ្ចូលនីមួយៗ ដូចដែលបានឃើញខាងក្រោម។
3. បង្កើតគំរូ និងគំរូ
បន្ទាប់មកគំរូត្រូវបានបង្កើត។ យើងត្រូវបង្កើតគំរូដោយប្រើសំណាក Saltelli ចាប់តាំងពីយើងកំពុងធ្វើការវិភាគពីភាពប្រែប្រួល Sobol ។ ក្នុងករណីនេះ តម្លៃប៉ារ៉ាមគឺជាម៉ាទ្រីស NumPy ។ យើងអាចសង្កេតឃើញថាម៉ាទ្រីសគឺ 8000 គុណនឹង 3 ដោយដំណើរការ param values.shape ។ គំរូ 8000 ត្រូវបានបង្កើតឡើងជាមួយនឹងគំរូ Saltelli ។ គំរូ Saltelli បង្កើតសំណាកដែល N គឺ 1024 (ប៉ារ៉ាម៉ែត្រដែលយើងបានផ្តល់) និង D គឺ 3. (ចំនួននៃការបញ្ចូលគំរូ) ។
ដូចដែលបានបញ្ជាក់ពីមុន SALib មិនចូលរួមក្នុងការវាយតម្លៃគំរូគណិតវិទ្យា ឬការគណនាទេ។ ប្រសិនបើគំរូត្រូវបានសរសេរនៅក្នុង Python នោះជាធម្មតា អ្នកនឹងធ្វើរង្វិលជុំតាមរយៈការបញ្ចូលគំរូនីមួយៗ ហើយវាយតម្លៃគំរូ៖
គំរូអាចត្រូវបានរក្សាទុកក្នុងឯកសារអត្ថបទ ប្រសិនបើគំរូមិនត្រូវបានបង្កើតឡើងនៅក្នុង Python៖
បន្ទាត់នីមួយៗនៅក្នុង param values.txt តំណាងឱ្យការបញ្ចូលគំរូមួយ។ លទ្ធផលរបស់ម៉ូដែលគួរតែត្រូវបានរក្សាទុកទៅឯកសារផ្សេងទៀតក្នុងរចនាប័ទ្មស្រដៀងគ្នា ជាមួយនឹងលទ្ធផលមួយនៅលើបន្ទាត់នីមួយៗ។ បន្ទាប់ពីនោះ លទ្ធផលអាចនឹងត្រូវបានផ្ទុកដោយ៖
ក្នុងឧទាហរណ៍នេះ យើងនឹងប្រើមុខងារ Ishigami ពី SALib ។ មុខងារតេស្តទាំងនេះអាចត្រូវបានវាយតម្លៃដូចខាងក្រោមៈ
4. អនុវត្តការវិភាគ
ទីបំផុតយើងអាចគណនាសន្ទស្សន៍ភាពប្រែប្រួលបានបន្ទាប់ពីផ្ទុកលទ្ធផលគំរូទៅក្នុង Python ។ ក្នុងឧទាហរណ៍នេះ យើងនឹងប្រើ sobol.analyze ដើម្បីគណនាសន្ទស្សន៍លំដាប់ទីមួយ ទីពីរ និងសរុប។
Si គឺជាវចនានុក្រម Python ដែលមានសោ “S1” “S2” “ST” “S1 conf” “S2 conf” និង “ST conf”។ គ្រាប់ចុច _conf មានចន្លោះពេលទំនុកចិត្តដែលទាក់ទងគ្នា ដែលជាទូទៅត្រូវបានកំណត់ទៅ 95 ភាគរយ។ ដើម្បីបញ្ចេញ សន្ទស្សន៍ទាំងអស់ ប្រើប៉ារ៉ាម៉ែត្រពាក្យគន្លឹះ បោះពុម្ពទៅកុងសូល=ពិត។ ជាជម្រើស ដូចដែលបានបង្ហាញខាងក្រោម យើងអាចបោះពុម្ពតម្លៃបុគ្គលពី Si ។
យើងអាចមើលឃើញថា x1 និង x2 មានភាពរសើបក្នុងការបញ្ជាទិញដំបូង ប៉ុន្តែ x3 ហាក់ដូចជាមិនមានផលប៉ះពាល់លើការបញ្ជាទិញដំបូងឡើយ។
ប្រសិនបើសន្ទស្សន៍លំដាប់សរុបមានទំហំធំជាងសន្ទស្សន៍លំដាប់ទីមួយ នោះអន្តរកម្មលំដាប់ខ្ពស់ពិតជាកើតឡើង។ យើងអាចមើលឃើញអន្តរកម្មលំដាប់ខ្ពស់ទាំងនេះដោយមើលសន្ទស្សន៍លំដាប់ទីពីរ៖
យើងអាចសង្កេតឃើញថា x1 និង x3 មានអន្តរកម្មសំខាន់ៗ។ បន្ទាប់ពីនោះ លទ្ធផលអាចនឹងត្រូវបានបំប្លែងទៅជា Pandas DataFrame សម្រាប់ការសិក្សាបន្ថែម។
5. គ្រោង
ដើម្បីភាពងាយស្រួលរបស់អ្នក គ្រឿងបរិក្ខារសម្រាប់ដាក់គំនូសតាងជាមូលដ្ឋានត្រូវបានផ្តល់ជូន។ អនុគមន៍ plot() ផលិតវត្ថុអ័ក្ស matplotlib សម្រាប់ការរៀបចំជាបន្តបន្ទាប់។
សន្និដ្ឋាន
SALib គឺជាកញ្ចប់ឧបករណ៍វិភាគភាពរសើបស្មុគ្រស្មាញ។ បច្ចេកទេសផ្សេងទៀតនៅក្នុង SALib រួមមាន Fourier Amplitude Sensitivity Test (FAST) Morris Method និង Delta-Moment Independent Measure។ ខណៈពេលដែលវាជាបណ្ណាល័យ Python វាមានបំណងដំណើរការជាមួយម៉ូដែលគ្រប់ប្រភេទ។
SALib ផ្តល់នូវចំណុចប្រទាក់បន្ទាត់ពាក្យបញ្ជាដែលងាយស្រួលប្រើសម្រាប់បង្កើតការបញ្ចូលគំរូ និងការវាយតម្លៃលទ្ធផលគំរូ។ ពិនិត្យមុនពេលចេញ ឯកសារ SALib ដើម្បីស្វែងយល់បន្ថែម។
សូមផ្ដល់យោបល់