ตัวแปร“ Normalizing” สำหรับ SVD / PCA


17

สมมติว่าเรามีตัวแปรNวัดได้(a1,a2,,aN)เราทำการวัดจำนวนM>Nของการวัดแล้วต้องการทำการแยกสลายค่าเอกพจน์บนผลลัพธ์เพื่อค้นหาแกนของความแปรปรวนสูงสุดสำหรับM points ในช่องว่างมิติN( หมายเหตุ:คิดว่าวิธีการของฉันได้รับการหักออกเพื่อฉัน= 0สำหรับทุกฉัน .)aiai=0i

ทีนี้สมมติว่าตัวแปรหนึ่งตัว (หรือมากกว่า) มีขนาดลักษณะแตกต่างกันอย่างมีนัยสำคัญมากกว่าส่วนที่เหลือ เช่น1อาจมีค่าอยู่ในช่วง10 - 100ในขณะที่ส่วนที่เหลืออาจจะอยู่ที่ประมาณ0.1 - 1 นี้จะเอียงแกนของความแปรปรวนสูงสุดต่อ1ของแกนมากa1101000.11a1

ความแตกต่างของขนาดอาจเป็นเพราะตัวเลือกการวัดที่โชคร้าย (ถ้าเรากำลังพูดถึงข้อมูลทางกายภาพเช่นกิโลเมตรเทียบกับเมตร) แต่ที่จริงแล้วตัวแปรที่แตกต่างกันอาจมีมิติที่แตกต่างกันโดยสิ้นเชิง (เช่นน้ำหนักเทียบกับปริมาตร) อาจไม่มีวิธีที่ชัดเจนในการเลือกหน่วย "เปรียบได้" สำหรับพวกเขา

คำถาม: ฉันต้องการทราบว่ามีวิธีการมาตรฐาน / ทั่วไปในการทำให้ข้อมูลเป็นมาตรฐานเพื่อหลีกเลี่ยงปัญหานี้หรือไม่ ผมสนใจในเทคนิคมาตรฐานที่ผลิตขนาดเทียบเคียง1 - Nเพื่อจุดประสงค์นี้มากกว่าขึ้นมาพร้อมกับสิ่งใหม่ ๆa1aN

แก้ไข: ความเป็นไปได้อย่างหนึ่งคือทำให้ตัวแปรแต่ละตัวเป็นปกติโดยค่าเบี่ยงเบนมาตรฐานหรือสิ่งที่คล้ายกัน อย่างไรก็ตามปัญหาต่อไปนี้จะปรากฏขึ้น: ลองตีความข้อมูลเป็น cloud point ในพื้นที่N -dimensional คลาวด์จุดนี้สามารถหมุนได้และการฟื้นฟูแบบนี้จะให้ผลลัพธ์สุดท้ายที่แตกต่างกัน (หลังจาก SVD) ขึ้นอยู่กับการหมุน (เช่นในกรณีที่รุนแรงที่สุดให้จินตนาการการหมุนข้อมูลอย่างแม่นยำเพื่อจัดแนวแกนหลักกับแกนหลัก)

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


4
ปัญหาตัวเองมักจะไม่ใช่ค่าคงที่การหมุนเนื่องจากตัวแปรแต่ละตัวจะถูกบันทึกด้วยหน่วยการวัดปกติที่เหมาะสม เช่น1อาจจะอยู่ในฟุต2ในไมครอน3ลิตร ฯลฯ แม้ในขณะที่ทุกหน่วยงานจะเหมือนกันหากตัวแปรที่วัดที่แตกต่างกันของสิ่งที่เป็นจำนวนเงินโดยที่พวกเขาแตกต่างกันไปมีแนวโน้มที่จะแตกต่างกันในรูปแบบลักษณะ ของตัวแปรเหล่านี้อีกครั้งนี่ไม่ใช่การหมุนแบบคงที่ ดังนั้นคุณควรละทิ้งความไม่แน่นอนของการหมุนเวียนเป็นหลักการหรือข้อพิจารณา a1a2a3
whuber

คำตอบ:


11

การปรับสภาพทั่วไปสามประการคือการจัดกึ่งกลางการปรับและการกำหนดมาตรฐาน

ปล่อย เป็นตัวแปรสุ่มX

ตรงกลางเป็น

xi=xix¯.

ผลลัพธ์จะมี¯ x * = 0xx¯=0

การปรับสเกลคือ

xi=xi(ixi2).

ผลลัพธ์จะมีi x i 2 =x1ixi2=1

การกำหนดมาตรฐานคือการจัดกึ่งกลางจากนั้นปรับขนาด ผลลัพธ์จะมี¯ x * = 0และΣ ฉันx * ฉัน 2 = 1xx¯=0ixi2=1


คุณช่วยกำหนด "SS" ได้ไหม
Szabolcs

sum-of-สี่เหลี่ยม ผลรวมของกำลังสองจิน
ttnphns

