วิธีการปรับขนาดอาร์เรย์ของจำนวนเต็มที่ลงนามให้อยู่ในช่วงตั้งแต่ 0 ถึง 1


14

ฉันกำลังใช้Brainในการฝึกอบรมโครงข่ายประสาทเทียมในชุดคุณลักษณะที่มีทั้งค่าบวกและค่าลบ แต่สมองต้องการค่าอินพุตระหว่าง 0 ถึง 1 วิธีที่ดีที่สุดในการทำให้ข้อมูลของฉันเป็นปกติคืออะไร

คำตอบ:


24

สิ่งนี้เรียกว่าการทำให้เป็นมาตรฐานตามความเป็นเอกภาพ หากคุณมีเวกเตอร์คุณสามารถขอรับเวอร์ชันปกติได้โดยใช้Zโดยทำดังนี้XZ

Z=X-นาที(X)สูงสุด(X)-นาที(X)

1
วิธีการนี้เป็นที่รู้จักกันว่าการปรับสภาพ min-max (ขณะที่เรากำลังใช้ค่า min และ max)
Shagun Sodhani

ตกลงหรือไม่ที่จะใช้วิธีนี้ในการทำให้ค่าที่แสดงเป็นเปอร์เซ็นต์เป็นปกติสามารถเป็นค่าลบ แต่สูงกว่า -2% และต่ำกว่า 30% ได้หรือไม่ มันจะยากขึ้นไหมที่เครือข่ายประสาทเทียมจะได้รับเบาะแสของค่าความหมายถ้าฉันทำให้มันเป็นแบบปกติ?
Ivan

3

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


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

1

สมมติว่าคุณมีเวกเตอร์ / อาร์เรย์ของค่า 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]การส่งออกในตอนท้ายจะเป็น คำอธิบาย:

  1. การผลักช่วงค่าทั้งหมดให้เริ่มจาก 0 เพื่อที่เราจะได้ไม่เป็นค่าลบ

  2. การหารค่าด้วย (สูงสุด - ต่ำสุด) ของช่วงดังนั้นค่าสูงสุดจะเป็น 1


1

ก่อนที่คุณจะทำเช่นนั้นคุณอาจต้องการตรวจสอบค่าผิดปกติ สมมติว่าข้อมูล 99% อยู่ในช่วง (-5, 5) แต่ผู้ชายตัวเล็ก ๆ คนหนึ่งใช้ค่า 25.0 อาเรย์ปกติของคุณจะทำคลัสเตอร์รอบ ๆ (0, 0.3) และนั่นจะทำให้เกิดปัญหาสำหรับการเรียนรู้โครงข่ายประสาท

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.