Parabola Journalひとこと日記

データ消失に備えてLANDISKを買った



自宅のMac,研究室から貸与しているMacbookAir,あとPS3周辺と全体的に家のデータ保存環境で容量が足りない(外付けもない)状態になってたので,外付けHDDを買おうとしてたけど,せっかくなのでNASっぽい感じで生きていこうと思う.

Parabola Journal

イラストで学ぶ機械学習のMATLABコードをMacのOctaveで実行する

 

こちらにも情報がある.(春山 征吾のくけー : 「イラストで学ぶ機械学習」のMATLABコードを全部試した – livedoor Blog(ブログ)).ただ第1刷でのミスは僕が買った第3刷ではだいたい修正済みの様子.全部は見てないからわからないけれど.

しかし
まったく最小二乗法は最高だぜ!な「イラストで学ぶ機械学習」を読み終えた。 – EchizenBlog-Zwei
に書いてあるとおりイラストがまったく何のために挿入されているか分からないという稀有な本であった.

 
MATLABコードを実行するために,MacOS用のOctaveを使う.インストール方法はここを見るとMacportsとか使ってもいけるようだけど,僕は普通にパッケージ版3.8.0がインストールされていた.

Octave for MacOS X – Octave

流れ

  • CUI用コンソールを起動する(Octave-cli.app)
  • pwd + cdでスクリプト置き場に移動する
  • ファイル名を打ち込む(source.mってファイルに書いたならsourceとうつ)

最初のソースコードの例.setenv打ち込まないとグラフ描画が出来ない.たぶん環境変数に打ち込むのが良いんだろうな.

setenv("GNUTERM", "qt");

n = 50;
N = 1000;
x = linspace(-3, 3, n)';
X = linspace(-3, 3, N)';
pix = pi*x;
y   = sin(pix)./(pix)+0.1*x+0.05*randn(n, 1);

p(:, 1) = ones(n, 1);
P(:, 1) = ones(N, 1);

for j=1:15
  p(:,2*j) = sin(j/2*x); p(:,2*j+1) = cos(j/2*x);
  P(:,2*j) = sin(j/2*X); P(:,2*j+1) = cos(j/2*X);
end

t = p\y; F = P*t;

figure(1); 
clf;
hold on;

axis([-2.8 2.8 -0.5 1.2]);
plot(X, F, 'g-');
plot(x, y, 'bo');



実行結果の例

sample

Parabola Journal

情報と職業(4/11): NII宇野先生

 


午前中に健康診断を済ませて目が極端に悪くなっていないことを確認して一安心.(左1.2,右1.0で,今までずっと良かった右を左が抜いてしまった.たぶん左が測りミスで,実際両方1.0ぐらいまで悪化したのだろう.やれやれ.)
 
午後はNIIの宇野先生の話(2コマ分, 13:00-16:15).1コマ目の話はいわゆるPattern Miningに関する手法の話(宇野先生曰く「いかにしてF1マシンを設計するのか?」についての研究)で,資料としては宇野先生,そして北大の有村先生の書いている資料が参考になる.講演タイトルは実利用で超高速性を持つマイニングアルゴリズム

 
概ね4点(全て上の資料にある)技術の話で,


列挙アルゴリズムの解として出力される個数は最悪の場合,また難し目のセッティング(しきい値を小さくしてひたすら網羅する,など)をすると指数個に跳ね上がるので,最初の段階でオーバーヘッドとして余計なコストを払ったとしても,最終的に(全体として)高速化が有効になる,というのが列挙アルゴリズムのアイデア.もう1つのアイデアは逆探索で,考えているパターン言語の中で親が1つに決まるような精密化演算子を定義し,その全域木を辿ることで列挙する.

頻出集合の個数(アイテム集合でも順序木でも無順序木でもグラフでも)は一般にたくさーん出てくるので,それを圧縮する/制約をかけるということが研究としてたくさん行われている.アイテム集合の場合飽和アイテム集合と極大頻出アイテム集合がある.木やグラフの場合についてもあるかどうかは僕は知らない.もしくは頻度(更に一般化してinteresting measureが上からk位までのTop-k pattern miningをする).ちなみに飽和アイテム集合はデータベースを二部グラフ化したときの極大二部クリークに対応して,もしアイテム集合を多次元のものとする場合,二部グラフを一般化してk-partiteグラフのクリークを探索するとすると,もう少し複雑な解析も可能になる.必要かどうかはともかく.


第二部については(F1と比較すると大衆車の発明的な感じか)データ研磨に関する話.論文としては宇野先生が研究会等で発表しているものが参考になるだろうか.残念ながら自分の調べた限りではインターネットアクセス可能な文献はなさそうであるが・・・.

  • 宇野毅明, 中原孝信, 前川浩基, 羽室行信: データ研磨によるクリーク列挙クラスタリング(
    CiNii), 情報処理学会研究報告, AL:アルゴリズム研究会報告 2014-AL-146(2), pp.1-8.若しくは第92回人工知能基本問題研究会(SIG-FPAI)報告
  • (PDF直リンク)多様性の獲得に向けた次世代マイニング技術

本来データマイニングは「蓄えられたデータから何かを発見したい」という動機があったはずだけど,あるパターン言語(アイテム集合,木,区間,グラフ,・・・)を定めた問題設定を一度研究し始めると,方法論・アルゴリズムの開発にどうしても重みがいってしまい「本当にしたいことは何なの?」という観点から問題を眺めたときにつらいものがある,ということから研究されている話の様子.

基本的なアイデアは「アルゴリズムばっかり研究しないで,データ眺めてそっちの研究ももうちょっとやろう」っていう話という感じだろうか.本当は局所的に特別なもの・違っているものを発見する(余談: このlocal pattern miningという考え方は時々data miningと,globalなmodelを計算する(主に二条誤差最小化+正則化)機械学習手法との対比として語られることがある)のに,技術が進歩したお陰でアルゴリズムが頑張ってたくさん答え出して(出しすぎて)くれる.これをなんとかしたい,というアイデアの1つがデータ研磨.他に思いつく手法としては,クラスタリングとかconstrained mining, interactive miningあたりがあると思うけれども,基本的に大規模データにぶつけるとそういう手法は上手く動かないことが多いので,せっかく高速化された列挙アルゴリズムとその知見を使うことで,この問題を解決しよう,という試みのよう.

実際使う手法はクリーク列挙で,こう考えると列挙アルゴリズムの汎用性凄いっていう話になる.「だいたい似ている構造はちょっと変更してまとめてしまう」というデータ修正を積極的に行うことで,類似している列挙解をくっつけていくという逆転の発想がキーポイント.

うーん,面白かった.ちなみに来週は知能情報学専攻の教授になられた鹿島教授とのこと.

研究室日記

研究室的新年度

 
今更感がありますが,研究室では新年度最初の集まり(セミナー,と呼んでいる)がありましたね.いろんな研究室雑務をM1に引き継ぎしたり,また新年度の連絡事項をしたり,研究室内サーバーのアカウント関係を手配したり,と.いろいろと.またM1/M2あたりは授業も始まっているので,そういう意味では少し懐かしい感じになったと言えなくもないですね.
 
研究室セミナーはM2の発表担当.去年研究室にいなかったので新鮮な気持ちで聞く.そして個人的に注目してたのは新しく准教授になられた教員の質疑応答パート(日本人相手なので,たまに英語から日本語になったりするけど・・・).研究の問題意識と言うか,学振的な意味で言うと申請分野というか,そのあたりを意識すると解くべき問題がよりクリアになるのかもしれないなと思った.英語表現とか盗もう.

MX許さない.