Archive for the ‘講義/実験’ Category

反省点もあるけどデータマイニング班の発表会が終了

木曜日, 8月 8th, 2013

m_201308081253035203161f9f312 m_201308081303425203189e972d9 m_20130808130642520319528e6ef

今日は学生実験の発表会、打ち上げ(On Dish)、ミニゼミ(堀川くん)、期末テスト関連で他の先生から報告届いた学生への連絡エトセトラエトセトラ。打ち上げ挟んでたものの大分疲れた一日。

朝からやってたデータマイニング班の発表会が終わりました。終わったのは発表会だけで、成果物を整理して公開することや自己評価(内省)とか残ってますが、一番プレッシャーを感じるであろうタスクは終了ですね。一先ずお疲れさまでした。告知していたからか受講者から聞いてたのか他の人も聴講に来てましたが、どう感じたのか本当の所を聞いてみたかったw

データマイニング班としての発表会は今回が初ということもあり、どういう感じになるかは私自身楽しみでした。割と想像してた通りではありますが、比較的進んでる学生は改善にトライするところまで進めてたり、真逆に機械学習させるところまで持っていく所まで辿り着けなかった学生もいたり。指導する側の反省点or悩んでる点は以下の通り。

  • Pythonの勉強をチュートリアル丸投げっぱなしはNG(プログラミング苦手な人への指導はやはり必要)。
  • データセット/データ/サンプル/特徴ベクトル等々の用語を整理した説明が不足していた感(相手は機械学習についての知識はゼロ)。
  • 個々にプロジェクト活動し始める時期が遅すぎたかも(1ヶ月+αぐらい)。
  • 機械学習自体については「ツールとして使えるレベル」を想定してましたが、いくつか代表的or基本的なアルゴリズムを勉強&実装する方向とどちらが良いのかは今も悩み中。
  • 同様に「そもそもツールを機械学習に限定していいのか」も少し迷ってます(制約の意味でこれはそのまま続ける予定ですが)。

学生側がどう感じていたかは授業評価アンケート等で分かると思います。一応楽しんでいた学生はいたっぽい。

一方で、予想外にやって良かったと思う点は以下の通り。

  • Pythonを選択することで機械学習ツール(scikit-learn)、形態素解析ツール(mecab)等を同一環境/同一言語で利用できた点。
  • scikit-learnを選択した理由の一つに英語ドキュメントを読ませるという裏テーマがあったのですが、これは良かった。

On Dish では結果的に過半数がステーキ選択してたのかな? それだったら素直にステーキがおいしいお店を選んだ方が良かった気もするけど、そのお店をチョイスした人的にはアイス食べ放題に引かれていたのでこれで正解ではあったのでしょう。実際問題として本人は当然としてそれ以外の人も凄い食べまくって「これが若さか」とか思いながら眺めてましたし。

ちなみに土曜日は#xhago4(沖縄のエンジニアを熱くたぎらせる祭典の第4弾)があるらしい。1,2年次はプロジェクトデザイン最終発表会で体力使い果たしてるタイミングかもしれませんが、タイトルや概要を眺めてみて面白そうなものがあれば覗いてみると良いんじゃないかと。折角の機会なので、あとは自分で選択しないと。(べつにこれを絶対選べという訳じゃないけど、何も機会を活用しないのは勿体無いよという話)

データマイニング班14回目は今後の予定を確認しながら進捗指導

木曜日, 7月 11th, 2013

m_2013071112304251de26e25721f m_2013071112414451de297887867 m_2013071112575451de2d427c7bc

久しぶりに姜先生とお食事デート。ケレベッキは幸せ空間過ぎる。ふぁぶの焼きカレーが美味しいらしい。誰か美味しいドライカレーを食べれる所を教えてください。

オープンキャンパスの臨時雇用手続きは明日13:00〆切です。まだ4割ぐらいしか届いていないですが、ちゃんと手続きしてね!(遅れてバイト代出せなかったら悲しいのは君たちだぞー)


データマイニング班の14回目は以下のような中身でした。

