การใช้ตัวกรองคาลมาน ปัญหาสมัยใหม่ของวิทยาศาสตร์และการศึกษา

ตัวกรองคาลมาน

คำชี้แจงของปัญหา

เรามาแสดงแทนด้วย x เคค่าที่เราจะวัดแล้วกรอง นี่อาจเป็นตำแหน่ง ความเร็ว ความเร่ง ความชื้น อุณหภูมิ ความดัน ฯลฯ

เริ่มต้นด้วย ตัวอย่างง่ายๆซึ่งจะนำเราไปสู่การกำหนดสูตร งานทั่วไป- ลองจินตนาการว่าเรามีวัตถุเคลื่อนที่ที่ควบคุมด้วยคลื่นวิทยุซึ่งสามารถเคลื่อนที่ไปข้างหน้าและข้างหลังได้เท่านั้น เราทราบน้ำหนักของวัตถุ รูปร่าง พื้นผิวที่วัตถุเคลื่อนที่ ฯลฯ คำนวณว่าจอยสติ๊กควบคุมส่งผลต่อความเร็วในการเคลื่อนที่อย่างไร โวลต์ เค .

รี 19 วัตถุที่กำลังเคลื่อนที่

จากนั้นพิกัดของวัตถุจะเปลี่ยนไปตามกฎหมาย:

x เค+1 = x เค +วี เค dt (3.7)

ในชีวิตจริง เราไม่สามารถคำนึงถึงการรบกวนเล็กๆ น้อยๆ ที่เกิดขึ้นกับวัตถุในการคำนวณของเราได้ (ลม ความไม่สม่ำเสมอของพื้นผิว สิ่งกีดขวาง) ความเร็วที่แท้จริงวัตถุจะแตกต่างจากวัตถุที่คำนวณได้ ตัวแปรสุ่มจะถูกเพิ่มทางด้านขวาของสมการที่เขียน โอ เค :

x เค+1 = x เค +วี เค ดีที +โอ เค (3.8)

เรามีการติดตั้งบนเว็บไซต์ เซ็นเซอร์ GPSซึ่งพยายามวัดพิกัดที่แท้จริง x เควัตถุ และแน่นอนว่าไม่สามารถวัดได้อย่างแม่นยำ แต่วัดโดยมีข้อผิดพลาด ชม. ซึ่งเป็นตัวแปรสุ่มเช่นกัน

เป็นผลให้เราได้รับข้อมูลที่ผิดพลาดจากเซ็นเซอร์:

z เค = x เค + ซ เค (3.9)

ปัญหาก็คือการรู้การอ่านเซ็นเซอร์ไม่ถูกต้อง z เคหาค่าประมาณที่ดีสำหรับพิกัดที่แท้จริงของวัตถุ x เค- เราจะแสดงการประมาณที่ดีนี้ว่า

ในการกำหนดปัญหาทั่วไปสำหรับการประสานงาน x เคสามารถตอบอะไรก็ได้ (อุณหภูมิ ความชื้น ฯลฯ) และเราหมายถึงสมาชิกที่รับผิดชอบในการควบคุมระบบจากภายนอกเป็น คุณ เค(ในตัวอย่างกับ object คุณ เค =v เค dt).

สมการของพิกัดและการอ่านเซ็นเซอร์จะมีลักษณะดังนี้:

x เค+1 = x เค +คุณ เค +o เค

z เค = x เค + ซ เค (3.10)

และสิ่งที่เรารู้:

· คุณ เคเป็นปริมาณที่ทราบซึ่งควบคุมวิวัฒนาการของระบบ เรารู้ได้จากแบบจำลองทางกายภาพที่เราสร้างขึ้น

ข้อผิดพลาดของโมเดล โอ เคและเซ็นเซอร์ผิดพลาด ชม. เค- ตัวแปรสุ่ม และกฎการจำหน่ายไม่ได้ขึ้นอยู่กับเวลา (ขึ้นอยู่กับจำนวนการวนซ้ำ เค).

· ค่าความผิดพลาดโดยเฉลี่ยเป็นศูนย์: อีโอ เค = อีซ เค = 0 .

· กฎการกระจายตัวของตัวแปรสุ่มนั้นอาจไม่เป็นที่รู้จักสำหรับเรา แต่เป็นการกระจายตัวและ โปรดทราบว่าความแปรปรวนไม่ได้ขึ้นอยู่กับ เคเพราะกฎการกระจายไม่ได้ขึ้นอยู่กับมัน

· สันนิษฐานว่าข้อผิดพลาดแบบสุ่มทั้งหมดเป็นอิสระจากกัน: ข้อผิดพลาดใดจะเกิดขึ้นในขณะนั้น เคเป็นอิสระจากข้อผิดพลาด ณ จุดอื่นโดยสิ้นเชิง เค".

เป็นที่น่าสังเกตว่างานการกรองไม่ใช่งานที่ราบรื่น เราไม่ได้พยายามทำให้ข้อมูลเซ็นเซอร์ราบรื่น แต่เราพยายามเพื่อให้ได้ค่าที่ใกล้เคียงที่สุดกับพิกัดจริง x เค .

อัลกอริธึมคาลมาน

เราจะโต้เถียงด้วยการอุปนัย ลองจินตนาการดูว่า เคในขั้นตอนที่ - เราได้พบค่าที่กรองแล้วจากเซ็นเซอร์ซึ่งใกล้เคียงกับพิกัดที่แท้จริงของระบบเป็นอย่างดี x เค- อย่าลืมว่าเรารู้สมการที่ควบคุมการเปลี่ยนแปลงในพิกัดที่ไม่รู้จัก:

x เค+1 = x เค +คุณ เค +o เค ,

ดังนั้นหากยังไม่ได้รับค่าจากเซนเซอร์ เราก็สามารถสรุปได้ว่าในขั้นตอนนั้น เค+1ระบบจะพัฒนาตามกฎหมายนี้และเซ็นเซอร์จะแสดงสิ่งที่ใกล้เคียง ขออภัยที่เรายังไม่สามารถพูดอะไรได้แม่นยำกว่านี้ ในทางกลับกันที่ขั้นตอน เค+1เราจะมีการอ่านเซ็นเซอร์ที่ไม่ถูกต้องในมือของเรา z เค+1 .

แนวคิดของคาลมานคือเพื่อให้ได้ค่าประมาณพิกัดที่แท้จริงที่ดีที่สุด x เค+1เราต้องเลือก ค่าเฉลี่ยสีทองระหว่างการอ่าน z เค+1เซ็นเซอร์ที่ไม่ถูกต้อง และ - การทำนายสิ่งที่เราคาดว่าจะเห็นจากเซ็นเซอร์นั้น เราจะให้น้ำหนักกับการอ่านเซ็นเซอร์ เคและน้ำหนักจะยังคงอยู่ตามค่าที่ทำนายไว้ ( 1-เค):

ค่าสัมประสิทธิ์ เคเรียกว่าสัมประสิทธิ์คาลมาน ขึ้นอยู่กับขั้นตอนการวนซ้ำ ดังนั้นการเขียนจะถูกต้องมากกว่า เค เค+1แต่สำหรับตอนนี้ เพื่อไม่ให้สูตรการคำนวณเกะกะ เราจะละดัชนีของมันไว้

เราต้องเลือกสัมประสิทธิ์คาลมาน เคจนเกิดผลเช่นนั้น ค่าที่เหมาะสมที่สุดพิกัดจะใกล้เคียงกับพิกัดจริงมากที่สุด x เค+1- ตัวอย่างเช่น หากเรารู้ว่าเซ็นเซอร์ของเราแม่นยำมาก เราก็จะไว้วางใจการอ่านค่าของมันมากขึ้นและให้ค่าดังกล่าว z เค+1น้ำหนักมากขึ้น ( เคใกล้ความสามัคคี) ในทางกลับกัน หากเซ็นเซอร์ไม่แม่นยำเลย เราจะมุ่งเน้นไปที่ค่าที่คาดการณ์ตามทฤษฎีมากขึ้น

โดยทั่วไปแล้วให้ค้นหา ค่าที่แน่นอนสัมประสิทธิ์คาลมาน เคคุณเพียงแค่ต้องลดข้อผิดพลาดให้เหลือน้อยที่สุด:

เราใช้สมการ (3.10) เพื่อเขียนนิพจน์ใหม่สำหรับข้อผิดพลาด:

การพิสูจน์:

ตอนนี้เราต้องหาคำตอบว่าการลดข้อผิดพลาดหมายความว่าอย่างไร ท้ายที่สุดแล้ว อย่างที่เราเห็น ข้อผิดพลาดนั้นเป็นตัวแปรสุ่มและรับค่าที่แตกต่างกันในแต่ละครั้ง

จริงๆ แล้วไม่มีแนวทางใดที่เหมาะกับทุกคนในการกำหนดความหมายของการมีข้อผิดพลาดน้อยที่สุด

เหมือนกับในกรณีของการกระจายตัว ตัวแปรสุ่มเมื่อเราพยายามประมาณความกว้างของลักษณะเฉพาะของการแพร่กระจาย เราจะเลือกเกณฑ์ที่ง่ายที่สุดสำหรับการคำนวณด้วยเช่นกัน เราจะลดค่าเฉลี่ยของข้อผิดพลาดกำลังสองให้เหลือน้อยที่สุด:

ลองเขียนนิพจน์สุดท้าย:

การพิสูจน์:

จากข้อเท็จจริงที่ว่าตัวแปรสุ่มทั้งหมดรวมอยู่ในนิพจน์ (5.13) สำหรับ เค+1มีความเป็นอิสระ โดยเป็นไปตามที่เงื่อนไข "กากบาท" ทั้งหมดมีค่าเท่ากับศูนย์: อี(โอ เค ชม. เค+1 ) = อี(อี เค โอ เค ) = อี(อี เค ชม. เค+1 ) =0.

อีกด้วย เอซ เค+1 =อีโอ เค =0 ดังนั้นสูตรสำหรับความแปรปรวนจะดูง่ายกว่ามาก:

นิพจน์ (3.15) ใช้เวลา ค่าต่ำสุดเมื่อ (เราถือเอาอนุพันธ์ให้เป็นศูนย์):

เราแทนที่ค่าของค่าสัมประสิทธิ์คาลมาน (5.17) ที่ย่อให้เล็กสุดลงในนิพจน์ (3.15) เราได้รับ:

ปัญหาของเราได้รับการแก้ไขแล้ว เราได้รับสูตรวนซ้ำ (3.18) เพื่อคำนวณค่าสัมประสิทธิ์คาลมาน การนำไปปฏิบัติจริงในภาคผนวก A

