Bagaimana kami mencari kandidat menggunakan pembelajaran mesin

Untuk menemukan bakat nyata, perusahaan harus mencari cara paling tidak biasa untuk mencari. EPAM juga senang mencari cara-cara baru untuk memecahkan masalah umum. Eksperimen ini dimulai dengan fakta bahwa perekrut kami beralih ke kolega dari praktik Data dan meminta untuk memikirkan cara membuat sistem pencarian kandidat untuk lowongan terbuka di perusahaan. Sebuah sistem yang akan membantu mengurangi waktu yang dihabiskan untuk menemukan kandidat yang relevan di sumber terbuka *, serta meningkatkan kualitas dan kuantitas kandidat yang baik. Tim Ilmu Data kami mengambil tugas bersama dengan siswa dari Pusat Pelatihan EPAM. Selanjutnya, saya akan berbicara tentang pendekatan utama yang dapat menyelesaikan masalah ini, solusi kami dan hasilnya. Secara umum, pos tersebut ternyata lebih menjadi referensi, tetapi melalui prisma kasus bisnis tertentu. Saya juga mencoba meninggalkan tautan,di mana tampaknya relevan bagi saya sehingga Anda dapat mempelajari lebih lanjut tentang teknologi atau pendekatan tertentu.

* - situs dan sumber daya tempat kandidat, pengguna sendiri memposting informasi tentang diri mereka sendiri. Akses ke sumber daya ini tidak terbatas, termasuk lisensi dan ketentuan layanan untuk sumber daya ini (Ketentuan layanan).



Tugas


Biasanya, otomatisasi berarti optimasi proses. Dalam kasus kami, tujuannya dirumuskan sebagai peningkatan efisiensi pencarian kandidat. Efisiensi dalam hal ini dinyatakan melalui menemukan lowongan kandidat yang paling cocok dengan sumber daya minimal.


, (). , . ( ) , , . : , , , . , .


, : , , , .


β€” . , . , , .


:


. , . : , , , β€” . , () .


#1. β€” One-Hot Encoding (OHE)


, 1 β€” , 0 β€” .


Pendekatan ini sederhana, tetapi memiliki beberapa kelemahan. Mungkin masalah utama dari pendekatan ini adalah bahwa keterampilan dalam ruang yang diperoleh dengan bantuannya akan ortogonal satu sama lain, dan kita tidak akan dapat membandingkan kesamaan mereka satu sama lain. Kemungkinan besar, tidak begitu penting bagi kita untuk membedakan antara keterampilan seperti Java7 dan Java8, misalnya, dan akan menyenangkan untuk membedakan mereka dari keterampilan lain yang sama sekali tidak terkait dengan posisi pengembang Java. Dengan pendekatan ini, Java7 dari Java8 akan sama dengan Java7 dari Python.

Selain itu, kelemahan dari pendekatan ini adalah bahwa kami tidak dapat membedakan antara keterampilan khusus dan populer yang umum di seluruh sampel kami. Ini akan membuat suara tertentu dalam pencarian kami dan mengganggu kandidat yang membedakan dan menyorot yang serupa.


Cara mudah untuk sedikit menyesuaikan pengaruh keterampilan populer pada pencarian adalah dengan menggunakan bukan estimasi biner, tetapi yang berdasarkan pada frekuensi kemunculan sampel sebagai keseluruhan dan dalam dokumen terpisah. Untuk melakukan ini, gunakan metode TF-IDF . Namun dalam hal ini, kami masih belum dapat menilai seberapa mirip keterampilan itu satu sama lain.


Metode # 2. Faktorisasi Matriks


Representasi kandidat dalam ruang, di mana setiap keterampilan adalah koordinat ruang, adalah berlebihan, sebagai bagian dari keterampilan yang hampir identik. Dengan demikian, keterampilan yang sama dapat runtuh menjadi beberapa faktor / komponen / gejala laten. Salah satu pendekatan untuk menemukan komponen tersebut adalah sekelompok metode faktorisasi matriks .


User-Skills , . . β€” (skills’ embedding). , β€” , , .


, , . , . β€” , . , .


, , .


#3.





