RMSE क्या है? जिसे MSE, RMD या RMS के रूप में भी जाना जाता है। यह किस समस्या का हल है?
यदि आप RMSE समझते हैं: (रूट माध्य चुकता त्रुटि), MSE: (मीन स्क्वार्ड एरर) RMD (रूट माध्य चुकता विचलन) और RMS: (रूट मीन स्क्वेरड), तो आपके लिए एक लाइब्रेरी की मांग करना आपके लिए अनावश्यक ओवर-इंजीनियरिंग है । ये सभी मीट्रिक अधिकतम 2 इंच लंबे अजगर कोड की एक पंक्ति हैं। तीन मेट्रिक्स rmse, mse, rmd, और rms अपने मूल रूप से समान हैं।
RMSE सवाल का जवाब: "कैसे समान, औसत पर, में नंबर दिए गए हैं list1
करने के लिए list2
?"। दो सूचियों का आकार समान होना चाहिए। मैं "किसी भी दिए गए तत्वों के बीच शोर को बाहर निकालना चाहता हूं, एकत्र किए गए डेटा के आकार को धोता हूं, और समय के साथ बदलाव के लिए एक ही नंबर महसूस करता हूं"।
RMSE के लिए अंतर्ज्ञान और ELI5:
कल्पना कीजिए कि आप डार्ट बोर्ड में डार्ट्स फेंकना सीख रहे हैं। हर दिन आप एक घंटे के लिए अभ्यास करते हैं। आप यह पता लगाना चाहते हैं कि क्या आप बेहतर हो रहे हैं या खराब हो रहे हैं। तो हर दिन आप 10 थ्रो करें और बुल्सआई के बीच की दूरी को मापें और जहां आपका डार्ट हिट हो।
आप उन नंबरों की एक सूची बनाएं list1
। दिन 1 के बीच की दूरी और list2
सभी शून्य वाले रूट माध्य चुकता त्रुटि का उपयोग करें । 2 और nth दिनों पर भी ऐसा ही करें। आपको जो मिलेगा, वह एक ही संख्या है जो समय के साथ घटती है। जब आपका RMSE नंबर शून्य होता है, तो आप हर बार बुलबुल को मारते हैं। यदि rmse नंबर बढ़ता है, तो आप खराब हो रहे हैं।
अजगर में मूल माध्य चुकता त्रुटि की गणना में उदाहरण:
import numpy as np
d = [0.000, 0.166, 0.333] #ideal target distances, these can be all zeros.
p = [0.000, 0.254, 0.998] #your performance goes here
print("d is: " + str(["%.8f" % elem for elem in d]))
print("p is: " + str(["%.8f" % elem for elem in p]))
def rmse(predictions, targets):
return np.sqrt(((predictions - targets) ** 2).mean())
rmse_val = rmse(np.array(d), np.array(p))
print("rms error is: " + str(rmse_val))
कौन सा प्रिंट:
d is: ['0.00000000', '0.16600000', '0.33300000']
p is: ['0.00000000', '0.25400000', '0.99800000']
rms error between lists d and p is: 0.387284994115
गणितीय संकेतन:
ग्लिफ़ लीजेंड: n
एक संपूर्ण सकारात्मक पूर्णांक है जो थ्रो की संख्या को दर्शाता है। i
संपूर्ण सकारात्मक पूर्णांक काउंटर का प्रतिनिधित्व करता है जो योग की गणना करता है। d
आदर्श दूरी के लिए खड़ा है, list2
उपरोक्त उदाहरण में सभी शून्य। उपरोक्त उदाहरण में p
, प्रदर्शन के लिए खड़ा है list1
। सुपरस्क्रिप्ट 2 संख्यात्मक वर्ग के लिए है। घ मैं की i'th सूचकांक है d
। पी मैं की i'th सूचकांक है p
।
छोटे चरणों में किया गया rmse तो इसे समझा जा सकता है:
def rmse(predictions, targets):
differences = predictions - targets #the DIFFERENCEs.
differences_squared = differences ** 2 #the SQUAREs of ^
mean_of_differences_squared = differences_squared.mean() #the MEAN of ^
rmse_val = np.sqrt(mean_of_differences_squared) #ROOT of ^
return rmse_val #get the ^
RMSE का हर कदम कैसे काम करता है:
एक संख्या को दूसरे से घटाना आपको उनके बीच की दूरी प्रदान करता है।
8 - 5 = 3 #absolute distance between 8 and 5 is +3
-20 - 10 = -30 #absolute distance between -20 and 10 is +30
यदि आप किसी भी संख्या को स्वयं गुणा करते हैं, तो परिणाम हमेशा सकारात्मक होता है क्योंकि नकारात्मक समय नकारात्मक होता है:
3*3 = 9 = positive
-30*-30 = 900 = positive
उन सभी को जोड़ें, लेकिन प्रतीक्षा करें, फिर कई तत्वों वाले एक सरणी में एक छोटे सरणी की तुलना में बड़ी त्रुटि होगी, इसलिए उन्हें तत्वों की संख्या से औसत करें।
लेकिन रुको, हमने उन्हें सकारात्मक रूप से बाध्य करने के लिए पहले उन सभी को चुकता किया। एक वर्गमूल के साथ क्षति को पूर्ववत करें!
यह आपको एक एकल संख्या के साथ छोड़ देता है जो औसतन, सूची 1 के प्रत्येक मूल्य के बीच की दूरी सूची 2 के संगत तत्व मान के बीच की दूरी को दर्शाता है।
यदि RMSE मान समय के साथ नीचे चला जाता है तो हम खुश हैं क्योंकि विचरण कम हो रहा है।
RMSE सबसे सटीक लाइन फिटिंग रणनीति नहीं है, कुल कम से कम वर्ग है:
रूट माध्य चुकता त्रुटि बिंदु और रेखा के बीच की ऊर्ध्वाधर दूरी को मापती है, इसलिए यदि आपका डेटा एक केले के आकार का है, तो नीचे के पास समतल है और शीर्ष के पास खड़ी है, तो आरएमएसई उच्च बिंदुओं को अधिक दूरी की रिपोर्ट करेगा, लेकिन कम दूरी कम अंक जब वास्तव में दूरियां बराबर होती हैं। यह एक तिरछा का कारण बनता है जहां रेखा कम से अधिक बिंदुओं के करीब होना पसंद करती है।
यदि यह एक समस्या है तो कुल न्यूनतम वर्ग विधि इसे ठीक करती है:
https://mubaris.com/posts/linear-regression
Gotchas जो इस RMSE फ़ंक्शन को तोड़ सकते हैं:
यदि इनपुट सूची में नल या अनंत हैं, तो आउटपुट rmse वैल्यू का कोई मतलब नहीं है। किसी भी सूची में अशक्त / गायब मूल्यों / अनन्तताओं से निपटने के लिए तीन रणनीतियाँ हैं: उस घटक को अनदेखा करें, इसे शून्य करें या सभी टाइमस्टेप्स में एक सर्वोत्तम अनुमान या एक समान यादृच्छिक शोर जोड़ें। प्रत्येक उपाय के अपने नियम और विपक्ष हैं जो आपके डेटा का अर्थ है। सामान्य रूप से किसी भी घटक की अनुपलब्ध मान के साथ अनदेखी की जाती है, लेकिन यह RMSE शून्य की ओर शून्य बनाता है आपको लगता है कि प्रदर्शन में सुधार हुआ है जब यह वास्तव में नहीं हुआ है। सबसे अच्छे अनुमान पर यादृच्छिक शोर जोड़ना पसंद किया जा सकता है यदि बहुत सारे लापता मूल्य हैं।
RMSE आउटपुट के सापेक्ष शुद्धता की गारंटी देने के लिए, आपको इनपुट से सभी नल / इनफिनिटी को खत्म करना होगा।
RMSE में बाह्य डेटा बिंदुओं के लिए शून्य सहिष्णुता है जो संबंधित नहीं हैं
रूट माध्य चुकता त्रुटि वर्ग सभी डेटा सही होने पर निर्भर करता है और सभी को समान रूप से गिना जाता है। इसका मतलब है कि एक आवारा बिंदु जो कि बाएं क्षेत्र में बाहर है, पूरी गणना को पूरी तरह से बर्बाद करने वाला है। बाहरी डेटा बिंदुओं को संभालने और एक निश्चित सीमा के बाद उनके जबरदस्त प्रभाव को खारिज करने के लिए, रोबस्ट अनुमानक देखें जो आउटलेर्स की बर्खास्तगी के लिए एक सीमा में निर्माण करते हैं।