ฉันต้องลดตัวแปรที่มีความสัมพันธ์ / collinear ก่อนเรียกใช้ kmeans หรือไม่


14

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

นี่คือข้อมูลตัวอย่าง ในความเป็นจริงฉันมี 100 ตัวแปรและ 10 ล้านลูกค้า

Customer CatA CatB CatC   
1         10%  70%  20%   
2         15%  60%  25%

1
คุณลองใช้การวิเคราะห์ PCA เพื่อเชื่อมโยงข้อมูลของคุณหรือไม่
Miroslav Sabo

2
"Collinear" นั้นไม่เหมือนกับ "correleted" ดังนั้นคำถามของคุณยังคงไม่ชัดเจน
ttnphns

2
ที่เกี่ยวข้องอย่างใกล้ชิดในการลบตัวแปรมีลักษณะร่วมกันก่อนที่จะทำ PCA
whuber

คำตอบ:


10

อย่าวางตัวแปรใด ๆ แต่ใช้ PCA นี่คือเหตุผล

ประการแรกดังที่ Anony-mousse ชี้ให้เห็นว่า k-หมายความว่าไม่ได้รับผลกระทบอย่างรุนแรงจาก collinearity / correlations คุณไม่จำเป็นต้องทิ้งข้อมูลเพราะสิ่งนั้น

ประการที่สองหากคุณวางตัวแปรของคุณในทางที่ไม่ถูกต้องคุณจะต้องนำตัวอย่างบางส่วนมารวมกันใกล้เคียงกัน ตัวอย่าง:

Customer CatA CatB CatC
1        1    0    0
2        0    1    0
3        0    0    1

(ฉันลบเครื่องหมายสัญกรณ์% และใส่ค่าระหว่าง 0 และ 1, ข้อ จำกัด ดังนั้นพวกเขาจึงรวมเป็น 1)

ระยะทางแบบยุคลิดระหว่างลูกค้าแต่ละคนในพื้นที่ 3 มิติตามธรรมชาติคือ(10)2+(01)2+(00)2=2

ตอนนี้สมมติว่าคุณวาง CatC

Customer CatA CatB 
1        1    0    
2        0    1    
3        0    0    

ตอนนี้ระยะห่างระหว่างลูกค้า 1 และ 2 ยังคงเป็นแต่ระหว่างลูกค้า 1 และ 3 และ 2 และ 3 เป็นเพียง . คุณทำให้ลูกค้าปลอมขึ้น 3 คล้ายกับ 1 และ 2 ในแบบที่ข้อมูลดิบไม่สนับสนุน2(10)2+(00)2=1

ประการที่สามความเป็นคู่ / ความสัมพันธ์ไม่ใช่ปัญหา มิติข้อมูลของคุณคือ 100 ตัวแปรมีขนาดใหญ่พอที่แม้จะมีดาต้าพอยน์ 10 ล้านตัวฉันกังวลว่าค่าเฉลี่ย k อาจจะพบรูปแบบปลอมในข้อมูลและเหมาะสมกับสิ่งนั้น ให้คิดถึงการใช้ PCA เพื่อบีบอัดลงในมิติที่สามารถจัดการได้มากขึ้นเช่นพูดว่า 10 หรือ 12 เพื่อเริ่มต้นด้วย (อาจสูงกว่าหรือต่ำกว่านั้นมาก - คุณจะต้องดูความแปรปรวนของแต่ละองค์ประกอบและเล่นรอบ ๆ บิตเพื่อหาหมายเลขที่ถูกต้อง) คุณจะนำตัวอย่างบางส่วนเข้ามาใกล้กันมากขึ้นโดยการทำสิ่งนี้ใช่ แต่คุณจะทำเช่นนั้นในลักษณะที่ควรรักษาความแปรปรวนส่วนใหญ่ในข้อมูลและจะเป็นการลบความสัมพันธ์โดยเฉพาะ

~~~~~

แก้ไข:

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

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


1
ฉันคิดว่าต้องใช้ความระมัดระวังเป็นอย่างมากในการกำจัดตัวแปรโดย PCA อันดับแรกของความแปรปรวนทั้งหมดจะต้องถูกทำให้เป็นมาตรฐานก่อนที่จะทำการกำจัดดังกล่าวเนื่องจากคุณสามารถกำจัดตัวแปรได้อย่างไม่ถูกต้องเพียงเพราะพวกมันมีสเกลที่แตกต่างกันเนื่องจากหน่วยของพวกเขา ประการที่สองหลังจากนั้นฉันจะกำจัดเฉพาะมิติที่มีการเปลี่ยนแปลงเล็กน้อยเนื่องจาก PCA ถือว่าพื้นฐานฉากตั้งฉากหากคุณมีการเปลี่ยนแปลงในทิศทางที่ไม่ใช่มุมฉากสิ่งนี้จะถูกจับด้วยวิธี k แต่หมายถึงถูกกำจัดโดย PCA
Cagdas Ozgenc

