K-หมายถึงการจัดกลุ่มสำหรับข้อมูลตัวเลขและหมวดหมู่ผสม


133

ชุดข้อมูลของฉันมีแอตทริบิวต์ตัวเลขจำนวนหนึ่งและหนึ่งหมวดหมู่

พูดว่าNumericAttr1, NumericAttr2, ..., NumericAttrN, CategoricalAttr,

ที่CategoricalAttrจะใช้เวลาหนึ่งของค่าที่เป็นไปได้ที่สาม: CategoricalAttrValue1, หรือCategoricalAttrValue2CategoricalAttrValue3

ฉันใช้ค่าเริ่มต้น k หมายถึงการจัดกลุ่มการดำเนินการขั้นตอนวิธีสำหรับคู่https://blog.west.uni-koblenz.de/2012-07-14/a-working-k-means-code-for-octave/ ใช้งานได้กับข้อมูลตัวเลขเท่านั้น

ดังนั้นคำถามของฉัน: มันเป็นที่ถูกต้องในการแยกแอตทริบิวต์เด็ดขาดCategoricalAttrเป็นสามตัวเลข (binary) ตัวแปรเช่นIsCategoricalAttrValue1, IsCategoricalAttrValue2, IsCategoricalAttrValue3?


7
ใช่การเข้ารหัส 1-of-n ก็ใช้ได้เช่นกัน
Sean Owen

1
บางทีวิธีการนี้อาจเป็นประโยชน์: zeszyty-naukowe.wwsi.edu.pl/zeszyty/zeszyt12/…

คุณมีความคิดเกี่ยวกับการรวมกลุ่มแบบ 'TIME SERIES' ของข้อมูลที่เป็นหมวดหมู่และตัวเลขหรือไม่?
Leila Yousefi

คำตอบ:


122

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

มีการแปรผันของค่า k ที่รู้จักกันในชื่อ k-modes ซึ่งนำเสนอในบทความนี้โดย Zhexue Huang ซึ่งเหมาะสำหรับข้อมูลที่เป็นหมวดหมู่ โปรดทราบว่าโซลูชันที่คุณได้รับนั้นมีความอ่อนไหวต่อเงื่อนไขเริ่มต้นดังที่กล่าวไว้ที่นี่ (PDF)

กระดาษของหวาง (เชื่อมโยงด้านบน) ยังมีส่วนที่เกี่ยวกับ "k-prototypes" ซึ่งใช้กับข้อมูลที่มีการผสมผสานระหว่างคุณสมบัติที่เป็นหมวดหมู่และตัวเลข มันใช้การวัดระยะทางซึ่งผสมระยะทาง Hamming สำหรับคุณสมบัติที่เป็นหมวดหมู่และระยะทางแบบยุคลิดสำหรับคุณสมบัติที่เป็นตัวเลข

การค้นหาของ Google สำหรับ "k-หมายถึงการผสมผสานของข้อมูลเด็ดขาด" จะปรากฏขึ้นเมื่อเร็ว ๆ นี้อีกไม่กี่เอกสารเกี่ยวกับอัลกอริทึมต่างๆสำหรับการจัดกลุ่มคล้าย K หมายถึงด้วยการผสมผสานของข้อมูลที่เป็นหมวดหมู่และตัวเลข (ฉันยังไม่ได้อ่านพวกเขาดังนั้นฉันไม่สามารถแสดงความคิดเห็นเกี่ยวกับข้อดีของพวกเขา)


ที่จริงแล้วสิ่งที่คุณแนะนำ (การแปลงแอตทริบิวต์ที่เป็นหมวดหมู่ให้เป็นค่าไบนารี่จากนั้นทำ k-mean ราวกับว่านี่เป็นค่าตัวเลข) เป็นอีกวิธีหนึ่งที่เคยลองมาก่อน (predating k-โหมด) (ดู Ralambondrainy, H. 1995. อัลกอริธึมรุ่น k-mean แนวคิดของรูปแบบตัวอักษรการจดจำ, 16: 1147–1157) แต่ฉันเชื่อว่าวิธี k-mode เป็นที่ต้องการสำหรับเหตุผลที่ฉันระบุไว้ข้างต้น


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

