intellista

engineer's notes about application development, data analysis, and so on

データ分析の初心者が実務で苦労した4つのポイント!


データ分析のプロジェクトに入っていますが、かなり苦労しています。
初心者の私が苦労している点について、途上段階でのみ書き留められることを残そうと考え、記事にしました。

私は長年、アジャイルでバリバリ(自分で言うか・・・ )のアプリケーション開発をしてきました。
言語は主に、JavaJavaScriptあたりです。
そこから打って変わってPythonで各種ライブラリを使ったデータ分析に取り組み、およそ半年弱が経過しました。

紆余曲折しながらもあれこれ見聞きし手を動かすうちに、次のスキル4つが欠けていることを整理できてきました。

  • (1) データの理解
    データが属する業務の理解、データの仕様、データが入っているシステムやシステム間の仕様
  • (2) データ分析の観点
    どういうことが見たいか、どう見せるとわかりやすいのか、そもそもどういう見せ方があるのか
  • (3) データ分析の基礎的な実装力
    pandas, Matplotlib, などを操る力
  • (4) 機械学習の一般的な基礎知識

確かに、これだけいろいろ欠けていると、つらいものがありますね。
経験上、複数の必要スキルが欠けてしまうと桁違いに難易度が上がります。

特にデータ分析を進める上で大きな障害となっているのは、苦労している順に次のとおりです。

  • (2) データ分析の観点
  • (3) データ分析の基礎的な実装力
  • (1) データの理解
  • (4) 機械学習の一般的な基礎知識

それでは、上記の4つについて、ひとつずつ見ていきます。

データ分析の観点

「(2) データ分析の観点」とは、例えば「ある目的で分析するならこのデータのこの列とこの列に着目すればよいことはわかった。そのとき、この目的ならこういう表やグラフで可視化するのがよい。」といったようなことが感覚的にわかる、ということです。

チームにこれができる人がひとりだけいるので、そこまでかみ砕いた話ができるようにするのが近道かもしれません。
自力では正直、現状ではどうすればスキルアップできるか模索中です。
チームの作業者レベルでは似たり寄ったりで、現状はネットが先生です。
ベースとして統計学の知識も必要なのでは、と統計学基礎のオンライン講座を受講して感じました。
できるだけ体系立てて身につけられるようなものを探しつつ、日々断片的な情報を元に奮闘している状態です。

データ分析の基礎的な実装力

「(3) データ分析の基礎的な実装力」は個人的には、

  • Numpy
  • pandas
  • Matplotlib
  • scikit-learn

の4つをひととおり操れるようになるべし!と目標を定めています。
この4つは「Pythonによるあたらしいデータ分析の教科書」という書籍で知りました。

Pythonによるあたらしいデータ分析の教科書

4つのうちプロジェクトで使っているpandasとMatplotlibだけは読み込みました。
ただ、実務からすると本内容は道しるべととっかかりにはなりますが、かなり表面的でした。
なので、ほとんど調べたり聞いたりの断片のツギハギで乗り切ろうとしている状態です。
他の2つは将来に備えて読み込み中です。

2021年6月4日 追記:

4つの残りの2つ、NumPy、scikit-learnについても読了しました。
知識ゼロから比べると入り口に立てた感じがします。
どんなものか大まかにつかめました。
なお、この本はデータ分析に必要な数学(線形代数微分積分、確率・統計)もトピック的に一式まとめてあり、必要な知識のインデックスとして全体を把握するのには役に立っています。

また「(3) データ分析の基礎的な実装力」は「(2) データ分析の観点」とセットになっています。
つまり、「(2) データ分析の観点」でイメージした見せ方を「(3) データ分析の基礎的な実装力」で素早く的確に実装する、という一連の流れが必要です。

  • (2)が提示されたときに(3)をイメージできるか
  • 次のステップとして(2)も(3)もイメージできるか

と考えたとき、まだ1つめもクリアできていません。

使用中のpandasについては、そもそも体系的な理解が必要だと実感しています。
(今やっている断片のツギハギでは非効率だし限界を感じています。)
そこで、Google検索したときにかなりの頻度で行き着くサイトの方がオススメしている次の書籍「Pythonデータサイエンスハンドブック」(無料の英語版もあり)もチェックしようと考えています。

Pythonデータサイエンスハンドブック - Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習 -

ちょっと古いので、最新バージョンでも通じる内容なのかは気になりますが・・・
現状は何かしようとするたびにネット検索する状態(英語学習に例えれば、1文ごとに辞書を引いているような状態)なので、それよりはかなりマシになるのではと期待しています。

2021年6月4日 追記:

私は「Pythonデータサイエンスハンドブック」(前述)ではなく「Pythonによるデータ分析入門(第2版)」のほうを購入しました。

Pythonによるデータ分析入門 第2版 - NumPy、pandasを使ったデータ処理 -


