機械学習エンジニアに必要なスキル

はじめに

機械学習エンジニアにはどんなスキルが必要か?

各所で議論されているとは思いますが、私なりの考えをまとめておきます。正確に言うと「機械学習エンジニアとして働いている私一個人の意見として、どのような人と働きたいか」ということをまとめます。

コンピュータサイエンスの基礎がある

機械学習も他の技術同様コンピュータの上で動くわけですから、最低限のコンピュータサイエンスの知識はほしいです。具体的には AtCoder で緑色くらいのレベルが欲しいです。緑色レベルだとコンピュータサイエンスと言うよりは基礎的なコーディング力でしょうか。

数学ができる

時間をかければ、論文を読めるくらいの数学力は欲しいです。具体的には大学レベルの微積分、線形代数は理解しておいてほしいです。

機械学習の基礎を理解している

機械学習エンジニアなので当然です。Python 機械学習プログラミングくらいのレベルは理解してほしいです。

Pandas、Numpy、Matplotlibといったライブラリを使える

具体的には、Python実践データ分析100本ノックを解けるレベルが欲しいです。

Deep Learningのライブラリを扱える

機械学習プロジェクトで猫も杓子もDeep Learningするなというのが界隈の共通認識だとは思いますが、最低限は使えたほうが良いと思います。PyTorchでもTensorFlowでもよいので。

クラウドが分かる

機械学習プロジェクトとなると、オンプレよりクラウドで構築する機会が多いのでクラウドは触れたほうが良いです。

宣伝

最後に宣伝です。こんな本を出しています。ご興味があればお買い求めください。

記事情報

  • 投稿日:2021年5月28日
  • 最終更新日:2021年5月28日

FIREまとめ

はじめに

この記事はFIREに関する情報や、自分なりの考察をまとめるページです。随時更新していきます。

FIREの分類について

FIREにはいくつかの分類があります。私はこちらのページを参考にしました。体系的にまとまっている書籍については今後探していきます。

考察

「バリスタFIREはFIREといえるのか」は疑問です。働く必要があるということは経済的に独立していえないのではないでしょうか。もしバリスタFIREの状態がFIREであるという理屈がまかり通るのであれば、今の仕事に満足しながら働いている人はみなFIREしていることになってしまいます。

もちろんバリスタFIREの生き方自体は素晴らしいと思うので、それを否定するつもりはありません。あくまで「それはFIREなのか」という意味です。(ちなみに私もバリスタFIREを目指しています。)

どのようにFIREの計画を立てるか?

はじめに支出ありき

FIRE後の支出から逆算するべきです。つまり、これからFIREを目指すのですからFIREの状態において、どれだけの支出が発生するのかを先にイメージしておく必要があります。これは人によって千差万別のはずです。生活費を極限まで絞ればいわゆるリーンFIRE、人並みの贅沢を求めるならファットFIREということになります。

このイメージが具体的でないと「FIREに向けてのモチベーションが維持できない」「資産は出来たが仕事を辞める決心がつかない」といった状況にはまるはずです。何事もそうですが、ゴールイメージをはっきりさせることが重要でしょう。

最も簡単な試算方法は現在の支出をベースにすることでしょう。つまり、現在の支出が月20万円であれば、FIRE後に支出が月20万円の生活をするということです。現在それで生活ができているわけですから、基本的には無理のない試算といえるでしょう。

支出を減らすことがいかに重要か

これらの議論から、FIREに向けて支出を減らすことがいかに重要かが分かります。

つまり

  • FIRE後に必要な支出が小さければ、FIREに必要な資産が少なくて済むためFIREまでの期間が短くなる
  • 現在の支出が小さければ、FIREに必要な資産が早く形成できるためFIREまでの期間が短くなる
    ということです。

別の解釈として

  • FIREに向けて過剰に収入を増やす必要がなくなる
  • バリスタFIREを目指す場合は、FIRE後に必要な労働がより少なくて済む
    といった説明もできます。

つまり現在の支出(FIRE後の支出)を減らすことが極めて重要です。

必要な資産

支出についての見通しが立てば、あとはFIRE後の労働収入さえ決めてしまえば必要な資産が決まります。この決め方は様々あると思いますが、4%ルールなどが有名だと思います。