1
ฟังดูเหมือนเป็นวิธีที่เหมาะสม @ cwharland ในการพิจารณาต่อไปฉันยังทราบด้วยว่าหนึ่งในข้อดีที่ Huang ให้ไว้สำหรับวิธีการแบบ K-mode เหนือ Ralambondrainy - คุณไม่ต้องแนะนำคุณสมบัติแยกต่างหากสำหรับแต่ละค่าของตัวแปรเด็ดขาดของคุณ - ไม่สำคัญใน กรณีของ OP ที่เขามีเพียงตัวแปรเด็ดขาดเดียวที่มีสามค่า ดีกว่าไปด้วยวิธีที่ง่ายที่สุดที่ใช้งานได้
ทิมกู๊ดแมน

3
คำตอบที่ดี. อาจเป็นประโยชน์: ฉันใช้ k-modes และ k-prototypes ของ Huang (และรูปแบบบางอย่าง) ใน Python: github.com/nicodv/kmodes
Def_Os

2
ฉันไม่แนะนำให้แปลงแอตทริบิวต์เด็ดขาดเป็นค่าตัวเลข ลองนึกภาพคุณมีสองชื่อเมือง: NY และ LA หากคุณใช้ NY หมายเลข 3 และ LA หมายเลข 8 ระยะทางคือ 5 แต่นั่นคือ 5 ไม่มีอะไรให้ดูด้วยความแตกต่างระหว่าง NY และ LA
adesantos

@adesantos ใช่ว่าเป็นปัญหากับการแสดงหลายหมวดหมู่ด้วยคุณสมบัติตัวเลขเดียวและใช้ระยะทางแบบยุคลิด การใช้ระยะทาง Hamming เป็นวิธีหนึ่ง ในกรณีนั้นระยะทางคือ 1 สำหรับแต่ละคุณลักษณะที่แตกต่างกัน (แทนที่จะเป็นความแตกต่างระหว่างค่าตัวเลขที่กำหนดให้กับหมวดหมู่) การทำให้แต่ละหมวดหมู่เป็นคุณสมบัติของตนเองเป็นอีกแนวทางหนึ่ง (เช่น 0 หรือ 1 สำหรับ "is it NY" และ 0 หรือ 1 สำหรับ "is it LA")
ทิมกู๊ดแมน

24