ข้าว. 20

หากปฏิบัติตามขั้นตอนการวนซ้ำ เคการเปลี่ยนแปลงค่าสัมประสิทธิ์คาลมาน เค เคจากนั้นจึงสามารถแสดงได้ว่าจะมีความเสถียรอยู่ที่ค่าที่แน่นอนเสมอ เค แทง- ตัวอย่างเช่น เมื่อข้อผิดพลาดรากกำลังสองของเซ็นเซอร์และแบบจำลองมีอัตราส่วน 10 ต่อ 1 กราฟของค่าสัมประสิทธิ์คาลมานซึ่งขึ้นอยู่กับขั้นตอนการวนซ้ำจะมีลักษณะดังนี้:


ข้าว. 21

แนวคิดหลักของตัวกรองคาลมานคือการหาค่าสัมประสิทธิ์ เคโดยค่าที่กรองจะเป็น:

โดยเฉลี่ยจะแตกต่างจากมูลค่าที่แท้จริงของพิกัดน้อยที่สุด x เค+1- เราจะเห็นว่าค่าที่กรองเป็นฟังก์ชันเชิงเส้นของการอ่านค่าเซ็นเซอร์ z เค+1และค่าที่กรองก่อนหน้า และค่าที่กรองก่อนหน้านี้คือ ฟังก์ชันเชิงเส้นจากการอ่านเซ็นเซอร์ z เคและค่าที่กรองก่อนหน้า และต่อไปเรื่อยๆ จนกว่าโซ่จะหมุนจนสุด นั่นคือค่าที่กรองจะขึ้นอยู่กับการอ่านค่าเซ็นเซอร์ก่อนหน้าทั้งหมดเป็นเส้นตรง:

ดังนั้นตัวกรองคาลมานจึงเรียกว่าตัวกรองเชิงเส้น

บังเอิญว่าฉันชอบอัลกอริธึมทุกประเภทที่มีพื้นฐานทางคณิตศาสตร์ที่ชัดเจนและสมเหตุสมผล) แต่บ่อยครั้งที่คำอธิบายของพวกเขาบนอินเทอร์เน็ตเต็มไปด้วยสูตรและการคำนวณมากเกินไป ความหมายทั่วไปอัลกอริทึมนั้นเป็นไปไม่ได้เลยที่จะเข้าใจ แต่การทำความเข้าใจแก่นแท้และหลักการทำงานของอุปกรณ์/กลไก/อัลกอริธึมนั้นสำคัญกว่าการท่องจำสูตรขนาดใหญ่มาก แม้ว่าจะเป็นเรื่องธรรมดาก็ตาม การจำสูตรหลายร้อยสูตรจะไม่ช่วย แต่อย่างใดหากคุณไม่รู้ว่าจะนำไปใช้อย่างไรและที่ไหน 😉 จริงๆ แล้วทั้งหมดนี้มีไว้เพื่ออะไร.. ฉันตัดสินใจสร้างคำอธิบายของอัลกอริทึมบางอย่างที่ ฉันต้องเผชิญในทางปฏิบัติ ฉันจะพยายามไม่คำนวณทางคณิตศาสตร์มากเกินไปเพื่อให้เนื้อหาเข้าใจและอ่านง่าย

และวันนี้เราจะมาพูดถึง ตัวกรองคาลมานเรามาดูกันว่ามันคืออะไร ทำไม และใช้งานอย่างไร

เริ่มจากตัวอย่างเล็กๆ น้อยๆ กันก่อน ให้เราต้องเผชิญกับภารกิจในการกำหนดพิกัดของเครื่องบินบิน ยิ่งกว่านั้น โดยธรรมชาติแล้ว พิกัด (มาแสดงแทนกัน) ควรถูกกำหนดให้แม่นยำที่สุดเท่าที่จะทำได้

เราติดตั้งเซ็นเซอร์บนเครื่องบินล่วงหน้า ซึ่งจะให้ข้อมูลตำแหน่งที่จำเป็นแก่เรา แต่เซ็นเซอร์ของเราก็ไม่สมบูรณ์เช่นเดียวกับทุกสิ่งในโลกนี้ ดังนั้นแทนที่จะเป็นค่าที่เราได้รับ:

ข้อผิดพลาดของเซ็นเซอร์อยู่ที่ไหนนั่นคือตัวแปรสุ่ม ดังนั้นจากการอ่านค่าอุปกรณ์วัดที่ไม่ถูกต้อง เราจะต้องได้ค่าพิกัด () ที่ใกล้เคียงกับตำแหน่งจริงของเครื่องบินมากที่สุด

ภารกิจได้รับการตั้งค่าแล้ว มาดำเนินการแก้ไขกันดีกว่า

แจ้งให้เราทราบการดำเนินการควบคุม () ซึ่งต้องขอบคุณเครื่องบินที่บิน (นักบินบอกเราว่าเขาดึงคันโยกตัวไหน 😉) จากนั้น เมื่อทราบพิกัดที่ขั้นตอนที่ k เราจะได้ค่าที่ขั้นตอน (k+1):

ดูเหมือนว่านี่คือสิ่งที่เราต้องการ! และไม่จำเป็นต้องใช้ตัวกรองคาลมานที่นี่ แต่ไม่ใช่ทุกสิ่งจะง่ายนัก... ในความเป็นจริง เราไม่สามารถคำนึงถึงทุกสิ่งได้ ปัจจัยภายนอกซึ่งส่งผลต่อการบิน ดังนั้น สูตรจึงมีรูปแบบดังนี้

โดยที่ข้อผิดพลาดเกิดจากอิทธิพลภายนอก ความไม่สมบูรณ์ของเครื่องยนต์ ฯลฯ

แล้วจะเกิดอะไรขึ้น? ที่ขั้นตอน (k+1) ประการแรก เรามีการอ่านเซ็นเซอร์ที่ไม่ถูกต้อง และประการที่สอง คือค่าที่คำนวณอย่างไม่ถูกต้องซึ่งได้มาจากค่าในขั้นตอนก่อนหน้า

แนวคิดของตัวกรองคาลมานคือการได้ค่าประมาณที่แม่นยำของพิกัดที่ต้องการ (สำหรับกรณีของเรา) จากค่าที่ไม่ถูกต้องสองค่า (โดยคำนึงถึงค่าสัมประสิทธิ์การถ่วงน้ำหนักที่แตกต่างกัน) โดยทั่วไป ค่าที่วัดได้อาจเป็นอะไรก็ได้ (อุณหภูมิ ความเร็ว...) นี่คือสิ่งที่เกิดขึ้น:

โดย การคำนวณทางคณิตศาสตร์เราสามารถรับสูตรในการคำนวณค่าสัมประสิทธิ์คาลมานในแต่ละขั้นตอน แต่ตามที่ตกลงกันไว้ตอนต้นของบทความ เราจะไม่ลงลึกในการคำนวณ โดยเฉพาะอย่างยิ่งเนื่องจากในทางปฏิบัติมีการพิสูจน์แล้วว่าค่าสัมประสิทธิ์คาลมานมีแนวโน้มที่จะ a ค่าที่แน่นอนเมื่อ k เพิ่มขึ้น เราได้รับการทำให้สูตรของเราง่ายขึ้นเป็นครั้งแรก:

ตอนนี้ สมมติว่าไม่มีความเกี่ยวข้องกับนักบิน และเราไม่ทราบการดำเนินการควบคุม ดูเหมือนว่าในกรณีนี้เราจะใช้ตัวกรองคาลมานไม่ได้ แต่ก็ไม่เป็นเช่นนั้น 😉 เราเพียง "โยน" สิ่งที่เราไม่รู้ออกจากสูตรแล้วจึง

เราได้รับสูตรคาลมานที่เรียบง่ายที่สุด ซึ่งถึงแม้จะมีการลดความซับซ้อนที่ "ยาก" เช่นนี้ แต่ก็สามารถรับมือกับงานของมันได้อย่างสมบูรณ์แบบ หากคุณนำเสนอผลลัพธ์แบบกราฟิก คุณจะได้สิ่งนี้:

หากเซ็นเซอร์ของเราแม่นยำมาก ค่าสัมประสิทธิ์การถ่วงน้ำหนัก K ควรจะใกล้เคียงกับความสามัคคีโดยธรรมชาติ หากสถานการณ์ตรงกันข้าม กล่าวคือ เซ็นเซอร์ของเราไม่ดีนัก K ก็ควรจะเข้าใกล้ศูนย์มากขึ้น

นั่นอาจเป็นทั้งหมด เช่นเดียวกับที่เราพบอัลกอริธึมการกรองคาลมาน! ฉันหวังว่าบทความนี้จะมีประโยชน์และเข้าใจได้ =)

ตัวกรองคาลมาน

ตัวกรองคาลมานถูกนำมาใช้กันอย่างแพร่หลายในงานวิศวกรรมและเศรษฐมิติ ตั้งแต่ระบบเรดาร์และการมองเห็นไปจนถึงการประมาณค่าพารามิเตอร์ของแบบจำลองเศรษฐศาสตร์มหภาค การกรองคาลมานเป็นส่วนสำคัญของทฤษฎีการควบคุมและมีบทบาทสำคัญในการสร้างระบบควบคุม เมื่อใช้ร่วมกับตัวควบคุมเชิงเส้น-กำลังสอง ตัวกรองคาลมานจะช่วยให้คุณสามารถแก้ปัญหาการควบคุมแบบเกาส์เซียนเชิงเส้น-กำลังสองได้ ตัวกรองคาลมานและตัวควบคุมกำลังสองเชิงเส้น - วิธีแก้ปัญหาที่เป็นไปได้ปัญหาพื้นฐานที่สุดในทฤษฎีการควบคุม

ในการใช้งานส่วนใหญ่ จำนวนพารามิเตอร์ที่กำหนดสถานะของวัตถุจะมากกว่าจำนวนพารามิเตอร์ที่สังเกตได้สำหรับการวัด การใช้แบบจำลองของวัตถุตามการวัดที่มีอยู่ ตัวกรองคาลมานทำให้สามารถประมาณค่าสถานะภายในได้

ตัวกรองคาลมานมีไว้สำหรับการประมาณค่าแบบวนซ้ำของเวกเตอร์สถานะของระบบไดนามิกที่รู้จักในนิรนัย นั่นคือสำหรับการคำนวณ สถานะปัจจุบันระบบจำเป็นต้องรู้การวัดกระแสด้วย สถานะก่อนหน้าตัวกรองนั้นเอง ดังนั้น ตัวกรองคาลมาน เช่นเดียวกับตัวกรองแบบเรียกซ้ำอื่นๆ จะถูกนำไปใช้ในช่วงเวลาหนึ่ง แทนที่จะเป็นการแสดงความถี่

