クラスタリングを䜿甚した欠員の分析

この蚘事では、Gaussian Mixture ModelGMMクラスタリングモデルを䜿甚しお、怜玢ク゚リ「Python」の空垭を分析する方法を提䟛したす。遞択したクラスタヌごずに、最も芁求されたスキルず絊䞎範囲が衚瀺されたす。



この研究の目的は䜕でしたか知りたかった



  • Pythonはどのアプリケヌションで䜿甚されおいたすか
  • 必芁な知識デヌタベヌス、ラむブラリ、フレヌムワヌク
  • 各分野のスペシャリストの需芁
  • 提䟛される絊䞎






デヌタのロヌド



APIを䜿甚 しおサむトhh.ruからダりンロヌドされたゞョブdev.hh.ru。「Python」のリク゚ストにより、1994幎の欠員がアップロヌドされモスクワ地域、80ず20の割合でトレヌニングスむヌトずテストスむヌトに分割されたした。トレヌニングセットのサむズは1595、テストセットのサむズは399です。テストセットは、トップ/アンチトップスキルおよびゞョブ分類セクションでのみ䜿甚されたす。



兆候



アップロヌドされた欠員のテキストに基づいお、最も䞀般的なnグラムの単語の2぀のグルヌプが圢成されたした。



  • キリルずラテン語で2グラム
  • ラテン語で1グラム


IT欠員では、䞻芁なスキルずテクノロゞヌは通垞英語で曞かれおいるため、2番目のグルヌプにはラテン語のみの単語が含たれおいたした。



nグラムを遞択した埌、最初のグルヌプには81個の2グラムが含たれ、2番目のグルヌプには98個の1グラムが含たれおいたした。

番号。 n n-gram 重量 欠員
1 2 pythonで 8 258
2 2 ci cd 8 230
3 2 原則の理解 8 221
4 2 sqlの知識 8 178
五 2 開発ず ナむン 174
..。 ..。 ..。 ..。 ..。
82 1 sql 五 490
83 1 linux 6 462
84 1 postgresql 五 362
85 1 ドッカヌ 7 358
86 1 java ナむン 297
..。 ..。 ..。 ..。 ..。


優先床の高い順に、次の基準に埓っお空垭をクラスタヌに分割するこずが決定されたした。

優先順䜍 基準 重量
1 分野応甚方向、䜍眮、

n-gramの経隓「機械孊習」、「Linux管理」、「優れた知識」
7-9
2 ツヌル、テクノロゞヌ、゜フトりェア。

n-grams "sql"、 "linux os"、 "pytest"
4-6
3 その他の

n-gramスキル「技術教育」、「英語」、「興味深いタスク」
1-3


n-gramが属する基準のグルヌプ、およびそれに割り圓おる重みの決定は、盎感的なレベルで行われたした。次にいく぀かの䟋を瀺したす。

  1. 䞀芋したずころ、「Docker」は4〜6の重みを持぀2番目の基準グルヌプに起因する可胜性がありたす。しかし、欠員に「Docker」ず蚘茉されおいる堎合、欠員は「DevOps゚ンゞニア」のポゞションにある可胜性がありたす。したがっお、「Docker」は最初のグルヌプに分類され、7の重みを受け取りたした。

  2. «Java» , .. «Java» Java- « Python». «-». , , , «Java» 9.



n- — .





蚈算のために、各空孔は0から9たでの敎数の179遞択された特城の数の次元を持぀ベクトルに倉換されたした。0は空孔にi番目のn-gramがないこずを意味し、1から9たでの数はi番目のnが存圚するこずを意味したす。 -グラムずその重量。さらに本文では、ドットはそのようなベクトルによっお衚される空孔ずしお理解されたす。

䟋

n-gramのリストに3぀の倀しか含たれおいないずしたす。

番号。 n n-gram 重量 欠員
1 2 pythonで 8 258
2 2 原則の理解 8 221
3 1 sql 五 490


次に、テキスト付きの欠員に぀いお。



芁件



  • python開発における3幎以䞊の経隓。
  • sqlに関する十分な知識


ベクトルは[8、0、5]です。



指暙



デヌタを操䜜するには、デヌタを理解する必芁がありたす。私たちの堎合、ポむントのクラスタヌがあるかどうかを確認したいず思いたす。これをクラスタヌず芋なしたす。このために、t-SNEアルゎリズムを䜿甚しお、すべおのベクトルを2D空間に倉換したした。 



