Fire Engine

消防士→ITエンジニア→研究者

データサイエンス

論文解説 Group Equivariant Convolutional Networks

前回の記事では、Equivariant Neural Networksというデータの対称性に着目した深層学習の設計の新しいパラダイムについて概観した。 blog.tsurubee.tech 今回は、2016年に登場したEquivariant Neural Networksの先駆け的な存在であるGroup Equivariant Convo…

Equivariant Neural Networksの概論:群論を用いた深層学習の設計の進展

最近、Equivariant Neural Networksというデータの対称性に着目した深層学習の設計の新しいパラダイムの存在を知り、非常に興味を持っている。Equivariant Neural Networksは、深層学習の更なる汎化性能の向上や学習の効率化、適用分野の拡大などを実現する…

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

先日,協力ゲーム理論のシャープレイ値に基づき機械学習モデルの予測を解釈するKernel SHAPという手法の理論と既存のライブラリの実装についてのブログを書いた. blog.tsurubee.tech 既存のSHAPライブラリであるslundberg/shap(以下,単にSHAPライブラリと…

協力ゲーム理論のシャープレイ値に基づき機械学習モデルの予測を解釈するKernel SHAPの理論と実装のまとめ

機械学習の幅広い分野への応用が進むにつれ,機械学習がその予測の根拠などを理解できない「ブラックボックス」となることが問題視されており,機械学習の解釈性や説明性が注目されています.今回のテーマであるSHAP(SHapley Additive exPlanations)は,機…

企業研究者の立場からKaggleに取り組む意義を考えた

先日,Kaggleで初めてコンペに挑戦し,その振り返りをブログに書きました. 現在,企業で研究者として働いている私は,Kaggleのコンペに取り組むことは非常に学びが多く,自身の研究活動にも良い貢献をするだろうと確信しました. 私自身Kaggleに取り組むま…

Kaggle初コンペの振り返り〜Riiidコンペで銀メダル獲得〜

Kaggleで開催されていたRiiid! Answer Correctness Predictionに参加しました.結果を簡単にまとめると以下の通りです. 順位:139位(3406チーム中) メダル:銀メダル(上位5%以内) 解法:LightGBMとSAKTのアンサンブル チーム:1人で参加 自身初となるデ…

グラフィカルモデルに基づく因果探索手法の調査

最近,因果推論や因果探索に興味を持ち,勉強している.というのも最近,ゆううきさん と一緒に分散システムの異常の原因を即時に診断するための研究を進めている.原因を診断するためのアプローチとして,サーバやコンテナ等から取得できる様々なメトリック…

遺伝的アルゴリズムの並列化とgoroutineによる実装

先日、「遺伝的アルゴリズムをGoで実装してみた」という記事を書きました。 この内容で2019年7月13日(土)に開催されるGo Conference'19 in Fukuokaに登壇させていただくことになったので、開発中のeagoというパッケージをもっと作り込んで行きたいと思いま…

遺伝的アルゴリズムをGoで実装してみた

こんにちは!つるべーです! 最近は、進化計算と呼ばれるバイオミメティックな計算技法に興味を持っており、実装しながら勉強しています。 前回の記事では粒子群最適化(Particle Swarm Optimization: PSO)を実装しました。 今回は、遺伝的アルゴリズムとい…

粒子群最適化(Particle Swarm Optimization: PSO)をGoで実装してみた

粒子群最適化とは、群知能による最適化手法の一種です。この手のバイオミメティクス(生物模倣)によるアプローチは、私の学生時代の専門である材料工学でも非常に盛んに研究されていましたが、データサイエンスでも応用されているのを知って興味を持ったの…

遺伝的アルゴリズムを用いてコンテナの配置を最適化する論文:「Genetic Algorithm for Multi-Objective Optimization of Container Allocation in Cloud Architecture」

ふとタイトルが目に入ってきて気になって読んでみた。私自身そんなにコンテナ技術を触ってないけど、前から遺伝的アルゴリズムが気になっていた。 ちょいちょい知識が足りずに理解しきれないところ出てきたけど、とりあえず最後まで読んだのでざっくりまとめ…

Dynamic Time Warping(動的時間伸縮法)で時系列データをクラスタリングする

最近時系列データのクラスタリングに興味を持ち始めて、いくつか論文読んだり、アルゴリズムについて調べていたら、実装してみたくなったので勉強のために作ってみました。 実装の言語にはGolangを用いていて、クラスタリングのアルゴリズムは、Dynamic Time…

k-Shapeによる時系列クラスタリングの論文:「k-Shape: Efficient and Accurate Clustering of Time Series」を読んだ

最近、時系列データのクラスタリングに興味を持っているので、k-Shapeというクラスタリング手法に関する論文を読みました。 なぜ興味を持っているかというと、サーバの各種メトリクス(CPU使用率・メモリ使用率など)を使って、似たような特徴を持っているサ…

Krylov部分空間を導入して特異スペクトル変換による異常検知の処理を高速化した

1年くらい前に特異スペクトル変換法による異常検知ライブラリを作ったんですが、作ったっきり放置していたので、開発当初からやりたかった計算の高速化処理を書きました。 ずっと放置してた割にはちょいちょいGitHubのスターを押してもらえてて、データサイ…

異常検知ライブラリを作ってみた

今回の記事は、前職消防士でゼロからプログラミングを始めた超未熟者の私が、異常検知ライブラリを作った話です。 なぜ作ったか マインド的背景 消防士を辞めてエンジニアに転職してから1年、いろんな技術に触れました。TensorFlow、scikit-learn、Dockerな…

Bokehを用いたビットコイン価格のリアルタイム可視化(Python)

今回はBokehというライブラリを使って、ビットコイン価格のリアルタイム可視化を行う方法について書いていきます。Bokehを使うと、Pythonオンリーで可視化までできるので、非常に便利です。 Bokehとは BokehとはPython製の対話的可視化ライブラリです。対話…

特異スペクトル変換法による時系列データの異常検知(Python)

はじめに 今回は、特異スペクトル変換法というアルゴリズムをPythonで実装します。このアルゴリズムは時系列データの異常検知に対して非常に強い力を発揮します。また、ハイパーパラメータ(人が調整する必要のあるパラメータ)が少なく、比較的チューニング…

プログラマのための数学勉強会@福岡 #6に登壇しました

先日「プログラマのための数学勉強会@福岡 #6」に登壇しました。 maths4pg-fuk.connpass.com こちらがそのときの発表スライドになります。 speakerdeck.com 内容は、正規分布を使って1次元データの異常検知をする話で、理論・実装の詳細は下記の記事に書きま…

1次元正規分布に基づく異常検知の理論とPythonによる実装

はじめに 異常検知とは、大多数のデータとは振る舞いが異なるデータを検出する技術のことです。異常検知は、膨大なデータが収集可能となった現代におけるデータ活用のひとつとして脚光を浴びています。 統計的異常検知の考え方 異常検知にもいろいろ…

Python製の対話的可視化ライブラリBokehを使ってみる

Pythonには様々なデータ可視化ライブラリがありますが、私は最近Bokehというライブラリを知って、その便利さにハマってます!今回はBokehの簡単なチュートリアル的な内容を書きたいと思います。 Bokehとは? Bokehって何?の答えを知るには下記の公式ページ…

はてなブックマークから特徴語を抽出し、ユーザーの興味・関心を分析する。

以前、文章から特徴語の抽出や特徴ベクトルを生成するモジュールを作りました。 hirotsuru.hatenablog.com 今回は、これを使って個人のはてなブックマークから特徴語を抽出し、興味・関心を分析できるのかやってみたいと思います。 はてなブックマークについ…

Rubyで文章を特徴ベクトルに変換するモジュールを作った。

最近、自然言語処理関係に興味を持ち、いろいろやっています。今回作ったものは、例えば、人工知能に関する文章をプログラムに渡すと、 { "人工知能": 3.4, "自動運転": 2.8, "研究": 1.5, ・・・・ } といったように、文章の特徴を表す単語(以下、特徴語と…

形態素解析エンジンMecabの辞書を更新する(mecab-ipadic-NEologdの導入)

先日、Rubyで2つの文章間の類似度を計算するモジュールについての記事を書きました。 hirotsuru.hatenablog.com 形態素解析、すなわち文章を単語に分割することは、文章を解析する上で、最初のステップとなります。この単語分割の際に用いる辞書は、日々生…

Rubyで文章間の類似度を計算するモジュールを作ってみた(TF-IDFとCos類似度による推定)

最近、自然言語処理に興味を持ち始めました。今回は、二つの文章(テキストファイル)の類似度を計算するモジュールを作ってみました。いずれは、これを発展させていって、機械学習とかも組み込んで、Webサイトをユーザの嗜好に応じて推薦してくれるシステム…

Rubyで始めるクローラー開発とスクレイピング & 為替情報を取得してみる。

近年「ビッグデータ」 という言葉が急速に流行し、 注目を集めています。ビッグデータとは、そのまま解釈すると膨大なデータのことですが、インターネット上の私たちの行動履歴もビックデータの重要な一部となっています。例えば、Googleでキーワードを検索…

非エンジニアによる人工知能と機械学習の話 & scikit-learnで回帰分析もやってみる。

現在、人工知能(Artificial Intelligence; AI)という言葉が、新聞やWebニュースで見かけない日がないほど盛り上がりを見せています。人工知能は、近年の目まぐるしい発展により、もはや研究の分野だけに留まらず、私たちの身近な生活にまで押し寄せてきてい…

Pythonで株価データを取得し、Matplotlibで可視化する。

はじめに 株価データは、代表的な時系列データの一つですが、Pythonはこの時系列データを取り扱うのを非常に得意としています。特に、Pythonライブラリの一つであるpandasはもともと金融データを扱うために開発されたため、時系列データの分析に強力な機能を…

IPython Notebook(Jupyter)って何ができるの?

最近IPythonまたはIPython Notebookという言葉をよく目にします。私も最初はなんじゃそれ?って感じでしたが、これを使い始めてその便利さに感動を覚えました。今回はその感動を共有したいと思います。 記事を読んで頂くと、IPython Notebookって何?という…

データサイエンスを始めました!

この度、データサイエンスの勉強を本気で始めようと決意しました!今回は、なぜやるか、なにをやるかなどをつらつらと書いていきます。 勉強を始めて改めて実感しましたが、IT関連の分野ってほんとに広大ですね。そんな中で、それなりの結果を出そうとしたら…