先週は検査の都合で休んでしまったので2週間ぶりの学生実験です。そして来週木曜日は「月曜日授業振替日」なのでまた2週間空いて次回は7/25で、期末試験期間をスルーしてから成果物報告会をして貰う予定です。タイミング的にオープンキャンパスで発表するよう準備してもらうことも考えなくはなかったんですが、新しい実験班ということもあって様子見してしまったのは勿体無かったかなぁ。実際どこまでやれるかどうかは別として、最初から予定たててスケジュール組んでおけばそれなりの何かはできるものだろうし。

最終的にどこまで辿り着けるかはプロジェクト毎にも違ってきますが、目標自体は最初に提示してた「達成目標」で、各自取り組んでいる問題についてどうアプローチし、実験設計&考察までできれば御の字といった所。余裕のあるところはPDCA的に「仮説を見直して改善してみる」ところまでやれそうな雰囲気です。

学生実験で詰まってた1週間が終了

金曜日, 6月 28th, 2013

m_2013062811375351ccf701aeb61 m_2013062819475851cd69de95928

実験系科目は2コマ連続の3時間枠。3年次向けの実験は週1回(2コマ)あるだけですが、2年次向けの情報工学実験1は週2回(4コマ)で、これを助教の先生で分担担当してるので「たまに4コマ加わる週がある」ことになります。実験2の1テーマ「情報ネットワーク演習」は先週から始まってましたが、先週は金曜日クラスのみだったので「普段のコマ+2コマ」。今週は火曜日と金曜日が入ってくるので「+4コマ」でした。これだけだらだら書いて何を言いたいかというと「疲れた」ですね(短)。

情報ネットワークの2コマ目はOSPF使ったダイナミックルーティングを演習しつつ、実技テストという名目でアドレス設計からチェックを下ぐらいか。思ってたよりは全グループ早めに終わったという印象です。機材は実験室にあるので「経路を二重三重に設計して物理層でトラブル発生(たんにケーブル抜いて再現)してもちゃんと通信確立できるようにしてみる」とか「ダイナミックルーティング+スタティックルーティングを経路コストや優先度調整して使い分けてみる」とか興味ある人はやってみると良いんじゃないかと。

個別ゼミは松田くんの出番ですが、別件でちらほら話を進めていたこともあって実際に卒研テーマとしてどこに手をつけるか、どういうアプローチが考えられるかといった当面の目標を擦り合わせていく話が多かったかな。やっぱりやりたいことやるのが一番だし。ただ、「手をつけられるぐらいにブレイクダウンする(どう問題へ落とし込むか)」という点はやっぱり悩みどころというか分解すること自体を想像しにくく感じてしまう学生は少なくないか。私自身「例えば」という案を提示することはできるけど、どのぐらい適切かは別問題ではあるか。このあたりの力を磨くには、ネタ出しみたいに何かしら「考えること自体を試行錯誤する」というプロセスを何度も繰り返して行くことでしか見えて来ない部分もあるんじゃないかと。

明日明後日は「情報倫理と情報社会」の宿泊集中講義に参加。ちょっと休みたいんだけど仕方ないかー。

データマイニング班12回目はTAからの宿題チェックしながら進捗確認

木曜日, 6月 27th, 2013

m_2013062712435551cbb4fb722c5 m_2013062719384151cc16310ae67

今日は学生相談対応、ミニゼミ、実験とあれこれ詰まった一日でした。

ミニゼミは山内くん。KES実験周りの落としどころに目処が付いた状態なので、今後の方向性についてどういうストーリー(背景、問題意識、そこに対する切り口や仮説、検証方法)が考えられるかを討論してました。MovieLensなデータセットだとちょっとやりたいことにそぐわなくなりつつあるけど、別途調整中のデータセットでなんとかなると良いのだが。


データマイニング班の12回目は以下のような中身でした。

先週からプロジェクトとしての推進がメインになってるので、今日も基本は進捗確認しながらコメント指導するぐらいです。ただ先週はTAからの宿題が出てたこともあって、「共起の概念を自身のテーマに導入する際のメリット・デメリット」を検討してもらった結果報告もしてもらいました。やや時間取られますが比較的汎用的に使える概念(言語処理特有の話ではない)ではあるので時間かけるだけの価値もあるでしょう。