たとえば、FIRE後の年間支出が300万円で労働収入は60万円とすると、資産から240万円を切り崩す(配当等も含む)必要があります。そのため6000万円の資産が必要ということになります。

期間とFIREまでの収入

必要な資産が定まりました。あとは、どのように資産を築いていくかを考えれば良いことになります。これは収入と期間のバランスでしょう。つまり、短い期間でのFIREを目指すのであれば収入を増やす必要がありますし、FIREまでの期間は長くなっても良いので収入は維持するという考え方もあります。

収入から支出を差し引いたものが投資の元金になります。

シミュレータなどを使って、想定収入でどれだけの期間があれば目標の資産額を達成できるかを計算しましょう。収入が一定でないと仮定する場合は計算が複雑になると思います。その場合は、収入が一定の期間毎にまとまりを作って、シミュレータを複数回回すほかないでしょう。あるいは自分でプログラムやエクセルを使ってシミュレータを自作するのが良いと思います。

なお、投資の利益には税金がかかる点も考慮に入れてください。ただし、NISAなど非課税で投資できる制度もあるので、これらは分けてシミュレータを動かすのが良いでしょう。

記事情報

  • 投稿日:2021年5月23日
  • 最終更新日:2020年5月23日

対応のないt検定

はじめに

対応のないt検定は、2標本に対応がなく母集団に正規分布を仮定できる場合に用いられる平均値の差の検定です。なお、正規分布を仮定できない場合はマン・ホイットニーのU検定を用います。

実践

平均値が異なる正規分布からサンプリングされた標本Aおよび標本Bに対して、対応のないt検定を行います。実装はscipy.stats.ttest_indを利用します。

scipy.stats.ttest_indは引数にequal_varを取ります。等分散が仮定できない場合、この値をFalseに設定することでウェルチのt検定を行います。正確に言うと、ウェルチのt検定は分散が等しい場合もそうでない場合もどちらにも適用できます。

scipyのリファレンスにも以下のような記載があります。

equal_varbool, optional
If True (default), perform a standard independent 2 sample test that assumes equal population variances [1]. If False, perform Welch’s t-test, which does not assume equal population variance [2].
New in version 0.11.0.

1
2
3
4
5
6
7
8
9
import numpy as np
from scipy import stats

group_a = np.random.normal(0, 1, 50)
group_b = np.random.normal(0.5, 1, 50)

t, p = stats.ttest_ind(group_a, group_b, equal_var=False)

print (p)

参考

ソースコードは以下の書籍を参考にさせてもらいました。Pythonで統計学を学べるおすすめ書籍です。

記事情報

  • 投稿日:2021年5月20日
  • 最終更新日:2020年5月20日

書籍「現役データサイエンティストが語る!〜仕事内容インタビュー集〜 」を執筆しました

はじめに

データサイエンティストの方に仕事内容をインタビューをして書籍を執筆しました。

データサイエンティストが現場でどのように働いているのか

2021年3月現在、データサイエンティストは非常に人気がある職業です。かくいう私もデータサイエンティストとして企業に勤めています。私は社外の活動で、機械学習関連職種についてのキャリア相談の相手になることが多いのですが、その中で本当によく戴く質問があります。

それは「データサイエンティストの方は、現場ではどのように働いているのでしょうか」というご質問です。

この質問に対して、私は自身の経験に基づいて色々とお話をさせていただきますが、それはあくまで一例に過ぎません。その点について、いつもある種の申し訳無さを感じていました。

データサイエンティストの同業の方と話していてもよく話題になるのですが、「データサイエンティスト」という名前だけが独り歩きしてしまい、その実態については企業によって様々であるということです。では、データサイエンティストを目指す方に、どのようにイメージをお伝えすればよいのかずっと考えていました。

そんな課題に応えるために

そんな課題に応えるために本書を執筆しました。この書籍では、実際に現役でデータサイエンティストとして働いている方にインタビューを行い、具体的な業務内容について語っていただいています。敢えてそれらの内容をまとめて「データサイエンティストとはこういうものです」と抽象化をしたりせず、インタビューした内容をできるだけそのまま載せる体裁にしました。なぜなら、そのように個別のデータサイエンティストの働き方をそのままお伝えすることこそが「データサイエンティストの方は、現場ではどのように働いているのでしょうか」という問いに対して、最もふさわしい答えだと筆者は考えているためです。