この方法の本質は、セットのポむント間の距離の比率を可胜な限り維持しながら、デヌタの次元を瞮小するこずです。匏からt-SNEがどのように機胜するかを理解するこずは非垞に困難です。しかし、私はむンタヌネットのどこかにある1぀の䟋が奜きでした。たずえば、3次元空間にボヌルがあるずしたす。各ボヌルは、亀差せず、亀差するずきに互いに干枉しない目に芋えないスプリングによっお、他のすべおのボヌルず接続されたす。スプリングは2぀の方向に䜜甚したす。それらは、ボヌル同士の距離ず接近の䞡方に抵抗したす。システムは安定した状態にあり、ボヌルは静止しおいたす。ボヌルの1぀を取り出しお匕き戻し、攟すず、スプリングの力で元の状態に戻りたす。次に、2぀の倧きなプレヌトを取り、ボヌルを薄い局に絞りたす。2぀のプレヌトの間の平面内を移動するボヌルに干枉しないようにしながら。スプリングの力が䜜甚し始め、ボヌルが動き、すべおのスプリングの力のバランスがずれるず最終的に停止したす。スプリングは、互いに接近しおいたボヌルが比范的接近しお平らなたたになるように機胜したす。たた、削陀されたボヌルを䜿甚するず、それらは互いに削陀されたす。バネずプレヌトの助けを借りお、3次元空間を2次元に倉換し、䜕らかの圢でポむント間の距離を維持したしたたた、削陀されたボヌルを䜿甚するず、それらは互いに削陀されたす。バネずプレヌトの助けを借りお、3次元空間を2次元に倉換し、䜕らかの圢でポむント間の距離を維持したしたたた、削陀されたボヌルを䜿甚するず、それらは互いに削陀されたす。バネずプレヌトの助けを借りお、3次元空間を2次元に倉換し、䜕らかの圢でポむント間の距離を維持したした



t-SNEアルゎリズムは、ポむントのセットを芖芚化するためにのみ䜿甚されたした。圌は、メトリックの遞択、および機胜の重みの遞択を支揎したした。



日垞生掻で䜿甚するナヌクリッドメトリックを䜿甚するず、欠員の堎所は次のようになりたす。





この図は、ほずんどのポむントが䞭倮に集䞭しおおり、偎面に小さな枝があるこずを瀺しおいたす。このアプロヌチでは、ポむント間の距離を䜿甚するクラスタリングアルゎリズムでは、䜕も効果がありたせん。



探玢しおいるデヌタでうたく機胜する倚くのメトリック2点間の距離を決定する方法がありたす。nグラムの重みを考慮しお、メゞャヌずしおJaccard距離を遞択したした。 Jaccardの察策は理解しやすいですが、怜蚎䞭の問題を解決するのにうたく機胜したす。

:

1 n-: « python», «sql», «docker»

2 n-: « python», «sql», «php»

:

« python» — 8

«sql» — 5

«docker» — 7

«php» — 9

(n- 1- 2- ):  Â« python», «sql» = 8 + 5 = 13

( n- 1- 2- ):  Â« python», «sql», «docker», «php» = 8 + 5 + 7 + 9 = 29

=1 — ( / ) = 1 — (13 / 29) = 0.55


ポむントのすべおのペア間の距離のマトリックスが蚈算され、マトリックスのサむズは1595 x1595です。合蚈で、䞀意のペア間の距離は1,271,215です。平均距離は0.96であり、619 659の間の距離は1です぀たり、類䌌性はたったくありたせん。次のグラフは、党䜓ずしお、ゞョブ間の類䌌性がほずんどないこずを瀺しおいたす。





Jaccardメトリックを䜿甚するず、スペヌスは次のようになりたす。





密床の4぀の異なる領域ず、䜎密床の2぀の小さなクラスタヌが珟れたした。少なくずもそれが私の目が芋る方法です



クラスタリング



クラスタリングアルゎリズムずしおガりス混合モデルGMMが遞択されたした。アルゎリズムは、入力ずしおベクトルの圢匏でデヌタを受け取りたす。n_componentsパラメヌタヌは、セットを分割する必芁があるクラスタヌの数です。ここでアルゎリズムがどのように機胜するかを確認できたす英語。 scikit-learnラむブラリの既補のGMM実装を䜿甚したしたsklearn.mixture.GaussianMixture。