Tipsでは代表的な特徴ベクトルとしてこれまでに紹介してきた「属性毎の出現回数」に加えて、0/1のバイナリベクトル、正規化ベクトル、TFIDF値を用いたベクトルを軽く紹介。

個別ゼミ+学生実験+相談対応で丸一日予定が詰まった日

金曜日, 6月 21st, 2013

m_2013062111372751c3bc6770f08 m_2013062120321351c439bd5615d

午前は個別ゼミで今日は平良くんの出番。今年の4年次は基礎勉強のための輪読(IR本DM本)をしながら興味のあるテーマ/キーワードについてKJ法チックな検討と論文読みを並行して進めながらテーマ検討をしている段階です。個別ゼミでは興味のあるテーマをどういう問題に落とし込むかについていくつか設定案を描きながら互いの認識擦り合わせをしてました。他学生の視点を含めた討論するという意味では週ゼミでやっても良いんだけど(やることもあるんだけど)、一人に集中して時間気にせず討論する場という意図で、個人ゼミもやってます。

午後は2年次の学生実験と沖縄高専から来た学生への相談対応。

学生実験の方は長田先生と共同実施でやってる実験1・情報ネットワーク演習で、想定では30分前終了だったんですが実際には1時間前には終了しちゃいました。一応動作確認含めて最後までやれたので、テンポが早すぎたにせよ大丈夫だったんじゃないかと想像。いろんなトラブルありましたが、発生してくれた方が楽しいし実用的でもあるよねということで「し忘れてた対応」もあったんですが結果オーライということにさせてください(懇願)。

沖縄高専から来た学生というのは、来年度に編入学で情報工学科に来るかどうか悩んでるのでいろいろ教えて欲しいという話。(私と同じ情報工1期生の)神里先生から私を紹介されたということでメールでアポ取りが届いて、今日話をしましょうという流れに。既に2,3年ぐらいの実績がある入学方式なので既に先輩もいるのですが、そちらとはタイミングが合わずに別の機会に話を聞いてみる予定らしい。沖縄高専と情報工学科の両方を体験しているという意味ではやっぱりその先輩の話を聞いた方が良いよね。

で、私の方は松田くんにも参戦してもらって「進学する人って研究したいから選んでるんですか?」「研究室ってどうやって入るんですか?」「共通とか専門科目とかで他学部の科目も取れるのにびっくり」「研究の発表?とかするんですか?」「先生毎に違うみたいなんですがゼミってどういうことするんですか?」「(学生研究室は)生活感溢れてますね」「(漫画とかあって)快適そうです」とかあれこれ対応してました。夜の勉強会とかお泊まり課題とかほこxたてとかあれこれ裏表なく話しましたが、参考情報として下記も(概要話した上で)紹介しました。そういうリンク一覧があると良さげかなと思いつつ、どんどん古くなる情報でもあるので随時更新するようでないと役に立ちにくそうでもあるか。

アポ無しでいくつか学生研究室回って話聞いたりしましたが、対応してくれた皆さんありがとうございました!


情報工学科(の偏った)情報源一覧

Installing Octave 3.6.4 on Mac OS X 10.8.4 with MacPorts

土曜日, 6月 15th, 2013

Matlab / Octave 用に書かれたソースがあって、動作確認しながら勉強してみるかということで Octave インストールしてみようとしたものの、homebrew, MacPorts, Fink どれでもすんなりはインストールできなかったので、試行錯誤してインストールした記録を残しておきます。

以下は XcodeCommand Line ToolsXQuartz (X11)、そしてMacPortsをインストールしたばかりの状態からの手続きです。ちなみにこれだけで /opt が 3.1G になります。わーい。

途中、epstool が自動インストールできずに中断されてしまっているんですが、理由が良く分からないな。


試した環境

OS: Mac OS X 10.8.4
Xcode: 4.6.3
MacPorts: 2.1.3
Octave: 3.6.4


Octaveインストールの手順

# 1回目の octave-devel インストール(途中で死ぬ)。
% sudo port install octave-devel +atlas+docs