ตัวอย่างที่ชัดเจนของความสามารถของตัวกรองคือการได้รับค่าประมาณตำแหน่งและความเร็วของวัตถุบางอย่างที่แม่นยำและอัปเดตอย่างต่อเนื่อง โดยอิงตามผลลัพธ์ของอนุกรมเวลาของการวัดตำแหน่งของวัตถุที่ไม่ถูกต้อง ตัวอย่างเช่น ในเรดาร์ ภารกิจคือการติดตามเป้าหมาย กำหนดตำแหน่ง ความเร็ว และความเร่ง ในขณะที่ผลการวัดมาถึงอย่างช้าๆ และมีเสียงดังมาก ตัวกรองคาลมานใช้แบบจำลองความน่าจะเป็นของไดนามิกเป้าหมายที่ระบุประเภทของการเคลื่อนที่ที่เป็นไปได้ของวัตถุ ซึ่งช่วยลดผลกระทบของเสียงรบกวนและรับ เกรดดีตำแหน่งของวัตถุ ณ เวลาปัจจุบัน อนาคต หรืออดีต

การแนะนำ

ตัวกรองคาลมานทำงานโดยใช้แนวคิดของเวกเตอร์สถานะระบบ (ชุดพารามิเตอร์ที่อธิบายสถานะของระบบ ณ จุดใดจุดหนึ่ง) และคำอธิบายทางสถิติ ในกรณีทั่วไป พลศาสตร์ของเวกเตอร์สถานะบางอย่างอธิบายได้จากความหนาแน่นของความน่าจะเป็นของการกระจายตัวของส่วนประกอบในแต่ละช่วงเวลา ถ้ามีอย่างแน่ชัด แบบจำลองทางคณิตศาสตร์ทำการสังเกตระบบตลอดจนแบบจำลองของการเปลี่ยนแปลงนิรนัยในพารามิเตอร์ของเวกเตอร์สถานะ (กล่าวคือในฐานะกระบวนการสร้างมาร์คอฟ) เราสามารถเขียนสมการสำหรับความหนาแน่นของความน่าจะเป็นหลังของเวกเตอร์สถานะได้ตลอดเวลา ที่ให้ไว้ สมการเชิงอนุพันธ์เรียกว่าสมการสตราโตโนวิช สมการสตราโตโนวิชไม่สามารถแก้ได้ในรูปแบบทั่วไป โซลูชันเชิงวิเคราะห์สามารถรับได้เฉพาะในกรณีที่มีข้อจำกัดหลายประการ (สมมติฐาน):

  • เกาส์เซียนิตีของความหนาแน่นของความน่าจะเป็นแบบนิรนัยและหลังของเวกเตอร์สถานะ ณ เวลาใดๆ (รวมถึงอันเริ่มต้นด้วย)
  • Gaussianity ของการสร้างเสียง
  • เกาส์เซียนิตีของสัญญาณรบกวนจากการสังเกต
  • ความขาวของสัญญาณรบกวนการสังเกต
  • ความเป็นเส้นตรงของแบบจำลองการสังเกต
  • ความเป็นเชิงเส้นของแบบจำลองของกระบวนการขึ้นรูป (ซึ่งจำได้ว่าต้องเป็นกระบวนการมาร์คอฟ)

ตัวกรองคาลมานแบบดั้งเดิมเป็นสมการสำหรับการคำนวณช่วงเวลาที่หนึ่งและที่สองของความหนาแน่นของความน่าจะเป็นด้านหลัง (ในแง่ของเวกเตอร์ของความคาดหวังทางคณิตศาสตร์และเมทริกซ์ของความแปรปรวน รวมถึงส่วนกลับ) ภายใต้ข้อจำกัดที่กำหนด เนื่องจากข้อเท็จจริงที่ว่าสำหรับความหนาแน่นของความน่าจะเป็นปกติ ความคาดหวังทางคณิตศาสตร์และเมทริกซ์การกระจายตัวจะกำหนดความหนาแน่นของความน่าจะเป็นอย่างสมบูรณ์ เราสามารถพูดได้ว่าตัวกรองคาลมานคำนวณความหนาแน่นของความน่าจะเป็นหลังของเวกเตอร์สถานะในแต่ละจุดในเวลา ซึ่งหมายความว่ามันอธิบายเวกเตอร์สถานะได้อย่างสมบูรณ์ว่าเป็นปริมาณเวกเตอร์แบบสุ่ม

ค่าที่คำนวณได้ของความคาดหวังทางคณิตศาสตร์เป็นการประมาณการที่เหมาะสมที่สุดตามเกณฑ์ของข้อผิดพลาดรูต - ค่าเฉลี่ย - กำลังสองซึ่งกำหนดการใช้งานอย่างแพร่หลาย

ตัวกรองคาลมานมีหลายประเภท ซึ่งแตกต่างกันในการประมาณและเทคนิคที่ต้องใช้เพื่อลดตัวกรองให้อยู่ในรูปแบบที่อธิบายไว้และลดขนาด:

  • ตัวกรองคาลมานแบบขยาย (EKF) การลดแบบจำลองการสังเกตแบบไม่เชิงเส้นและกระบวนการสร้างรูปร่างโดยใช้การทำให้เป็นเส้นตรงผ่านการขยายซีรี่ส์ของ Taylor
  • ตัวกรองคาลมานไร้กลิ่น (UKF) ใช้ในปัญหาที่การทำให้เป็นเส้นตรงอย่างง่ายนำไปสู่การทำลาย การเชื่อมต่อที่เป็นประโยชน์ระหว่างองค์ประกอบของเวกเตอร์สถานะ ในกรณีนี้ "การทำให้เป็นเส้นตรง" จะขึ้นอยู่กับการเปลี่ยนแปลงที่ไม่มีกลิ่น
  • ตัวกรองคาลมานทั้งมวล (EnKF) ใช้เพื่อลดมิติของปัญหา
  • ตัวเลือกที่เป็นไปได้โดยไม่เชิงเส้น ตัวกรองเพิ่มเติมซึ่งทำให้สามารถลดการสังเกตที่ไม่ใช่แบบเกาส์เซียนให้เหลือเพียงการสังเกตแบบปกติได้
  • มีตัวเลือกพร้อมตัวกรอง "ไวท์เทนนิ่ง" เพื่อให้คุณทำงานกับสัญญาณรบกวน "สี" ได้
  • ฯลฯ

แบบจำลองระบบไดนามิกที่ใช้

ตัวกรองคาลมานจะขึ้นอยู่กับระบบไดนามิกเชิงเส้นที่สุ่มตัวอย่างตามเวลา ระบบดังกล่าวจำลองโดยโซ่มาร์คอฟโดยใช้ตัวดำเนินการเชิงเส้นและเงื่อนไขที่มีการแจกแจงแบบปกติ สถานะของระบบอธิบายโดยเวกเตอร์ที่มีมิติจำกัด - เวกเตอร์สถานะ ในทุกจังหวะเวลา ตัวดำเนินการเชิงเส้นกระทำการกับเวกเตอร์สถานะและถ่ายโอนไปยังเวกเตอร์สถานะอื่น (การเปลี่ยนแปลงสถานะที่กำหนดขึ้น) เวกเตอร์บางตัวจะถูกเพิ่มเข้าไป เสียงปกติ(ปัจจัยสุ่ม) และในกรณีทั่วไป เป็นเวกเตอร์ควบคุมที่จำลองผลกระทบของระบบควบคุม ตัวกรองคาลมานสามารถมองได้ว่าคล้ายคลึงกับแบบจำลองมาร์คอฟที่ซ่อนอยู่ โดยมีความแตกต่างตรงที่ตัวแปรที่อธิบายสถานะของระบบเป็นองค์ประกอบของเซตจำนวนจริงที่ไม่มีที่สิ้นสุด (ตรงข้ามกับเซตของพื้นที่สถานะที่มีจำกัดในแบบจำลองมาร์คอฟที่ซ่อนอยู่) นอกจากนี้ โมเดลมาร์คอฟที่ซ่อนอยู่สามารถใช้การแจกแจงตามอำเภอใจสำหรับค่าเวกเตอร์สถานะที่ตามมา ซึ่งแตกต่างจากตัวกรองคาลมาน ซึ่งใช้แบบจำลองสัญญาณรบกวนแบบกระจายตามปกติ มีความสัมพันธ์ที่เข้มงวดระหว่างตัวกรองคาลมานและสมการแบบจำลองมาร์คอฟที่ซ่อนอยู่ บทวิจารณ์โมเดลเหล่านี้และโมเดลอื่นๆ จัดทำโดย Roweis และ Chahramani (1999)

เมื่อใช้ตัวกรองคาลมานเพื่อให้ได้ค่าประมาณของเวกเตอร์สถานะกระบวนการจากชุดการวัดที่มีสัญญาณรบกวน จำเป็นต้องแสดงแบบจำลอง กระบวนการนี้ตามโครงสร้างตัวกรอง-ในรูปแบบ สมการเมทริกซ์ บางประเภท- สำหรับทุกจังหวะ เคการทำงานของตัวกรองจำเป็นต้องกำหนดเมทริกซ์ตามคำอธิบายด้านล่าง: วิวัฒนาการของกระบวนการ เอฟ เค- เมทริกซ์การสังเกต ชม เค- เมทริกซ์ความแปรปรวนร่วมของกระบวนการ ถาม เค- การวัดเมทริกซ์ความแปรปรวนร่วมทางเสียง เค- เมื่อมีการกระทำควบคุม - เมทริกซ์ของค่าสัมประสิทธิ์ บี เค .

ภาพประกอบวิธีการทำงานของตัวกรอง เมทริกซ์จะถูกทำเครื่องหมายด้วยสี่เหลี่ยม วงรีทำเครื่องหมายเมทริกซ์ของการแจกแจงแบบปกติหลายตัวแปร (รวมถึงค่าเฉลี่ยและความแปรปรวนร่วม) เวกเตอร์จะถูกปล่อยทิ้งไว้โดยไม่มีวงกลม ในกรณีที่ง่ายที่สุด เมทริกซ์บางตัวจะไม่เปลี่ยนแปลงตามเวลา (ไม่ขึ้นอยู่กับดัชนี เค) แต่ยังคงใช้ตัวกรองในแต่ละรอบการทำงาน

โมเดลระบบ/กระบวนการถือว่าสถานะที่แท้จริงในขณะนั้น เคได้จากสภาวะที่แท้จริงในขณะนั้น เค−1 ตามสมการ:

