Archive for the ‘講義/実験’ Category

データマイニング班6回目は脳裏に「M3」の2文字が明滅した人の話

木曜日, 5月 16th, 2013

m_201305161146295194488501595

明日はお休み! 有給取るのがヘタな人なので、休み取っても仕事したり、そもそも週末にちょこちょこ仕事してたりするんですが、やりたいことだけやれるので「休日の合間にやる」というのは割と捗るし。ここ最近の週末やら平日空いた時間は立ち上げたばかりのデータマイニング班準備ばかりですが、私自身体系的に勉強してきたという訳ではないのでいろいろ勉強になってます。

英語論文の書き方なるセミナーがあるらしい。院生以上が対象ですが、参加してみると良いんじゃないかと。前回と担当者が異なるようですが、こんな感じのセミナーでした。

ま、それはそれとして、明日の休みはどう過ごそうかなー。


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

宿題やその場で書かせるコードのレビューでは、私自身Python使いまくってる訳じゃないこともあって、「確かにそう書いた方がイイネ!」がでてくるのは、学生的には嬉しいのか悲しいのか怪しい所だな。他の人のコードを見る&見られる機会という点では良いだろうし、そのためにやっているんだけど。

次元の呪い解説記事は10年ちょい前の記事ですが今でも全体としては通用する内容だし、私自身の言葉だけでは欠落してる部分を抑えられるのが良かった。間接的にはこの記事を読んでイメージできる程度の下積みはできつつあるということの確認もできて丁度良い塩梅。もう1,2回ぐらい解説記事を読む場が用意できると良さげか。

英語勉強を兼ねたscikit-learnチュートリアルは時間的に厳しかったので今回はパス。その分、チュートリアルの理解に必要な部分を抽出した例題をやったので、来週は英語やれるんじゃないかと。といいつつ、今回は一人一人チェックする課題を出してるので「課題チェック1時間、ゲストトーク20分」がほぼ確定で、実質的には他のことをやれる時間がどれぐらいあるかは謎だな。

データマイニング班5回目は具体的な評価の例

木曜日, 5月 9th, 2013

m_20130509123624518b19b913155

献血16回目記念?だかでタンブラーを貰えました。何となく欲しい気がしつつ自分で買うまででもないなという状況だったのでちょっと嬉しいです。使うかどうかは謎なんですが。


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

詰め込み過ぎの気もしますが、時間的には予定通り早めに終われました。

宿題報告についてはコードを皆で眺めながら「マジックナンバー使うな」「リスト初期化しよう」「コメント書こう」とか補足。で、リスト内包表記についても補足する予定だったんですが、忘れてたのでメールでの補足をしておくことに。

開発的には「ドキュメンテーション(docstring)+ユニットテスト(doctest)+交差検定(のためのランダムなインデックス生成を通した分割と、平均スコア算出)」ぐらいの内容ですね。

来週はscikit-learnのチュートリアル続きを予定していますが、一つずつ丁寧に進めていくか、かいつまんでclassification/regression/clusteringの例を触ってイメージを掴むことを目標にするかぐらいで悩んでます。細かいこと気にせずにとっとと「やりたい具体例」について取り組んでもらう方向もありなんですが。何かしらデータセット構築して、分類学習させてから特徴抽出方法を見直すとか。

データマイニング班4回目が終了

木曜日, 5月 2nd, 2013

m_201305021154445181d5747fd76 m_20130502201105518249c92145e

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

想定ではLevel 1の報告&補足に1時間、FizzBuzzのユニットテストまでで1時間、他30分でちょっと時間余りそうだなと思ってたのですが、全く時間たりませんでした。英語チュートリアルやりながらの英語勉強もやるつもりが触る時間も取れなかったのは予定外。

プログラミング側もユニットテストまでやれなかったので、宿題もそこを除外した形でほんのり甘めの課題に。class, def, list, if, for, range ぐらいの組み合わせですが、チュートリアルやらせるよりはもう少し具体的な問題設定して上げた方が良いのかしら。そっち方面では言語処理100本ノックがウマい構成になってると思うんですが、機械学習周りの流れを把握しながらでもあるのでちょっと先走り過ぎな気も。うーん、来週はどうしよう。