# エラー1回目

—> Installing python27 @2.7.5_0
—> Activating python27 @2.7.5_0
Error: org.macports.activate for port python27 returned: Image error: /Applications/MacPorts/Python 2.7/Build Applet.app/Contents/Info.plist already exists and does not belong to a registered port. Unable to activate port python27. Use ‘port -f activate python27’ to force the activation.
Error: Failed to install python27

# 指示通りに無理矢理 activate する。
% sudo port -f activate python27

To make python 2.7 the default (i.e. the version you get when you run ‘python’),
please run:

sudo port select –set python python27

# 指示通りにデフォルトを python27 にする。
% sudo port select –set python python27


# python27 周りの問題を解決できたので、
# octave-devel インストールの続き。(2回目)

% sudo port install octave-devel +atlas+docs

# エラー2回目

—> Installing aquaterm @1.1.1_0
—> Activating aquaterm @1.1.1_0
Error: org.macports.activate for port aquaterm returned: Image error: /Applications/MacPorts/AquaTerm.app/Contents/Info.plist already exists and does not belong to a registered port. Unable to activate port aquaterm. Use ‘port -f activate aquaterm’ to force the activation.
Error: Failed to install aquaterm

# 指示通りに無理矢理 activate する。
% sudo port -f activate aquaterm


# aquaterm 周りの問題を解決できたので、
# octave-devel インストールの続き。(3回目)

% sudo port install octave-devel +atlas+docs

# エラー3回目

Error: The following dependencies were not installed: epstool ghostscript xorg-libXext xorg-libX11 xorg-libxcb doxygen graphviz gd2 xpm xorg-libXt libLASi pango Xft2 xrender cairo xorg-xcb-util gobject-introspection harfbuzz xorg-libXaw groff xorg-libXmu texlive texlive-basic texlive-bin poppler xorg-libXp texlive-documentation-base texlive-bin-extra dvipng latexmk texlive-latex pdfjam texlive-latex-recommended pgf texlive-context texlive-fonts-recommended texlive-math-extra texlive-metapost texlive-xetex texlive-generic-recommended texlive-documentation-english texlive-fontutils lcdf-typetools ps2eps texlive-lang-czechslovak texlive-lang-dutch texlive-lang-english texlive-lang-french texlive-lang-german texlive-lang-italian texlive-lang-polish texlive-lang-portuguese texlive-lang-spanish texlive-luatex texlive-latex-extra texlive-pictures gnuplot pstoedit ImageMagick transfig

# 依存関係の都合でインストールできなかったパッケージ一覧の、
# 一番最初に出てきたパッケージ epstool を個別にインストールしてみる。

% sudo port install epstool

# epstool をインストールできたので、
# octave-devel インストールの続き。(4回目)

% sudo port install octave-devel +atlas+docs
# -> 終了。

データマイニング班10回目は実験課題設定例についての解説&討論

木曜日, 6月 13th, 2013

m_2013061311491751b9332dcfb6a

オープンキャンパス関連のタスクが急増。ギリギリになってからタスク振られるのは嫌なので先週確認してたのだけど結果的には「〆切数日前になってから依頼が届いた」という悲しい現実。しくしく。

お昼ご飯のドライカレーは大学生協弁当ですが、割と美味しいのでデフォルトメニューになって欲しい。たまにドライカレーを無性に食べたくなるのだけど、いまいち良い場所が見つかってない(そもそも食べれる場所が良く分からない)のだよな。

ちなみに仁義なき戦い(【ほこ×たて@ie_001】絶対に居場所を特定するストーキングツール vs 絶対に居場所を特定させない設定(仮)【偵察編】)が勃発しつつあるらしい。自分だったら相手のサーバを落とすかなぁ(酷)。ま、「結果的には死んでるのと同じ」にもいろいろあるだろうし。笑い男してくれるのを希望しておこう。


データマイニング班の10回目は以下のような中身でした。