ในความคิดของฉันมีวิธีการจัดการกับข้อมูลที่เป็นหมวดหมู่ในการจัดกลุ่ม R มาพร้อมกับระยะทางเฉพาะสำหรับข้อมูลเด็ดขาด ระยะทางนี้เรียกว่า Gower ( http://www.rdocumentation.org/packages/StatMatch/versions/1.2.0/topics/gower.dist ) และใช้งานได้ดีทีเดียว


2
นี่คือวิธีการที่ฉันใช้สำหรับชุดข้อมูลแบบผสม - การแบ่งรอบ medoids ที่ใช้กับ Gower distance matrix (ดูr-bloggers.com/clustering-mixed-data-types-in-r ) ปัญหาคือการคำนวณระยะทางเมทริกซ์ต้องใช้หน่วยความจำจำนวนมากตามสัดส่วนของ O (n ^ 2) ดังนั้นสำหรับชุดข้อมูลที่มีขนาดใหญ่กว่า 10 หรือ 20,000 ระเบียนฉันกำลังดูตัวแปรในการจัดกลุ่ม k-mean ที่ต้องใช้หน่วยความจำน้อยกว่า ข้อมูลผสม
RobertF

@RobertF เหมือนกันที่นี่ ขนาดข้อมูลที่เป็นไปได้นั้นต่ำเกินไปสำหรับปัญหาส่วนใหญ่
piggybox

20

(นอกจากคำตอบที่ยอดเยี่ยมโดยทิมกู๊ดแมน)

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

  1. อัลกอริทึมการจัดกลุ่มมีอิสระที่จะเลือกคะแนนระยะทาง / ความคล้ายคลึงกัน ยุคลิดเป็นที่นิยมมากที่สุด แต่ตัวชี้วัดอื่น ๆ สามารถนำมาใช้เพื่อปรับขนาดตามการกระจายข้อมูลในแต่ละมิติ / คุณลักษณะตัวอย่างเช่นตัวชี้วัด Mahalanobis แสดงระยะทางของจุดข้อมูลจากจุดศูนย์กลางตามตัวชี้วัดระยะทางที่ใช้

  2. สำหรับการจัดกลุ่มกระดาษผสม (ตัวเลขและหมวดหมู่) ที่ดีที่อาจช่วยได้คือ: INCONCO: การจัดกลุ่มการตีความของวัตถุเชิงตัวเลขและเชิงหมวดหมู่

  3. นอกเหนือจาก k- หมายถึง: เนื่องจากวานิลลาธรรมดา k- หมายถึงถูกตัดออกไปแล้วเป็นวิธีการที่เหมาะสมในการแก้ไขปัญหานี้ฉันจะเสี่ยงเกินกว่าที่จะคิดว่าการจัดกลุ่มเป็นปัญหาการปรับพอดีแบบจำลอง มาตรการที่แตกต่างกันเช่นตัวชี้วัดข้อมูลทฤษฎี: Kullback-Liebler divergence ทำงานได้ดีเมื่อพยายามที่จะรวมตัวแบบพารามิเตอร์ที่มีต่อการกระจายข้อมูล (แน่นอนว่าเทคนิคการจัดกลุ่มพารามิเตอร์เช่น GMM ช้ากว่า Kmeans ดังนั้นจึงมีข้อเสียในการพิจารณา)

  4. การทำคลัสเตอร์ k-modes ของ Fuzzy นั้นฟังดูน่าสนใจเพราะเทคนิคฟัซซี่ลอจิกถูกพัฒนาขึ้นเพื่อจัดการกับบางอย่างเช่นข้อมูลเชิงหมวดหมู่ ดูการจัดกลุ่มข้อมูลเชิงหมวดหมู่แบบฟัซซีโดยใช้ฟัซซีเซนทรอยด์สำหรับข้อมูลเพิ่มเติม

ตรวจสอบด้วย: ROCK: อัลกอริทึมการจัดกลุ่มที่แข็งแกร่งสำหรับแอตทริบิวต์หมวดหมู่


17

คำถามนี้ดูเหมือนจะเกี่ยวกับการเป็นตัวแทน แต่ไม่มากนักเกี่ยวกับการทำคลัสเตอร์

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

วิธีง่ายๆวิธีหนึ่งคือการใช้สิ่งที่เรียกว่าการเป็นตัวแทนที่ร้อนแรงและเป็นสิ่งที่คุณคิดว่าควรทำ แทนที่จะมีตัวแปรเดียวเช่น "color" ที่สามารถรับค่าสามค่าเราแยกมันออกเป็นสามตัวแปร สิ่งเหล่านี้จะเป็น "color-red," "color-blue," และ "color-yellow" ซึ่งทั้งหมดสามารถใช้กับค่า 1 หรือ 0 เท่านั้น

นี่เป็นการเพิ่มมิติของพื้นที่ แต่ตอนนี้คุณสามารถใช้อัลกอริทึมการจัดกลุ่มที่คุณต้องการ บางครั้งมันก็สมเหตุสมผลที่จะ zscore หรือทำให้ข้อมูลขาวขึ้นหลังจากทำกระบวนการนี้ แต่ความคิดของคุณนั้นสมเหตุสมผล


ฉันเห็นด้วยกับคำตอบของคุณ HotEncoding มีประโยชน์มาก
ปราโมทย์

4

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


2
คุณจะเจาะจงมากขึ้นได้ไหม? EM หมายถึงอัลกอริธึมการปรับให้เหมาะสมที่สามารถใช้สำหรับการทำคลัสเตอร์ มีหลายวิธีในการทำเช่นนี้และไม่ชัดเจนว่าคุณหมายถึงอะไร
bayer

@ ผู้เล่นฉันคิดว่าการจัดกลุ่มที่กล่าวถึงในที่นี้คือรูปแบบการผสมแบบเกาส์ GMM มักใช้ EM
goh

1
ฉันไม่คิดว่านั่นคือสิ่งที่เขาหมายถึงทำให้ GMM ไม่ถือว่าตัวแปรเด็ดขาด
bayer

3

ขึ้นอยู่กับตัวแปรเด็ดขาดของคุณที่ใช้ สำหรับตัวแปรอันดับที่พูดไม่ดีเฉลี่ยและดีมันสมเหตุสมผลที่จะใช้เพียงหนึ่งตัวแปรและมีค่า 0,1,2 และระยะทางทำให้เข้าใจได้ที่นี่ อย่างไรก็ตามหากไม่มีคำสั่งซื้อคุณควรใช้การเข้ารหัสแบบร้อนอย่างใดอย่างหนึ่งตามที่กล่าวไว้ข้างต้น


3

คุณไม่ควรใช้การจัดกลุ่ม k-mean บนชุดข้อมูลที่มีประเภทข้อมูลแบบผสม แต่มีอัลกอริทึมการจัดกลุ่มจำนวนหนึ่งที่สามารถจัดการประเภทข้อมูลแบบผสมได้อย่างเหมาะสม ความเป็นไปได้บางอย่างรวมถึงต่อไปนี้:

1) อัลกอริทึมที่ใช้การแบ่งพาร์ติชัน: k-Prototypes, Squeezer
2) อัลกอริทึมลำดับชั้น: ROCK, Agglomerative single, เฉลี่ยและการเชื่อมโยงที่สมบูรณ์
3) อัลกอริธึมที่อิงตามความหนาแน่น: HIERDENC, MULIC, CLIQUE
4) - จัดระเบียบแผนที่

