y_uti のブログ

統計、機械学習、自然言語処理などに興味を持つエンジニアの技術ブログです

PHPerKaigi 2020 に参加しました

PHPerKaigi 2020 に参加しました。2 月 9 日 (日) から 2 月 11 日 (火・祝) の開催で、会場は例年と同じく 練馬区立 区民・産業プラザ Coconeri ホールでした。参加者同士の交流をテーマにしているカンファレンスで、技術セッションのほかにも様々な企画が…

潜在ディリクレ配分法 (社内勉強会発表資料)

勤め先の社内勉強会で潜在ディリクレ配分法 (Latent Dirichlet Allocation; LDA) について発表するので、資料を公開します。前半では gensim を利用して LDA を実際に試してみることに主眼をおき、後半で LDA の内容を説明したうえで gensim の LDA との対応…

Rubix ML のサンプルプロジェクトを試す

Rubix ML のサンプルプロジェクトを一通り実行してみました。実行結果を報告します。 rubixml.comRubix ML は PHP で実装された機械学習、深層学習ライブラリです。分類、回帰、クラスタリングなどの機能が提供されています。また、ライブラリ本体とは別に、…

Active Object パターン (社内勉強会発表資料)

勤め先で『増補改訂版Java言語で学ぶデザインパターン入門 マルチスレッド編』の読書会を実施しており、私は第 12 章の Active Object パターンを担当しました。 Active Object from y-uti www.slideshare.net教科書のサンプルプログラムを題材に Active Obj…

PHPカンファレンス福岡2019 に参加しました

6 月 29 日 (土) に開催された「PHPカンファレンス福岡2019」に参加しました。会場は昨年までと同じ福岡ファッションビルでした。2016 年の初参加以降、毎年お邪魔しており、今年で 4 回目の参加です。今年も沢山の面白い発表や懇親会での意見交換など、楽し…

JIT コンパイル付き PHP のベンチマークテストを試した

PHP8 に JIT コンパイラを搭載するという提案が、投票によって可決されました。既に master ブランチにマージされています*1。 PHP: rfc:jitJIT コンパイラの開発は、下記のリポジトリで 2016 年から続けられていました。このブログでも話題にしたことがあり…

PHPerKaigi 2019 に参加しました

昨年に引き続き、PHPerKaigi 2019 に参加しました。会場も昨年と同じく、練馬区立区民・産業プラザ の Coconeri ホールでした。 phperkaigi.jp3 月 29 日 (金) から 3 月 31 日 (日) まで 3 日間にわたって開催される技術カンファレンスです*1。参加者同士の…

目で見る過学習と正則化 (社内勉強会発表資料)

勤め先の社内勉強会で、過学習と正則化について説明しました。発表資料を公開します。 目で見る過学習と正則化 from y-uti www.slideshare.net先月、社内勉強会でロジスティック回帰について説明したのですが、その際に触れられなかった話題として、今回改め…

ロジスティック回帰入門 (社内勉強会発表資料)

勤め先の社内勉強会で、ロジスティック回帰について入門的な説明をしました。発表資料を公開します。できるだけ数式での説明とはせずに、プログラマの立場で、アルゴリズムのイメージを掴めるように説明したつもりです。scikit-learn のロジスティック回帰を…

Metamorphic Testing を試す

Metamorphic Testing は、Chen らによって提案されたソフトウェアテスト手法です*1。以下に示す第二著者のウェブページからテクニカルレポートをダウンロードできます*2。今回は、テクニカルレポートで用いられている例を実装しながら Metamorphic Testing …

PHP で mutation testing を試す

Mutation testing とは、プログラムに対するテストケースが十分であるかを測定する手法です。テスト対象のプログラムを機械的に変更してバグを埋め込み、テストがちゃんと失敗するかどうかを調べます。バグのあるプログラムをテストするので、テストの失敗は…

WPF の GridSplitter の実装を調べる

Windows Presentation Framework (WPF) の GridSplitter の動作を理解するため、Reference Source を調べてみました。GridSplitter の動き方は、グリッドの列幅や行高を比率で指定した場合とピクセル値で指定した場合で異なります。Reference Source を読む…

WPF の GridSplitter を使う

Windows Presentation Foundation (WPF) の GridSplitter を使う機会があったので、使い方について調べた内容をまとめます。GridSplitter はグリッドの行の高さや列の幅を変更可能にするコントロールです。何となく簡単そうな印象があったのですが、実際に使…

PHP カンファレンス福岡 2018 に参加しました

一昨年、昨年に続き、今年も PHP カンファレンス福岡 2018 に参加しました。 phpcon.fukuoka.jp今年は、前日の 17 時から 前々夜祭、19:30 から 前夜祭 と非公式なサテライトイベントが開催され、これらにも参加してきました。前々夜祭は GMO ペパボ株式会社…

PHPerKaigi 2018 に参加しました

3 月 9 日から 3 月 10 日に開催された PHPerKaigi 2018 に参加しました。会場は練馬区立 区民・産業プラザ Coconeri ホールでした。 phperkaigi.jp全体的にとてもくだけた雰囲気で、お祭り感覚で楽しめるカンファレンスでした。発表はどれも内容の濃いもの…