今日はテキスト・マイニングを中心とした事例紹介をしつつ、1つ具体的&詳細な課題設計例として「TLから未知語収集してみる」を説明。堀川くんが研究用途でieなTLを収集していることもあって、現時点でも約48万件程度のツイートがあるので、そこからデータセットを構築する前提での事例として未知語収集できれば、その後の解析にも役立つという話。一人で10数万ツイートしてるとかいう噂の学生のことを考えると収集できてるのはほんの一部かも。

他案はタイトルだけで「TLからのAA抽出/イベント検出/場所推定/テンプレ判定/bot判定/クラスタ抽出」、「就職活動向け募集要項から関連企業抽出/企業マッピング」、「MovieLensから類似ユーザ抽出/ユーザクラスタリング/映画クラスタリング/推薦推定」、「レポート自動採点のための誤字脱字判定/文脈の繋がり正しさ判定/説明不足箇所検出/コピー発見/トピック分類によるレポート作成支援」、「プログラムの綺麗さ判定/バグ推定」、「レビュー文解析」とあれこれ例示しつつ、相談討論タイム。何かしら琴線に触れたら良いなということであれこれ列挙してみた訳ですが、結果的にはその中から選んだ人が多いのかな。2値分類や多クラス分類回帰クラスタリングとこれまでざっと見てきた例だけでも問題設定次第で面白いことできるということを少しでも感じてもらえてたら何より。

仮説や問題設定がヨロシクなくて何度も手戻りになったり想定外の問題に打ち当たることもあるけど、それ含めて実験なので自分がやりたいことやろう。「無理矢理感もあるけど一応のテーマは決まりつつあるか。来週が楽しみ^^ #←の「^^」の意味を推定せよ」は推定されてしまったらしい。

TL内での相談がメインだったっぽいですが、全員(グループあり)のテーマ・イメージを決定。自然言語処理入門としてLSI(潜在的意味解析)な例紹介を軽く挟み、残り時間は具体的な問題設定に落とし込むための検討時間に。次週からは進捗確認がメインになります!

データマイニング班9回目は半教師あり学習&自然言語処理入門2

木曜日, 6月 6th, 2013

m_2013060612463851b0061e29ea3

実験しながら、というか今回の実験準備は数日前に終わってたので準備時間自体は殆ど無かったのですが、逆にそのために安心しきって個人面談/何でも相談/ちょっと重めのトラブル対応とそれ以外のことで詰まった一日でした。相談してくれる分には可能な範囲で対応します(時間的に余裕なければ素直に断るor延期する)のでお気軽に〜。

お昼で学食行くのも時間的に厳しそうなときは予め昼食買ってから出勤するか、カップ麺なりで済ますことが多いですが、ここ最近は週に一度ぐらいsubwayさんを食べてる感じ。朝に買ったやつを職場で冷蔵しといて食べる直後にレンジで温めるだけでも割と美味しいままで嬉しい。まだまだ県内には店舗少ないけど、丁度行きがけに通る場所にあるのでとても嬉しい。


データマイニング班の9回目は以下のような中身でした。

scikit-learnを使った機械学習の演習は前回で終わりの予定だったんですが、一覧を眺めてたらラベル有無が混在するデータセットをうまく使おうとする半教師あり学習の例もあったので、不公平な比較ではありますが「半教師あり vs 教師あり vs 教師なし」で結果にどういう違いが出て来るかを目視しながら振り返ることを含めた演習としてやることにしました。英語の勉強も少しやれるし。

自然言語処理入門の方は、前回のn-gramモデルな特徴ベクトルに合わせる形で代表的なというか素朴な特徴表現方法としてタームモデルな特徴ベクトル(英語編, 日本語編)の例。前回は省略した文分割を追加しつつ、単語分割+基本形への変換+ノイズ除去といった良く見られる処理の実装例を紹介する形に。

NLTKはインストールした時点で関連コーパスやらが最初からインストールされてたと思ってたんですが、実はとっくの昔のことで忘れてただけらしくnltk.download()であれこれ使ってるモデルやら個別にダウンロードが必要なのをすっかり忘れてました。

