nikkie-ftnextの日記

イベントレポートや読書メモを発信

イベントレポート | Python mini Hack-a-thon(オンライン)で"機械学習しました" #pyhack

はじめに

頑張れば、何かがあるって、信じてる。nikkieです。
週末の #pyhack で手を動かした内容についてブログに残します。

目次

勉強会の概要

(第112回)Python mini Hack-a-thon(オンライン) - connpass

基本的に毎月開催です。スプリントのゆるい版みたいな感じで各自自分でやりたいことを持ってきて、勝手に開発を進めています。参加費は無料です。 初めての方も常連さんもぜひご参加ください。

オンライン開催にしました

取り組んだこと

日本語テキストの分類タスクに取り組みました。

取り組んだ問題とは異なりますが、履歴書のテキストデータから採用するかしないかを分類するような問題設定です。
手元にはこれまで人がつけた「採用」「不採用」というラベルがあるので、教師あり学習が使えると見込んでいます。
性能のいい機械学習モデルができると、採用されやすい履歴書から人が見ることで、人のリソースを効率的に使えそうです。

データサイエンティストとして1年、独力でどこまででき、どこを補強した方がいいのかの確認を目的に、「機械学習で課題解決できたらいいな」とワクワクしながら取り組みました。

取り組みのログは以下にあります:

うまくいったこと

ホットケーキ作りです!

というのは冗談で、日本語テキストの前処理のための環境設定と思っています。
特にmecab-ipadic-NEologdを更新し、ふだん使っているmecab-python3ではなくfugashiを試しました。

2020年Q1の週1ブログでの素振りにより、前処理をするためのスクリプトはスラスラ書けました。
(今回はモデル訓練までを通して行うことを優先したので、前処理はとても大雑把です)
また、jupyterではなく小分けにしたスクリプトを作って進めたのも感触がよかったです。

課題に感じていること

前処理のコードに比べて、モデルの交差検証での性能評価のコードが書きにくかったです。

  • 正例の方が少ない不均衡なデータのため、推論された確率を使って、閾値以上なら正例とするように処理を加える必要があった
  • これによりsklearnに準備されたcross_val_scorecross_validateを使うのを断念。KFoldを繰り返し処理してモデルの指標の値を算出するように変更

結果、繰り返しが多いコードになり、「もうちょっとうまく書けるのでは?」と感じています。

今後

できたモデルはあまり性能がよくはありません。
前処理が単純すぎるので、工夫する余地が多分にあるという感触です。

またモデルの評価指標を決めずにいろいろなスコアを出力して交差検証したのはあまりよくなかったと感じています。
2クラス分類モデルの評価の指針は、例えば以下の本の5章にありそうです。

懇親会では形態素解析のライブラリの話になりました。
最近はginzaが登場してきたとのことでした。
分かち書き教師なし学習で行う手法も登場していますね(sentencepieceなど)。

参加者、そして、運営の皆さま、1日ありがとうございました!