RMSE là gì? Còn được gọi là MSE, RMD hoặc RMS. vấn đề gì nó giải quyết?
Nếu bạn hiểu RMSE: (Lỗi bình phương gốc), MSE: (Lỗi bình phương trung bình) RMD (Độ lệch bình phương trung bình) và RMS: (Root có nghĩa là bình phương), sau đó yêu cầu thư viện tính toán điều này cho bạn là không cần thiết quá mức . Tất cả các số liệu này là một dòng mã trăn dài tối đa 2 inch. Ba số liệu rmse, mse, rmd và rms là cốt lõi của chúng giống nhau về mặt khái niệm.
RMSE trả lời cho câu hỏi: "Làm thế nào tương tự, trên trung bình, là những con số trong list1
để list2
?". Hai danh sách phải có cùng kích thước. Tôi muốn "loại bỏ nhiễu giữa hai yếu tố bất kỳ, loại bỏ kích thước của dữ liệu được thu thập và có được một số duy nhất để thay đổi theo thời gian".
Trực giác và ELI5 cho RMSE:
Hãy tưởng tượng bạn đang học ném phi tiêu vào bảng phi tiêu. Mỗi ngày bạn luyện tập trong một giờ. Bạn muốn tìm hiểu xem bạn đang trở nên tốt hơn hay trở nên tồi tệ hơn. Vì vậy, mỗi ngày bạn thực hiện 10 lần ném và đo khoảng cách giữa bullseye và nơi phi tiêu của bạn đạt được.
Bạn lập một danh sách những con số đó list1
. Sử dụng lỗi bình phương trung bình gốc giữa các khoảng cách ở ngày 1 và một list2
chứa tất cả các số không. Làm tương tự vào ngày thứ 2 và thứ n. Những gì bạn sẽ nhận được là một con số duy nhất hy vọng sẽ giảm theo thời gian. Khi số RMSE của bạn bằng 0, bạn sẽ gặp bullsey mỗi lần. Nếu số rmse tăng lên, bạn đang trở nên tồi tệ hơn.
Ví dụ trong tính toán sai số bình phương gốc trong python:
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))
Bản in nào:
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
Ký hiệu toán học:
Truyền thuyết Glyph: n
là toàn bộ số nguyên dương đại diện cho số lần ném. i
đại diện cho toàn bộ số nguyên dương mà liệt kê tổng. d
là viết tắt của khoảng cách lý tưởng, list2
chứa tất cả các số không trong ví dụ trên. p
là viết tắt của hiệu suất, list1
trong ví dụ trên. siêu ký tự 2 là viết tắt của bình phương số. d i là chỉ số thứ i của d
. p i là chỉ số thứ i của p
.
Các rmse được thực hiện trong các bước nhỏ để có thể hiểu được:
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 ^
Làm thế nào để mọi bước của RMSE hoạt động:
Trừ một số từ một số khác cung cấp cho bạn khoảng cách giữa chúng.
8 - 5 = 3 #absolute distance between 8 and 5 is +3
-20 - 10 = -30 #absolute distance between -20 and 10 is +30
Nếu bạn nhân bất kỳ số lần nào, kết quả luôn dương vì số lần âm âm là dương:
3*3 = 9 = positive
-30*-30 = 900 = positive
Thêm tất cả chúng, nhưng chờ, sau đó một mảng có nhiều phần tử sẽ có lỗi lớn hơn một mảng nhỏ, vì vậy hãy tính trung bình chúng theo số phần tử.
Nhưng chờ đã, chúng tôi bình phương tất cả sớm hơn để buộc họ tích cực. Hoàn tác các thiệt hại với một căn bậc hai!
Trung bình, bạn sẽ có một số duy nhất biểu thị khoảng cách giữa mọi giá trị của list1 với giá trị phần tử tương ứng của list2.
Nếu giá trị RMSE giảm theo thời gian, chúng tôi rất vui vì phương sai đang giảm.
RMSE không phải là chiến lược phù hợp chính xác nhất, tổng bình phương tối thiểu là:
Lỗi bình phương trung bình gốc đo khoảng cách dọc giữa điểm và đường thẳng, vì vậy nếu dữ liệu của bạn có hình quả chuối, phẳng gần đáy và dốc gần đỉnh, thì RMSE sẽ báo cáo khoảng cách lớn hơn đến các điểm cao, nhưng khoảng cách ngắn đến điểm thấp khi trong thực tế khoảng cách là tương đương. Điều này gây ra một độ lệch trong đó đường thẳng thích gần các điểm cao hơn thấp.
Nếu đây là sự cố, phương pháp tổng bình phương tối thiểu sẽ khắc phục điều này:
https://mubaris.com/posts/linear-regression
Gotchas có thể phá vỡ chức năng RMSE này:
Nếu có null hoặc vô hạn trong danh sách đầu vào, thì giá trị rmse đầu ra sẽ không có ý nghĩa. Có ba chiến lược để xử lý null / giá trị thiếu / vô số trong một trong hai danh sách: Bỏ qua thành phần đó, bỏ qua nó hoặc thêm dự đoán tốt nhất hoặc tiếng ồn ngẫu nhiên thống nhất cho tất cả các dấu thời gian. Mỗi phương thuốc đều có ưu và nhược điểm tùy thuộc vào ý nghĩa của dữ liệu của bạn. Nói chung, bỏ qua bất kỳ thành phần nào có giá trị bị thiếu được ưu tiên, nhưng điều này làm cho RMSE bị lệch về 0 khiến bạn nghĩ rằng hiệu suất đã được cải thiện khi nó thực sự không có. Thêm tiếng ồn ngẫu nhiên vào một dự đoán tốt nhất có thể được ưu tiên nếu có nhiều giá trị bị thiếu.
Để đảm bảo tính chính xác tương đối của đầu ra RMSE, bạn phải loại bỏ tất cả null / infinites khỏi đầu vào.
RMSE không dung sai cho các điểm dữ liệu ngoại lệ không thuộc về
Root bình phương lỗi bình phương phụ thuộc vào tất cả dữ liệu là đúng và tất cả được tính là bằng nhau. Điều đó có nghĩa là một điểm đi lạc trong trường bên trái sẽ phá hỏng toàn bộ tính toán. Để xử lý các điểm dữ liệu xa hơn và loại bỏ ảnh hưởng to lớn của chúng sau một ngưỡng nhất định, hãy xem các công cụ ước tính mạnh mẽ xây dựng trong ngưỡng để loại bỏ các ngoại lệ.