y_uti のブログ

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

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…

geospatial 拡張モジュールで二点間の距離を求める

PHP の geospatial 拡張モジュール*1を利用して、緯度と経度で表された二地点間の距離を計算してみます。 github.comまず、拡張モジュールを取得してビルドします。通常の手順どおり phpize を利用してビルドできます*2。私の手元では、PHP 5.3.29, PHP 5.6.…

第七回 闇PHP勉強会に参加しました

12 月 11 日に開催された「第七回 闇PHP勉強会」に参加しました。私の発表内容は前回の記事で紹介済みですが、皆さんの発表も大変興味深く、とても楽しい勉強会でした。会場はピクシブ株式会社さんでした。はじめてお邪魔したのですが開放的で自由な雰囲気の…

JIT のコードを読んでみた (勉強会発表資料)

12 月 11 日に開催された 第七回闇 PHP 勉強会 に参加して、現在開発が進められている PHP の JIT コンパイラについて発表しました。 JIT のコードを読んでみた from y-uti www.slideshare.netおおまかな流れとしては、OPcache に処理を追加することで各関数…

PHP から CaboCha を使う

PHP から CaboCha を利用できるように、拡張モジュールを作成しています。 github.com一般的な PHP 拡張モジュールと同様に、次の手順でインストールできます。ただし、現時点では PHP 7 専用です。 $ git clone https://github.com/y-uti/php-cabocha.git $…

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

『言語処理 100 本ノック』に PHP で挑戦しています。今回は問題 48 と問題 49 を解いて第 5 章を終えます。 www.cl.ecei.tohoku.ac.jp 48. 名詞から根へのパスの抽出 文中のすべての名詞を含む文節に対し,その文節から構文木の根に至るパスを抽出せよ.た…

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

『言語処理 100 本ノック』に PHP で挑戦しています。今回は問題 46 から進めていきます。 www.cl.ecei.tohoku.ac.jp 46. 動詞の格フレーム情報の抽出 45のプログラムを改変し,述語と格パターンに続けて項(述語に係っている文節そのもの)をタブ区切り形式…

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

『言語処理 100 本ノック』に PHP で挑戦しています。今回は問題 45 を解きます。MeCab の解析結果に含まれる「読み」の情報を利用して辞書順に整列する実装も試してみました。 www.cl.ecei.tohoku.ac.jp 45. 動詞の格パターンの抽出 今回用いている文章をコ…

Task Spooler を試した (社内勉強会の発表資料)

先日、Task Spooler というツールを知り*1、少し試してみたところ便利そうだったので、勤め先の社内勉強会で紹介しました。発表資料を公開します。 Task Spooler を試した from y-uti www.slideshare.netTask Spooler は、簡易ジョブ管理システムのようなツ…

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

『言語処理 100 本ノック』に PHP で挑戦しています。今回は第 5 章の問題 44 を解きます。 www.cl.ecei.tohoku.ac.jp 44. 係り受け木の可視化 与えられた文の係り受け木を有向グラフとして可視化せよ.可視化には,係り受け木をDOT言語に変換し,Graphvizを…

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

『言語処理 100 本ノック』に PHP で挑戦しています。前回は、第 5 章で利用するデータを CaboCha で処理するところまで進めました。今回は第 5 章の問題を解いていきます。 www.cl.ecei.tohoku.ac.jp 40. 係り受け解析結果の読み込み(形態素) 形態素を表…

『言語処理 100 本ノック』に PHP で挑む (第五章の準備)

『言語処理 100 本ノック』に PHP で挑戦しています。今回から第五章に入ります。 www.cl.ecei.tohoku.ac.jp 準備 夏目漱石の小説『吾輩は猫である』の文章(neko.txt)をCaboChaを使って係り受け解析し,その結果をneko.txt.cabochaというファイルに保存せ…

PHP の JIT 実装を試す

PHP の開発者向けメーリングリストに、JIT の開発を始めたという投稿がありました。PHP 8.0 への搭載を目標として開発を進めるそうです。 php.internals: JIT for PHP projectそこで、投稿に書かれているベンチマークテストを私の環境*1でも実行してみました…

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