หากคุณต้องการที่จะเรียนรู้เพิ่มเติมเกี่ยวกับอัลกอริทึมเหล่านี้ต้นฉบับ 'การสำรวจของอัลกอริทึมการจัดกลุ่ม' ที่เขียนโดย Rui Xu เสนอการแนะนำที่ครอบคลุมเกี่ยวกับการวิเคราะห์คลัสเตอร์


2

เป้าหมายของ K-Means คือการลดความแปรปรวนภายในคลัสเตอร์และเนื่องจากมันคำนวณ centroids เป็นจุดเฉลี่ยของคลัสเตอร์จึงจำเป็นต้องใช้ระยะทางแบบยุคลิดเพื่อที่จะมาบรรจบกันอย่างเหมาะสม ดังนั้นหากคุณต้องการใช้ K-Means จริงๆคุณต้องแน่ใจว่าข้อมูลของคุณทำงานได้ดี

การแสดง

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

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

ในกรณีที่ค่าหมวดหมู่ไม่ได้เป็น "ระยะเท่ากัน" และสามารถสั่งซื้อได้คุณสามารถให้หมวดหมู่เป็นค่าตัวเลขได้ ตัวอย่างเช่นเด็กวัยรุ่นผู้ใหญ่อาจแสดงเป็น 0, 1 และ 2 สิ่งนี้จะสมเหตุสมผลเพราะวัยรุ่น "ใกล้ชิด" มากกว่าที่จะเป็นเด็กมากกว่าผู้ใหญ่

K-Medoids

วิธีการทั่วไปที่ใช้ K-Means คือ K-Medoids K-Medoids ทำงานคล้ายกันกับ K-Means แต่ความแตกต่างที่สำคัญคือเซนทรอยด์สำหรับแต่ละกลุ่มจะถูกกำหนดเป็นจุดที่ลดผลรวมภายในระยะทางของคลัสเตอร์ การบังคับใช้นี้ช่วยให้คุณใช้การวัดระยะทางที่คุณต้องการและดังนั้นคุณสามารถสร้างการวัดแบบกำหนดเองของคุณเองซึ่งจะคำนึงถึงประเภทที่ควรจะปิดหรือไม่


1

