Tags:

ใช้อัลกอริทึม matching ตัวไหน ที่เหมาะสมสำหรับเว็บไซต์จัดหางานครับ
กำลังทำโปรเจ็คจบ ป.ตรี วิศวกรรมคอมพิวเตอร์ อยู่ครับ

ปัญหา
อาจารย์อยากให้เว็บไซต์จัดหางานแสดงผลการค้นหาที่มีการแมทชิ่งกันระหว่าง resume(จดหมายสมัครงาน) และตำแหน่งงาน แล้ว "สามารถบอกได้ว่าคุณสมบัติของ Resume กับคุณสมบัติตำแหน่งงานนั้นใกล้เคียงกันกี่เปอร์เซ็น"

ผมลองสืบค้นอยู่หลายวันจากกูเกิลและวิทยานิพนธ์ของคนอื่นๆ ซึ่งหายากมาก ทั้งของไทยและต่างประเทศ(แต่ไม่ถนัด Eng อ่านวิทยานิพนธ์แบบงงๆ) พอจะสืบทราบได้ว่ามีอัลกอริทึมที่พอจะใช้ได้จากวิชา Data Mining (ซึ่งไม่เคยลงเรียน)
ได้แก่

  1. Support Vector Machine ที่ค้นเจอนิยมใช้กับการประมวลภาพ
  2. Naive Bayes ยังไม่ได้ศึกษา แต่ค้นเจองานวิจัยของไทยที่ใช้สำหรับแก้ไขปัญหาเลือกอาชีพที่เหมาะสม
  3. Decision Tree พอมีงานวิจัยหรือวิทยานิพนธ์ของไทย ที่ใช้ในการแก้ไขปัญหาเลือกคณะเรียนในมหาลัย
  4. K nearest neighbor algorithm(KNN) งานวิจัยมีพอสมควร แต่มักใช้ในแก้ไขปัญหา คำ งานเครือข่าย ข้อมูลสูญหาย

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

2) และดูแล้วมีความเหมาะสมสำหรับการทำแมชชิ่งในเว็บไซต์จัดหางานครับ หรือมีอัลริทึมตัวอื่นแนะนำบ้างครับ?

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

ขอบคุณครับ สำหรับทุกท่านที่สละเวลาตอบคำถาม

Get latest news from Blognone
By: Meen
Windows PhoneAndroid
on 22 June 2013 - 23:03 #589600

คือถ้าเป็นเรื่อง Data Mining เนี้ยถ้าเอาจริงๆแล้วมันต้องมี training set ครับ แปลว่ามันต้องเรียนรู้ข้อมูลก่อน (ข้อ 2 กับ 3) แต่ผมดูจากโจทย์ของคุณแล้วผมว่าไม่น่าจะมี training set เพราะว่าจริงๆแล้ว Data Mining มันก็จะแบ่งหลักๆได้เป็น Association (พวก Frequent Item-set), Classification, Clustering, Prediction แต่จากข้อมูลที่ให้มามันไม่ค่อยเข้าจะข่ายเรื่อง Data Mining ครับ

เรื่อง KNN มันจะตอบโจทย์ว่า ถ้าเลือกตำแหน่งงานมาอันนึงแล้วหานิสิตที่มีลักษณ์ใกล้เคียงกับตำแหน่งงานมากที่สุด (ก็ตามชื่อ Algorithm เลย)หรือในทางกลับกัน จะเหมาะสมกว่าครับ แต่ไอวิธีคิดข้างในของ KNN เนี้ย เราเอามาประยุกต์ใช้ นั่นก็คือเรืองของ distance นั่นเอง
ปล. จริงๆ KNN มันก็เป็นส่วนนึงของ Classification เหมือนกัน แต่ผมมองว่ามันก็ใช้งานอย่างอื่นได้อีก

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

distance = calculate_dis(ข้อมูลนิสิต, ข้อมูลตำแหน่งงาน) ประมาณนี้ครับ

By: dluffy
iPhoneAndroidWindows
on 24 June 2013 - 13:28 #589986

ขอบคุณ คุณ Meen มากครับสำหรับคำอธิบาย

คำอธิบายช่วยได้เยอะทีเดียวครับ

By: fatrabb1t
AndroidWindows
on 25 June 2013 - 00:55 #590116

ผมว่าก่อนอื่นลองศึกษา data mining แบบกว้่างๆ ก่อน (เช่น categorization, association, clustering และอื่นๆ) อาจจะเริ่มจากอ่าน textbook ก่อนก็ได้ แล้วค่อยไปอ่านลงลึกในรายละเอียดของแต่ละ technique เพราะผมมองว่าปัญหาตอนนี้คือยังตีโจทย์ไม่ออก ว่าจะใช้เทคนิคประเภทไหน (แค่ประเภทเฉยๆ ยังไม่เลือกว่าเทคนิคไหน) ทำให้ไม่รู้จะยังไงต่อดี

ก็ต้องลองคิดก่อนครับว่าโจทย์ที่ต้องทำจริงๆ คืออะไร แล้วแต่ละ step ต้องทำยังไงหรือใช้เทคนิคอะไรบ้าง เช่น สมมติว่าคิดไว้แล้วว่าเนี่ยเป็นปัญหาประเภท find similarity แบบนี้ก็ค่อยมาดูว่าจะใช้เทคนิคอะไร เช่น KNN ได้มั้ย แล้วต้องมีการ pre-process ข้อมูลก่อนมั้ย

ผมคิดว่านอกจาก data mining technique แล้วลองศึกษาพวก text mining ดูด้วยครับ เพราะการนำ technique พวกนี้มา apply กับ text บางทีมันจะต่างออกไป

ป.ล. ลองศึกษาดู Natural Language Processing (NLP) ดูด้วยก็ได้ครับ อาจจะได้ไอเดียอะไรที่เอา apply หรือ extend เพิ่มเติมได้