Một cách để đảm bảo điều này là đảm bảo rằng bạn đã mã hóa tất cả những điều bạn làm để phù hợp với mô hình, thậm chí là "mày mò". Bằng cách này, khi bạn chạy quy trình nhiều lần, thông qua xác nhận chéo, bạn đang giữ mọi thứ nhất quán giữa các lần chạy. Điều này đảm bảo rằng tất cả các nguồn biến thể tiềm năng được nắm bắt bởi quá trình xác thực chéo.
Điều cực kỳ quan trọng khác là đảm bảo rằng bạn có một mẫu đại diện, trong cả hai bộ dữ liệu. Nếu tập dữ liệu của bạn không đại diện cho loại dữ liệu bạn muốn sử dụng để dự đoán, thì bạn không thể làm gì nhiều. Tất cả các mô hình đều dựa trên một giả định rằng "cảm ứng" hoạt động - những điều chúng ta chưa quan sát thấy giống như những điều chúng ta đã quan sát.
Theo nguyên tắc chung, hãy tránh xa các quy trình phù hợp mô hình phức tạp trừ khi (i) bạn biết bạn đang làm gì và (ii) bạn đã thử các phương pháp đơn giản hơn và thấy rằng chúng không hoạt động và cách phương thức phức tạp khắc phục vấn đề với phương pháp đơn giản. "Đơn giản" và "phức tạp" có nghĩa là "đơn giản" hoặc "phức tạp" đối với người thực hiện việc lắp đặt. Lý do điều này rất quan trọng là vì nó cho phép bạn áp dụng những gì tôi muốn gọi là "kiểm tra đánh hơi" cho kết quả. Liệu kết quả có đúng không? Bạn không thể "ngửi" kết quả từ một quy trình mà bạn không hiểu.
N>>p p N≈p N<p
1Nietesti=(1−hii)−1etrainietrainihiii∑ihii=ppN>>phiip=21N×pX
hii=xTi(XTX)−1xi=1Ns2x(1xi)(x2¯¯¯¯¯−x¯¯¯−x¯¯¯1)(1xi)=1+x~2iN
x¯¯¯=N−1∑ixix2¯¯¯¯¯=N−1∑ix2is2x=x2¯¯¯¯¯−x¯¯¯2x~i=xi−x¯¯¯sxxi1N100x~i=5hii=261001−26100=74100100001−26100001%10000x~=5025%
N>>p2hii=xTiEET(XTX)−1EETxiEXTXΛhii=zTiΛ−1zi=∑pj=1z2jiΛjjzi=ETxixi
ketest{k}=(Ik−H{k})−1etrain{k}H{k}=X{k}(XTX)−1XT{k}X{k}N>>p
Về cơ bản, tất cả điều này làm giảm việc sử dụng một điều khoản phạt, để tính đến sự khác biệt giữa các lỗi đào tạo và kiểm tra, chẳng hạn như BIC hoặc AIC. Điều này thực sự đạt được kết quả tương tự như những gì sử dụng một bộ kiểm tra, tuy nhiên bạn không bị buộc phải vứt bỏ thông tin hữu ích tiềm năng. Với BIC, bạn đang tính gần đúng bằng chứng cho mô hình, trông giống như toán học:
p(D|MiI)=p(y1y2…yN|MiI)
Mi
p(D|MiI)=p(y1|MiI)p(y2…yN|y1MiI)
=p(y1|MiI)p(y2|y1MiI)p(y3…yN|y1y2MiI)
=⋯=∏i=1Np(yi|y1…yi−1MiI)
⟹log[p(D|MiI)]=∑i=1Nlog[p(yi|y1…yi−1MiI)]
Điều này cho thấy một hình thức xác nhận chéo, nhưng trong đó tập huấn luyện liên tục được cập nhật, một lần quan sát từ bộ kiểm tra - tương tự như Bộ lọc Kalman. Chúng tôi dự đoán quan sát tiếp theo từ tập kiểm tra bằng cách sử dụng tập huấn luyện hiện tại, đo độ lệch so với giá trị quan sát bằng khả năng ghi nhật ký có điều kiện và sau đó cập nhật tập huấn luyện để bao gồm quan sát mới. Nhưng lưu ý rằng quy trình này tiêu hóa đầy đủ tất cả các dữ liệu có sẵn, đồng thời đảm bảo rằng mọi quan sát đều được kiểm tra như một trường hợp "ngoài mẫu". Nó cũng bất biến, ở chỗ nó không quan trọng bạn gọi là "quan sát 1" hay "quan sát 10"; kết quả là như nhau (tính toán có thể dễ dàng hơn đối với một số hoán vị so với những cái khác). Hàm mất cũng "thích nghi"Li=log[p(yi|y1…yi−1MiI)]Lii
Tôi sẽ đề nghị rằng việc đánh giá các mô hình dự đoán theo cách này sẽ hoạt động khá tốt.