『言語処理 100 本ノック』に PHP で挑戦しています。今回は第 4 章の残りの問題を解きます。 www.cl.ecei.tohoku.ac.jp 37. 頻度上位10語 出現頻度が高い10語とその出現頻度をグラフ(例えば棒グラフなど)で表示せよ.

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

『言語処理 100 本ノック』に PHP で挑戦しています。前回は、MeCab を導入して形態素解析の結果を読み込む関数を実装しました。今回は、この関数を利用して問題 31 以降を解いていきます。 www.cl.ecei.tohoku.ac.jp[2016-08-19 追記] 各問題の実行結果を追…

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

『言語処理 100 本ノック』に PHP で挑戦しています。前回までで第一章を終えましたが、少し飛ばして今回は第四章を進めます。 www.cl.ecei.tohoku.ac.jp 準備 夏目漱石の小説『吾輩は猫である』の文章(neko.txt)をMeCabを使って形態素解析し,その結果をn…

オフラインリアルタイムどう書く E06 に参加しました

8/6 (土) に開催された「オフラインリアルタイムどう書く E06」というイベントに参加しました。与えられた問題を解くプログラムを 1 時間の制限時間内で実装し、各自が実装したコードを発表するというイベントです。問題と各参加者の実装へのリンク集は、そ…

MeCab の解析結果からラティスを作成する

MeCab の解析結果からラティスを作成するスクリプトを書いてみました。N-best 解を集計して Graphviz の dot ファイルを出力するものです。 github.com以下のように実行すると、MeCab での解析結果が png 形式の画像ファイルとして出力されます。実行には Me…

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

『言語処理 100 本ノック』に PHP で挑戦しています。今回は問題 06 から第一章の残りを解いていきます。前回の記事で解いた問題 05 では n-gram という概念が登場しましたが、今回の問題には言語処理特有の話題はなく、いずれも単純なプログラミングの問題…

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

『言語処理 100 本ノック』に PHP で挑戦しています。今回は問題 05 を解きます。 www.cl.ecei.tohoku.ac.jp 05. n-gram 与えられたシーケンス(文字列やリストなど)からn-gramを作る関数を作成せよ.この関数を用い,"I am an NLPer"という文から単語bi-gr…

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

東北大学の乾・岡崎研究室のウェブサイトで、『言語処理 100 本ノック』という問題集が公開されています。実践的なプログラミングの課題に取り組みながら自然言語処理の知識を習得できる、全 100 問の問題集です。 www.cl.ecei.tohoku.ac.jpプログラミング言…

anyenv + phpenv + php-build が便利すぎる件 (勉強会発表資料)

第 103 回 PHP 勉強会で、表題のツールを用いて複数の PHP のバージョンを共存させる方法について発表しました*1。 anyenv + phpenv + php-build が便利すぎる件 from y-uti www.slideshare.net以前は、anyenv がインストールする phpenv には多少の手直しが…

MATLAB の bsxfun に親しむ

1 月から 3 月にかけて Coursera の機械学習コースを受講しましたが、毎週の課題として提出したプログラムの中で、MATLAB の bsxfun 関数を利用する機会が何度かありました。bsxfun 関数を利用すると、ある種の処理をループに頼らず効率的に記述できます。今…

RFC: "var" deprecation (勉強会発表資料)

PHP の RFC として提案された "var" deprecation について、第 102 回 PHP 勉強会 の懇親会 LT で発表しました。発表資料を公開します*1。 RFC: "var" Deprecation from y-uti www.slideshare.net"var" というキーワードは、PHP 4 でクラスのプロパティ定義…

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

5/21 (土) に開催された、PHP カンファレンス福岡 2016 に参加しました。4 月の PHP カンファレンス北海道に続いての参加になります。今年は、この後も 7/16 (土) に大阪、11/3 (木・祝) に東京で開催予定ですが、北海道でスタンプラリーの台紙を受け取った…

PHP 7 の新機能の紹介 (社内勉強会の発表資料)

勤め先の社内勉強会で、PHP 7 で新たに導入された機能について紹介しました。発表資料を公開します。前半では PHP 7.0 で導入された機能について、後半では PHP 7.1 で導入されることになる機能について、それぞれ構文の拡張にあたる内容を中心にピックアッ…

Coursera の機械学習コースを受講しました

