y_uti のブログ

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

2017-01-01から1年間の記事一覧

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) を…

BoW 特徴量に対するロジスティック回帰分析の過学習

ここ数回の記事で『言語処理 100 本ノック』の第 8 章、ロジスティック回帰による極性分析の問題に取り組みましたが、正則化無しでも交差検定での正解率があまり変わらないという結果が得られました*1。今回は、このことについて詳細に調べてみます。 データ…

『言語処理 100 本ノック』に PHP で挑む (問題 78 ~ 79)

『言語処理 100 本ノック』に PHP で挑戦しています。今回は、第 8 章の残りの問題を解いていきます。 www.cl.ecei.tohoku.ac.jp 78. 5分割交差検定 76-77の実験では,学習に用いた事例を評価にも用いたため,正当な評価とは言えない.すなわち,分類器が訓…

『言語処理 100 本ノック』に PHP で挑む (問題 73 ~ 77)

『言語処理 100 本ノック』に PHP で挑戦しています。第 8 章の問題 73 から解いていきます。 www.cl.ecei.tohoku.ac.jp 73. 学習 72で抽出した素性を用いて,ロジスティック回帰モデルを学習せよ. ロジスティック回帰は、教師ありの分類問題に適用できるア…

『言語処理 100 本ノック』に PHP で挑む (問題 70 ~ 72)

『言語処理 100 本ノック』に PHP で挑戦しています。昨年の 9 月に第 5 章を終えたところで間隔が空いてしまいました。第 6 章と第 7 章は飛ばして、今回から第 8 章に取り組みます。今回の記事では、機械学習の前処理に相当する問題 72 まで進めます。 www…