ライトな内容/価格ですので、ぜひお気軽にお手にとっていただけると幸いです。

昨年、出版した「機械学習を仕事にしたい君に」も合わせてチェックいただけると嬉しいです。こちらは、機械学習を仕事にしたいと考えている方に向けて業務・勉強・副業・転職に関する情報をまとめています。

記事情報

  • 投稿日:2021年3月31日
  • 最終更新日:2021年3月31日

項目反応理論入門

メモを残しておきます。

1.2 項目反応理論の登場

IRTにおいては、項目特性曲線(ICC)を用いることにより、テストに含まれる項目の難しさ(項目困難度)と受験者の能力を別々に推定し、同じ物差しの上で評価することができる。

2.7 関数を定義する

2.7.2 項目特性曲線を表す関数icc2PL()

項目困難度をa、項目識別力をbとして能力thetaの受験者が正答する確率以下の式で与えられる。

1
2
3
4
5
import numpy as np
def icc2Pl(a, b, theta):
D = 1.7
prob = 1/(1+np.exp(D*a*(theta-b)))
return prob

なお、Dは尺度因子(尺度要素)と呼ばれる値で1.7が設定されることが一般的である。

3.3 項目を評価する指標

項目困難度や項目識別力といった指標の名称は同じであっても、それぞれの定義はCTTとIRTで異なるため、注意が必要である。

7.1 IRTにおける一次元性

四分相関係数を計算するメジャーなライブラリは見当たらなかった。

動作確認できなかったが、下記のようなライブラリは存在した。
https://python-psychometrics.readthedocs.io/en/latest/index.html

なお、様々な相関係数については下記がよくまとまっている。

https://ides.hatenablog.com/entry/2019/10/07/221454

なお、こちらも参考になる。

https://qiita.com/shngt/items/45da2d30acf9e84924b7

記事情報

  • 投稿日:2021年3月30日
  • 最終更新日:2021年4月6日

ctfに関するメモ

fileコマンド

CTFの問題には、問題の中でファイルの種類を調べる必要がある場合がある。

https://ctf.cpaw.site/questions.php?qnum=8

fileコマンドを使うのが一般的だが、そもそもどうやってファイル形式を調べているのだろうか。

結論としては下記の3つのテストを順に行い、成功したものを表示しているようだ。

  • ファイルシステムテスト
  • マジックナンバーテスト
  • 言語テスト

https://kazmax.zpp.jp/cmd/f/file.1.html

wireshark(CLI)コマンド

キャプチャしたパケットの中身をASCIIで表示

1
tshark -r  some.pcap -V -x

モールス信号のデコード

https://morse.ariafloat.com/en/

wireshark

オブジェクトのエクスポートができる。HTTP通信を復元するためにエクスポートする際は、フォルダを再現(cssjsなどのフォルダを作成)することを忘れずに。

記事情報

  • 投稿日:2021年3月12日
  • 最終更新日:2021年3月14日

ウィルコクソンの符号付き順位検定

はじめに

ウィルコクソンの符号付き順位検定は、対応のある2群間の代表値の差の検定に用いられます。

t検定との違い

t検定と違い、正規分布を仮定していません。そのため母集団が正規分布に従っている場合は、検出力の観点でt検定に劣ることになります。

検出力

検出力とは、第2種の過誤(帰無仮説が誤っているのに、帰無仮説を棄却できないこと)を犯さない確率のことです

コード

では両者の検出力をシミュレーションで比較してみましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
from scipy import stats

n = 10000
sample_size = 10
diffs = 1 + np.random.normal(size=(n, sample_size))
result = []
alpha = 0.05

# t検定
for diff in diffs:
_, p = stats.ttest_1samp(diff, 0)
result.append(p < alpha)
print ('検出力: {}'.format(np.mean(result)))

# ウィルコクソンの符号付き順位検定
result = []
for diff in diffs:
_, p = stats.wilcoxon(diff)
result.append(p < alpha)
print ('検出力: {}'.format(np.mean(result)))

参考

ソースコードは以下の書籍を参考にさせてもらいました。Pythonで統計学を学べるおすすめ書籍です。