データマイニング班3回目は半分英語指導に

木曜日, 4月 25th, 2013

m_2013042511520851789a58dd6b3

データマイニング班の3回目が終了しました。無線LANの調子は相変わらずで、ハブの用意が欠かせません。準備してもらっているので大丈夫ではあるんですが、事務室に置いてある2台のうち1台は使用された形跡自体がありません。というのは、LAN接続不要だからなのか別の場所では問題になっていないのかが気になったり。

3回目の中身は事例紹介がメインで、オプションでscikit-learnのチュートリアル。

事例紹介は一般物体認識での局所特徴量+共起した事例と、Twitter議論構造可視化のための品詞や時間情報を利用した事例の2つ。最初から一事例としての概要を見せるぐらいだったので、予定通り数十分ぐらいで終了。

予定外だったのはscikit-learnのチュートリアルで、「そもそも機械学習って何ぞ?」という所からの説明ではあったんですが、1.1節を読んで説明してもらうだけで1時間かかってたんじゃないかな。1.2節以降の実際の演習は全体で30分かかってないとは思う。英語ドキュメントぐらいしか無いのも「これを使おう」と決めた理由の一つなんですが、やっぱり「読まざるを得ない環境」を用意するのは効果があるなという印象。学生自身ががどう感じているか&本当に実になりそうかは別問題なんですがw、単にPythonチュートリアルするばかりだとつまらないだろうし。

ということで機械学習概説と、scikit-learnでテストデータ使ったSVMで分類器構築して予測させてみるまで、を終了。復習や理解を深めるために宿題としてLevel 1: 分類問題についての検討(PDF)をやってもらうことに。来週は何やろうかな〜。

データマイニング班2回目が終了

木曜日, 4月 18th, 2013

データマイニング班の2回目が終了しました。やっぱり無線LANの調子がよろしくないので、用意してもらったスイッチングハブを使いました。ちょっと悲しいけど、この調子だとデフォルトで用意した方が良さそう。

2回目の中身は、追加の環境設定(emacs使うならauto-complete.elぐらいは入れよう)と、事例紹介を2つした後はひたすらPythonチュートリアル。進捗具合的には来週もチュートリアルがメインですが、中だるみになりそうなので何かオプションを検討中。emacs推奨してるように見られてるっぽいですが、別にそんなことはなくてエディタでプログラミングするなら「インデント&自動補完ぐらいは必要だろう」ということで紹介してます。Aptana Studioとか統合環境使っても良いし。

事例紹介した一つ目はオントロジー辞書を使った興味抽出。Wikipediaから基礎情報+αを収集して、人手で修正するOntolopediaを使って辞書データを構築し、それを使って「通堂」好きな人は部分材料の「もやし」に反応するとか、「どういう関係性に興味を持ちやすいか」を検証してみたという話。

2つ目は、共起情報を使った情報検索への応用。一つの文の中に同時に出現する(=共起する)語を収集して傾向分析することで、直接は書かれていないが関連している語を自動補完して検索に役立てようという話。例えば大学というキーワードで検索すると、関連語として「ゼミ/科目/学科、、、」が得られ、直接大学というキーワードが含まれてない記事も検索できるというもの。

環境構築では、テキストではMacPortsを想定しているのですが、学生らの間ではhomebrewな人も多い用で、「片方で途中まで試した状態のまま別パッケージ管理ツールで試す」みたいなことをやりまくり、/usr/local/lib/, /opt/local/lib/ 等が混乱してて結果的に正常動作しないケースがあったっぽい。ま、頑張ってください。

実験1の1週目が終了し、今学期のNAL研ゼミが開始

火曜日, 4月 16th, 2013

m_20130416183833516d1c19a3a1c

スクリプトプログラミングが2クラスとも終了しました。後はレポートが提出された後の採点ぐらいになります。