เหตุผลในการตั้งค่าผลรวมของกำลังสองเป็น 1 ไม่ใช่ความแปรปรวนนั่นคือค่าเอกพจน์จะสอดคล้องกับค่าเบี่ยงเบนมาตรฐานตามแกนหลัก (เว้นแต่ว่าฉันเข้าใจผิด)?
Szabolcs

โปรดดูการแก้ไขคำถามของฉันด้วย
Szabolcs

@ Szabolcs ฉันจริงอาจพลาดจุดของการแก้ไขของคุณ แต่ PCA (หรือ SVD) เป็นเพียงการหมุนตัวเอง (เป็นกรณีพิเศษของการหมุนมุมฉากของแกน) การแปลใด ๆ (เช่นการจัดกึ่งกลาง) หรือการย่อ / ขยาย (เช่นการขยาย) ของคลาวด์ควรมีผลต่อผลลัพธ์ของการหมุนนี้
ttnphns

7

คุณมีสิทธิ์อย่างแน่นอนที่การมีตัวแปรแต่ละตัวที่มีความแปรปรวนแตกต่างกันมากอาจเป็นปัญหาสำหรับ PCA โดยเฉพาะอย่างยิ่งหากความแตกต่างนี้เกิดจากหน่วยงานที่แตกต่างกัน ด้วยเหตุผลดังกล่าวเว้นแต่ว่าตัวแปรต่าง ๆ นั้นสามารถเปรียบเทียบกันได้ (ปริมาณทางกายภาพเดียวกันหน่วยเดียวกัน) ขอแนะนำให้ทำการ PCA บนเมทริกซ์สหสัมพันธ์แทนเมทริกซ์ความแปรปรวนร่วม ดูที่นี่:

การทำ PCA บนเมทริกซ์สหสัมพันธ์นั้นเทียบเท่ากับการสร้างมาตรฐานของตัวแปรทั้งหมดก่อนการวิเคราะห์ (แล้วทำ PCA ในเมทริกซ์ความแปรปรวนร่วม) การกำหนดมาตรฐานหมายถึงการจัดกึ่งกลางจากนั้นหารแต่ละตัวแปรด้วยค่าเบี่ยงเบนมาตรฐานเพื่อให้ทุกคนกลายเป็นความแปรปรวนของหน่วย สิ่งนี้สามารถมองเห็นได้ว่าเป็น "การเปลี่ยนแปลงของหน่วย" ที่สะดวกสบายเพื่อให้ทุกหน่วยเปรียบได้

หนึ่งสามารถถามว่าบางครั้งอาจมีวิธีที่ดีกว่าของตัวแปร "normalizing"; เช่นเราสามารถเลือกที่จะหารด้วยการประมาณค่าความแปรปรวนที่คาดเดาไม่ได้แทนโดยผลต่างดิบ สิ่งนี้ถูกถามในหัวข้อต่อไปนี้และดูการสนทนาที่ตามมา (แม้ว่าจะไม่ได้รับคำตอบที่ชัดเจน):

ในที่สุดคุณก็กังวลว่าการทำให้เป็นปกติด้วยการเบี่ยงเบนมาตรฐาน (หรือบางอย่างที่คล้ายกัน) ไม่ใช่การหมุนคงที่ ก็ใช่มันไม่ใช่ แต่ตามที่ @whuber ได้กล่าวไว้ในความคิดเห็นข้างต้นไม่มีวิธีการหมุนแบบคงที่: การเปลี่ยนหน่วยของตัวแปรแต่ละตัวไม่ใช่การหมุนแบบคงที่ ! ไม่มีอะไรต้องกังวลเกี่ยวกับที่นี่


ฉันได้รับมันสำหรับ PCA แต่มันก็ยังแนะนำให้ทำการฟื้นฟูชนิดใดก่อนที่จะใช้การสลายตัวของค่าเดียว?
hipoglucido

4

เทคนิคทั่วไปก่อนใช้ PCA คือการลบค่าเฉลี่ยจากตัวอย่าง หากคุณไม่ทำเช่นนั้นค่าตัวแรกจะเป็นค่าเฉลี่ย ฉันไม่แน่ใจว่าคุณได้ทำไปแล้วหรือเปล่า ถ้าเราพูดในรหัส MATLAB: นี่คือ

clear, clf
clc
%% Let us draw a line
scale = 1;
x = scale .* (1:0.25:5);
y = 1/2*x + 1;

%% and add some noise
y = y + rand(size(y));

%% plot and see
subplot(1,2,1), plot(x, y, '*k')
axis equal

%% Put the data in columns and see what SVD gives
A = [x;y];
[U, S, V] = svd(A);

hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found directly')

%% Now, subtract the mean and see its effect
A(1,:) = A(1,:) - mean(A(1,:));
A(2,:) = A(2,:) - mean(A(2,:));

[U, S, V] = svd(A);

subplot(1,2,2)
plot(x, y, '*k')
axis equal
hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found after subtracting mean')