記事情報

  • 投稿日:2020年12月5日
  • 最終更新日:2020年12月5日

2020年11月に読んで良かった書籍

はじめに

勉強の振り返りを兼ねて今月に読んだ書籍のうち「買ってよかった」と感じた書籍をまとめました

マンガでわかる統計学

オーム社からも同じ名前の書籍が出ています。そちらもおすすめですがこちらの書籍もとても良いです。
事前知識無しで読み進めることができる一方、重要な概念を広く扱うので統計学を学ぶ方が最初に読むことをおすすめします。

この書籍を読むと以下のようなキーワードについて理解できると思います。逆にこれらを理解している自身がある方にとっては、少し簡単な内容だと思います。

  • ヒストグラム
  • ポアソン分布
  • 母分散
  • 対立仮説

まずはこの一冊から 意味がわかる統計学

パラメータの区間推定をする際に、「平均既知のとき標準偏差は何分布を使うか?」といったことが体系的にまとめられていました。
多少は数式が出てくるので、数学がに自身がない方は「まずはこの一冊から」始めないほうが良いと思います。

「完全独習 統計学入門」の代わりになる書籍だと思いますが、個人的にはこちらのほうが読みやすくおすすめです。

この書籍を読むと以下のようなキーワードについて理解できると思います。逆にこれらを理解している自身がある方にとっては、少し簡単な内容だと思います。

  • 点推定
  • 不偏推定量
  • 最尤法

データ分析のための数理モデル入門

数式は難しいと思ったら飛ばして良いです。そもそも図鑑のようなものであり、そのモデルを知っている人は数式を読めるが、この書籍を読んでもモデルを理解できるわけではありません。

その点については注意してほしいですが、本当によくまとまっています。この本の使い方は

  • 定期的に読み返し、自分の知識が足りていない分野を知る
  • モデリングの前に一度、本当にこのモデルで良いか?を確認する

といった用途が良いです。

統計学がわかる 回帰分析・因子分析ファーストブック

この書籍はストーリー仕立てでとても理解しやすいです。同シリーズの「統計学がわかる ファーストブック」の続きというわけではないので、そちらの書籍を読んでいなくてもOKです。個人差があるとは思いますが、私はこちらの書籍の方がわかりやすく感じました。

タイトルそのままですが、この書籍を読むと以下のようなキーワードについて理解できると思います。逆にこれらを理解している自身がある方にとっては、少し簡単な内容だと思います。

  • 点推定
  • 不偏推定量
  • 最尤法

Pythonで学ぶあたらしい統計学の教科書

タイトル通りだと思います。Pythonで統計学が学べます。比較的新しい書籍なので、著名なデータサイエンティストは言及していませんが、本当に良い書籍です。

教科書といった感じですので、まずはこれまでに紹介した書籍を読んで統計学のイメージを掴んでからこの書籍に挑戦すると良いと思います。プログラミングの経験があれば、週末で読める内容だと思います。

スッキリわかるSQL入門 第2版

ちょっと統計学の流れからそれるので入れるか迷いましたが、こちらもかなり良かったので紹介させてもらいます。

初心者向けの書籍です。内容は平易で、構成も対話形式ですのでこの書籍を最後まで読めないということはないと思います。

何と言ってもWeb上にSQL環境があるのでブラウザさえあれば、どこまで手を動かして勉強できる点が素晴らしいです。練習問題も豊富なので長い時間楽しめると思います。

記事情報

  • 投稿日:2020年11月28日
  • 最終更新日:2020年11月28日

データサイエンスに関する情報を集めるページ

はじめに

このページは仕事や趣味でデータサイエンスを触っている筆者が興味を持った情報を集めるページだ。
かなりバラバラと情報を載せているが、そのうちきれいにまとめるかもしれない。
情報は随時更新している。

おことわり

このページのAmazonのリンクにはアフィリエイトが入っている。しかし、書籍に対するコメントはポジティブな面もネガティブな面も率直に書いているので、変に構えないでほしい。営利目的で作っているページではないが、お金は好きなので書籍が購入されると嬉しい。

耳が痛くなるけど、まず読んでおきたい記事

https://todes-mentor.hatenablog.com/entry/help_todesko