Andrew Ng 先生による Coursera の機械学習コースを受講しました。受講期間は 1/25 から 4/17 でしたが、少しずつ前倒しして進めた結果、3/20 に終えることができました。 www.coursera.org機械学習の基本的なアルゴリズムをざっと学べる内容で、数学的に平…

PHP で非配列変数の添字を指定して代入したときの挙動

4/21 (木) に、PHP BLT #4 という勉強会が開催されていました。 phpblt.connpass.com私は残念ながら都合が合わず参加できなかったのですが、参加された方々のツイートで以下のようなコードが話題になっていました*1。

オフラインリアルタイムどう書く E02 のプログラム実行時間

「オフラインリアルタイムどう書く E02」というイベントに参加しました。与えられた問題を解くプログラムを 1 時間の制限時間で実装するというものです。今回の問題と、各参加者の実装へのリンク集は、それぞれ以下にあります。 http://nabetani.sakura.ne.j…

PECL のモジュールを数えてみた (勉強会発表資料)

PECL に登録されているモジュールの統計情報について、PHP BLT #3 で発表しました。発表資料を公開します。 PECL を数えてみた from y-uti www.slideshare.netPECL のウェブサイトから情報を収集して、登録モジュール数の推移*1や、ソースコードの行数とテス…

ロジスティック回帰のコスト関数を眺める

先月から、Andrew Ng 先生による Coursera の機械学習のコースを受講しています。各週 1 コマの分量になるように構成されていて、動画による説明を聴き、その週の範囲に関する宿題を提出しながら進めていく形式です。現在、第 3 週のロジスティック回帰まで…

PHP BLT #2 に参加しました

1/13 (水) に、PHP BLT #2 に参加してきました。主催、会場は株式会社メルカリさんです。LT 発表枠とオーディエンス枠のどちらも抽選で埋まる人気イベントでしたが、「まとめブログ書く枠」は先着順になっていて、私は抽選を避けてこちらの枠で参加させても…

k-means 法と DBA で時系列データをクラスタリングする

前回の記事で紹介した DBA を利用することで、DTW を距離尺度として、時系列データに k-means 法を適用できます。そこで今回は、これまでの記事でも利用してきた台風の経路情報を題材に、k-means 法による時系列データのクラスタリングを試してみました。下…

DTW Barycenter Averaging で時系列データの平均を求める

DTW Barycenter Averaging (DBA) の手法を用いて、時系列データの平均を求めてみます。前回の記事*1と同様に台風の経路情報を題材として、複数の台風の経路の「平均」を計算しました。結果は以下のとおりです。気象庁のウェブサイト*2で公開されているデータ…

k-medoids 法と DTW による時系列データのクラスタリング

過去の台風の経路情報を題材として、k-medoids 法による時系列データのクラスタリングを試してみました。距離の尺度には、以前の記事*1でも試した Dynamic Time Warping (DTW) を利用しました。K-medoids 法と DTW については、それぞれ Wikipedia に説明が…

PHP の配列を操作する

PHP Advent Calendar 2015 - Qiita の 12/22 の記事が話題になっていました。このアドベントカレンダーは毎日チェックしているのですが、通勤前に読んで、これは盛り上がるだろうな、と思いながら夕方に再度アクセスしたところ案の定という展開で、寄せられ…

php-build をカスタマイズして使う

以前このブログでも紹介したことがありますが、php-build というビルドツールが便利で、愛用しています。phpenv と php-build を組み合わせて使うことで、複数のバージョンの PHP を共存可能な形でインストールし、切り替えて使うことができます。バージョン…

PHP の echo と print の違い (闇)

この記事は、闇PHP Advent Calendar 2015 の 7 日目として書いたものです。qiita.com PHP 7.0.0 がリリースされたので改めてオペコードを眺めていたところ、次のように欠番があることに気付きました。 #define ZEND_ASSIGN_REF 39 #define ZEND_ECHO 40 #def…

PHP プログラムのファイルサイズと抽象構文木のノード数の分布

PHP7 で利用できる php-ast 拡張モジュールを導入して、PHP のプログラムのファイルサイズと抽象構文木のノード数の関係をプロットしてみます。PHP7 では、プログラムを実行する際、構文解析の結果を抽象構文木 (Abstract Syntax Tree) の形にして、それから…