PHPUnit の assertEquals を調べる

PHPUnit の assertEquals メソッドは、sebastian/comparator パッケージを利用して等価性を判定します。PHP の == 演算子を直接利用する実装にはなっていません。そのため、独自の拡張モジュールで == 演算子の挙動を変更した場合には、== での比較と assert…

nikic/comparable で PHP の比較演算をオーバーライドする

PHP で比較演算子の挙動を変更する拡張モジュール nikic/comparable を試してみました*1。PHP ではオブジェクト同士の比較方法は言語仕様として決められており*2、他の言語で見られるように equals や compareTo といったメソッドで挙動を変更することはでき…

PHP-ML で手書き数字認識 (勉強会発表資料)

PHP-ML という機械学習ライブラリを使って、MNIST の手書き数字認識を試してみました。11 月 29 日に開催された 第120回 PHP勉強会 の LT で発表しましたので、スライドを公開します。 PHP-ML で手書き数字認識 from y-uti www.slideshare.net勉強会の LT 発…

巡回セールスマン問題の近似解法と 2-opt 改善法

前回の記事に続き、巡回セールスマン問題の近似解法について調べてみます。前回は、いくつかの近似解法を実装して、問題を解く様子をアニメーションで紹介しました。今回は、それぞれの解法でどのくらい良い解が求められるのかを比較してみます。 巡回セール…

巡回セールスマン問題の近似解法を眺める

今年の 8 月頃に、paiza のプログラミングの問題に取り組みました。巡回セールスマン問題を解くものです*1。 paiza.jp巡回セールスマン問題の近似解法として、さまざまなバリエーションが知られているようです。そこで今回は、いくつかの簡単な方法を PHP で…

OPcache の最適化器の今 (PHP カンファレンス 2017 発表資料)

10/8 (日) に開催された PHP カンファレンス 2017 で「OPcache の最適化器の今」という内容で発表しました。発表資料を公開します。 OPcache の最適化器の今 from y-uti www.slideshare.netPHP カンファレンスという大きなイベントでもあり、発表のレベル感…

PHP のバージョンごとのベンチマーク実行時間

PHP 5.5 以降の各バージョンでマイクロベンチマークの実行時間を計測してみた結果を報告します。PHP のソースコードに含まれている Zend/bench.php を私の環境*1で各 10 回ずつ実行したものです。青色の棒は OPcache を無効にして実行したもの、橙色の棒は O…

Lasso によるパラメータ推定を確認する (社内勉強会発表資料)

7 月 4 日 (火) に統計数理研究所の公開講座「スパース推定」を受講しました。電気通信大学の川野秀一先生による講義で、Lasso とそれを発展させた様々なスパース推定法の紹介、推定値を得るための最適化アルゴリズムの説明など、分かりやすく説明していただ…

Kaggle の Titanic チュートリアルに挑戦する

Kaggle でチュートリアルとして開催されている、Titanic 号の生存者の予測 (以下、単に Titanic と記述します) に挑戦しました。実装したコードを公開します。Kaggle のサイト上で登録したものです*1。この実装でテストデータに対する判別精度は 80.8% でし…

PHP カンファレンス福岡 2017 に参加しました

6/10 (土) に開催された PHP カンファレンス福岡に参加しました。昨年に続き 2 回目の参加です。昨年はホテルの予約を取れず慌しく帰京したのですが、今年は観光も兼ねてのんびりと楽しんできました。スタッフ、発表者の方々、楽しいカンファレンスをありが…

『Python 機械学習プログラミング』 第 3 章 (社内勉強会発表資料)

勤め先での社内勉強会として、『Python 機械学習プログラミング 達人データサイエンティストによる理論と実践』を読んでいます。 book.impress.co.jp私は、第 3 章「分類問題 - 機械学習ライブラリ scikit-learn の活用」を担当することになりましたので、発…

Soft Confidence-Weighted Learning の実装

[2017-03-20] アルゴリズムと実装の対応など、全体的に説明を補強しました。Soft Confidence-Weighted (SCW)[1] を実装して、Iris データセットを分類する様子を観察します。SCW-I と SCW-II のほかに Confidence-Weighted (CW)[2], Adaptive Reguralization…

Passive Aggressive の実装

『オンライン機械学習』を参考にして Passive Aggressive (PA) アルゴリズムを実装し、学習の様子を眺めてみます。PA の制約を緩めたアルゴリズムである PA-I, PA-II も実装し、これらの動作の違いについても実験を通して比較します。 www.kspub.co.jp デー…

パーセプトロンの実装

『オンライン機械学習』を参考にしてパーセプトロンを実装し、その動作の様子を確認してみました。 www.kspub.co.jp[2017-02-19 修正] 記事中の「学習データの線形変換」の内容について、プログラムの実装に誤りがあったので修正して実験結果を差し替えまし…

Anaconda + Jupyter Notebook 環境構築でのトラブルあれこれ

Windows に Anaconda + Jupyter Notebook の環境を作成した際、いくつかのトラブルに遭遇したので、現象と解決方法を報告します。前提となる環境は以下のとおりです。Anaconda は、ウェブサイト*1からインストーラ (Anaconda3-4.2.0-Windows-x86_64.exe) を…