データサイエンティスト推薦書籍リスト

ここでは、データサイエンスの分野で活躍されている方々がどんな書籍を推薦しているのかをまとめていく。
それぞれのバックグラウンドを空想しながら追うのも面白いし、アンドをとってみるのも良い

TJOさん

https://tjo.hatenablog.com/entry/2020/02/03/190000

かめさん

村上(みどり)さん

https://note.com/green_midori/n/n6bed07efe1bb?magazine_key=m31bca302b70a

からあげさん

https://karaage.hatenadiary.jp/entry/2020/06/15/073000

共通してでてきた書籍

データサイエンティスト養成読本 ビジネス活用編

  • TJOさん、村上(みどり)さん
  • 未読
  • ムック本

Rによるやさしい統計学

  • TJOさん、かめさん
  • 未読
  • Pythonが強すぎて、今さらRってどうなの?と思うが、かめさんも読める程度にはR出来たほうがいいよwという趣旨のことを書いているし、そのとおりだと思う。

個人的には、これのPython版が以下だという仮説を持っていて、いつか結論をだしたい。

こちらも有力。

ビッグデータ分析・活用のためのSQLレシピ

  • TJOさん、村上(みどり)さん
  • 未読
  • 黒魔術本のようだ。SQL弱者なので、もう少し勉強してから読む。

図解速習DEEP LEARNING

  • TJOさん、からあげさん
  • 未読
  • 実装メインの本。動かして理解したい人向け。

統計的学習の基礎 ―データマイニング・推論・予測―

  • TJOさん、かめさん
  • 未読
  • 通称カステラ本。どうみても基礎ではないので注意する、辞書的に使う。kindle版がない。英語版は無料で読める。

はじめてのパターン認識

  • TJOさん、かめさん、村上(みどり)さん
  • 未読
  • kindle版がないのが玉にキズ。少し内容が古くなってきたので、そろそろ代替する書籍がでてきそう(ありそう)

Kaggleで勝つデータ分析の技術

  • TJOさん、村上(みどり)さん
  • 既読
  • Kaggleのお供に。これを持ってないとKaggleでは不利とすら言える。

共通してでてこなかったけど良い書籍

私とアンドが取れているのでOKという暴論。

言語処理のための機械学習入門

  • かめさん
  • 既読
  • 「言語処理のための」とあるが「機械学習のための数学入門」という感じの本。もちろん自然言語処理の基礎にも触れられておいしいが、機械学習部分だけでも価値がある。

FACTFULNESS(ファクトフルネス) 10の思い込みを乗り越え、データを基に世界を正しく見る習慣

  • 村上(みどり)さん
  • 既読

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • からあげさん
  • 既読
  • 言わずとしれた名著。続編(2,3)も名著だけど、特に1は誰にでもおすすめ。

効果検証入門〜正しい比較のための因果推論

  • TJOさん
  • 読書中
  • 間違った分析をしないために、すべてのビジネスマンに読んでほしい本。Rを使う。

マンガでわかる統計学(オーム社)

  • かめさん
  • 既読
  • マンガでわかる、とあるが数式もそれなりに載っている。
  • 2時間くらいあれば読めます。
  • サイエンス・アイ新書の同名の書籍があるので注意。ちなみにそちらもとても良い書籍。

統計学がわかる ファーストブック

  • かめさん
  • 読了。演習問題も解くと6時間くらい。
  • ストーリー仕立てなので、「これ、どう使うんだっけ?」という部分が腑に落ちやすい
  • 確認テストがついており、手を動かしながら学べます。後半はエクセルやプログラミングで計算しないと厳しい。

個人的におすすめの入門書籍

ここまでいくつかの書籍を紹介してきました。ここまで紹介してきた書籍は素晴らしいデータサイエンティストたちが推薦している書籍で間違いはないのですが、彼らが基本的な部分を勉強したのは当然昔のことで、入門書という意味だと古い本も多いです。

そこで私が超おすすめする書籍を紹介しておきます。

マンガでわかる統計学

同名の書籍がいくつかありますが、こちらはサイエンス・アイ新書の書籍です。
「一番最初に読んでOK」な本ですが、とても重要な概念も説明されています。特に良かったのが、「平均を取る前にデータが単峰性であることを確認せよ」といったアドバイスがあり、手法だけ覚えて頭でっかちになるのを防げる良い心構えを示してくれます。