,
  • เอฟ เค- เมทริกซ์วิวัฒนาการกระบวนการ/ระบบที่ส่งผลต่อเวกเตอร์ x เค−1 (เวกเตอร์สถานะในขณะนี้ เค−1 );
  • บี เค- เมทริกซ์ควบคุมซึ่งใช้กับเวกเตอร์ของการดำเนินการควบคุม คุณ เค ;
  • เค- กระบวนการสุ่มปกติที่ไม่มีความคาดหวังทางคณิตศาสตร์และเมทริกซ์ความแปรปรวนร่วม ถาม เคซึ่งอธิบายลักษณะสุ่มของวิวัฒนาการของระบบ/กระบวนการ:

ในขณะนี้ เคทำการสังเกต (การวัด) z เคเวกเตอร์สถานะที่แท้จริง x เคซึ่งสัมพันธ์กันโดยสมการ:

ที่ไหน ชม เค- เมทริกซ์การวัดที่เชื่อมต่อเวกเตอร์สถานะจริงและเวกเตอร์ของการวัดที่ถ่าย โวลต์ เค- เสียงเกาส์เซียนสีขาวของการวัดโดยไม่มีความคาดหวังทางคณิตศาสตร์และเมทริกซ์ความแปรปรวนร่วม เค :

สถานะเริ่มต้นและเวกเตอร์ของกระบวนการสุ่มในแต่ละรอบสัญญาณนาฬิกา ( x 0 , 1 , …, เค , โวลต์ 1 , …, โวลต์ เค) ถือว่าเป็นอิสระ

หลายคนมีจริง ระบบไดนามิกโมเดลนี้ไม่สามารถอธิบายได้อย่างแม่นยำ ในทางปฏิบัติ ไดนามิกที่ไม่คำนึงถึงในโมเดลอาจทำให้ประสิทธิภาพของตัวกรองลดลงอย่างมาก โดยเฉพาะอย่างยิ่งเมื่อทำงานกับสัญญาณอินพุตสุ่มที่ไม่รู้จัก นอกจากนี้ การเปลี่ยนแปลงที่ไม่คำนึงถึงในแบบจำลองอาจทำให้ตัวกรองไม่เสถียรได้ ในทางกลับกันเป็นอิสระ เสียงสีขาวเนื่องจากสัญญาณจะไม่นำไปสู่ความแตกต่างของอัลกอริธึม ปัญหาการแยกสัญญาณรบกวนจากการวัดออกจากไดนามิกที่ไม่ได้คำนึงถึงในแบบจำลองนั้นซับซ้อน ซึ่งแก้ไขได้โดยใช้ทฤษฎีระบบควบคุมที่แข็งแกร่ง

ตัวกรองคาลมาน

ตัวกรองคาลมานเป็นตัวกรองแบบเรียกซ้ำประเภทหนึ่ง ในการคำนวณการประเมินสถานะของระบบสำหรับรอบการทำงานปัจจุบันนั้นจำเป็นต้องมีการประเมินสถานะ (ในรูปแบบของการประเมินสถานะของระบบและการประมาณค่าข้อผิดพลาดในการกำหนดสถานะนี้) ที่ รอบการทำงานก่อนหน้าและการวัดที่รอบปัจจุบัน คุณสมบัตินี้แยกความแตกต่างจากตัวกรองแพ็คเก็ต ซึ่งต้องอาศัยความรู้เกี่ยวกับประวัติการวัดและ/หรือการประมาณค่าในระหว่างรอบการทำงานปัจจุบัน นอกจากนี้ ด้วยสัญลักษณ์ เราจะเข้าใจการประมาณค่าของเวกเตอร์ที่แท้จริงในขณะนี้ nโดยคำนึงถึงการวัดตั้งแต่เริ่มงานจนถึง รวมอยู่ด้วย

สถานะตัวกรองถูกกำหนดโดยตัวแปรสองตัว:

การวนซ้ำตัวกรองคาลมานแบ่งออกเป็นสองระยะ: การประมาณค่าและการแก้ไข ในระหว่างการคาดการณ์ ตัวกรองจะได้รับ การประเมินเบื้องต้นสถานะของระบบ (ในวรรณคดีภาษารัสเซียมักแสดงแทน ซึ่งหมายถึง "การประมาณค่า" และ เค- จำนวนรอบสัญญาณนาฬิกาที่ได้รับ) สำหรับขั้นตอนปัจจุบันตามการประเมินขั้นสุดท้ายของสถานะจากขั้นตอนก่อนหน้า (หรือการประมาณการเบื้องต้นสำหรับรอบสัญญาณนาฬิกาถัดไปตามการประเมินขั้นสุดท้ายของขั้นตอนปัจจุบัน ขึ้นอยู่กับ การตีความ) การประมาณเบื้องต้นนี้เรียกอีกอย่างว่าการประมาณค่าเบื้องต้นของรัฐ เนื่องจากไม่ได้มาจากการสังเกตขั้นตอนที่เกี่ยวข้อง ในขั้นตอนการแก้ไข การประมาณค่าเบื้องต้นจะเสริมด้วยการวัดปัจจุบันที่เกี่ยวข้องเพื่อแก้ไขการประมาณค่า การประมาณการที่ปรับปรุงแล้วเรียกอีกอย่างว่าการประมาณค่าสถานะภายหลัง หรือเรียกง่ายๆ ว่าการประมาณค่าเวกเตอร์สถานะ โดยทั่วไปแล้ว ทั้งสองระยะนี้จะสลับกัน: การประมาณค่าจะดำเนินการตามผลการแก้ไขจนกระทั่งการสังเกตครั้งถัดไป และการแก้ไขจะดำเนินการร่วมกับการสังเกตที่มีอยู่ในขั้นตอนถัดไป เป็นต้น อย่างไรก็ตาม การพัฒนาเหตุการณ์อื่นเป็นไปได้ หากสำหรับ เหตุผลบางประการที่การสังเกตกลายเป็นไม่พร้อมใช้งาน จากนั้นขั้นตอนการแก้ไขอาจถูกข้ามและคาดการณ์จากการประมาณการที่ยังไม่ได้ปรับปรุง (การประมาณค่าแบบนิรนัย) ในทำนองเดียวกัน หากการวัดอิสระใช้ได้เฉพาะในบางรอบการทำงาน การแก้ไขยังคงเป็นไปได้ (โดยปกติจะใช้เมทริกซ์การสังเกตที่แตกต่างกัน ชม เค ).

ขั้นตอนการอนุมาน

ขั้นตอนการแก้ไข

ส่วนเบี่ยงเบนที่ได้รับในขั้นตอน เคข้อสังเกตจากการสังเกตที่คาดหวังจากการประมาณค่า:
เมทริกซ์ความแปรปรวนร่วมสำหรับเวกเตอร์ส่วนเบี่ยงเบน (เวกเตอร์ข้อผิดพลาด):
เมทริกซ์อัตราขยายที่เหมาะสมที่สุดของคาลมาน สร้างขึ้นบนพื้นฐานของเมทริกซ์ความแปรปรวนร่วมของการประมาณค่าที่มีอยู่ของเวกเตอร์สถานะและการวัดที่ได้รับ (ผ่านเมทริกซ์ความแปรปรวนร่วมของเวกเตอร์ส่วนเบี่ยงเบน):
การแก้ไขการประมาณค่าเวกเตอร์สถานะที่ได้รับก่อนหน้านี้ - รับค่าประมาณของเวกเตอร์สถานะระบบ:
การคำนวณเมทริกซ์ความแปรปรวนร่วมสำหรับการประมาณค่าเวกเตอร์สถานะระบบ:

นิพจน์สำหรับเมทริกซ์ความแปรปรวนร่วมของการประมาณค่าเวกเตอร์สถานะระบบจะใช้ได้เฉพาะเมื่อใช้เวกเตอร์สัมประสิทธิ์ที่เหมาะสมที่สุดที่กำหนดเท่านั้น โดยทั่วไป สำนวนนี้มีรูปแบบที่ซับซ้อนกว่า

ค่าคงที่

หากแบบจำลองมีความแม่นยำอย่างแน่นอนและมีเงื่อนไขเริ่มต้นและระบุไว้อย่างครบถ้วน ค่าต่อไปนี้จะถูกเก็บรักษาไว้หลังจากการวนซ้ำของตัวกรองจำนวนเท่าใดก็ได้ - ค่าเหล่านี้จะไม่แปรเปลี่ยน:

ความคาดหวังทางคณิตศาสตร์ของการประมาณและการประมาณค่าของเวกเตอร์สถานะระบบ เมทริกซ์ข้อผิดพลาดเป็นเวกเตอร์ว่าง:

ความคาดหวังทางคณิตศาสตร์อยู่ที่ไหน

เมทริกซ์ความแปรปรวนร่วมที่คำนวณได้ของการประมาณค่า การประมาณสถานะระบบ และเวกเตอร์ข้อผิดพลาดเกิดขึ้นพร้อมกับเมทริกซ์ความแปรปรวนร่วมที่แท้จริง:

ตัวอย่างการสร้างตัวกรอง

ลองจินตนาการถึงรถเข็นที่ยืนอยู่บนรางที่ยาวเป็นอนันต์โดยไม่มีการเสียดสี เริ่มแรกจะอยู่ที่ตำแหน่ง 0 แต่ภายใต้อิทธิพลของปัจจัยสุ่มอาจมีการเร่งความเร็วแบบสุ่ม เราวัดตำแหน่งของรถเข็นทุกๆ ∆ ทีวินาทีแต่การวัดไม่แม่นยำ เราต้องการทราบตำแหน่งโดยประมาณของรถเข็นและความเร็ว ลองใช้ตัวกรองคาลมานกับปัญหานี้และพิจารณาเมทริกซ์ที่จำเป็นทั้งหมด

ในปัญหานี้เมทริกซ์ เอฟ , ชม , และ ถามไม่ต้องขึ้นอยู่กับเวลาเราจะละเว้นดัชนีของพวกเขา นอกจากนี้ เราไม่ได้ควบคุมรถเข็น ดังนั้นเมทริกซ์ควบคุม บีไม่มา.

พิกัดและความเร็วของรถเข็นอธิบายด้วยเวกเตอร์ในปริภูมิเชิงเส้น

ความเร็วอยู่ที่ไหน (อนุพันธ์อันดับหนึ่งของพิกัดเทียบกับเวลา)

เราจะถือว่าระหว่าง ( เค−1)th และ เคในรอบที่ 3 รถเข็นจะเคลื่อนที่ด้วยความเร่งคงที่ เคกระจายตามกฎปกติโดยไม่มีความคาดหวังทางคณิตศาสตร์และส่วนเบี่ยงเบนมาตรฐานเป็นศูนย์ σก- ตามกลศาสตร์ของนิวตัน เราสามารถเขียนได้