ดังที่เห็นได้จากรูปฉันคิดว่าคุณควรลบค่าเฉลี่ยจากข้อมูลถ้าคุณต้องการวิเคราะห์ความแปรปรวน (co) ให้ดีขึ้น จากนั้นค่าจะไม่อยู่ระหว่าง 10-100 และ 0.1-1 แต่ค่าเฉลี่ยจะเป็นศูนย์ ความแปรปรวนจะพบว่าค่าลักษณะเฉพาะ (หรือกำลังสองของค่าเอกพจน์) eigenvector ที่พบนั้นไม่ได้รับผลกระทบจากขนาดของกรณีเมื่อเราลบค่าเฉลี่ยมากเท่ากับกรณีที่เราไม่ได้ ตัวอย่างเช่นฉันได้ทดสอบและสังเกตสิ่งต่อไปนี้ที่บอกการลบค่าเฉลี่ยที่อาจมีผลกับกรณีของคุณ ดังนั้นปัญหาอาจไม่ได้มาจากความแปรปรวน แต่มาจากความแตกต่างของการแปล

% scale = 0.5, without subtracting mean
U =

-0.5504   -0.8349
-0.8349    0.5504


% scale = 0.5, with subtracting mean
U =

-0.8311   -0.5561
-0.5561    0.8311


% scale = 1, without subtracting mean
U =

-0.7327   -0.6806
-0.6806    0.7327

% scale = 1, with subtracting mean
U =

-0.8464   -0.5325
-0.5325    0.8464


% scale = 100, without subtracting mean
U =

-0.8930   -0.4501
-0.4501    0.8930


% scale = 100, with subtracting mean
U =

-0.8943   -0.4474
-0.4474    0.8943

enter image description here


1
ฉันควรจะกล่าวถึงในคำถามว่าค่าเฉลี่ยได้ถูกลบไปแล้ว ฉันจะแก้ไขให้ถูกต้อง
Szabolcs

1
เราอาจแบ่งตัวแปรแต่ละตัวด้วยค่าเบี่ยงเบนมาตรฐาน แต่ฉันสงสัยว่ามีสิ่งอื่นที่ผู้คนทำหรือไม่ ตัวอย่างเช่นเราสามารถคิดว่าชุดข้อมูลนี้เป็นระบบคลาวด์แบบจุดยังไม่มีข้อความ- มิติพื้นที่ มีวิธีที่จะทำในวิธีที่ไม่ได้ขึ้นอยู่กับการหมุนในครั้งนี้หรือไม่ยังไม่มีข้อความ- อวกาศ หากเราหารด้วยค่าเบี่ยงเบนมาตรฐานมันจะมีความสำคัญตามแกนที่เบี่ยงเบนมาตรฐานเหล่านั้น (เช่นไม่ใช่ค่าคงที่การหมุน) ถ้าเราทำตามแกนหลักแล้วฉันคิดว่าตัวแปรจะไม่สัมพันธ์กัน
Szabolcs

1
ฉันรู้ว่าอาจไม่มีวิธีการหมุนที่ไม่เปลี่ยนแปลง แต่อย่างน้อยฉันก็ชอบอ่านการอภิปรายของปัญหาเหล่านี้ ... ตัวชี้ใด ๆ ยินดีต้อนรับ หมายเหตุ:ฉันไม่มีการฝึกอบรมเกี่ยวกับสถิติที่ใช้ (เฉพาะคณิตศาสตร์เช่น linalg ทฤษฎี prob) ดังนั้นฉันจึงเรียนรู้สิ่งนี้เมื่อฉันกำลังไป
Szabolcs

1
เมื่อคุณไม่ได้วางตัวอย่างไว้ตรงกลาง (ลบค่าเฉลี่ยจากคอลัมน์) โดยปกติแล้วไอเกนนิคเตอร์ตัวแรกจะไม่ใช่เวกเตอร์ของค่าเฉลี่ย
whuber

-1 ลงคะแนนเพราะคำตอบนี้เป็นเพียงเกี่ยวกับการอยู่ตรงกลางในขณะที่คำถามเกี่ยวกับการปรับขนาด นอกจากนี้การอ้างว่า eigenvector แรกนั้นจำเป็นต้องใช้เวกเตอร์ของวิธีการที่ไม่ถูกต้องตามที่ระบุไว้โดย @whuber
อะมีบาพูดว่า Reinstate Monica

-5

ในการทำให้ข้อมูลเป็นมาตรฐานสำหรับ PCA จะใช้สูตรต่อไปนี้

เซาท์แคโรไลนา=100X-นาที(X)สูงสุด(X)-นาที(X)

ที่ไหน X เป็นค่า raw สำหรับตัวบ่งชี้นั้นสำหรับประเทศ ในปี เสื้อและ X อธิบายค่าดิบทั้งหมดในทุกประเทศสำหรับตัวบ่งชี้นั้นตลอดทั้งปี


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