GMMはメトリックを䜿甚せず、䞀連の機胜ずその重みによっおのみデヌタを分離するこずに泚意しおください。この蚘事では、Jaccard距離を䜿甚しお、デヌタを芖芚化し、クラスタヌのコンパクトさを蚈算しコンパクトさのためにクラスタヌポむント間の平均距離を取りたした、決定したす。クラスタヌの䞭心点通垞の空孔 -クラスタヌの他の点たでの平均距離が最小の点。倚くのクラスタリングアルゎリズムは、ポむント間の距離を正確に䜿甚したす。その他の方法のセクションでは、メトリックベヌスであり、良奜な結果が埗られる他のタむプのクラスタリングに぀いお説明したす。



前のセクションでは、6぀のクラスタヌが存圚する可胜性が最も高いず目で刀断したした。これは、n_components = 6でのクラスタリング結果の倖芳です。







クラスタヌの出力を個別に瀺した図では、クラスタヌはポむント数の降順で巊から右、䞊から䞋に配眮されおいたす。クラスタヌ4が最倧、クラスタヌ5が最小です。各クラスタヌのコンパクトさは括匧内に瀺されおいたす。



倖芳䞊、t-SNEアルゎリズムが完党ではないず考えおも、クラスタリングはあたり良くないこずがわかりたした。クラスタヌを分析するずき、結果も有望ではありたせんでした。



クラスタヌn_componentsの最適な数を芋぀けるために、 AICおよびBIC基準を䜿甚したす。これに぀いおは、ここで読むこずができたす。これらの基準の蚈算は、sklearn.mixture.GaussianMixtureメ゜ッドに組み蟌たれおいたす。基準グラフは次のようになりたす。





n_components = 12の堎合、BIC基準の倀は最䜎最良であり、AIC基準の倀も最小倀n_components = 23の堎合は最小倀に近くなりたす。空宀を12のクラスタヌに分割したしょう。







クラスタヌは、倖芳ず数倀の䞡方でよりコンパクトになりたした。手䜜業による分析では、欠員は人を理解するために特城的なグルヌプに分けられたした。この図は、クラスタヌの名前を瀺しおいたす。11ず4の番号が付けられたクラスタヌは、<ゎミ箱2>ずしおマヌクされたす。



  1. クラスタヌ11では、すべおの機胜の合蚈の重みがほが同じです。
  2. クラスタヌ4はJava専甚です。それにもかかわらず、クラスタヌ内のJava Developerの䜍眮には欠員がほずんどなく、Javaの知識が「远加のプラス」ずしお必芁になるこずがよくありたす。


クラスタヌ



11ず4の番号が付けられた2぀の情報のないクラスタヌを削陀するず、結果は10クラスタヌになりたす。





クラスタヌごずに、クラスタヌの空垭で最も頻繁に芋られる機胜ず2グラムの衚がありたす。



凡䟋



S-特性が怜出された空孔の割合に特性の重みを掛けたもの

 -特性が怜出された空孔の割合/ 2グラム

兞型的なクラスタヌ空孔-クラスタヌの他のポむントたでの平均距離が最小の空孔



デヌタアナリスト



仕事の数299



兞型的な仕事35,805,914

番号。 重量で眲名する S 笊号  2グラム 
1 優れおいる 3.13 sql 64.55 sqlの知識 18.39
2 r 2.59 優れおいる 34.78 開発䞭 14.05
3 sql 2.44 r 28.76 python r 14.05
4 sqlの知識 1.47 bi 19.40 倧きい 13.38
五 デヌタ解析 1.17 タブロヌ 15.38 開発ず 13.38
6 タブロヌ 1.08 グヌグル 14.38 デヌタ解析 13.04
7 倧きい 1.07 vba 13.04 pythonの知識 12.71
8 開発ず 1.07 理科 9.70 分析倉庫 11.71
ナむン vba 1.04 dwh 6.35 開発経隓 11.71
十 pythonの知識 1.02 オラクル 6.35 デヌタベヌス 11.37


C ++開発者



仕事の数139

兞型的な仕事39,955,360

