ปัญหาพื้นฐาน
นี่คือปัญหาพื้นฐานของฉัน: ฉันกำลังพยายามจัดกลุ่มชุดข้อมูลที่มีตัวแปรที่เบ้อย่างมากพร้อมจำนวน ตัวแปรประกอบด้วยศูนย์จำนวนมากและดังนั้นจึงไม่ค่อยมีข้อมูลสำหรับขั้นตอนการจัดกลุ่มของฉัน - ซึ่งน่าจะเป็นอัลกอริทึม k-mean
คุณพูดได้แค่แปลงตัวแปรโดยใช้สแควร์รูทบ็อกซ์คอกซ์หรือลอการิทึม แต่เนื่องจากตัวแปรของฉันขึ้นอยู่กับตัวแปรเด็ดขาดฉันกลัวว่าฉันอาจแนะนำอคติโดยจัดการกับตัวแปร (ขึ้นอยู่กับค่าหนึ่งของตัวแปรเด็ดขาด) ในขณะที่ปล่อยให้ผู้อื่น (ขึ้นอยู่กับค่าอื่น ๆ ของตัวแปรเด็ดขาด) ในแบบที่พวกเขาเป็น .
ลองดูรายละเอียดเพิ่มเติม
ชุดข้อมูล
ชุดข้อมูลของฉันแสดงถึงการซื้อสินค้า รายการมีหมวดหมู่ต่างกันเช่นสี: น้ำเงินแดงและเขียว การซื้อจะถูกจัดกลุ่มเข้าด้วยกันเช่นจากลูกค้า ลูกค้าเหล่านี้แต่ละคนมีชุดข้อมูลหนึ่งแถวของฉันดังนั้นฉันจึงต้องรวมการซื้อกับลูกค้า
วิธีที่ฉันทำคือการนับจำนวนการซื้อโดยที่รายการนั้นมีสีที่แน่นอน ดังนั้นแทนที่จะตัวแปรเดียวcolor
ผมจบลงด้วยสามตัวแปรcount_red
, และcount_blue
count_green
นี่คือตัวอย่างสำหรับภาพประกอบ:
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 12 | 5 | 0 |
-----------------------------------------------------------
c1 | 3 | 4 | 0 |
-----------------------------------------------------------
c2 | 2 | 21 | 0 |
-----------------------------------------------------------
c3 | 4 | 8 | 1 |
-----------------------------------------------------------
ที่จริงแล้วฉันไม่ได้ใช้การนับสัมบูรณ์ในท้ายที่สุดฉันใช้อัตราส่วน (ส่วนของรายการสีเขียวของรายการที่ซื้อทั้งหมดต่อลูกค้า)
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 0.71 | 0.29 | 0.00 |
-----------------------------------------------------------
c1 | 0.43 | 0.57 | 0.00 |
-----------------------------------------------------------
c2 | 0.09 | 0.91 | 0.00 |
-----------------------------------------------------------
c3 | 0.31 | 0.62 | 0.08 |
-----------------------------------------------------------
ผลที่ได้คือเหมือนกัน: สำหรับหนึ่งในสีของฉันเช่นสีเขียว (ไม่มีใครชอบสีเขียว) ฉันได้รับตัวแปรซ้ายเอียงที่มีศูนย์จำนวนมาก ดังนั้นวิธี k จึงไม่พบการแบ่งพาร์ติชันที่ดีสำหรับตัวแปรนี้
ในทางกลับกันถ้าฉันสร้างมาตรฐานตัวแปรของฉัน (ลบค่าเฉลี่ยหารด้วยส่วนเบี่ยงเบนมาตรฐาน) ตัวแปรสีเขียว "ระเบิด" เนื่องจากความแปรปรวนขนาดเล็กและรับค่าจากช่วงที่มีขนาดใหญ่กว่าตัวแปรอื่น ๆ ซึ่งทำให้ดูมากขึ้น สำคัญต่อ k-mean มากกว่าที่เป็นจริง
แนวคิดต่อไปคือการแปลงตัวแปรสีเขียว sk (r) ewed
การแปลงตัวแปรที่เอียง
ถ้าฉันเปลี่ยนตัวแปรสีเขียวด้วยการใช้สแควร์รูทมันจะดูเบ้น้อยกว่าเล็กน้อย (ที่นี่ตัวแปรสีเขียวถูกพล็อตเป็นสีแดงและสีเขียวเพื่อให้เกิดความสับสน)
แดง: ตัวแปรดั้งเดิม สีน้ำเงิน: ถูกแปลงโดยรากที่สอง
สมมติว่าฉันพอใจกับผลลัพธ์ของการเปลี่ยนแปลงนี้ (ซึ่งฉันไม่ได้เพราะศูนย์ยังคงกระจายการแจกแจงอย่างรุนแรง) ฉันควรจะปรับขนาดตัวแปรสีแดงและสีน้ำเงินด้วยแม้ว่าการกระจายของมันจะดูดีหรือไม่?
บรรทัดล่าง
กล่าวอีกนัยหนึ่งฉันบิดเบือนผลการจัดกลุ่มโดยการจัดการสีเขียวในทางเดียว แต่ไม่สามารถจัดการกับสีแดงและสีน้ำเงินได้หรือไม่ ในท้ายที่สุดตัวแปรทั้งสามอยู่ด้วยกันดังนั้นไม่ควรจัดการในลักษณะเดียวกันหรือไม่
แก้ไข
ในการชี้แจง: ฉันทราบว่า k-แปลอาจไม่ใช่วิธีที่จะไปหาข้อมูลตามจำนวน อย่างไรก็ตามคำถามของฉันเกี่ยวกับการรักษาตัวแปรตาม การเลือกวิธีที่ถูกต้องเป็นเรื่องแยกต่างหาก
ข้อ จำกัด โดยธรรมชาติในตัวแปรของฉันคือ
count_red(i) + count_blue(i) + count_green(i) = n(i)
ซึ่งเป็นจำนวนรวมของการซื้อของลูกค้าn(i)
i
(หรือเท่ากันcount_red(i) + count_blue(i) + count_green(i) = 1
เมื่อใช้จำนวนสัมพัทธ์)
หากฉันเปลี่ยนตัวแปรของฉันแตกต่างกันสิ่งนี้สอดคล้องกับการให้น้ำหนักที่แตกต่างกับสามคำศัพท์ในข้อ จำกัด หากเป้าหมายของฉันคือการแยกกลุ่มลูกค้าอย่างเหมาะสมฉันต้องใส่ใจกับการละเมิดข้อ จำกัด นี้หรือไม่? หรือ "จุดจบของเหตุผลหมายถึง" หรือไม่?
count_red
, count_blue
และcount_green
และข้อมูลที่มีการนับจำนวน ขวา? แถวคืออะไร - รายการ? และคุณจะจัดกลุ่มรายการหรือไม่