来週以降は2つの方向、
(1)学生個々人orグループ単位で問題設計考えながら実際に取り組むことをメインとしつつ、自然言語処理の演習を少し盛り込む形。
(2)こちらで設計した(全員同一の)問題について実際に取り組んでもらう形。
あたりを想定していたのですが、学生との相談の結果取りあえず(2)でやってみることに。ということで、来週はデータマイニングの例題を用意する予定です。事例紹介はそこそこいろんな事例を紹介して見ているつもりですが、あれはまだ機械学習勉強する前の話でもあったし、本当にざっくばらんにイメージだけを軽く説明しただけではあったので、「そんな話もあったような」ぐらいの記憶になっちゃってるのかも。ということで、(多数の)事例紹介はタイミング的に後回しにした方が良さげか。

データマイニング班8回目は教師無し学習&自然言語処理入門

木曜日, 5月 30th, 2013

s_2013053012451251a6cb489de3c

暑い日差しの中橋向こうでの会議があったため朝から汗だくでした。若干曇り気味でもあったし午前中なら日傘無しでも良いかなと考えたのが間違い。宜野湾農工大からだと素直に日傘持つ方が正解か。

午前中〜お昼過ぎまでずっと会議で昼食時間があまり取れず、通り道の中央食堂で手っ取り早く頂きました。いい具合に空き始めててあちこちでキャッキャウフフ(高性能フィルタリングによりそれ以外は聞こえないし見えない)してるのを耳にしながら食事を終えて実験準備。いくつか誤りを見つけて修正してたものの、まだ残っててあたふたする羽目に。ま、そいうのも含めて実験のお楽しみということで。

終了後はここ最近の実験でやってることやコードが良く分からないという学生らへのヘルプで、一応なんとか読めるぐらいにはなったのかな。少しずつで良いからできることを増やしていこう〜。


データマイニング班の8回目は以下のような中身でした。

8週目で教師あり学習(識別 classification回帰 regression)、教師無し学習(クラスタリング clustering)と代表的な所を例題使いながら実際に触ってみるところまでは一通り終わりました。これでステージ2の機械学習概観が終わり。って、本当はデータマイニング概観のつもりだったんですが、scikit-learn に慣れてもらうことを重視することに変更したのでこういう結果に。

残りの週は、自然言語処理入門を例題的に触ってみるのをオプションに盛り込みつつ、本題としては「分類/回帰/クラスタリング」でどういうことがやれるか、どういう問題設計に落とし込めるかという視点で討論的にやってみるのもありかしら。学生個々人orグループ組ませて何かやってみたいことやらせる、というのもありだとは思うんだけど、どうしよう。

データマイニング班7回目はパラメータ調整の演習

木曜日, 5月 23rd, 2013

m_20130523113556519d808cb0015 m_20130523194218519df28a50b8e

明日は人間ドックのためお休みです! 20時を越えた今!食事間食NGどころか水以外飲めない訳で!お茶すら飲めないことによるストレスはどう発散したら!とか言いつつ、実際にはお茶珈琲とか普段飲んでても飽きる人なので、この日に備えてあまり水飲まないようにしてたのでお水ウマー!これぞまさに計画通り!!(AA略

それにしても初人間ドックなのでちょっと楽しみ。バリウムは飲めないらしいのが心残りだけど、また機会はあるだろうし。

ちなみに明日はAgile Japan 2013 サテライト リーン x アジャイルなんてイベントが予定されているらしい。


データマイニング班の7回目は以下のような中身でした。

メインは宿題チェックを通した「データセットの準備の仕方」についてのコメントとパラメータ調整演習ですが、それにしても他がお座なりすぎたかなぁ。scikit-learnチュートリアルは「次元の呪い(curse of dimensionality)、疎なデータ(sparsity)、過学習(over-fitting)正則化(regularization)」あたりの話がざっくばらんと紹介されてるのですが、そもそも各モデルについての具体的な知識も無いままだと意味不明ということもあってかいつまんで紹介するに留めたのですが、今回ぐらいの紹介だったらざっくりと省略した方が良かったかもしれない。やるなら正則化に限らず、何かしら具体的なモデルを一つ取り上げて勉強するぐらいは準備した方が良さげかなぁ。

後で何かしら補足してみようかしら。今以上に混乱招く可能性が高いんだけどw