ถ้าเราพิจารณาสถานการณ์ที่ตัวแปรเด็ดขาดไม่สามารถเข้ารหัสร้อนเช่นตัวแปรเด็ดขาดมี 200+ หมวดหมู่

ในกรณีเช่นนี้คุณสามารถใช้แพ็คเกจ clustMixType

มันสามารถจัดการข้อมูลแบบผสม (ตัวเลขและหมวดหมู่) คุณเพียงแค่ต้องป้อนข้อมูลมันจะแยกข้อมูลหมวดหมู่และตัวเลขโดยอัตโนมัติ

หากคุณพบปัญหาใด ๆ เช่นตัวเลขบางตัวอยู่ภายใต้หมวดหมู่คุณสามารถเป็น as.factor () / Vice-versa as.numeric () บนฟิลด์ที่เกี่ยวข้องและแปลงให้เป็นปัจจัยและฟีดข้อมูลใหม่ไปเป็นอัลกอริธึม

คำนวณแลมบ์ดาเพื่อให้คุณสามารถป้อนเข้าเป็นอินพุตได้ในเวลาทำการรวมกลุ่ม

เรายังสามารถรับ WSS (ภายในผลรวมของกำลังสอง), พล็อต (แผนภูมิข้อศอก) เพื่อค้นหาจำนวนที่เหมาะสมที่สุดของกลุ่ม

หวังว่าคำตอบนี้จะช่วยให้คุณได้ผลลัพธ์ที่มีความหมายมากขึ้น


1

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

ดังที่ได้กล่าวไว้ข้างต้นโดย @Tim ข้างต้นมันไม่สมเหตุสมผลเลยที่จะคำนวณระยะทาง euclidian ระหว่างจุดที่ไม่มีสเกลและไม่มีคำสั่ง เมื่อคุณเข้ารหัสหนึ่งตัวแปรร้อนจัดคุณสร้างเมทริกซ์กระจัดกระจาย 0 และ 1 เนื่องจากช่วงของค่าได้รับการแก้ไขและอยู่ระหว่าง 0 ถึง 1 จึงจำเป็นต้องทำให้เป็นมาตรฐานในแบบเดียวกับตัวแปรต่อเนื่อง ใช้คะแนน Z เพื่อหาระยะห่างระหว่างคะแนน ซึ่งยังคงไม่ถูกต้องสมบูรณ์ ฉันจะอธิบายด้วยตัวอย่าง ในขณะที่หมวดหมู่นั้นไม่ได้เกิดขึ้นพร้อมกันนั้นระยะห่างระหว่างจุดสองจุดที่เกี่ยวข้องกับตัวแปรเด็ดขาดจะใช้ค่าใดค่าหนึ่งในสองค่าคือค่าสูงหรือต่ำนั่นคือจุดทั้งสองนั้นอยู่ในหมวดหมู่เดียวกันหรือไม่ เนื่องจากค่าที่สูงที่สุดเหล่านี้ อัลกอริธึมจบลงด้วยการให้น้ำหนักมากกว่าตัวแปรต่อเนื่องในการมีอิทธิพลต่อการสร้างกลุ่ม สิ่งนี้สามารถตรวจสอบได้โดยการตรวจสอบอย่างง่ายโดยดูว่าตัวแปรใดที่มีอิทธิพลและคุณจะประหลาดใจเมื่อเห็นว่าส่วนใหญ่จะเป็นตัวแปรเด็ดขาด (วิธีหาตัวแปรที่มีอิทธิพลมากที่สุด [1])

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

ในที่สุดตัวเลือกที่ดีที่สุดสำหรับ python ก็คือk-prototypesซึ่งสามารถจัดการกับตัวแปรทั้งแบบแบ่งประเภทและแบบต่อเนื่อง

[1]: การค้นหาตัวแปรที่มีอิทธิพลมากที่สุดในการสร้างคลัสเตอร์: https://stackoverflow.com/a/53081779/8224401


0

โมเดลผสมสามารถใช้จัดกลุ่มชุดข้อมูลที่ประกอบด้วยตัวแปรแบบต่อเนื่องและหมวดหมู่