まずはこの一冊から意味がわかる統計学

数式が出てくる書籍です。よく使う検定を体系的にまとめている割には内容が平易で、「完全独習 統計学入門」の代わりになる書籍ですが、個人的にはこちらのほうが読みやすくおすすめです。

データ分析のための数理モデル入門

若干、データサイエンティストの守備範囲から外れる分野(PID制御、微分方程式)もありますが、数理モデルというものの全体像を見れるので、データサイエンティスト必読だと思います。数式も出てきますがそこまで難しくはないですし、わからなければ数式は流し読みでも話題が独立しているので問題ありません。

データサイエンスに限らずですが、人は「とんかちを持つと、すべて釘に見える」というように、勉強したばかり・得意な技術を使いがちです。なので、こういった書籍を利用して「特に詳しくはないが適当なモデルが存在することを知っている」ことはとても重要です。

有益なリンク

コミュニティ

データラーニングギルド

DataScienceHub

データサイエンスに関するAudible

AudibleAmazonのオーディオブックサービス。家事しながら、散歩しながら本を読めるのでおすすめ。とはいえ数学的な内容はきついし、そもそもオーディオブック化されているものが少ない。あと、アフィリエイトの報酬が高い。

イシューからはじめよ ― 知的生産の「シンプルな本質」

  • 既読
  • 解くべき課題を精査しないと時間ばかり溶けて、アウトプットの質が上がりません。
  • データサイエンスに限らない話だけど、超おすすめ。Audibleにも向いてる。何度も聞くと良い。
  • あまりにも良すぎるので書籍版が欲しくなる。

仮説思考

  • 既読
  • データサイエンスに限らない話だけど、超おすすめ。Audibleにも向いてる。何度も聞くと良い。

大学4年間のデータサイエンスが10時間でざっと学べる

  • 既読
  • 数式を読み上げるシーンは地獄。とはいえ読み物部分はそれなりに面白い。これでデータサイエンスを学ぶというよりは、データサイエンスを少し勉強してから頷きながら聞くのが良い。

完全独習 統計学入門

  • 既読
  • 数式を読み上げるシーンは地獄。内容自体はとても良いので、書籍版も買っておき頭に刷り込むためにAudibleを使うのがおすすめ。

入門 考える技術・書く技術

  • 既読
  • 考えて、書くってどこでも使う技術だけど、データサイエンスとも親和性は高いので紹介させてもらう。
  • 図が多くて地獄。書籍版も合わせて買いたい(未購入)

Kaggle

このブログ読んでいる人でまだKaggleをやったことがない人はとりあえずアカウントを作ってタイタニックを解くこと。話はそれからだ。Kaggleをやると、

  • Python
  • 機械学習
    がそれなりに分かるようになる。ただし
  • SQL
  • 数学
  • 統計学
    あたりの知識は使わないことが多い。(上位に食い込むために数学・統計学を使わないとは言えないが、未経験者にそれを言っても仕方がないだろう。)
    そのあたりはこのページを中心に勉強方法を考えてくれ。

SQL

SQLの勉強方法。

スッキリわかるSQL入門 第2版

  • 読書中
  • とりあえずこれを読んどけば良さそう。WebにSQLの環境が用意されている点が素晴らしい。

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く

  • 未読
  • 入門書を読んだ後はこれを読むと良さそう

SQLデータ分析・活用入門 データサイエンスの扉を開くための技術 MySQL/PostgreSQL 両対応

  • 未読
  • データ分析を意識して書かれていそうなので、分析目的でSQLを勉強している人には良いかも

ブログ

なにこれ楽しい!SQLをブラウザ上で学習できるSQLZOO!

https://hatena.aaafrog.com/entry/2015/11/29/084718

120+ Data Scientist Interview Questions and Answers You Should Know in 2021

2021年 データサイエンティストの面接の想定質問集・回答集
https://towardsdatascience.com/120-data-scientist-interview-questions-and-answers-you-should-know-in-2021-b2faf7de8f3e

コンペ

Kaggle

映画

マネーボール

記事情報

  • 投稿日:2020年10月22日
  • 最終更新日:2020年11月15日