ブックマーク / blog.tsurubee.tech (19)

  • 機械学習の予測を解釈するKernel SHAPの高速性と拡張性の向上を目指したライブラリを開発した - Fire Engine

    先日,協力ゲーム理論のシャープレイ値に基づき機械学習モデルの予測を解釈するKernel SHAPという手法の理論と既存のライブラリの実装についてのブログを書いた. blog.tsurubee.tech 既存のSHAPライブラリであるslundberg/shap(以下,単にSHAPライブラリと呼ぶ)は,SHAPの提案論文*1のファーストオーサーにより開発されており,多くのSHAPのアルゴリズムの実装や可視化の機能が非常に充実している素晴らしいライブラリである. しかし,私が自身の研究の中でSHAPライブラリの中のKernel SHAPを使っている際に,計算速度と拡張のしやすさの観点で改善したいポイントがいくつか出てきた.今回は,まだ絶賛開発中であるが,Kernel SHAPの高速性と拡張性の向上を目指したShapPackというライブラリのプロトタイプが完成したので,それについて紹介する. 目

    機械学習の予測を解釈するKernel SHAPの高速性と拡張性の向上を目指したライブラリを開発した - Fire Engine
    matsumoto_r
    matsumoto_r 2021/07/21
    前回のSHAPによる機械学習の解釈性の理論まとめに続き、そこで挙げた性能とアルゴリズム実装の拡張性といった実践的な課題を解決するライブラリをつるベーさん自身が実装して公開。勢いがすごい素晴らしい
  • 協力ゲーム理論のシャープレイ値に基づき機械学習モデルの予測を解釈するKernel SHAPの理論と実装のまとめ - Fire Engine

    機械学習の幅広い分野への応用が進むにつれ,機械学習がその予測の根拠などを理解できない「ブラックボックス」となることが問題視されており,機械学習の解釈性や説明性が注目されています.今回のテーマであるSHAPSHapley Additive exPlanations)は,機械学習モデルへの特定の入力に対する予測の根拠を提示する代表的な手法の一つです.SHAPには用途に応じていくつかのアルゴリズムがありますが,その中でも今回はあらゆる機械学習モデルに適用可能(Model-Agnostic)なKernel SHAPという手法についてまとめました. 構成としては,まずKernel SHAPとは何かについての概要を述べた後に, Kernel SHAPを理解する上で必要な要素である「シャープレイ値」と「SHAP」について説明します.さいごに,Kernel SHAPについて「理論」と「実装」に分けて書い

    協力ゲーム理論のシャープレイ値に基づき機械学習モデルの予測を解釈するKernel SHAPの理論と実装のまとめ - Fire Engine
    matsumoto_r
    matsumoto_r 2021/07/19
    機械学習を手段として研究に利用する場合に解釈性がすごく重要になると思っていて,それを母国語でいい感じにまとまっているのはほぼないのでとても良いし,毎週つるべーさんとこういう話できてるので最高
  • Kaggle初コンペの振り返り〜Riiidコンペで銀メダル獲得〜 - Fire Engine

    Kaggleで開催されていたRiiid! Answer Correctness Predictionに参加しました.結果を簡単にまとめると以下の通りです. 順位:139位(3406チーム中) メダル:銀メダル(上位5%以内) 解法:LightGBMとSAKTのアンサンブル チーム:1人で参加 自身初となるデータ解析コンペでしたが,なんとか銀メダルを獲得することができました.今回はその振り返りを時系列で書いていきたいと思います. 先に感想を述べると,Kaggleはや論文ではなかなか得られない学びに溢れている上に,世界中の人々と順位を競い合うゲームのような感じでとにかく楽しいので最高すぎました. この記事がこれからKaggleを始める方々の参考になれば嬉しいです. 目次 Kaggleとの出会い コンペ参戦準備 コンペに登録 初Submit 特徴量エンジニアリング モデルの構築 アンサンブル学

    Kaggle初コンペの振り返り〜Riiidコンペで銀メダル獲得〜 - Fire Engine
    matsumoto_r
    matsumoto_r 2021/01/09
    あれこれやり始めた過程も見てて、現在のランクどこかとちょくちょく見てたけどツイートするの我慢してて、このままやればいけそうという感じで本当に行けて結果でたのですごい!これからも応援してる。
  • グラフィカルモデルに基づく因果探索手法の調査 - Fire Engine

    最近,因果推論や因果探索に興味を持ち,勉強している.というのも最近,ゆううきさん と一緒に分散システムの異常の原因を即時に診断するための研究を進めている.原因を診断するためのアプローチとして,サーバやコンテナ等から取得できる様々なメトリック(CPU使用率やメモリ使用率など)を(グラフ理論における)ノードとして,因果グラフを構築することを考えている.メトリック同士の単なる「相関」ではなく,結果と原因の関係である「因果」を捉えようとするアプローチである.例えば,システムの障害が発生した場合,相関だけでは,AとBが関連がありそうというところまでしか言えないが,因果を特定できると理想的には,Aの原因はBであるといった議論ができるため,有用だと考えている. 実際に,前述のような因果グラフを構築して障害の原因を特定しようというアプローチは,以下の例に挙げるようにここ数年で増えている印象がある. 「Mi

    グラフィカルモデルに基づく因果探索手法の調査 - Fire Engine
    matsumoto_r
    matsumoto_r 2020/10/08
    とにかくやばいことをやっている
  • 量子アニーリングの原理について - Fire Engine

    matsumoto_r
    matsumoto_r 2019/09/24
    早速良いまとめ。自分達の課題をどう組合せ最適化問題+イジングモデルに落とすかを考えるのが楽しい。きっと量子ゲート方式についてもまとめ記事が出そう!
  • GMOペパボ株式会社を退職しました - Fire Engine

    2019年7月24日が最終出社日でした。ペパボでは、ロリポップやへテムルといったレンタルサーバサービスのインフラエンジニアとして働いており、約1年半在籍していました。 今回は、ペパボでの一年半の振り返りと、転職に至った経緯などについて書いていきたいと思います。 ペパボでの一年半の振り返り 私はペパボカレッジの枠でペパボに採用されました。ペパボカレッジとは第二新卒エンジニア向け研修のことで、中途採用でも現場に配属される前にしっかり研修を受けることができます。私はエンジニア歴も浅いし、そもそもインフラの経験がなかったため、このペパボカレッジの応募はまたとないチャンスだと感じました。実際に研修では約一ヶ月間で広大なインフラの分野の知識を爆速で学んでいきます。具体的な研修内容などは以前のブログに書きました。頑張りたい人を応援してくれる当にいい仕組みです。 研修が終わって、配属後も周りのエンジニア

    GMOペパボ株式会社を退職しました - Fire Engine
    matsumoto_r
    matsumoto_r 2019/07/26
    “ペパボに入った時にはサーバーに入ってもlsとcdくらいしか叩けずにSSHって何?といった状態だった私が、入社後半年ちょいでSSHのプロキシサーバを書くまでに至った” すごい!そして今後ともよろしくお願いします!
  • 遺伝的アルゴリズムをGoで実装してみた - Fire Engine

    こんにちは!つるべーです! 最近は、進化計算と呼ばれるバイオミメティックな計算技法に興味を持っており、実装しながら勉強しています。 前回の記事では粒子群最適化(Particle Swarm Optimization: PSO)を実装しました。 今回は、遺伝的アルゴリズムという生物の進化の過程を模倣して作られた最適解探索アルゴリズムをGoでスクラッチで書いてみました。 遺伝的アルゴリズム(Genetic Algorithm: GA) GAとは何か?という問いに対する答えとして、以下の一文が端的にその特徴を表していると思います。 生物進化における遺伝と適者生存による自然淘汰の仕組みをソフトウェア的に模すことで複雑な問題に対する最適解を探索する手法 引用:「遺伝的アルゴリズム(Genetic Algorithm)を始めよう!」 GAでは、問題に対する解を個体の染色体、解の構成要素を遺伝子として表

    遺伝的アルゴリズムをGoで実装してみた - Fire Engine
    matsumoto_r
    matsumoto_r 2019/05/11
    アルゴリズムを実装してしっかり試すのがとても良い。遺伝アルゴリズムにおいては突然変異を局所解に陥らない振る舞いとして表現されているのもわかりやすい。
  • 粒子群最適化(Particle Swarm Optimization: PSO)をGoで実装してみた - Fire Engine

    粒子群最適化とは、群知能による最適化手法の一種です。この手のバイオミメティクス(生物模倣)によるアプローチは、私の学生時代の専門である材料工学でも非常に盛んに研究されていましたが、データサイエンスでも応用されているのを知って興味を持ったので、実装しながら勉強しました。 粒子群最適化(Particle Swarm Optimazation: PSO) 粒子群最適化とは、鳥や魚などの群れに見られる社会的行動のシミュレーションを基にモデル化されたヒューリスティックな最適解探索アルゴリズムです。 全体的な最適化の流れを説明します。 まず最初に探索空間内で、決められた個数の粒子を全て初期化します。初期化とは空間内の位置をランダムに決めることを指します。 それぞれの粒子は、目的関数により適合度(どれだけその解が優れているか)を算出できます。全ての粒子をある移動ルールを元に動かしながら、適合度が高い位置

    粒子群最適化(Particle Swarm Optimization: PSO)をGoで実装してみた - Fire Engine
    matsumoto_r
    matsumoto_r 2019/04/10
    面白い。グローバルベストとパーソナルベストがあってグローバルベストを共有しながら変数をアップデートしていくとこういう感じになるのか。超個体的だ。
  • Dynamic Time Warping(動的時間伸縮法)で時系列データをクラスタリングする - Fire Engine

    最近時系列データのクラスタリングに興味を持ち始めて、いくつか論文読んだり、アルゴリズムについて調べていたら、実装してみたくなったので勉強のために作ってみました。 実装の言語にはGolangを用いていて、クラスタリングのアルゴリズムは、Dynamic Time Warping(以下、DTW)とk-medoids法を組み合わせたものです。 作ったもの 使い方 検証 実装したアルゴリズム Dynamic Time Warping(DTW) k-medoids さいごに 作ったもの github.com tsclusterはtime series clusteringの略です。 今回は作ったのは、特定のアルゴリズムのみですが、今後興味があるアルゴリズムがあれば、ここに実装していきます。 使い方 func main() { var dataset [][]float64 dataset = appe

    Dynamic Time Warping(動的時間伸縮法)で時系列データをクラスタリングする - Fire Engine
    matsumoto_r
    matsumoto_r 2019/02/17
    良い。以前面白いよねとお喋りしていた複数の時系列データをクラスタリングする手法を実装して試している。
  • k-Shapeによる時系列クラスタリングの論文:「k-Shape: Efficient and Accurate Clustering of Time Series」を読んだ - Fire Engine

    最近、時系列データのクラスタリングに興味を持っているので、k-Shapeというクラスタリング手法に関する論文を読みました。 なぜ興味を持っているかというと、サーバの各種メトリクス(CPU使用率・メモリ使用率など)を使って、似たような特徴を持っているサーバ群をクラスタリングできないかと考えいるためです。例えば、負荷の高いサーバ群と負荷の低いサーバ群などにグルーピングできると、面白いのではないかと考えています。 元論文はこちらです。 k-Shape: Efficient and Accurate Clustering of Time Series この論文では、提案するk-Shapeのアルゴリズムの説明だけでなく、時系列データをクラスタリングする上での理論的な背景から説明されていて、時系列クラスタリング手法の全体像を把握するのに大変良い論文でした。 概要 Time-Series Invaria

    k-Shapeによる時系列クラスタリングの論文:「k-Shape: Efficient and Accurate Clustering of Time Series」を読んだ - Fire Engine
    matsumoto_r
    matsumoto_r 2019/02/07
    素晴らしい取り組み。つるべーさんがかつてのゆううきさんみたいになってきた
  • Krylov部分空間を導入して特異スペクトル変換による異常検知の処理を高速化した - Fire Engine

    1年くらい前に特異スペクトル変換法による異常検知ライブラリを作ったんですが、作ったっきり放置していたので、開発当初からやりたかった計算の高速化処理を書きました。 ずっと放置してた割にはちょいちょいGitHubのスターを押してもらえてて、データサイエンスの流行を感じた。自分ももう一回ちゃんと学び直していこうという気になったので、まずは昔書いたやつの拡張からやっていく。 【目次】 特異スペクトル変換とは? Krylov部分空間の導入 検証結果 さいごに 参考 特異スペクトル変換とは? 特異スペクトル変換法の特徴については以前のブログに書いているので、ぜひそちらも読んでください。 特異スペクトル変換法の全体像は以下のようになっています。 出典:上の図は井手剛氏の著書「入門 機械学習による異常検知―Rによる実践ガイド」のP200 図7.4を元に作成しました。 図のように過去と今のパターンを行列とし

    Krylov部分空間を導入して特異スペクトル変換による異常検知の処理を高速化した - Fire Engine
    matsumoto_r
    matsumoto_r 2019/02/04
    おお,素晴らしい.しっかり理論もやって実装もやって定量評価しているのがとても良い
  • 消防士からエンジニアに転職して2年が経ったので振り返る - Fire Engine

    消防士として働いていた私が、経験ゼロからプログラミングを始めて、ITエンジニア転職してから2年が経ちました。 1年前にも同じような振り返りの記事を書きましたが、エンジニア2年目も振り返ってみたいと思います。 blog.tsurubee.tech エンジニア2年目を振り返って インフラエンジニアになった エンジニア2年目での一番大きな変化は、GMOペパボに転職して、インフラエンジニアになったことです。 これにより技術スタックも大きく変化し、自分の知識や関心領域を広げることができました。今振り返っても大変良い選択をしたと思っています。 僭越ながら、最近採用サイトにインタビューを載せていただきました。 無駄なこだわりを捨てた 私には「体系的に学ぶ」とか「順序立てて学ぶ」といったこだわりが染み付いていました。これは決して悪いことではないのですが、時に成長スピードを遅らせる要因になると思いました。

    消防士からエンジニアに転職して2年が経ったので振り返る - Fire Engine
    matsumoto_r
    matsumoto_r 2018/11/05
    めちゃ良い。もっともっとすごくなりそう
  • ユーザが接続先を意識しないSSHプロキシサーバを作った - Fire Engine

    今回は、ユーザが接続先を意識しないSSHプロキシサーバを作った話です。 SSHのユーザ名から動的に接続先ホストを決定し、SSH接続をプロキシします。 github.com 作った背景 比較的規模の大きなサーバ群を管理しており、そこに対して接続してくるユーザに特定のサーバを使ってもらいたい場合を考えます。 すなわち「ユーザtsurubeeには、ssh102サーバを使ってほしい」といったようにユーザとマシン間が紐づいている場合の一番単純な運用方法は、個々のユーザが接続先ホストの情報を知っていることです。 これでも問題ないのですが、何かしらのサーバ管理の理由でユーザに使ってもらいたいサーバが変更した場合、ユーザに通知するなどして意識的に接続先を変更してもらう必要があります。 このようなユーザとそのユーザに使ってもらいたいサーバの紐付け情報をサーバ管理側が一元的に管理して、ユーザに意識させることな

    ユーザが接続先を意識しないSSHプロキシサーバを作った - Fire Engine
    matsumoto_r
    matsumoto_r 2018/09/01
    素晴らしい〜!色々やってる!
  • Golangで軽量なSSHサーバを実装する - Fire Engine

    今回は、Golanggolang.org/x/crypto/sshパッケージを使って、SSHサーバを構築してみました。 かなりミニマムな実装ですが、リモートからSSH接続して、対話的にコマンドが実行できるところまで実装しました。 コード github.com package main import ( "golang.org/x/crypto/ssh" "log" "net" "io/ioutil" "fmt" "os/exec" "github.com/kr/pty" "sync" "io" ) func main() { serverConfig := &ssh.ServerConfig{ NoClientAuth: true, } privateKeyBytes, err := ioutil.ReadFile("id_rsa") if err != nil { log.Fatal(

    Golangで軽量なSSHサーバを実装する - Fire Engine
    matsumoto_r
    matsumoto_r 2018/07/29
    バンバンコード書いていってる
  • ペパカレのインフラ研修を修了した - Fire Engine

    どうもつるべーです。 私は2018年3月1日から、GMOペパボ社にてペパボカレッジ(通称ペパカレ)のインフラ研修を受けており、4月6日に無事修了することができました! 今回は研修で学んだことやこれからやりたいことなどを書いていきます。 以前ペパボへの転職エントリーも書いたので、よければ読んでください! blog.tsurubee.tech ペパカレって? ペパカレとは第二新卒エンジニア向け研修のことで、中途で入ってもみっちり研修を受けられます。 私はペパカレ6期生で、これまでWebアプリケーションエンジニアとモバイルアプリケーションエンジニアの採用があったみたいですが、インフラエンジニアのペパカレは今回が初めてだったようです。 ペパボカレッジについては詳しく知りたい方は下の記事を見てください! www.wantedly.com やったこと 作業環境ハンズオン zshの導入 tmuxの導入

    ペパカレのインフラ研修を修了した - Fire Engine
    matsumoto_r
    matsumoto_r 2018/04/09
    めちゃいい事コメントしようとして読んでいって、最後の写真でP山さんがヘッドロックされている状況を想像してヤバイと思えました。お疲れ様でした!
  • k近傍法による異常検知のライブラリをmrubyで作ってみた - Fire Engine

    こんにちは!インフラエンジニア見習いつるべーです。 今回は、mrubyという組込ソフトウェア向けの軽量なRuby言語を使って、k近傍法による異常検知を行うスクリプトを書いてみたので、そちらの紹介です! 目次 なぜ作ったのか 作ったもの ソースコード 使い方 mrubyに入門するには Changefinderとの比較から見るKNNの特徴 今後やりたいこと オマケ:k近傍法(K-Nearest Neighbor :KNN)に基づく異常検知の理論 なぜ作ったのか 今回は、「何かの問題を解決したい」というよりは、「Rubyの勉強がてらに何か作ってみよう」という動機で作りました。 ただ、一般的なRuby(CRuby)ではなくmrubyを選択したのには理由があります。 私が勤めているGMOペパボでは、mrubyを利用してミドルウェアの振る舞いを設定・制御する仕組み(これを"Middleware Con

    k近傍法による異常検知のライブラリをmrubyで作ってみた - Fire Engine
    matsumoto_r
    matsumoto_r 2018/04/01
    すばらし!こういうものを簡単にミドルウェアに組み込めるので、計算量頑張ればオンラインの時系列処理をいい感じに解析できる君も簡単にできて便利
  • Terraformでインスタンスの停止ができない理由を考えたらInfrastructure as Codeへの理解が深まった話 - Fire Engine

    こんにちは、筋肉系インフラエンジニア見習いのつるべーです。 私は今、GMOペパボ株式会社でペパボカレッジという第二新卒エンジニア向け研修を受けている真っ最中です! 今回のエントリーは、私が研修中に感じた素朴な疑問を会社のコミュニケーションツールに書いたら、そこから議論が広まって、最終的にはInfrastructure as Codeという重要な概念への理解を深めることができたよ、という話です。 Infrastructure as Codeって? Infrastructure as Codeを一言で表すと「コードによりインフラの管理をすること」です。 コードで管理することのメリットとしては、 コードのバージョン管理ができる 設定変更の適用前にプルリクエストベースで確認が行える 設定の共有・再利用が容易である オペレーションミスが防げる インフラ構築の属人化が防げる などが挙げられます。 現在

    Terraformでインスタンスの停止ができない理由を考えたらInfrastructure as Codeへの理解が深まった話 - Fire Engine
    matsumoto_r
    matsumoto_r 2018/03/24
    すばらし!実用上や実装上あると便利かという話と、レイヤーやモデリングを行った際の役割の定義は、分けて考えるべきであり、それが複雑なシステムを疎結合させ、変更に強い設計を生み出す。
  • 消防士を辞めて1年2ヶ月…GMOペパボのインフラエンジニアになった - Fire Engine

    2018年2月1日にGMOペパボ株式会社に入社しました! 消防士を辞めてエンジニア転職してからの1年2ヶ月は福岡のシステム開発会社で機械学習などのデータサイエンスの分野に取り組んでいましたが、ペパボにはインフラエンジニアとして入社しました。今回の記事は、いわゆる転職エントリというやつです!転職の理由などを振り返っていきます! 消防士からエンジニアへの転職については下の記事にまとめてます。 blog.tsurubee.tech なぜインフラエンジニアになったのか 私はこれまでデータサイエンスの分野に取り組んできたため、「機械学習エンジニア」や「データサイエンティスト」といった道もあったのですが、インフラエンジニアになりました。その理由を書いていきます。 データサイエンスの分野は、機械学習のアルゴリズムへの理解や、それらをプログラムに落とす力はもちろんのこと、それに加えて対象となるドメイン(

    消防士を辞めて1年2ヶ月…GMOペパボのインフラエンジニアになった - Fire Engine
    matsumoto_r
    matsumoto_r 2018/03/05
    入社後もとにかく勢いがあって本当色々な意味で大型新人が来たな!ガタッ!ってないっています。色々楽しみ〜 "ベンチプレス150kg挙げたい"
  • 消防士からエンジニアに転職して1年が経った - Fire Engine

    消防士として働いていた私がゼロからプログラミングを始めて、ITエンジニア転職してから1年が経ちました。今回は、1年間エンジニアとして働いた今の率直な思いと、1年の振り返りをしていこうと思います。 転職してどうだったか 私はエンジニアという仕事は自分に合っているし、転職して当によかったと思っています。しかしそれは、すべての人に「ITエンジニアっていいよ!」って勧められるというわけではなく、当たり前のことですが、合う・合わないがあると思います。 私が思うエンジニア仕事が合う人の特徴は「学ぶことが好きだ」ということに尽きると思っています。正直、エンジニアとして1年間働いて、未経験でもそこそこいけるなっという感覚の方が強かったです。それは、目の前の業務にだけ集中し、業務で必要な技術だけを追えばなんとか仕事はこなせるようになるからです。しかし、そのような場合は大抵、業務で使うフレームワークやラ

    消防士からエンジニアに転職して1年が経った - Fire Engine
    matsumoto_r
    matsumoto_r 2017/11/27
    記事を紹介頂いていた "未熟者の私のマインドを常に押し上げてくれた方々の記事を紹介させていただきます。どの記事も本当に素晴らしく俄然モチベーションがあがります"
  • 1