.

เมทริกซ์ความแปรปรวนร่วมของเอฟเฟกต์แบบสุ่ม

(σ - สเกลาร์)

ในแต่ละขั้นตอนของการทำงาน จะมีการวัดตำแหน่งของรถเข็น ให้เราถือว่าการวัดมีข้อผิดพลาด วีเคมี การกระจายตัวแบบปกติโดยไม่มีความคาดหวังทางคณิตศาสตร์และส่วนเบี่ยงเบนมาตรฐาน ซิ- แล้ว

และเมทริกซ์ความแปรปรวนร่วมของสัญญาณรบกวนจากการสังเกตมีรูปแบบ

.

ตำแหน่งเริ่มต้นรถเข็นเป็นที่รู้จักกันดี

, .

หากทราบตำแหน่งและความเร็วของรถเข็นเพียงโดยประมาณเท่านั้น ก็สามารถเริ่มต้นเมทริกซ์การกระจายตัวได้เพียงพอ จำนวนมาก เพื่อให้ตัวเลขเกินความแปรปรวนของการวัดพิกัด

, .

ในกรณีนี้ ในรอบแรกของการทำงาน ตัวกรองจะใช้ผลการวัดที่มีน้ำหนักมากกว่าข้อมูลเบื้องต้นที่มีอยู่

การหาสูตร

เมทริกซ์ความแปรปรวนร่วมของการประมาณค่าเวกเตอร์สถานะ

ตามคำจำกัดความของเมทริกซ์ความแปรปรวนร่วม เค|เค

แทนที่นิพจน์เพื่อประมาณค่าเวกเตอร์สถานะ

และเขียนนิพจน์สำหรับเวกเตอร์ข้อผิดพลาด

และเวกเตอร์การวัด

เรานำเวกเตอร์ข้อผิดพลาดการวัดออกมา โวลต์ เค

เนื่องจากเวกเตอร์ข้อผิดพลาดในการวัด โวลต์ เคไม่มีความสัมพันธ์กับข้อโต้แย้งอื่นๆ เราจะได้นิพจน์มา

ตามคุณสมบัติความแปรปรวนร่วมของเวกเตอร์ การแสดงออกนี้ถูกแปลงเป็นรูปแบบ

แทนที่นิพจน์สำหรับเมทริกซ์ความแปรปรวนร่วมของการประมาณค่าเวกเตอร์สถานะด้วย เค|เค−1 และการหาเมทริกซ์ความแปรปรวนร่วมของสัญญาณรบกวนจากการสังเกต เคเราได้รับ

นิพจน์ผลลัพธ์ใช้ได้สำหรับเมทริกซ์สัมประสิทธิ์ใดก็ได้ แต่ถ้าเป็นเมทริกซ์สัมประสิทธิ์ที่เหมาะสมที่สุดของคาลมาน นิพจน์สำหรับเมทริกซ์ความแปรปรวนร่วมนี้สามารถถูกทำให้ง่ายขึ้นได้

เมทริกซ์อัตราขยายที่เหมาะสมที่สุด

ตัวกรองคาลมานจะลดผลรวมของกำลังสองของความคาดหวังทางคณิตศาสตร์ของข้อผิดพลาดในการประมาณค่าเวกเตอร์สถานะ

เวกเตอร์ข้อผิดพลาดในการประมาณค่าเวกเตอร์สถานะ

ภารกิจคือการลดผลรวมของความคาดหวังทางคณิตศาสตร์ของกำลังสองของส่วนประกอบของเวกเตอร์ที่กำหนดให้เหลือน้อยที่สุด

,

ซึ่งเทียบเท่ากับการลดร่องรอยของเมทริกซ์ความแปรปรวนร่วมของการประมาณค่าเวกเตอร์สถานะให้เหลือน้อยที่สุด เค|เค- ให้เราแทนที่นิพจน์ที่มีอยู่เป็นนิพจน์สำหรับเมทริกซ์ความแปรปรวนร่วมของการประมาณค่าเวกเตอร์สถานะและทำให้เป็นกำลังสองที่สมบูรณ์:

โปรดทราบว่าเทอมสุดท้ายคือเมทริกซ์ความแปรปรวนร่วมของตัวแปรสุ่มบางตัว ดังนั้นการติดตามของค่าจึงไม่เป็นค่าลบ การติดตามขั้นต่ำจะเกิดขึ้นได้เมื่อเทอมสุดท้ายถูกตั้งค่าเป็นศูนย์:

มีระบุไว้ว่า เมทริกซ์ที่กำหนดเป็นค่าที่ต้องการ และเมื่อใช้เป็นเมทริกซ์ของสัมประสิทธิ์ในตัวกรองคาลมาน จะลดผลรวมของข้อผิดพลาดกำลังสองเฉลี่ยในการประมาณค่าเวกเตอร์สถานะ

เมทริกซ์ความแปรปรวนร่วมของการประมาณค่าเวกเตอร์สถานะโดยใช้เมทริกซ์สัมประสิทธิ์ที่เหมาะสมที่สุด

นิพจน์สำหรับเมทริกซ์ความแปรปรวนร่วมของการประมาณค่าเวกเตอร์สถานะ เค|เคเมื่อใช้เมทริกซ์สัมประสิทธิ์ที่เหมาะสมที่สุดจะอยู่ในรูปแบบ:

สูตรนี้ใช้การคำนวณง่ายกว่าและดังนั้นจึงมักใช้ในทางปฏิบัติเกือบทุกครั้ง แต่จะถูกต้องเมื่อใช้เมทริกซ์สัมประสิทธิ์ที่เหมาะสมที่สุดเท่านั้น เนื่องจากความแม่นยำในการคำนวณต่ำหากมีปัญหาเกี่ยวกับความเสถียรในการคำนวณเกิดขึ้นหรือหากใช้เมทริกซ์สัมประสิทธิ์ที่แตกต่างจากเมทริกซ์ที่เหมาะสมที่สุดโดยเฉพาะคุณควรใช้ สูตรทั่วไปสำหรับเมทริกซ์ความแปรปรวนร่วมของการประมาณค่าเวกเตอร์สถานะ

คำติชมของตัวกรองคาลมาน

บน ช่วงเวลาปัจจุบันการวิพากษ์วิจารณ์หลักของตัวกรองคาลมานนั้นดำเนินการในด้านต่อไปนี้

Random Forest เป็นหนึ่งในอัลกอริธึมที่ฉันชื่นชอบ การทำเหมืองข้อมูล- ประการแรก มันมีความหลากหลายอย่างไม่น่าเชื่อ สามารถใช้เพื่อแก้ปัญหาทั้งการถดถอยและการจำแนกประเภท ค้นหาความผิดปกติและเลือกตัวทำนาย ประการที่สอง นี่เป็นอัลกอริธึมที่นำไปใช้อย่างไม่ถูกต้องได้ยาก เพียงเพราะว่ามันไม่เหมือนกับอัลกอริธึมอื่นๆ ตรงที่มีพารามิเตอร์ที่ปรับแต่งได้เพียงเล็กน้อย และยังเรียบง่ายในธรรมชาติอย่างน่าประหลาดใจอีกด้วย และในขณะเดียวกันก็มีความแม่นยำอย่างน่าอัศจรรย์

แนวคิดเบื้องหลังอัลกอริธึมที่ยอดเยี่ยมเช่นนี้คืออะไร? แนวคิดนั้นง่ายมาก: สมมติว่าเรามีอัลกอริธึมที่อ่อนแอมาก เช่น หากเราทำมาก รุ่นที่แตกต่างกันการใช้อัลกอริธึมที่อ่อนแอนี้และเฉลี่ยผลลัพธ์ของการคาดการณ์ ผลลัพธ์สุดท้ายจะดีขึ้นอย่างมาก นี่คือสิ่งที่เรียกว่าการเรียนรู้ทั้งมวลในทางปฏิบัติ อัลกอริธึม Random Forest จึงเรียกว่า "Random Forest" สำหรับข้อมูลที่ได้รับ โดยจะสร้างแผนผังการตัดสินใจจำนวนมาก จากนั้นจึงหาค่าเฉลี่ยผลลัพธ์ของการคาดการณ์ จุดสำคัญมีองค์ประกอบของโอกาสในการสร้างต้นไม้แต่ละต้น ท้ายที่สุดแล้ว เป็นที่ชัดเจนว่าหากเราสร้างต้นไม้ที่เหมือนกันหลายต้น ผลลัพธ์ของการหาค่าเฉลี่ยจะมีความแม่นยำเท่ากับต้นไม้ต้นเดียว

มันทำงานอย่างไร? สมมติว่าเรามีข้อมูลอินพุตอยู่บ้าง แต่ละคอลัมน์สอดคล้องกับพารามิเตอร์บางตัว แต่ละแถวสอดคล้องกับองค์ประกอบข้อมูลบางส่วน

เราสามารถสุ่มเลือกคอลัมน์และแถวจำนวนหนึ่งจากชุดข้อมูลทั้งหมด และสร้างแผนผังการตัดสินใจตามข้อมูลเหล่านั้น


วันพฤหัสบดีที่ 10 พฤษภาคม พ.ศ. 2555

วันพฤหัสบดีที่ 12 มกราคม 2555


นั่นคือทั้งหมดที่ เที่ยวบิน 17 ชั่วโมงสิ้นสุดลง รัสเซียยังคงอยู่ต่างประเทศ และผ่านหน้าต่างของอพาร์ทเมนต์ 2 ห้องนอนแสนสบายที่ซานฟรานซิสโก เมืองซิลิคอนแวลลีย์อันโด่งดัง รัฐแคลิฟอร์เนีย ประเทศสหรัฐอเมริกา ก็มองมาที่เรา ใช่ นี่เป็นเหตุผลว่าทำไมฉันถึงไม่ได้เขียนเลย เมื่อเร็วๆ นี้- เราย้ายแล้ว

