サービスアカウントにKubernetes Engine Cluster 管理者権限を付与しているのにGKEへのデプロイに失敗する

状況

タイトルの通りの状況で、以下のようなエラーが発生する。

1
Error from server (Forbidden): deployments.apps is forbidden: User "XXXXXXXXXXXXXXXXXX" cannot list resource "deployments" in API group "apps" in the namespace "default": requires one of ["container.deployments.list"] permission(s).

結論

Kubernetes APIを利用するので、Kubernetes Engine Cluster 管理者権限ではなくKubernetes Engine 管理者 が必要です。

記事情報

  • 投稿日:2021年7月21日
  • 最終更新日:2021年7月21日

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

はじめに

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

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

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

機械学習も他の技術同様コンピュータの上で動くわけですから、最低限のコンピュータサイエンスの知識はほしいです。具体的には 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日