書店に行って「Pythonデータサイエンスハンドブック」(前述)と中身をザッと比較したのですが、この「Pythonによるデータ分析入門」のほうが今の私に合っていそうでした。
  • Pythonによるデータ分析入門(第2版)」
    • 2018年7月発売、596ページ
    • NumPyとpandasが充実。Matplotlibも少し。scikit-learnは残念ながら対象外。
    • pandas開発者が著者であり、今の私が最も知りたいpandasが厚い。
    • 章立てがわかりやすく、通読にも辞書的にも対応できそう。
    • Python3.6対応
  • Pythonデータサイエンスハンドブック」(前述)
    • 2018年5月発売、556ページ
    • NumPy、pandas、Matplotlib、scikit-learnを一通り詳述
    • 私には章立てがややしっくりこなかったのと、内容が少し難しく感じました。
    • scikit-learnの各モデルを一通り学べるところが魅力。
    • Python3.5対応(Githubより)
Pythonによるデータ分析入門(第2版)」も約600ページの分厚い本ですが、体系的にしっかりと理解できそうです。頑張って習得したいと思います。

また、AI関連の研修で講師の方から「Kaggleのチュートリアルが便利」ということも教えてもらったので、そちらもチェック中です。
www.kaggle.com
なお、Kaggleに関する書籍もいくつか出ていますが、今の私にはハードルが高そうでした。

なお、「Python」の言語自体には苦労していないのですが、「Jupyter Notebook」で書くと途端に破綻し、苦労の連続になります。
Pythonは得意言語ではないのですが、「Python3エンジニア認定基礎試験」を10分くらいで終了して合格した水準です。
なので、「Python」でアプリのバッチ処理など作る分には割とスラスラ書けるほうです。

ですが「Jupyter Notebook」では情けないくらいにぐちゃぐちゃな実装になり、コピーコード、お試しコード、一時変数の嵐となり、結局おばけのようになって読み解けなくなる有様です。
アプリでのコーディングのお作法(変数名から構造化に至るまで)が全く通用しません。
「Jupyter Notebook」でも分析のお作法がわかっていないのだと思いますが、今のところネットも含めて先生を探しつつ奮闘中です。

データの理解

「(1) データの理解」については、大枠では把握できているのですが、段階的に小出しされる仕様に追従し切れていないために、分析対象を見誤る場合があります。
データ分析ではよくあるケースかもしれませんが、データ仕様がカチッとはじめから出そろうわけではなく、中途半端だったり間違った情報が段階的に出てきます。
この小出しされる情報のやりとりが長文メールのCCだったり、非参加の会議だったり、と拾うのが少しやっかいです。
これはどちらかというとコミュニケーションの課題かもしれません。

あと、「データ理解」と「データ加工(前処理)」のプロセスの間にも行ったり来たりがあるように(少なくとも私のいるプロジェクトでは)見えるという点に、気づきました。
これは何の話かというと、「CRISP-DM」というデータ分析の有名なプロセスモデルのひとつに照らし合わせた話になります。
CRISP-DM
「CRISP-DM」は上記のような作業プロセスでデータ分析を進める説明をしています。
コレを見ると、「データ理解 (Data Understanding)」と「データ加工(前処理)=データ準備 (Data Preparation)」は一方通行ですが、私には行ったり来たりに見えています。
もっと言うと、「モデリング (Modeling)」の段階で一部のデータの意味が判明したりして、「データ理解 (Data Understanding)」に戻るようにも見えています。
こうなるとかなり混沌としますが、実際、頭を混乱させながら進めているのが実態です。

早いサイクルで是正を繰り返すの点はアジャイルと共通する考え方なので、すんなり身につけられると想像していたのですが、正直とても甘かったです。
やはり完全に別物だと、いまは痛感しつつ、身につけようとしています。

機械学習の一般的な基礎知識

「(4) 機械学習の一般的な基礎知識」については、今は問題ない程度の基礎知識は身につけられました。
残念ながら業務から得たのではなく、独学しました。
3ヶ月目の終わりに「G検定 2021#1」に合格し、その課程でひととおりのベーシックな知識を体系立てて得られました。
この中の知識で今使っているのは「混同行列」くらいなのが哀しいですが、右も左もわからなかった半年前からすると視界がクリアになりAI関連のサイトや勉強会にもついて行けるようになったのが嬉しいです。
引き続き上位の資格も視野に入れてステップアップしていきたいです。

なお、「G検定」にご興味のある方は、合格までにやったことを整理した記事がありますので、ご参考頂ければ嬉しいです。
intellista.hatenablog.com

まとめ

約半年前にレベル1でスライムをやっと倒していたのが、ようやくドラキーを倒せるレベル3くらいになった感触です。
う~ん、個人的には成長があまりに遅すぎてヘコむ・・・

あと、今は直接の影響はありませんが、実は数学(確率・統計、線形代数微分積分)の知識も不足しています。
まだまだ道のりは長いな、と思いつつも、AI、機械学習の分野には行動範囲を広げていきたいので、今後もスキルアップを目指そうと思います!

なお、データ分析のデファクトスタンダードのひとつとなっている技術にPythonがあります。
Python、Pandas、データ分析、に関するコツなどを次の記事にまとめてありますので、是非読んでみてください!
intellista.hatenablog.com