, . , β€” . , , , , ( supervised ), , , , , , , (unsupervised ). .


, . , , , .


β€” , .


,

β€” StarSpace. «», . , , , , , .

, , . , .

#4.


, β€” .


, . , , β€” , β€” . , β€” . β€” - β€” , , . , , .



, β€” .


Node - misalnya, kandidat dapat agak mirip satu sama lain, berada di komunitas yang sama, berbagi minat yang sama, bekerja di perusahaan yang sama atau memiliki karakteristik identik lainnya - ini bertanggung jawab atas karakteristik keseragaman. Di sisi lain, simpul dari kelompok yang berbeda dapat disatukan oleh fakta bahwa mereka memainkan peran yang sama dalam kelompok mereka - pemimpin, asisten pemimpin, penjaga informasi, komunikator, orang luar. Jika kita ingin membandingkan dua grafik, kita dapat memahami bahwa para pemimpin di satu kolom memainkan peran yang sama dengan para pemimpin di yang lain - inilah yang disebut kesamaan struktural.


Salah satu cara atau yang lain, metode representasi grafik mencoba untuk membangun ruang dengan mempertimbangkan keseragaman dan kesetaraan struktural grafik.


Faktorisasi grafik


Pertama-tama, kami mempertimbangkan metode berdasarkan faktorisasi grafik.

, : , .. β€” 1, β€” 0. , .


, .


a-like word2vec*


( , ) . , , , . . , , . , β€” w2v(skip-gram), doc2vec. ( word2vec).


Anda dapat membaca lebih lanjut tentang metode representasi grafik yang serupa, misalnya, di sini - DeepWalk , Node2vec , Graph2vec .


Sumber

Jaringan Konvolusional dalam Grafik


Berikut ini adalah ide yang mirip dengan metode sebelumnya: kami pergi melalui grafik dan menggunakan informasi tentang tetangganya untuk mewakili satu node. Selain itu, informasi tentang struktur umum grafik dan karakteristik node terlibat dalam pelatihan representasi. Inovasi utama dari metode ini adalah bahwa model menormalkan nilai-nilai setiap node sedemikian rupa sehingga posisi dalam ruang laten dari dua node lebih dekat, semakin mirip adalah peran struktural dari node-node ini dalam subgraph.


Prosedur ini disebut pelipat grafik.



Lebih detail dapat ditemukan di sini:


,

PyTorch BigGraph β€” Facebook Research. , . , , .

:


: β€” , . , , , .


, β€” IT-. , , IT-, (.. ), , .


GitHub (github.com, Terms of Service), . , GitHub API GitHub Archive, GitHub , .

GitHub . : ( , ), , , , , (), , , , , , .


GitHub , , . - , ; (), , . , , .




GitHub, embedding, .. . , .




.




, embedding.




embedding , , β€” .




. .


, GitHub , . , , , .




4 , , 5 . , , , , : Java, JavaScript, Python, DevOps, Data Science. 3500 . , , 35% , 65% β€” . , . , , Java Developer β€” 60%, , , . , DevOps, , . , β€” 25,5% .


Apa yang telah kita raih


  • Persentase kandidat relevan yang direkomendasikan oleh model ini sebanding dengan persentase sistem lain, termasuk sumber daya pencarian kerja.
  • Dimungkinkan untuk meningkatkan basis kandidat internal beberapa ratus, menambahkan sumber yang sebelumnya tidak terlibat.
  • Waktu yang dibutuhkan untuk mencari 1 kandidat berkurang 29% dibandingkan dengan sumber pencarian "dingin" lainnya (yaitu, sumber yang tidak digunakan untuk mencari pekerjaan langsung).
  • Kami dapat menangani permintaan dengan keterampilan yang lebih langka secara lebih efisien.
  • Dan rekrut beberapa insinyur senior yang tidak sedang mencari pekerjaan aktif.

Apa yang ingin saya tingkatkan


Solusi yang dihasilkan memiliki kelemahan yang belum dapat kami pecahkan:
  • Masih belum ada solusi yang baik untuk menilai tingkat kemahiran kandidat.
  • GitHub , .
  • , , GitHub.
  • , .


, , , , .


, , , .


All Articles