実験の進め方自体は「項目毎に解説->演習」を繰り返し、気になる点がないかを細かく確認しているつもりです。が、その場で実際に質問をして来る学生はあまりおらず、実際にはいろんな所でつまづいているものの「質問できない」という学生が少なくないっぽい。「っぽい」というのは個別に確認している訳ではないからなのと、適当なタイミングでTAに質問することはできている学生がいるから。質問せずにそのまま流していると、今後いろんな所で同じつま付きをしてしまうだけなので、もしそういう学生がいたら「自分から質問するように」頑張ろう。何が分からないか分からないならそう質問してください。まずは自分から行動しよう。能動的に動こうとしないのなら、正直大学は向いていないと思う。自分で勉強することをサポートするのが大学なので。目標となる人の真似をするとか、何かしら自分から動いてみよう。言われたことをするだけなら高卒で十分です。

内容的には外れるのですが、演習中に学生のターミナルやエディタでの操作を眺めていると、

  • 「カーソルキーで移動する(ぐらいならCtrl-aやCtrl-eで移動した方が早いのに)」
  • 「ディレクトリやファイル名を統べてて入力する(ぐらいならTabで補完した方が)」
  • 「ほぼ同じ行を手入力/マウス選択してコピペする(ぐらいならヒストリ使ったり、ショートカット使った方が)」

とかあれこれ言いたくなったり、というか言ったりするのは、実際に眺めてみないと分からないことではあるので、少しは演習する意味があるのかな。

2013年度1回目のNAL研ゼミでは、学部生はIR本DM本の輪読をメインとしつつ、テーマ探しを兼ねて興味のある論文収集&論文読み。昨年度は英語本の輪読が「いつの間にか無くなっていた」のですが、今年は(3月から続けているという意味で)ちゃんと続いているらしい。修士はテーマがまだかっちり決まっていない人はその調整してもらいつつ、年度単位での研究計画にブレイクダウンしてもらってます。

実験1/スクリプトプログラミングを終えて高良研との交流食事会

金曜日, 4月 12th, 2013

m_201304121916185167def27dfa7

実験1全体の説明と、スクリプトプログラミングの金曜クラスが終了しました。昔は必要最小限の文法解説+各自でスクリプト組むスタイルでやってたんですが、ここ数年は幅広く解説+スクリプト読めるようになることを目標とするようにシフトしてます。学生的にどっちが楽しいかは良く分からないけど、もっと/etc/init.d/とか読む方向にシフトしてみようかなぁ。

シェルスクリプトに拘らずにepkg本体読ますというのも面白そうなんだけど、個人的趣味の問題で「オプション課題の例」として紹介するに留めています。portコマンドはbashで書かれてるのね。関数化されてるとはいえ、2年次に4千行強を読ますのは流石に忍びないがw

夕方は、712室での顔合わせ会をしようという高良先生の提案で、高良研+玉城研+NAL研の交流会をすることに。ただ玉城研は都合あえば参加〜というぐらいで結局来れなかったらしい。くぅ〜なる居酒屋だったんですが、一押しは手羽先らしく、これだけで5種類ぐらいの味付けが。とはいえ味付け違うだけじゃやっぱり同じに感じてしまって私自身は3つぐらいでギブアップ。予想以上にJoくんの胃袋が底なしだというのを発見したり。

そんなこんなで食べ過ぎたお腹を引きずって帰ったものの、これ暫くは風呂入るのも寝るのもキツいな。。

ということを書いてたらNLP論文ネタ一覧なるものがRTされてきました。ちらっと眺めただけだけど、出発点としては使えそう?

データマイニング班1回目が終了

木曜日, 4月 11th, 2013

データマイニング班の1回目が終了しました。無線LANの調子が悪くてぶちぶち切断される学生が少なくなく、1台有線LANにしてそこからWi-Fi共有接続とかして凌ぐことに。急場を凌ぐという意味では良いんですが、これが通常実験日で毎回やら無くちゃいけないとなると流石に悲しい。ということで、来週からはスイッチを用意することに。それも「ちょっと違うんじゃ」と思わなくはないですが。

肝心の中身はというと、サーバ環境の情報共有、Mercurial演習(PDF)事例紹介その1(電子マネー顧客分類)までやって終了。電子マネーの事例は、複数店舗でのEdy購買履歴を生データとして、広告配信(=意思決定)を支援するために、ユーザをセグメント分類して特徴抽出したという話。2005年度に産学官共同研究したやつです。協調フィルタリングを欠損値推定代わりに使ってみたら割と面白いクラスタ抽出できたとか、個々の理論を詳細に説明するというよりは「データマイニングの流れ」を意識して紹介したつもり。