คุณสามารถใช้ R แพ็คเกจ VarSelLCM (พร้อมใช้งานบน CRAN) ซึ่งโมเดลภายในแต่ละคลัสเตอร์ตัวแปรต่อเนื่องโดยการแจกแจงแบบเกาส์และตัวแปรลำดับ / ไบนารี ใช้ความระมัดระวังในการจัดเก็บข้อมูลของคุณใน data.frame โดยที่ตัวแปรต่อเนื่องคือ "ตัวเลข" และตัวแปรหมวดหมู่คือ "ปัจจัย"

บทแนะนำมีให้ที่: http://varsellcm.r-forge.r-project.org/

นอกจากนี้ค่าที่ขาดหายไปสามารถจัดการได้โดยตัวแบบในมือ


0

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

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

ด้วยการฝึกอบรมทั้งระยะไกล / ความคล้ายคลึงกันทั้งสองอธิบายการสังเกตเดียวกันเราสามารถแยกกราฟในแต่ละของพวกเขา (Multi-View-Graph-Clustering) หรือแยกกราฟเดียวที่มีหลายขอบ - แต่ละโหนด (การสังเกต) ที่มีขอบให้มากที่สุด โหนดอื่นเนื่องจากมีเมทริกซ์ข้อมูล (Multi-Edge-Clustering) ขอบแต่ละอันถูกกำหนดน้ำหนักของการวัดพร้อมกัน / ระยะทางที่สอดคล้องกัน เริ่มที่นี่:รายการ Github ของกราฟอัลกอริทึมการจัดกลุ่มและเอกสารของพวกเขา. เนื่องจากมีชุดข้อมูลหลายชุดที่มีให้ในการสังเกตเพียงครั้งเดียวจึงต้องใช้การผสมผสานเช่นการวิเคราะห์สเปกตรัมหรือการแยกตัวประกอบเมทริกซ์ที่เชื่อมโยงกัน การวิเคราะห์สเปกตรัมเป็นวิธีเริ่มต้นสำหรับการค้นหาชิ้นส่วนที่มีการเชื่อมต่อสูงหรือมีน้ำหนักมากของกราฟเดี่ยว มีการฝังข้อมูลสเปกตรัมเข้าด้วยกันวิธีการจัดกลุ่มบนข้อมูลตัวเลขอาจทำงานได้อย่างง่ายดาย ค่าเริ่มต้นของวรรณคดีคือ kmeans สำหรับเรื่องของความเรียบง่าย แต่สูงกว่ามาก - และไม่ได้เป็นอัลกอริทึมที่ จำกัด ซึ่งสามารถใช้แทนกันได้ในบริบทนี้

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

จากมุมมองของความสามารถในการปรับขยายได้พิจารณาว่าส่วนใหญ่มีสองปัญหา:

  1. การประมาณปัญหา Eigen (ที่มีวรรณกรรมที่หลากหลายของอัลกอริทึมอยู่เช่นกัน)
  2. การประมาณค่าระยะทางเมทริกซ์ (ปัญหาเชิงกลอย่างหมดจดที่เติบโตอย่างรวดเร็ว - ฉันยังไม่พบวิธีที่มีประสิทธิภาพรอบ ๆ )

ขอให้สนุกกับมัน!


0

คุณอาจต้องการที่จะดูที่คุณสมบัติทางวิศวกรรมอัตโนมัติ: http://www.orges-leka.de/automatic_feature_engineering.html วิธีการนี้เป็นพื้นฐานของการฝัง Bourgain และสามารถใช้ในการหาคุณลักษณะเชิงตัวเลขจากเฟรมข้อมูลแบบแบ่งหมวดหมู่และตัวเลขหรือชุดข้อมูลใด ๆ ที่รองรับระยะทางระหว่างจุดข้อมูลสองจุด หลังจากเปลี่ยนข้อมูลให้เป็นคุณสมบัติตัวเลขเท่านั้นเราสามารถใช้การจัดกลุ่ม K-mean ได้โดยตรง

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