მგრძნობელობის ანალიზი გამოიყენება დამოუკიდებელ ცვლადზე დამოუკიდებელი ფაქტორების კრებულის გავლენის დასადგენად გარკვეულ პირობებში.
ეს არის ძლიერი მიდგომა იმის დასადგენად, თუ როგორ გავლენას მოახდენს მოდელის გამომუშავებაზე მოდელის შეყვანები ზოგადად. ამ პოსტში მე მივცემ მგრძნობელობის ანალიზის სწრაფ მიმოხილვას SALib-ის გამოყენებით, Python-ის მგრძნობელობის ანალიზის უფასო პაკეტის გამოყენებით.
რიცხვითი მნიშვნელობა, რომელიც ცნობილია როგორც მგრძნობელობის ინდექსი, ხშირად წარმოადგენს თითოეული შეყვანის მგრძნობელობას. არსებობს მრავალი სახის მგრძნობელობის ინდექსი:
- პირველი რიგის ინდექსები: ითვლის ერთი მოდელის შეყვანის წვლილს გამომავალ დისპერსიაში.
- მეორე რიგის ინდექსები: ითვლის ორი მოდელის შეყვანის წვლილს გამომავალ დისპერსიაში.
- ჯამური რიგის ინდექსი: რაოდენობრივად ასახავს მოდელის შეყვანის წვლილს გამომავალ დისპერსიაში, რომელიც მოიცავს როგორც პირველი რიგის ეფექტებს (შეყვანის მერყეობა მარტო) და ნებისმიერი უმაღლესი რიგის ურთიერთქმედებებს.
რა არის SALib?
სალიბი არის პითონზე დაფუძნებული ღია ინსტრუმენტარიუმი მგრძნობელობის შეფასების გასაკეთებლად. მას აქვს განცალკევებული სამუშაო პროცესი, რაც იმას ნიშნავს, რომ ის არ ურთიერთქმედებს უშუალოდ მათემატიკურ ან გამოთვლით მოდელთან. ამის ნაცვლად, SALib არის პასუხისმგებელი მოდელის შეყვანის წარმოებაზე (ერთ-ერთი ნიმუშის ფუნქციის მეშვეობით) და მგრძნობელობის ინდექსების გამოთვლაზე (ერთი ანალიზის ფუნქციის მეშვეობით) მოდელის შედეგებიდან.
ტიპიური SALib მგრძნობელობის ანალიზი შედგება ოთხი ეტაპისგან:
- განსაზღვრეთ მოდელის შეყვანა (პარამეტრები) და ნიმუშის დიაპაზონი თითოეულისთვის.
- მოდელის შეყვანის შესაქმნელად, გაუშვით ნიმუშის ფუნქცია.
- შეაფასეთ მოდელი გენერირებული მონაცემების გამოყენებით და შეინახეთ მოდელის შედეგები.
- მგრძნობელობის ინდექსების გამოსათვლელად გამოიყენეთ ანალიზის ფუნქცია გამოსავალზე.
Sobol, Morris და FAST არის SALib-ის მიერ მოწოდებული მგრძნობელობის ანალიზის მხოლოდ რამდენიმე მეთოდი. ბევრი ფაქტორი გავლენას ახდენს იმაზე, თუ რომელი მიდგომაა საუკეთესო მოცემული განაცხადისთვის, როგორც ამას მოგვიანებით ვნახავთ. ამ დროისთვის, გახსოვდეთ, რომ თქვენ მხოლოდ ორი ფუნქციის გამოყენება გჭირდებათ, ნიმუში და ანალიზი, მიუხედავად იმისა, თუ რა ტექნიკას იყენებთ. ჩვენ გაგიძღვებით ძირითადი მაგალითის საილუსტრაციოდ, თუ როგორ გამოიყენოთ SALib.
SALib მაგალითი - Sobol' მგრძნობელობის ანალიზი
ამ მაგალითში ჩვენ განვიხილავთ იშიგამის ფუნქციის Sobol-ის მგრძნობელობას, როგორც ეს ნაჩვენებია ქვემოთ. მისი მაღალი არაწრფივობისა და არამონოტონურობის გამო, იშიგამის ფუნქცია ფართოდ გამოიყენება გაურკვევლობისა და მგრძნობელობის ანალიზის მეთოდოლოგიების შესაფასებლად.
ნაბიჯები მიდის შემდეგნაირად:
1. SALib-ის იმპორტი
პირველი ნაბიჯი არის საჭირო ბიბლიოთეკების დამატება. SALib-ის ნიმუში და ანალიზის ფუნქციები განსხვავებულია პითონის მოდულებში. სატელიტური ნიმუშის იმპორტი და Sobol-ის ანალიზის ფუნქციები, მაგალითად, ნაჩვენებია ქვემოთ.
ჩვენ ასევე ვიყენებთ Ishigami ფუნქციას, რომელიც ხელმისაწვდომია როგორც ტესტის ფუნქცია SALib-ში. და ბოლოს, ჩვენ იმპორტირებთ NumPy-ს, რადგან SALib იყენებს მას მოდელის შეყვანისა და გამოსავლების მატრიცაში შესანახად.
2. მოდელის შეყვანა
მოდელის შეყვანის შემდეგ უნდა განისაზღვროს. Ishigami ფუნქცია იღებს სამ შეყვანას: x1, x2 და x3. SALib-ში ჩვენ ვაშენებთ დიქტატს, რომელიც განსაზღვრავს შეყვანის რაოდენობას, მათ სახელებს და თითოეულ შეყვანის ლიმიტებს, როგორც ეს ქვემოთ ჩანს.
3. შექმენით ნიმუშები და მოდელი
შემდეგ ხდება ნიმუშების გენერირება. ჩვენ უნდა შევქმნათ ნიმუშები Saltelli-ის სემპლერის გამოყენებით, რადგან ვაკეთებთ Sobol-ის მგრძნობელობის ანალიზს. ამ შემთხვევაში, პარამეტრის მნიშვნელობები არის NumPy მატრიცა. ჩვენ შეგვიძლია დავაკვირდეთ, რომ მატრიცა არის 8000 3-ზე პარამის მნიშვნელობების.shape გაშვებით. Saltelli sampler-ით შეიქმნა 8000 ნიმუში. Saltelli-ის სემპლერი ქმნის ნიმუშებს, სადაც N არის 1024 (ჩვენ მიერ მოწოდებული პარამეტრი) და D არის 3. (მოდელის შეყვანის რაოდენობა).
როგორც უკვე აღვნიშნეთ, SALib არ არის ჩართული მათემატიკური ან გამოთვლითი მოდელის შეფასებაში. თუ მოდელი პითონშია დაწერილი, თქვენ, როგორც წესი, ჩაატარებთ თითოეული ნიმუშის შეყვანას და შეაფასებთ მოდელს:
ნიმუშების შენახვა შესაძლებელია ტექსტურ ფაილში, თუ მოდელი არ არის განვითარებული Python-ში:
თითოეული ხაზი param values.txt წარმოადგენს ერთ მოდელის შეყვანას. მოდელის გამომავალი უნდა იყოს შენახული სხვა ფაილში მსგავსი სტილით, თითოეულ სტრიქონზე ერთი გამომავალი. ამის შემდეგ, შედეგები შეიძლება დატვირთული იყოს:
ამ მაგალითში, ჩვენ ვაპირებთ გამოვიყენოთ Ishigami ფუნქცია SALib-დან. ეს ტესტის ფუნქციები შეიძლება შეფასდეს შემდეგნაირად:
4. ანალიზის ჩატარება
ჩვენ საბოლოოდ შეგვიძლია გამოვთვალოთ მგრძნობელობის ინდექსები მოდელის შედეგების პითონში ჩატვირთვის შემდეგ. ამ მაგალითში, ჩვენ გამოვიყენებთ sobol.analyze-ს პირველი, მეორე და ჯამური რიგის ინდექსების გამოსათვლელად.
Si არის პითონის ლექსიკონი, რომელსაც აქვს გასაღებები "S1", "S2", "ST", "S1 conf", "S2 conf" და "ST conf". _conf კლავიშები ინახავს ასოცირებულ ნდობის ინტერვალებს, რომლებიც ჩვეულებრივ დაყენებულია 95 პროცენტზე. ყველა ინდექსის გამოსატანად გამოიყენეთ საკვანძო სიტყვის პარამეტრი print to console=True. ალტერნატიულად, როგორც ილუსტრირებულია ქვემოთ, ჩვენ შეგვიძლია დავბეჭდოთ ინდივიდუალური მნიშვნელობები Si-დან.
ჩვენ ვხედავთ, რომ x1-ს და x2-ს აქვთ პირველი რიგის მგრძნობელობა, მაგრამ x3-ს არ აქვს პირველი რიგის ზემოქმედება.
თუ მთლიანი რიგის ინდექსები მნიშვნელოვნად აღემატება პირველი რიგის ინდექსებს, რა თქმა უნდა, უფრო მაღალი რიგის ურთიერთქმედება ხდება. ჩვენ შეგვიძლია დავინახოთ ეს უფრო მაღალი რიგის ურთიერთქმედებები მეორე რიგის ინდექსების დათვალიერებით:
ჩვენ შეგვიძლია დავაკვირდეთ, რომ x1 და x3 აქვთ მნიშვნელოვანი ურთიერთქმედება. ამის შემდეგ, შედეგი შეიძლება გარდაიქმნას Pandas DataFrame-ში შემდგომი შესწავლისთვის.
5. შეთქმულება
თქვენი მოხერხებულობისთვის, გათვალისწინებულია ძირითადი დიაგრამა. plot() ფუნქცია აწარმოებს matplotlib ღერძის ობიექტებს შემდგომი მანიპულირებისთვის.
დასკვნა
SALib არის დახვეწილი მგრძნობელობის ანალიზის ხელსაწყოები. SALib-ის სხვა ტექნიკა მოიცავს ფურიეს ამპლიტუდის მგრძნობელობის ტესტს (FAST), მორისის მეთოდს და დელტა-მომენტის დამოუკიდებელ საზომს. მიუხედავად იმისა, რომ ეს არის პითონის ბიბლიოთეკა, ის გამიზნულია ნებისმიერი ტიპის მოდელებთან მუშაობისთვის.
SALib გთავაზობთ ადვილად გამოსაყენებელ ბრძანების ხაზის ინტერფეისს მოდელის შეყვანის შესაქმნელად და მოდელის შედეგების შესაფასებლად. შეამოწმეთ SALib დოკუმენტაცია მეტი.
დატოვე პასუხი