ทั้งหมดนี้เริ่มต้นในเดือนเมษายน 2011 ตอนที่ฉันได้สัมภาษณ์ทางโทรศัพท์กับ Zynga จากนั้นทุกอย่างก็ดูเหมือนเป็นเกมที่ไม่เกี่ยวข้องกับความเป็นจริง และฉันก็จินตนาการไม่ออกด้วยซ้ำว่ามันจะนำไปสู่อะไร ในเดือนมิถุนายน 2554 Zynga มาที่มอสโคว์และทำการสัมภาษณ์หลายครั้ง โดยพิจารณาผู้สมัครประมาณ 60 คนที่ผ่านการสัมภาษณ์ทางโทรศัพท์ และมีผู้ได้รับเลือกประมาณ 15 คน (ฉันไม่ทราบจำนวนที่แน่นอน บางคนเปลี่ยนใจในภายหลัง คนอื่นๆ ปฏิเสธทันที) การสัมภาษณ์กลายเป็นเรื่องง่ายอย่างน่าประหลาดใจ ไม่มีปัญหาในการเขียนโปรแกรม ไม่มีคำถามยุ่งยากเกี่ยวกับรูปร่างของฟัก ส่วนใหญ่ทดสอบความสามารถในการแชทของคุณ และความรู้ในความคิดของฉันได้รับการประเมินเพียงผิวเผินเท่านั้น

แล้วความเข้มงวดก็เริ่มขึ้น อันดับแรกเรารอผล, จากนั้นข้อเสนอ, จากนั้นการอนุมัติของ LCA, จากนั้นการอนุมัติคำร้องวีซ่า, จากนั้นเอกสารจากสหรัฐอเมริกา, จากนั้นต่อคิวที่สถานทูต, จากนั้น ตรวจสอบเพิ่มเติมจากนั้นวีซ่า สำหรับฉันบางครั้งดูเหมือนว่าฉันพร้อมที่จะยอมแพ้ทุกอย่างและทำประตูได้ บางครั้งฉันก็สงสัยว่าเราต้องการอเมริกานี้หรือไม่ เพราะรัสเซียก็ไม่เลวเช่นกัน กระบวนการทั้งหมดใช้เวลาประมาณหกเดือน ท้ายที่สุดในช่วงกลางเดือนธันวาคมเราได้รับวีซ่าและเริ่มเตรียมตัวออกเดินทาง

วันจันทร์เป็นวันทำงานวันแรกของฉันในสถานที่ใหม่ สำนักงานมีเงื่อนไขทั้งหมดสำหรับการทำงานและการใช้ชีวิตด้วย อาหารเช้า อาหารกลางวัน และอาหารเย็นจากเชฟของเราเอง อาหารหลากหลายมากมายที่อัดแน่นอยู่ในทุกมุม ห้องออกกำลังกาย บริการนวด และแม้แต่ช่างทำผม ทั้งหมดนี้ฟรีสำหรับพนักงาน ผู้คนจำนวนมากเดินทางไปทำงานด้วยจักรยาน และมีห้องหลายห้องไว้สำหรับเก็บยานพาหนะ โดยทั่วไปฉันไม่เคยเห็นอะไรแบบนี้ในรัสเซียมาก่อน อย่างไรก็ตามทุกอย่างมีราคาของมันเราถูกเตือนทันทีว่าเราจะต้องทำงานหนักมาก ตามมาตรฐานของพวกเขาแล้ว "มาก" คืออะไรยังไม่ชัดเจนสำหรับฉัน

อย่างไรก็ตาม ฉันหวังว่าแม้จะมีงานหนักมาก แต่ในอนาคตอันใกล้นี้ ฉันจะสามารถกลับมาเขียนบล็อกต่อได้ และบางทีอาจบอกเล่าเรื่องราวบางอย่างเกี่ยวกับชีวิตชาวอเมริกันและการทำงานเป็นโปรแกรมเมอร์ในอเมริกาได้ รอดูได้เลย ในระหว่างนี้ ฉันขออวยพรให้ทุกคนสวัสดีปีใหม่และคริสต์มาส แล้วพบกันใหม่!


สำหรับตัวอย่างการใช้งาน ลองพิมพ์อัตราผลตอบแทนจากเงินปันผลออกมา บริษัท รัสเซีย- เช่น ราคาฐานเราจะใช้ราคาปิดของหุ้นในวันที่ปิดทะเบียน ด้วยเหตุผลบางประการ ข้อมูลนี้ไม่ได้อยู่ในเว็บไซต์ Troika แต่น่าสนใจมากกว่ามาก ค่าสัมบูรณ์เงินปันผล
ความสนใจ! โค้ดใช้เวลานานในการดำเนินการเนื่องจาก... สำหรับแต่ละโปรโมชัน คุณต้องส่งคำขอไปยังเซิร์ฟเวอร์ Finam และรับมูลค่าของมัน

ผลลัพธ์<- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0)( ลอง (( quotes<- getSymbols(d$Symbol, src="Finam", from="2010-01-01", auto.assign=FALSE) if (!is.nan(quotes)){ price <- Cl(quotes) if (length(price)>0)(วว<- d$Divs result <- rbind(result, data.frame(d$Symbol, d$Name, d$RegistryDate, as.numeric(dd)/as.numeric(price), stringsAsFactors=FALSE)) } } }, silent=TRUE) } } colnames(result) <- c("Symbol", "Name", "RegistryDate", "Divs") result


ในทำนองเดียวกัน คุณสามารถสร้างสถิติสำหรับปีก่อนหน้าได้

บนอินเทอร์เน็ตรวมถึงHabréคุณสามารถค้นหาข้อมูลมากมายเกี่ยวกับตัวกรองคาลมานได้ แต่การหาข้อสรุปที่เข้าใจง่ายของสูตรต่างๆ นั้นเป็นเรื่องยาก หากไม่มีข้อสรุป วิทยาศาสตร์ทั้งหมดนี้ถูกมองว่าเป็นหมอผีประเภทหนึ่ง สูตรดูเหมือนชุดสัญลักษณ์ที่ไร้หน้า และที่สำคัญที่สุดคือ ข้อความง่ายๆ มากมายที่วางอยู่บนพื้นผิวของทฤษฎีนั้นเกินกว่าจะเข้าใจได้ วัตถุประสงค์ของบทความนี้คือเพื่อพูดคุยเกี่ยวกับตัวกรองนี้ในภาษาที่เข้าถึงได้มากที่สุด
ตัวกรองคาลมานเป็นเครื่องมือกรองข้อมูลที่มีประสิทธิภาพ หลักการสำคัญคือการกรองใช้ข้อมูลเกี่ยวกับฟิสิกส์ของปรากฏการณ์นั้นเอง สมมติว่า หากคุณกรองข้อมูลจากมาตรวัดความเร็วของรถยนต์ ความเฉื่อยของรถจะทำให้คุณมีสิทธิ์ในการรับรู้การกระโดดด้วยความเร็วเร็วเกินไปว่าเป็นข้อผิดพลาดในการวัด ตัวกรองคาลมานน่าสนใจเพราะในแง่หนึ่ง ตัวกรองนี้เป็นตัวกรองที่ดีที่สุด เราจะพูดคุยโดยละเอียดด้านล่างว่าคำว่า "ดีที่สุด" หมายถึงอะไร ในตอนท้ายของบทความ ฉันจะแสดงให้เห็นว่าในหลายกรณี สูตรสามารถทำให้ง่ายขึ้นได้จนแทบไม่มีอะไรเหลือเลย

โปรแกรมการศึกษา

ก่อนที่จะทำความคุ้นเคยกับตัวกรองคาลมาน ฉันขอแนะนำให้นึกถึงคำจำกัดความง่ายๆ และข้อเท็จจริงจากทฤษฎีความน่าจะเป็น

ตัวแปรสุ่ม

เมื่อพวกเขาบอกว่าให้ตัวแปรสุ่ม หมายความว่าค่านี้สามารถรับค่าสุ่มได้ มันใช้ค่าที่แตกต่างกันและความน่าจะเป็นที่แตกต่างกัน เมื่อคุณทอย เช่น ตาย ชุดค่าที่ไม่ต่อเนื่องจะปรากฏขึ้น: . ตัวอย่างเช่น เมื่อเรากำลังพูดถึงความเร็วของอนุภาคที่เคลื่อนที่ แน่นอนว่าเราต้องจัดการกับชุดของค่าที่ต่อเนื่องกัน เราจะแสดงค่า "หลุดออก" ของตัวแปรสุ่มผ่าน แต่บางครั้งเราจะใช้ตัวอักษรเดียวกันกับที่เราแสดงถึงตัวแปรสุ่ม: .
ในกรณีของชุดค่าที่ต่อเนื่องกัน ตัวแปรสุ่มจะมีคุณลักษณะความหนาแน่นของความน่าจะเป็น ซึ่งกำหนดให้เราทราบว่าความน่าจะเป็นที่ตัวแปรสุ่มจะ "หลุดออกไป" ในย่านเล็กๆ ที่มีความยาวหนึ่งจุดจะเท่ากับ ดังที่เราเห็นจากภาพ ความน่าจะเป็นนี้เท่ากับพื้นที่ของสี่เหลี่ยมแรเงาใต้กราฟ:

บ่อยครั้งในชีวิต ตัวแปรสุ่มจะแจกแจงแบบเกาส์เซียนเมื่อความหนาแน่นของความน่าจะเป็นเท่ากับ

เราจะเห็นว่าฟังก์ชันมีรูปทรงระฆังโดยมีจุดศูนย์กลางอยู่ที่จุดหนึ่งและมีความกว้างของลำดับลักษณะเฉพาะ
เนื่องจากเรากำลังพูดถึงการแจกแจงแบบเกาส์เซียน คงน่าเสียดายที่ไม่ต้องพูดถึงที่มาของมัน เช่นเดียวกับที่ตัวเลขถูกกำหนดไว้อย่างมั่นคงในคณิตศาสตร์และพบในตำแหน่งที่คาดไม่ถึงที่สุด การแจกแจงแบบเกาส์เซียนก็ได้หยั่งรากลึกในทฤษฎีความน่าจะเป็น ข้อความที่น่าทึ่งประการหนึ่งที่อธิบายบางส่วนเกี่ยวกับการอยู่ทั่วไปทุกหนทุกแห่งของเกาส์เซียนคือ:
ปล่อยให้มีตัวแปรสุ่มที่มีการแจกแจงตามอำเภอใจ (ในความเป็นจริง มีข้อจำกัดบางประการเกี่ยวกับความเด็ดขาดนี้ แต่ก็ไม่ได้เข้มงวดแต่อย่างใด) ลองทำการทดลองและคำนวณผลรวมของค่า "หลุดออก" ของตัวแปรสุ่ม ลองทำการทดลองหลายอย่างกัน เป็นที่แน่ชัดว่าในแต่ละครั้งเราจะได้รับมูลค่าของจำนวนเงินที่แตกต่างกันออกไป กล่าวอีกนัยหนึ่ง จำนวนนี้เองเป็นตัวแปรสุ่มที่มีกฎการกระจายเฉพาะของมันเอง ปรากฎว่าเมื่อมีขนาดใหญ่เพียงพอ กฎการกระจายของผลรวมนี้มีแนวโน้มที่จะเป็นการแจกแจงแบบเกาส์เซียน (อย่างไรก็ตาม ความกว้างของลักษณะเฉพาะของ "ระฆัง" จะเพิ่มขึ้นตาม ) เราอ่านรายละเอียดเพิ่มเติมในวิกิพีเดีย: ทฤษฎีบทขีดจำกัดกลาง ในชีวิต บ่อยครั้งจะมีปริมาณที่เป็นผลรวมของตัวแปรสุ่มอิสระที่มีการแจกแจงเหมือนกันจำนวนมาก ดังนั้นจึงเป็นการแจกแจงแบบเกาส์เซียน

