ฉันกำลังใช้Brainในการฝึกอบรมโครงข่ายประสาทเทียมในชุดคุณลักษณะที่มีทั้งค่าบวกและค่าลบ แต่สมองต้องการค่าอินพุตระหว่าง 0 ถึง 1 วิธีที่ดีที่สุดในการทำให้ข้อมูลของฉันเป็นปกติคืออะไร
ฉันกำลังใช้Brainในการฝึกอบรมโครงข่ายประสาทเทียมในชุดคุณลักษณะที่มีทั้งค่าบวกและค่าลบ แต่สมองต้องการค่าอินพุตระหว่าง 0 ถึง 1 วิธีที่ดีที่สุดในการทำให้ข้อมูลของฉันเป็นปกติคืออะไร
คำตอบ:
สิ่งนี้เรียกว่าการทำให้เป็นมาตรฐานตามความเป็นเอกภาพ หากคุณมีเวกเตอร์คุณสามารถขอรับเวอร์ชันปกติได้โดยใช้Zโดยทำดังนี้
ค้นหาจำนวนบวกที่ใหญ่ที่สุดและจำนวนที่น้อยที่สุด (ลบมากที่สุด) ในอาร์เรย์ เพิ่มค่าสัมบูรณ์ของจำนวนที่น้อยที่สุด (ลบมากที่สุด) ให้กับทุกค่าในอาร์เรย์ หารผลลัพธ์แต่ละรายการด้วยความแตกต่างระหว่างจำนวนที่มากที่สุดและน้อยที่สุด
สมมติว่าคุณมีเวกเตอร์ / อาร์เรย์ของค่า v = [1, -2, 3]
minV = Math.min.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] -= minV;}
maxV = Math.max.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] /= ( maxV - minV );}
v = [0.6, 0, 1]
การส่งออกในตอนท้ายจะเป็น คำอธิบาย:
การผลักช่วงค่าทั้งหมดให้เริ่มจาก 0 เพื่อที่เราจะได้ไม่เป็นค่าลบ
การหารค่าด้วย (สูงสุด - ต่ำสุด) ของช่วงดังนั้นค่าสูงสุดจะเป็น 1
ก่อนที่คุณจะทำเช่นนั้นคุณอาจต้องการตรวจสอบค่าผิดปกติ สมมติว่าข้อมูล 99% อยู่ในช่วง (-5, 5) แต่ผู้ชายตัวเล็ก ๆ คนหนึ่งใช้ค่า 25.0 อาเรย์ปกติของคุณจะทำคลัสเตอร์รอบ ๆ (0, 0.3) และนั่นจะทำให้เกิดปัญหาสำหรับการเรียนรู้โครงข่ายประสาท