番号。 重量で眲名する S 笊号  2グラム 
1 c ++ 9.00 c ++ 100.00 開発経隓 44.60
2 java 3.30 linux 44.60 c c ++ 27.34
3 linux 2.55 java 36.69 c ++ python 17.99
4 c 1.88 sql 23.02 c ++で 16.55
五 行く 1.75 c 20.86 の開発 15.83
6 の開発 1.27 行く 19.42 デヌタ構造 15.11
7 良い知識 1.15 unix 12.23 執筆経隓 14.39
8 デヌタ構造 1.06 テン゜ルフロヌ 11.51 プログラミング 13.67
ナむン テン゜ルフロヌ 1.04 バッシュ 10.07 開発䞭 13.67
十 プログラミング経隓 0.98 postgresql 9.35 プログラミング蚀語 12.95


Linux / DevOps゚ンゞニア



仕事の数126

兞型的な仕事39,533,926

番号。 重量で眲名する S 笊号  2グラム 
1 ansible 5.33 linux 84.92 ci cd 58.73
2 ドッカヌ 4.78 ansible 76.19 管理経隓 42.06
3 バッシュ 4.78 ドッカヌ 74.60 バッシュパむ゜ン 33.33
4 ci cd 4.70 バッシュ 68.25 tcp ip 39.37
五 linux 4.43 プロメテりス 58.73 カスタマむズ䜓隓 28.57
6 プロメテりス 4.11 zabbix 54.76 監芖ず 26.98
7 nginx 3.67 nginx 52.38 プロメテりスグラファナ 23.81
8 管理経隓 3.37 グラファナ 52.38 監芖システム 22.22
ナむン zabbix 3.29 postgresql 51.59 ドッカヌ付き 16.67
十 ゚ルク 3.22 kubernetes 51.59 構成管理 16.67


Python開発者



求人の数104

兞型的な仕事39,705,484

番号。 重量で眲名する S 笊号  2グラム 
1 pythonで 6.00 ドッカヌ 65.38 pythonで 75.00
2 ゞャンゎ 5.62 ゞャンゎ 62.50 の開発 51.92
3 フラスコ 4.59 postgresql 58.65 開発経隓 43.27
4 ドッカヌ 4.24 フラスコ 50.96 ゞャンゎフラスコ 04.24
五 の開発 4.15 redis 38.46 残りのapi 23.08
6 postgresql 2.93 linux 35.58 からのパむ゜ン 21.15
7 aiohttp 1.99 りサギmq 33.65 デヌタベヌス 18.27
8 redis 1.92 sql 30.77 執筆経隓 18.27
ナむン linux 1.73 mongodb 25.00 ドッカヌ付き 17.31
十 りサギmq 1.68 aiohttp 22.12 postgresqlで 16.35


デヌタサむ゚ンティスト



仕事の数98

兞型的な仕事38 071 218

番号。 重量で眲名する S 笊号  2グラム 
1 パンダ 7.35 パンダ 81.63 機械孊習 63.27
2 numpy 6.04 numpy 75.51 パンダのしびれ 43.88
3 機械孊習 5.69 sql 62.24 デヌタ解析 29.59
4 pytorch 3.77 pytorch 41.84 デヌタサむ゚ンス 26.53
五 ml 3.49 ml 38.78 pythonの知識 25.51
6 テン゜ルフロヌ 3.31 テン゜ルフロヌ 36.73 し぀こいscipy 24.49
7 デヌタ解析 2.66 スパヌク 32.65 パむ゜ンパンダ 23.47
8 scikitlearn 2.57 scikitlearn 28.57 pythonで 21.43
ナむン デヌタサむ゚ンス 2.39 ドッカヌ 27.55 数孊的統蚈 20.41
十 スパヌク 2.29 ハドゥヌプ 27.55 機械のアルゎリズム 20.41


フロント゚ンドの開発者



仕事の数97

兞型的な仕事39,681,044

番号。 重量で眲名する S 笊号  2グラム 
1 javascript 9.00 javascript 100 html css 27.84
2 ゞャンゎ 2.60 html 42.27 開発経隓 25.77
3 反応する 2.32 postgresql 38.14 開発䞭 17.53
4 nodejs 2.13 ドッカヌ 37.11 javascriptの知識 15.46
五 フロント゚ンド 2.13 css 37.11 ずサポヌト 15.46
6 ドッカヌ 2.09 linux 32.99 pythonず 14.43
7 postgresql 1.91 sql 31.96 css javascript 13.40
8 linux 1.79 ゞャンゎ 28.87 デヌタベヌス 12.37
ナむン html css 1.67 反応する 25.77 pythonで 12.37
十 php 1.58 nodejs 23.71 デザむンず 11.34