ค่าเฉลี่ย

ค่าเฉลี่ยของตัวแปรสุ่มคือสิ่งที่เราจะได้ภายในขีดจำกัดหากเราทำการทดลองจำนวนมากและคำนวณค่าเฉลี่ยเลขคณิตของค่าที่ดร็อป ค่าเฉลี่ยจะแสดงในรูปแบบที่แตกต่างกัน: นักคณิตศาสตร์ชอบแสดงผ่าน (ความคาดหวังทางคณิตศาสตร์) และนักคณิตศาสตร์ต่างชาติชอบแสดงผ่าน (ความคาดหวัง) นักฟิสิกส์ผ่านหรือ. เราจะกำหนดในลักษณะต่างประเทศ: .
ตัวอย่างเช่น สำหรับการแจกแจงแบบเกาส์เซียน ค่าเฉลี่ยคือ

การกระจายตัว

ในกรณีของการแจกแจงแบบเกาส์เซียน เราจะเห็นได้อย่างชัดเจนว่าตัวแปรสุ่มชอบที่จะอยู่ในละแวกใกล้เคียงของค่าเฉลี่ย ดังที่เห็นได้จากกราฟ ลักษณะการแพร่กระจายของค่าอยู่ในลำดับของ เราจะประมาณการแพร่กระจายของค่านี้สำหรับตัวแปรสุ่มตามอำเภอใจได้อย่างไรหากเราทราบการกระจายตัวของมัน คุณสามารถวาดกราฟความหนาแน่นของความน่าจะเป็นและประมาณความกว้างของคุณลักษณะด้วยตาได้ แต่เราชอบไปทางพีชคณิตมากกว่า คุณสามารถค้นหาความยาวส่วนเบี่ยงเบนเฉลี่ย (โมดูลัส) ได้จากค่าเฉลี่ย: ค่านี้จะเป็นค่าประมาณที่ดีของลักษณะการกระจายตัวของค่า แต่คุณและฉันรู้ดีว่าการใช้โมดูลในสูตรเป็นเรื่องที่น่าปวดหัว ดังนั้นจึงไม่ค่อยมีการใช้สูตรนี้ในการประมาณค่าการกระจายของคุณลักษณะ
วิธีที่ง่ายกว่า (ง่ายในแง่ของการคำนวณ) คือการค้นหา ปริมาณนี้เรียกว่าการกระจายตัว และมักเขียนแทนด้วย รากของความแปรปรวนเรียกว่าส่วนเบี่ยงเบนมาตรฐาน ค่าเบี่ยงเบนมาตรฐานเป็นค่าประมาณที่ดีของการแพร่กระจายของตัวแปรสุ่ม
ตัวอย่างเช่น สำหรับการแจกแจงแบบเกาส์เซียน เราสามารถคำนวณได้ว่าความแปรปรวนที่กำหนดข้างต้นเท่ากับ อย่างแน่นอน ซึ่งหมายความว่าค่าเบี่ยงเบนมาตรฐานเท่ากับ ซึ่งเห็นด้วยกับสัญชาตญาณทางเรขาคณิตของเราเป็นอย่างดี
อันที่จริงมีการหลอกลวงเล็กๆ น้อยๆ ซ่อนอยู่ที่นี่ ความจริงก็คือในคำจำกัดความของการแจกแจงแบบเกาส์เซียนจะมีนิพจน์อยู่ใต้เลขชี้กำลัง สองตัวนี้อยู่ในตัวส่วนพอดี ดังนั้นค่าเบี่ยงเบนมาตรฐานจะเท่ากับสัมประสิทธิ์ นั่นคือสูตรการแจกแจงแบบเกาส์เซียนนั้นเขียนขึ้นในรูปแบบที่ออกแบบมาเป็นพิเศษเพื่อที่เราจะได้คำนวณค่าเบี่ยงเบนมาตรฐานของมัน

ตัวแปรสุ่มอิสระ

ตัวแปรสุ่มสามารถขึ้นอยู่กับหรือไม่ก็ได้ ลองนึกภาพการขว้างเข็มลงบนเครื่องบินแล้วบันทึกพิกัดของปลายทั้งสองข้าง พิกัดทั้งสองนี้ขึ้นอยู่กับเงื่อนไขที่ว่าระยะห่างระหว่างพิกัดจะเท่ากับความยาวของเข็มเสมอ แม้ว่าจะเป็นตัวแปรสุ่มก็ตาม
ตัวแปรสุ่มมีความเป็นอิสระหากผลลัพธ์ของตัวแปรแรกไม่ขึ้นอยู่กับผลลัพธ์ของตัวแปรที่สองโดยสิ้นเชิง หากตัวแปรสุ่มเป็นอิสระต่อกัน ค่าเฉลี่ยของผลิตภัณฑ์จะเท่ากับผลคูณของค่าเฉลี่ย:

การพิสูจน์

ตัวอย่างเช่น การมีตาสีฟ้าและสำเร็จการศึกษาด้วยเหรียญทอง ถือเป็นตัวแปรสุ่มอิสระ ถ้าเป็นตาสีฟ้า เช่น ผู้ชนะเลิศเหรียญทอง ผู้ชนะเลิศตาสีฟ้า ตัวอย่างนี้บอกเราว่าหากได้รับตัวแปรสุ่มจากความหนาแน่นของความน่าจะเป็น และ แล้วความเป็นอิสระของค่าเหล่านี้จะแสดงออกมาในข้อเท็จจริงที่ว่าความหนาแน่นของความน่าจะเป็น ( ค่าแรกหลุดออกไปและค่าที่สอง) พบได้โดยสูตร:

จากนี้ไปทันทีว่า:

อย่างที่คุณเห็น มีการพิสูจน์ตัวแปรสุ่มซึ่งมีสเปกตรัมของค่าที่ต่อเนื่องกันและระบุโดยความหนาแน่นของความน่าจะเป็น ในกรณีอื่น ๆ แนวคิดในการพิสูจน์ก็คล้ายกัน

คำชี้แจงของปัญหา

เรามาแสดงค่าที่เราจะวัดแล้วกรอง นี่อาจเป็นตำแหน่ง ความเร็ว ความเร่ง ความชื้น ระดับกลิ่น อุณหภูมิ ความดัน ฯลฯ
เริ่มจากตัวอย่างง่ายๆ ซึ่งจะนำเราไปสู่การกำหนดปัญหาทั่วไป ลองจินตนาการว่าเรามีรถที่ควบคุมด้วยวิทยุที่สามารถเดินหน้าและถอยหลังได้เท่านั้น เราทราบน้ำหนักของรถ รูปร่าง พื้นผิวถนน ฯลฯ คำนวณว่าจอยสติ๊กควบคุมส่งผลต่อความเร็วในการเคลื่อนที่อย่างไร


จากนั้นพิกัดของรถจะเปลี่ยนไปตามกฎหมาย:

ในชีวิตจริง เราไม่สามารถคำนึงถึงสิ่งรบกวนเล็กๆ น้อยๆ ที่กระทำต่อรถได้ (ลม การกระแทก กรวดบนถนน) ในการคำนวณของเรา ดังนั้น ความเร็วที่แท้จริงของรถจะแตกต่างจากที่คำนวณได้ ตัวแปรสุ่มจะถูกเพิ่มทางด้านขวาของสมการที่เขียน:

เรามีเซ็นเซอร์ GPS ติดตั้งอยู่บนรถ ซึ่งพยายามวัดพิกัดที่แท้จริงของรถ และแน่นอนว่าไม่สามารถวัดได้อย่างแม่นยำ แต่วัดโดยมีข้อผิดพลาดซึ่งเป็นตัวแปรสุ่มเช่นกัน เป็นผลให้เราได้รับข้อมูลที่ผิดพลาดจากเซ็นเซอร์:

ภารกิจคือเมื่อรู้การอ่านเซ็นเซอร์ที่ไม่ถูกต้องให้ค้นหาค่าประมาณที่ดีสำหรับพิกัดที่แท้จริงของรถ
ในการกำหนดปัญหาทั่วไป อะไรก็ตามสามารถรับผิดชอบต่อพิกัดได้ (อุณหภูมิ ความชื้น...) และเราจะระบุสมาชิกที่รับผิดชอบในการควบคุมระบบจากภายนอกเป็น (ในตัวอย่างกับเครื่อง) สมการของพิกัดและการอ่านเซ็นเซอร์จะมีลักษณะดังนี้:

(1)

มาพูดคุยกันในรายละเอียดสิ่งที่เรารู้:

เป็นที่น่าสังเกตว่างานการกรองไม่ใช่งานที่ราบรื่น เราไม่ได้พยายามทำให้ข้อมูลเซ็นเซอร์ราบรื่น แต่เราพยายามหาค่าที่ใกล้เคียงที่สุดกับพิกัดจริง

อัลกอริธึมคาลมาน

เราจะโต้เถียงด้วยการอุปนัย ลองนึกภาพว่าในขั้นตอนที่ 3 เราพบค่าที่กรองแล้วจากเซ็นเซอร์ซึ่งใกล้เคียงกับพิกัดที่แท้จริงของระบบเป็นอย่างดี อย่าลืมว่าเรารู้สมการที่ควบคุมการเปลี่ยนแปลงในพิกัดที่ไม่รู้จัก:

ดังนั้นหากยังไม่ได้รับค่าจากเซนเซอร์ เราก็สามารถสรุปได้ว่าในขั้นตอนที่ระบบจะพัฒนาไปตามกฎหมายนี้ และเซนเซอร์จะแสดงสิ่งที่ใกล้เคียงกัน น่าเสียดายที่เรายังไม่สามารถพูดอะไรที่ชัดเจนไปกว่านี้ได้ ในทางกลับกัน ในระหว่างขั้นตอนนี้ เราจะมีการอ่านค่าเซ็นเซอร์ที่ไม่ถูกต้องบนมือของเรา
แนวคิดของคาลมานมีดังนี้ เพื่อให้ได้ค่าประมาณพิกัดที่แท้จริงที่ดีที่สุด เราต้องเลือกจุดกึ่งกลางระหว่างการอ่านค่าของเซ็นเซอร์ที่ไม่ถูกต้องกับการทำนายสิ่งที่เราคาดหวังว่าจะได้เห็น เราจะให้น้ำหนักกับการอ่านเซ็นเซอร์ และน้ำหนักจะยังคงอยู่ในค่าที่คาดการณ์ไว้:

