AIジョブカレ体験記 第5,6回:だんだん最終課題が近づいてきて焦る
AIエンジニアを目指すプログラミングスクールAIジョブカレ(AI JOB COLLE)も半分以上が経過して、
いよいよ最終課題やテストがちらつき始めました。
若干の焦りも感じつつ、まだ2月後だから、という緩みもありつつ進んでいます。
第5回:前処理とパラメータチューニング
今回はその場で演習がありました。
これまでの内容をきちんと復讐していれば分かる話ですし、
過去のコードを使うのは問題ないため、どこでどんな処理をした、
ということがわかれば何ら問題ありません。
が、ちょっと、いや、だいぶ焦りました笑
授業は、ROC曲線に関する質問の回答後、今回のテーマは「不均衡データの処理」です。
不均衡データの処理のコンセプトとライブラリの使い方
データ分析をする上で、「データ」があることは大前提です。
では、そのデータがプログラムで上手く処理できる状態にあるか、というと必ずしもそうではありません。
Web上でもそうでなくても、何らかのアクションがあったときにSQLにデータを格納するのが一般的です。そのデータをどのように格納するのか、というのはもちろんシステム上で設計されています。
ただし、すべての場合にすべての取りたいデータが取れているとも限りません。
エラーを起こしているような場合もあれば、数字を処理したいのに文字列で格納されているデータ(”Red””Blue”のような)もありえます。
同じように、何かしらの分類を実施しようとしたときに、関心のあるイベント(正例)と、関心のないイベント(負例)が混在しているケースがほとんどです。
この正例と負例のバランスが取れているデータを均衡データ、正例が極端に少ないものを不均衡データと呼びます。
しかし、大概のデータは正例が少ない「不均衡データ」だそうなので、うまく分類処理ができるようにデータを調整します。
負例を減らす「アンダーサンプリング」
正例を増やす「オーバーサンプリング」の2種です。
それぞれ、実装するためのライブラリがあります。
不均衡データの処理に使われているのは「Imbalanced-learn」と「Pandas-ml」です。
これらの使い方や、不均衡データの処理のコンセプトを学びました。
第6回:教師なし学習で距離と密度を使った分類
今回も、Slackで出ていた内容の回答・解説、前回の復習からスタートしました。
データの前処理に使う関数、Get_dummiesのパラメータ指定に関する質問などがありました。やはりエンジニアバックグラウンドの人たちは、ライブラリを使う際に、きちんとリファレンスを見て、どのように振る舞うのかを逐一把握しているようです。
リファレンスが英語なところが、マーケターでかつ英語が得意でないと、厳しいところではあります。しかし、Google翻訳の精度もあがっているので、リファレンスをあたって、使用した関数が、パラメータ指定により、どのように振る舞いが変わるのか、というのを逐一チェックしていくのは、勉強になるなと思います。
特に、AIジョブカレは、最終課題が大きい割に、途中経過の小課題がほとんどありません。新しく学習した内容の演習を自分で考える必要があるため、リファレンスを読み、いじれるパラメータをいじってみて、変化がどう生まれるかを考えることは演習の一環としても重要です。
さて、今回のメインは不均衡データの取扱いと教師なし学習です。
実務上、モデルの精度が上がると、推定ができるようになります。
そうすると、何が原因か?という質問がクライアントから必ず出てくるようです。
このときに、どのパラメータがその推定データに支配的な情報か、というのがわかることはとても価値が高いです。
教師なし学習とは、教師データを使わない、機械学習の手法のことです。
そのため、データの関係性や構造を理解するために用いられます。
クラスタリング:類似性の高いものをまとめる処理。
クラスタリングの手法で主要なものに、k-meansとDBSCANがあります。
これらの違いは、データをプロットした空間における「距離」と「密度」です。
このあたりの概念が出てくる裏には、線形代数のはなしがかなり関わっていそうですが、
今回は特に数学を取り扱っていないので自分で調べてみないとわかりません。
パラメータチューニングのしやすさ、データの傾向からどのモデルを用いるか決めるそうなので、ある程度経験が必要そうです。
AIジョブカレもくもく会第2回 データマート
第2回もくもく会は、火曜夜なのに10人以上の参加者
3,4,5期合同
聞こえてくる質問から、回を追うごとに内容が高度になっていることがわかる
参加者の様子は様々でした。
AIジョブカレの本編ではあまりSQLなどデータベースの話に触れられません。
しかし、データ分析をしようと思った場合に、実は殆どが前処理や、生データと向き合っている、泥臭い時間だそうです。
そうすると、リレーショナルデータベースである、MySQLやPostageSQLなど、SQLを使うことが必須です。そのなかで、今回はMySQLを題材として、データのまとめ方、引き出し方をテーマにもくもく作業をしました。
データのまとめ方は、業務上の仮設に応じて変化します。
SQLをもし使ったことのない人は、簡単なSQLの本を事前に読んでおいたほうがいいと思います。(受講後でも大丈夫ですが。)
まとめ:色々と新しい概念は出てくるものの、ライブラリが揃っててやっぱりPython便利
データの前処理、不均衡データの処理、教師なし学習と、新しいトピックが出ては来ているものの、
ライブラリが整っているお陰で、コーディング自体はそんなに大変じゃありません。
コードもシンプルです。(自分で何も見ずに書けっていわれると辛いけど・・・)
最終課題に向けて、過去に学習した内容の復習をしつつ、
処理のフローを考えて今できる範囲の処理をしていると、
なんとなく機械学習のプログラミングができるようになってる感を感じますね。
問題は、SQLか。仕事でももっと使うようにしよう・・・