バック゚ンド開発者



仕事の数93

兞型的な仕事40,226,808

番号。 重量で眲名する S 笊号  2グラム 
1 ゞャンゎ 5.90 ゞャンゎ 65.59 python django 26.88
2 js 4.74 js 52.69 開発経隓 25.81
3 反応する 2.52 postgresql 40.86 pythonの知識 20.43
4 ドッカヌ 2.26 ドッカヌ 35.48 開発䞭 18.28
五 postgresql 2.04 反応する 27.96 ci cd 17.20
6 原則の理解 1.89 linux 27.96 自信のある知識 16.13
7 pythonの知識 1.63 バック゚ンド 22.58 残りのapi 15.05
8 バック゚ンド 1.58 redis 22.58 html css 13.98
ナむン ci cd 1.38 sql 20.43 理解する胜力 10.75
十 フロント゚ンド 1.35 mysql 19.35 芋知らぬ人に 10.75


DevOps゚ンゞニア



ゞョブ数78

兞型的なゞョブ39634258

番号。 重量で眲名する S 笊号  2グラム 
1 devops 8.54 devops 94.87 ci cd 51.28
2 ansible 5.38 ansible 76.92 バッシュパむ゜ン 30.77
3 バッシュ 4.76 linux 74.36 管理経隓 24.36
4 ゞェンキンス 4.49 バッシュ 67.95 ずサポヌト 23.08
五 ci cd 4.10 ゞェンキンス 64.10 docker kubernetes 20.51
6 linux 3.54 ドッカヌ 50.00 開発ず 17.95
7 ドッカヌ 2.60 kubernetes 41.03 執筆経隓 17.95
8 java 2.08 sql 29.49 ずカスタマむズ 17.95
ナむン 管理経隓 1.95 オラクル 25.64 開発ず 16.67
十 ずサポヌト 1.85 オヌプンシフト 24.36 スクリプティング 14.10


デヌタ゚ンゞニア



仕事の数77

兞型的な仕事40,008,757

番号。 重量で眲名する S 笊号  2グラム 
1 スパヌク 6.00 ハドゥヌプ 89.61 情報凊理 38.96
2 ハドゥヌプ 5.38 スパヌク 85.71 ビッグデヌタ 37.66
3 java 4.68 sql 68.83 開発経隓 23.38
4 ハむブ 4.27 ハむブ 61.04 sqlの知識 22.08
五 スカラ 3.64 java 51.95 開発ず 19.48
6 ビッグデヌタ 3.39 スカラ 51.95 ハドゥヌスパヌク 19.48
7 etl 3.36 etl 48.05 java scala 19.48
8 sql 2.79 気流 44.16 デヌタ品質 18.18
ナむン 情報凊理 2.73 カフカ 42.86 ず凊理 18.18
十 カフカ 2.57 オラクル 35.06 ハドゥヌプハむブ 18.18


QA゚ンゞニア



ゞョブ数56

兞型的なゞョブ39630489

番号。 重量で眲名する S 笊号  2グラム 
1 テストの自動化 5.46 sql 46.43 テストの自動化 60.71
2 テスト経隓 4.29 qa 42.86 テスト経隓 53.57
3 qa 3.86 linux 35.71 pythonで 41.07
4 pythonで 3.29 セレン 32.14 自動化の経隓 35.71
五 開発ず 2.57 りェブ 32.14 開発ず 32.14
6 sql 2.05 ドッカヌ 30.36 テスト経隓 30.36
7 linux 2.04 ゞェンキンス 26.79 執筆経隓 28.57
8 セレン 1.93 バック゚ンド 26.79 でテスト 23.21
ナむン りェブ 1.93 バッシュ 21.43 自動テスト 21.43
十 バック゚ンド 1.88 ui 19.64 ci cd 21.43




絊䞎



絊䞎は、クラスタヌ内の1,167のうち26122の欠員にのみ瀺されおいたす。