ค่าสัมประสิทธิ์นี้เรียกว่าค่าสัมประสิทธิ์คาลมาน ขึ้นอยู่กับขั้นตอนการวนซ้ำ ดังนั้นการเขียนจะถูกต้องมากกว่า แต่สำหรับตอนนี้ เพื่อไม่ให้สูตรการคำนวณเกะกะ เราจะละเว้นดัชนีของมัน
เราต้องเลือกค่าสัมประสิทธิ์คาลมานเพื่อให้ค่าพิกัดที่เหมาะสมที่สุดที่ได้นั้นใกล้เคียงกับค่าจริงมากที่สุด ตัวอย่างเช่น หากเรารู้ว่าเซ็นเซอร์ของเราแม่นยำมาก เราก็จะเชื่อถือการอ่านค่าของมันได้มากขึ้นและให้น้ำหนักแก่ค่ามากขึ้น (ใกล้เคียงหนึ่ง) ในทางกลับกัน หากเซ็นเซอร์ไม่แม่นยำเลย เราจะมุ่งเน้นไปที่ค่าที่คาดการณ์ตามทฤษฎีมากขึ้น
โดยทั่วไป หากต้องการหาค่าที่แน่นอนของสัมประสิทธิ์คาลมาน คุณเพียงแค่ต้องลดข้อผิดพลาดให้เหลือน้อยที่สุด:

เราใช้สมการ (1) (ที่อยู่ในกล่องสีน้ำเงิน) เพื่อเขียนนิพจน์ใหม่สำหรับข้อผิดพลาด:

การพิสูจน์

ตอนนี้เป็นเวลาที่จะอภิปรายว่านิพจน์ย่อขนาดข้อผิดพลาดหมายถึงอะไร ท้ายที่สุดแล้ว อย่างที่เราเห็น ข้อผิดพลาดนั้นเป็นตัวแปรสุ่มและรับค่าที่แตกต่างกันในแต่ละครั้ง จริงๆ แล้วไม่มีแนวทางใดที่เหมาะกับทุกคนในการกำหนดความหมายของการมีข้อผิดพลาดน้อยที่สุด เช่นเดียวกับในกรณีของการกระจายตัวของตัวแปรสุ่ม เมื่อเราพยายามประมาณความกว้างของลักษณะเฉพาะของการกระจายของมัน เราจะเลือกเกณฑ์ที่ง่ายที่สุดสำหรับการคำนวณในที่นี้ เราจะลดค่าเฉลี่ยของข้อผิดพลาดกำลังสองให้เหลือน้อยที่สุด:

ลองเขียนนิพจน์สุดท้าย:

การพิสูจน์

จากข้อเท็จจริงที่ว่าตัวแปรสุ่มทั้งหมดที่รวมอยู่ในนิพจน์สำหรับมีความเป็นอิสระ ส่งผลให้เงื่อนไข "กากบาท" ทั้งหมดมีค่าเท่ากับศูนย์:

เราใช้ข้อเท็จจริงที่ว่า สูตรสำหรับความแปรปรวนดูง่ายกว่ามาก:

นิพจน์นี้รับค่าต่ำสุดเมื่อ (เราถืออนุพันธ์ให้เป็นศูนย์):

ที่นี่เรากำลังเขียนนิพจน์สำหรับค่าสัมประสิทธิ์คาลมานด้วยดัชนีขั้นตอน ดังนั้นเราเน้นว่ามันขึ้นอยู่กับขั้นตอนการวนซ้ำ
เราแทนที่ค่าที่เหมาะสมที่สุดที่ได้ผลลัพธ์ลงในนิพจน์สำหรับ ซึ่งเราย่อให้เล็กสุด เราได้รับ;

ปัญหาของเราได้รับการแก้ไขแล้ว เราได้รับสูตรวนซ้ำสำหรับคำนวณค่าสัมประสิทธิ์คาลมาน
สรุปความรู้ที่เราได้รับมาในกรอบเดียว:


ตัวอย่าง

รหัส Matlab

ล้างทั้งหมด N=100% จำนวนตัวอย่าง a=0.1% การเร่งความเร็ว sigmaPsi=1 sigmaEta=50; k=1:N x=k x(1)=0 z(1)=x(1)+บรรทัดฐาน(0,sigmaEta); สำหรับ t=1:(N-1) x(t+1)=x(t)+a*t+normrnd(0,sigmaPsi);

z(t+1)=x(t+1)+นอร์มริน(0,ซิกมาเอตา); จบ; %ตัวกรองคาลมาน xOpt(1)=z(1); eOpt(1)=ซิกมาเอต้า; สำหรับ t=1:(N-1) eOpt(t+1)=sqrt((sigmaEta^2)*(eOpt(t)^2+sigmaPsi^2)/(sigmaEta^2+eOpt(t)^2+ sigmaPsi^2)) K(t+1)=(eOpt(t+1))^2/sigmaEta^2 xOpt(t+1)=(xOpt(t)+a*t)*(1-K(t +1))+K(t+1)*z(t+1) สิ้นสุด; โครงเรื่อง (k, xOpt, k, z, k, x)

การวิเคราะห์


หากคุณติดตามว่าค่าสัมประสิทธิ์คาลมานเปลี่ยนแปลงไปอย่างไรตามขั้นตอนการวนซ้ำ คุณสามารถแสดงให้เห็นได้ว่าค่าสัมประสิทธิ์คาลมานจะคงตัวอยู่ที่ค่าที่แน่นอนเสมอ ตัวอย่างเช่น เมื่อข้อผิดพลาดรากกำลังสองของเซ็นเซอร์และแบบจำลองมีอัตราส่วน 10 ต่อ 1 กราฟของค่าสัมประสิทธิ์คาลมานซึ่งขึ้นอยู่กับขั้นตอนการวนซ้ำจะมีลักษณะดังนี้:

ในตัวอย่างต่อไปนี้ เราจะพูดถึงว่าสิ่งนี้จะทำให้ชีวิตของเราง่ายขึ้นมากได้อย่างไร

ตัวอย่างที่สอง

แต่พูดตามตรง ระบบดังกล่าวไม่ตรงตามเงื่อนไขที่เรากำหนดไว้กับตัวแปรสุ่มอีกต่อไป เพราะตอนนี้ฟิสิกส์ของการเคลื่อนที่ที่ไม่รู้จักทั้งหมดถูกซ่อนอยู่ที่นั่น ดังนั้นเราจึงไม่สามารถพูดได้ว่าในช่วงเวลาที่ต่างกัน ข้อผิดพลาดของแบบจำลองไม่ขึ้นอยู่กับ ซึ่งกันและกันและค่าเฉลี่ยของพวกเขาเป็นศูนย์ ในกรณีนี้ โดยทั่วไปแล้ว ทฤษฎีตัวกรองคาลมานไม่สามารถนำมาใช้ได้ แต่เราจะไม่ใส่ใจกับข้อเท็จจริงนี้ แต่จะใช้สูตรจำนวนมากอย่างโง่เขลาโดยเลือกค่าสัมประสิทธิ์ด้วยตาเพื่อให้ข้อมูลที่กรองดูดี เราสามารถพิจารณาค่าสัมประสิทธิ์นี้เป็นค่าคงที่ได้ตลอดเวลาและเลือกเฉพาะสิ่งนี้ คงที่. สมมติฐานนี้แทบจะไม่ทำให้เสียอะไรเลย ประการแรก เราใช้ทฤษฎีคาลมานอย่างผิดกฎหมายอยู่แล้ว และประการที่สอง ค่าสัมประสิทธิ์คาลมานจะคงที่อย่างรวดเร็วจนคงที่ ในที่สุดทุกอย่างจะง่ายขึ้นมาก เราไม่ต้องการสูตรใดๆ จากทฤษฎีของคาลมานเลย เราเพียงแค่ต้องเลือกค่าที่ยอมรับได้และแทรกลงในสูตรวนซ้ำ:

กราฟต่อไปนี้แสดงข้อมูลที่กรองด้วยสองวิธีที่แตกต่างกันจากเซ็นเซอร์สมมติ โดยมีเงื่อนไขว่าเราไม่รู้อะไรเกี่ยวกับฟิสิกส์ของปรากฏการณ์นี้ วิธีแรกนั้นตรงไปตรงมา โดยใช้สูตรทั้งหมดจากทฤษฎีของคาลมาน และอย่างที่สองนั้นง่ายขึ้นโดยไม่มีสูตร


อย่างที่เราเห็นวิธีการแทบไม่ต่างกันเลย สังเกตความแตกต่างเล็กน้อยได้ตั้งแต่เริ่มต้นเท่านั้นเมื่อค่าสัมประสิทธิ์คาลมานยังไม่เสถียร

การอภิปราย

ดังที่เราได้เห็นแล้ว แนวคิดหลักของตัวกรองคาลมานคือการหาค่าสัมประสิทธิ์ซึ่งในทางกลับกันเป็นฟังก์ชันเชิงเส้นของการอ่านเซ็นเซอร์และค่าที่กรองก่อนหน้า และต่อไปเรื่อยๆ จนกว่าโซ่จะหมุนจนสุด นั่นคือค่าที่กรองขึ้นอยู่กับ ทุกคนการอ่านค่าเซ็นเซอร์ก่อนหน้าเป็นเส้นตรง:

ดังนั้นตัวกรองคาลมานจึงเรียกว่าตัวกรองเชิงเส้น
สามารถพิสูจน์ได้ว่าในบรรดาตัวกรองเชิงเส้นทั้งหมด ตัวกรองคาลมานดีที่สุด สิ่งที่ดีที่สุดในแง่ที่ว่าข้อผิดพลาดกำลังสองเฉลี่ยของตัวกรองนั้นมีน้อยมาก

กรณีหลายมิติ

ทฤษฎีทั้งหมดของตัวกรองคาลมานสามารถสรุปได้กับกรณีหลายมิติ สูตรดูน่ากลัวกว่าเล็กน้อย แต่แนวคิดในการหามานั้นเหมือนกับในกรณีมิติเดียว คุณสามารถดูได้ในบทความที่ยอดเยี่ยมนี้: http://habrahabr.ru/post/140274/
และในความมหัศจรรย์นี้ วิดีโอมีตัวอย่างวิธีใช้งานมาให้