学部3年生対象でもあるので、「こういうツール(scikit-learnを予定)が用意された時に、どういうデータをどう処理してどう活かすか」という部分を思考/試行実験できるようになるのがイメージしやすい達成目標かな。データをどう前処理するかについてはそもそも理論が分かってないとという話もあると思うけど、まずは用意された機械学習パッケージを使ってみようぐらいで。

LAN接続が悪すぎたので環境構築Pythonチュートリアルは宿題ということに。

来週は、事例紹介を冒頭で少しやった後、オプション(emacsユーザが多いのでauto-complete.elで補完ぐらいは付けようかと)を先にやってからPythonチュートリアルの続きをやってもらう予定です。

会議して実験準備

水曜日, 4月 10th, 2013

m_201304101143405164d1dc940b2

急に冷え込んだ一日でした。と過去形にしたいのですが、明日もまだ冷えるらしい。外気温的には20度切ってたらしく、長袖シャツの下に長袖インナー着込んで丁度良いぐらいの冷え込み具合。暑いよりは好きなので良いんだけど、気候が安定してないと着るもので悩むのがちょっと面倒です。

新年度になって1回目の学科会議ということで、研究室配属のお話。進級というシステムはないですが、情報工学科では修学の手引きにあるとおり卒業研究に着手するための条件が定められているので、その確認になります。そんなに難しい条件じゃないはずですが、例年漏れちゃう人がいるのが実体です。そもそも入学者数60人強なのに卒業できる人数は50人前後で、その卒業してる人数には過年度生も含まれていることを考えるとストレートで卒業できている人数は50人弱だし。という話も新入生向けイベントで話しています。いろいろサポートは揃えているから、頑張ろう。

実験1/スクリプトグラミングは、レポート骨組みもアップデート完了。時間もないし、そこまでテコ入れをする予定でもなかったので、恐らくこれで確定です。だらだらと長いページだけど、適宜説明省略しながら進める予定です。

実験3/データマイニング班は、最初の2,3週ぐらいはPythonチュートリアル漬けにしようと思ってたんですが、取りあえず過去の事例紹介ぐらいはしてみようかと。産学官での共同研究時のものなんだけど、こういう資料ってどこまで公開して良いんだろうか。というのが微妙に謎なので、一般公開はしない予定です。予稿集としては当時許可貰って公開済みなので、問題無いとは思うんだけど。

午後4時頃に、1年生向けの告知をML経由でやってみたところ、6時前の帰宅時にたまたま遭遇した1年生らに聞いたら「さっき読みました」という回答。たまたまだったとは思うけど、そういう通知にすんなり入れている(一般高校含む)のは素晴らしいです。

講義開始1日前

火曜日, 4月 9th, 2013

m_20130409130708516393ecb6709 m_201304091858345163e64a1036a

明日から前期の講義が始まります。昨日で新入生向けイベントが終わったこともあって久しぶりに大きなタスクがない一日で、実験のスケジュール(実験1は冒頭1週目と中盤の2週、実験3のデータマイニング班は木曜日)も確定したので、ようやくTAの申請手続きが終了。インストール大会での臨時雇用した分の報告書も提出したいのだけど、未だ学生からの書類待ち。早めに持ってきてください〜。

お昼は姜先生とこの間貸し切り閉め出し喰らった農場カフェに向かったら「定休日」看板が。サイト見ても不定休だし。ううーん、嫌われてるなぁ。仕方ないのでカスタマンダップでカレー!

午後は実験準備で、実験1/スクリプトプログラミングの課題を調整。1つ目は convert (ImageMagick) 使ってサムネール一覧を作ろうというもので、2つ目は Webサーバのアクセスログから日毎のアクセス数を gnuplot で棒グラフ出力しようというもの。ただ、独自課題を設定することも許可していて、その場合には一部レポートを省略すること許可しつつ加点もするという方針です。

レポート骨組みはまだ変更してないけど、明日にするか。実験3の準備もあるけどどど。