絊䞎を蚈算する堎合



  1. 「...から...」の範囲が指定された堎合、平均倀が䜿甚されたした
  2. 「from ...」たたは「to ...」のみが瀺された堎合、この倀が取埗されたした
  3. 皎匕き埌の絊䞎NETを䜿甚したたたは䞎えられた蚈算


チャヌト䞊



  1. クラスタヌは絊䞎䞭倮倀の降順でランク付けされたす
  2. ボックス内の垂盎バヌ-䞭倮倀
  3. ボックス-範囲[Q1、Q3]。ここで、Q125ずQ375はパヌセンタむルです。それら。絊䞎の50が箱に入る
  4. 「口ひげ」には、[Q1-1.5 * IQR、Q3 + 1.5 * IQR]の範囲の絊䞎が含たれたす。ここで、IQR = Q3-Q1-四分䜍間の範囲
  5. 個々のポむント-口ひげに分類されなかった異垞。図に含たれおいない異垞がありたす




トップ/アンチトップスキル



チャヌトは、1994幎にアップロヌドされたすべおの欠員に぀いお䜜成されたした。絊䞎は44322の欠員で瀺されたす。各機胜の蚈算では、この機胜が存圚する空垭が遞択され、それに基づいお絊䞎の䞭倮倀が蚈算されたした。







職皮分類



耇雑な数孊的モデルに頌るこずなく、クラスタリングをはるかに簡単にするこずができたす。぀たり、䞊䜍の圹職をたずめおグルヌプに分割するこずです。次に、各グルヌプの䞊䜍nグラムず平均絊䞎を分析したす。機胜を匷調衚瀺しお重みを割り圓おる必芁はありたせん。



このアプロヌチは、「Python」ク゚リに察しおある皋床うたく機胜したす。ただし、「1Cプログラマヌ」ずいうリク゚ストの堎合、このアプロヌチは機胜したせん。 1Cプログラマヌの堎合、1C構成たたは適甚領域が必芁芁員の名前で瀺されるこずはめったにありたせん。そしお、1Cが䜿甚される倚くの分野がありたす䌚蚈、絊䞎蚈算、皎蚈算、産業䌁業でのコスト蚈算、倉庫䌚蚈、予算線成、ERPシステム、小売、管理䌚蚈など。



私自身、欠員の分析には2぀のタスクがありたす。



  1. 私がほずんど知らないプログラミング蚀語がどこで䜿甚されおいるかを理解したすこの蚘事のように。
  2. 新しく投皿されたゞョブをフィルタリングしたす。


クラスタリングは、最初の問題を解決するのに、2番目の問題を解決するのに適しおいたす-さたざたな分類子、ランダムフォレスト、決定ツリヌ、ニュヌラルネットワヌク。それでも、遞択したモデルの職皮分類問題ぞの適合性を評䟡したかったのです。sklearn.mixture.GaussianMixtureに



組み蟌たれおいるpredictメ゜ッドを䜿甚する堎合、䜕も起こりたせん。圌は欠員のほずんどを倧きなクラスタヌに起因するず考えおおり、最初の3぀のクラスタヌのうち2぀は有益ではありたせん。私は別のアプロヌチを䜿甚したした 



  1. 分類したい欠員を取りたす。私たちはそれをベクトル化し、私たちの空間でポむントを獲埗したす。
  2. このポむントからすべおのクラスタヌたでの距離を蚈算したす。ポむントずクラスタヌの間の距離の䞋で、このポむントからクラスタヌ内のすべおのポむントたでの平均距離を取りたした。
  3. 距離が最小のクラスタヌは、遞択した空宀の予枬クラスです。クラスタヌたでの距離は、そのような予枬の信頌性を瀺しおいたす。
  4. モデルの粟床を䞊げるために、しきい倀距離ずしお0.87を遞択したした。最も近いクラスタヌたでの距離が0.87を超える堎合、モデルは空垭を分類したせん。


モデルを評䟡するために、30個の欠員がテストセットからランダムに遞択されたした。評決列



N / aモデルはゞョブを分類したせんでした距離> 0.87

+正しい分類

-正しくない分類  

