どのようなスキルセットや求人の条件が高収入につながるのか?
ITエンジニアの転職サイトにはいろいろなものがあると思いますが、そのうちの一つにPaizaがあります。Paizaにはスキルチェック機能があり、気軽にオンラインジャッジを使って問題を解くことで自分のコーディングスキル(の一部)について研鑽を積むことができたり、学習コンテンツを活用することでいろいろな技術への入門ができたりと多彩な機能を備えています。(Paizaマジ感謝!)
今回はPaizaに掲載されている求人情報をクローリング・スクレイピングして募集内容の要素(勤務地、開発言語、経歴など)と提示年収がどのような関係にあるのかについての予測モデルを機械学習によって作成することを目的としています。
クローリング・スクレイピングによる情報収集
今回の取り組みで求人ページから取得する要素は、
- 求人ページのurl
- 企業名
- 求人ポスト
- 年収
- 勤務地
- 募集にあたっての必須要件
- 開発言語とフレームワーク
- クラウドプラットフォーム
- データベース
- 通過ランク
です。
クローリング・スクレイピングは2段階で行っていて、後の機械学習パートにおいて教師データとして使用する上記の要素をone-hotエンコーディングで取得するためにそれぞれの要素にはどのようなものがあるのかの一覧を第一段階で取得し、第二段階で個々の求人がどのような要素を持っているかを取得します。
第一段階のクローリングはこのコードを使って行い、
第二段階のスクレイピングはこのコードを使って行いました。第一段階のクローリングではlxmlとselector及び正規表現を駆使して上記それぞれの要素がとりうる値のリストを作成し、第二段階のスクレイピングではそれぞれの求人により取得したデータをPandasのデータフレーム形式としてまとめてCSVに保存することとしました。
年収はレンジで「400万~800万円」のように提示されていることもあれば、「400万円~」のように提示されていることもあるので、前者の場合は間をとって600万円、後者の場合は下限の値を代表値400万円としてラベルを作成することとしました。
そうやって得られたデータがこちらです。(2021/12/1時点)
収集データによる学習
後は収集したデータをPandasのデータフレームとしてgoogle colab上で学習し、年収予測モデルを作成します。
サンプルコードはこちらです。
データがそれほど多くないのでほんの数秒で学習が終わります。
上記が年収のヒストグラムです。皆さんたくさんお金をもらっていてうらやましい限りです。
学習の進行状況的に20エポックで十分そうだったので、20エポックで打ち切りました。
最終的に100万円程度の誤差が残っています。
このモデルを使って、下記の要素についてパラメータスタディを行いました。
- 勤務地
- 通過ランク
- 開発言語とフレームワーク
- クラウドプラットフォーム
- データベース
- 必須要件
どこにも住んでいない、通過ランクE、なんの開発経験もない人について予測を行うと年収は100.5156万円と予測されました。
これに対して通過ランクを上げていくと
S | 506.27173 |
---|---|
A | 425.1205 |
B | 343.9692 |
C | 262.81808 |
D | 181.66684 |
E | 100.5156 |
参考までに、PaizaランクがSで勤務地が東京で何らかの開発経験が1年 Python3,JavaScript, Vue.js,Django,AWSの求人の場合の年収予測を行うと、701.84344万円となります。(いいな!)
最後に
クローリング・スクレイピングは対象のサービスに対して負荷をかける恐れがありますので、事前にrobots.txtを確認したりしてご迷惑をかけないように行ってください。