1
ข้อกังวลพื้นฐานคือ PCA ของตัวแปรอิสระไม่ให้ข้อมูลเกี่ยวกับตัวแปรตามทั้งหมด มันเป็นเรื่องง่ายที่จะสร้างตัวอย่างที่วิธีการ PCA นี้จะกำจัดทุกตัวแปรที่มีความสำคัญและเก็บเฉพาะที่ไม่ได้! หากต้องการดูสิ่งที่เกิดขึ้นให้มีการกระจายปกติ bivariate กับความแปรปรวนของและความสัมพันธ์และการตั้งค่าYPCA ข้อมูลจากจะระบุเป็นองค์ประกอบหลักและกำจัดX_1-X_2การถดถอยในจะไม่มีนัยสำคัญ 1 ρ > 0 Y = X 1 - X 2 ( X 1 , X 2 ) X 1 + X 2 X 1 - X 2 Y X 1 + X 2(X1,X2)1ρ>0Y=X1X2(X1,X2)X1+X2X1X2YX1+X2
whuber

1
เป็นการสนทนาที่ไม่เกี่ยวข้องในการตั้งค่าที่ไม่ได้รับการดูแล สำหรับการตั้งค่าภายใต้การดูแลใช่ PCA ไม่สนใจเกี่ยวกับความสัมพันธ์กับตัวแปรเป้าหมาย หากทิศทางของการพึ่งพาตกอยู่ในทิศทางของความโชคร้ายความแปรปรวนต่ำ
Cagdas Ozgenc

2

ในตัวอย่างของเล่นในแบบ 2d หรือ 3d มันไม่ควรสร้างความแตกต่างมากนักเพียงแค่เพิ่มความซ้ำซ้อนในข้อมูลของคุณ: จุดทั้งหมดของคุณอยู่ในมิติไฮเปอร์เพลทแบบแปลก ๆ (d-1) ดังนั้นคลัสเตอร์หมายถึง และระยะทางในมิติไฮเปอร์เพลทแบบมิตินี้ (d-1) เป็นเส้นตรงหลายเส้นในระยะทางเดียวกันดังนั้นมันจึงไม่เปลี่ยนแปลงอะไรเลย

หากคุณเทียมสร้างข้อมูลดังกล่าวเช่นโดยการทำแล้วคุณทำบิดเบือนพื้นที่และเน้นอิทธิพลของและy ที่ถ้าคุณทำเช่นนี้กับตัวแปรทั้งหมดมันไม่สำคัญ แต่คุณสามารถเปลี่ยนน้ำหนักด้วยวิธีนี้ได้อย่างง่ายดาย นี้ empasizes ความจริงที่รู้จักกันว่าnormalizing และตัวแปรน้ำหนักเป็นสิ่งจำเป็น หากคุณมีความสัมพันธ์ในข้อมูลของคุณสิ่งนี้สำคัญกว่าที่เคยx y(x,y)(x,y,x+y)xy

ลองดูตัวอย่างที่ง่ายที่สุด: ตัวแปรที่ซ้ำกัน

หากคุณเรียกใช้ PCA ในชุดข้อมูลของคุณและทำซ้ำตัวแปรนี่หมายถึงการใส่น้ำหนักซ้ำลงในตัวแปรนี้อย่างมีประสิทธิภาพ PCA ตั้งอยู่บนสมมติฐานที่ว่าความแปรปรวนในทุกทิศทางมีความสำคัญเท่ากันดังนั้นคุณควรอย่างแท้จริงตัวแปรน้ำหนักอย่างระมัดระวัง (คำนึงถึงความสัมพันธ์


1
จากการวิเคราะห์ของฉันที่stats.stackexchange.com/a/50583เหตุผลนี้ดูเหมือนว่าไม่ถูกต้อง
whuber

ฉันได้คำตอบที่ดีขึ้นมากมันมากเกินไปจากข้อมูลตัวอย่างของเล่น
มี QUIT - Anony-Mousse

1

ก็แนะนำให้เอาตัวแปรถ้าพวกเขามีความสัมพันธ์อย่างมาก

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

กล่าวโดยย่อคือความแข็งแกร่งของตัวแปรที่มีอิทธิพลต่อการสร้างคลัสเตอร์จะเพิ่มขึ้นหากมีความสัมพันธ์สูงกับตัวแปรอื่น ๆ

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