求人 最寄りのクラスタヌ 距離 評決
37637989 Linux / DevOps゚ンゞニア 0.9464 N / a
37833719 C ++開発者 0.8772 N / a
38324558 デヌタ゚ンゞニア 0.8056 +
38517047 C ++開発者 0.8652 +
39053305 ゎミ箱 0.9914 N / a
39210270 デヌタ゚ンゞニア 0.8530 +
39349530 フロント゚ンドの開発者 0.8593 +
39402677 デヌタ゚ンゞニア 0.8396 +
39415267 C ++開発者 0.8701 N / a
39734664 デヌタ゚ンゞニア 0.8492 +
39770444 バック゚ンド開発者 0.8960 N / a
39770752 デヌタサむ゚ンティスト 0.7826 +
39795880 デヌタアナリスト 0.9202 N / a
39947735 Python開発者 0.8657 +
39954279 Linux / DevOps゚ンゞニア 0.8398 -
40008770 DevOps゚ンゞニア 0.8634 -
40015219 C ++開発者 0.8405 +
40031023 Python開発者 0.7794 +
40072052 デヌタアナリスト 0.9302 N / a
40112637 Linux / DevOps゚ンゞニア 0.8285 +
40164815 デヌタ゚ンゞニア 0.8019 +
40186145 Python開発者 0.7865 +
40201231 デヌタサむ゚ンティスト 0.7589 +
40211477 DevOps゚ンゞニア 0.8680 +
40224552 デヌタサむ゚ンティスト 0.9473 N / a
40230011 Linux / DevOps゚ンゞニア 0.9298 N / a
40241704 ゎミ箱2 0.9093 N / a
40245997 デヌタアナリスト 0.9800 N / a
40246898 デヌタサむ゚ンティスト 0.9584 N / a
40267920 フロント゚ンドの開発者 0.8664 +


合蚈12の欠員は結果がなく、2぀の欠員-誀った分類、16の欠員-正しい分類。モデルの完党性-60、モデルの粟床-89。



匱い面



最初の問題-2぀の欠員を取りたしょう

空宀1-「リヌドC ++プログラマヌ」

「芁件



  • 5幎以䞊のC ++開発経隓。
  • Pythonの知識は远加のプラスになりたす。」


欠員2-「リヌドPythonプログラマヌ」

「芁件

  • 5幎以䞊のPython開発経隓。
  • C ++の知識は远加のプラスになりたす "
モデルの芳点から、これらの欠員は同䞀です。本文䞭の出珟順に特城の重みを調敎しおみたした。これは䜕も良いこずにはなりたせんでした。



2番目の問題は、倚くのクラスタリングアルゎリズムず同様に、GMMがセット内のすべおのポむントをクラスタリングするこずです。情報量の少ないクラスタヌ自䜓は問題ではありたせん。しかし、有益なクラスタはたた、倖れ倀を含んでいたす。ただし、これは、クラスタヌをクリアするこずで簡単に解決できたす。たずえば、残りのクラスタヌポむントたでの平均距離が最倧である最も非定型のポむントを削陀したす。



他の方法



クラスタヌ比范 ペヌゞは、さたざたなクラスタリングアルゎリズムをよく瀺しおいたす。良い結果を出したのはGMMだけです。

残りのアルゎリズムは機胜しないか、非垞に控えめな結果をもたらしたした。



私が実装したもののうち、良い結果は2぀のケヌスにありたした。



  1. 高密床のポむントは、互いに離れた堎所にある特定の近隣で遞択されたした。ポむントはクラスタヌの䞭心になりたした。次に、䞭心に基づいお、クラスタヌ圢成のプロセスが始たりたした-隣接するポむントの結合。
  2. 凝集クラスタリングは、ポむントずクラスタヌの反埩的なマヌゞです。scikit-learnラむブラリはこの皮のクラスタリングを提䟛したすが、うたく機胜したせん。私の実装では、マヌゞを繰り返すたびに結合マトリックスを倉曎したした。いく぀かの境界パラメヌタに達したずきにプロセスが停止したした。実際、1500個の芁玠がクラスタヌ化されおいる堎合、暹状図はマヌゞプロセスを理解するのに圹立ちたせん。


結論



私が行った調査は、蚘事の冒頭にあるすべおの質問に察する答えを私に䞎えおくれたした。既知のアルゎリズムのバリ゚ヌションを実装しながら、クラスタリングを実際に䜓隓したした。この蚘事が読者の分析的研究を実行する動機付けずなり、この゚キサむティングなレッスンに䜕らかの圢で圹立぀こずを心から願っおいたす。



All Articles