2011年12月24日土曜日

Rでデータマイニング データセットの読み込みと概念を理解しよう

初めまして。techGarageのメンバーの中村俊輔です。

某サッカー選手のような名前ですが、無関係です。



私は大学院でデータマイニングの分野を専攻しているので、その分野についての記事を書いていきたいと思っています。

データマイニングというと、”難しい”、”とっつきづらい”という印象を持たれている方が多いと思うのですが、やってみるとそうでもないことが分かります。

なので、私の記事では実際にデータマイニングをやってみて、簡単なんだと感じていただくことを目的にやっていきたいと思っています。



用意するもの

・パソコン(Windows, Mac, Linuxどれでも可)

・インターネット接続環境



データマイニングをするとき、多くの人はデータマイニング用のソフトウェアを使います。

ソフトの種類はたくさんありますが、この記事では導入が簡単で無料で使える”R”を使っていきます。



では、まずはRのインストールから。

下記のサイトを参考にして、インストールしましょう。

http://www.okada.jp.org/RWiki/?R%20%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB


インストールできたでしょうか?

Windowsを使用されている方は"R User Configuration"も実行しておいてください。

ちなみに私はWindowsとMac版を使っていて、記事ではMac版を使って説明していきます。

操作は基本的に同じなので、好きなOSでインストールしましょう。



起動すると、こんな画面が出ます。





次に、data(iris)と入力しEnter、irisと入力してEnterをタイプします。




そうすると、以下のような画面になります







なんじゃこりゃ!という感じだと思いますが、順に説明していきます。

Rの操作は基本的に対話型で行われ、命令を1つずつ与えて結果を得ながら進めていきます。

まず、最初の命令data(iris)ですが、これは"iris"というデータセットを読み込んでください、という命令です。

データセットというのは、分析したいデータの塊、データの集合体と思っていただけたら良いと思います。

次のirisは、"iris"というデータセットを表示してください、という命令です。

さきほどの出力はirisというデータセットの中身が表示されていたんですね。



では、このirisというデータセットですが、データマイニングの分野では有名なデータセットで、データマイニングでのハローワールド的なものと言ってもいいかもしれません。

このデータセットは、植物”あやめ”のがく片の長さと幅、花びらの長さと幅と、あやめの3つの品種が記録されています。

と言っても…よく分からないので、実際にデータを見て行きましょう。

先ほどのirisで表示されたデータセットを見て行きます。上にスクロールすると、このような画面になります。





このデータセットの1つの行が、1つの花に対応しています。

例えば、1番目のデータ


これは、数字が5つと文字列"setosa"が記録されていますが、順に見て行くと、

"1" この花のデータ番号

"5.1" この花のSepal.Length(がく片の長さ)

"3.5" この花のSepal.Width(がく片の幅)

"1.4" この花のPetal.Length(花びらの長さ)

"0.2" この花のPetal.Width(花びらの幅)

"setosa" この花のSpecies(品種)

つまり、データ番号1番の花はSepal.Lengthが5.1で、Sepal.Widthが3.5で、Petal.Lengthが1.4で、Petal.Widthが0.2であり、この花の品種はsetonaであるということです。

このデータセットはそのようなデータを150個集めたものになります。

ここで、説明変数と目的変数についての話をします。

データセットirisには変数が5つあります(データ番号を含まず)変数とは、列のことだと思ってもらえればいいです。

5つの変数のうち、 Sepal.Length、Sepal.Width、Petal.Length、Petal.Widthは説明変数で、setosaが目的変数です。

ちょっと分かりづらいですね。

少し、このデータセットがどのような目的で作られたのかを考えてみましょう。

このデータセットが作られた目的は、たくさんの花のサンプルを記録しておき、その記録したデータをコンピュータに学習させ、未知の花が与えられたとき、その花の品種が何であるかをコンピュータに推定させることです。

例えば、この"iris"のデータセットで学習しておけば、

Sepal.Lengthが5.0、Sepal.Widthが3.0、 Petal.Lengthが1.0、Petal.Widthが0.3の花の品種をコンピューターが推定することが可能になります。

つまり、推定したいのは目的変数の”花の品種”で、推定する際に入力に使うのが花びらの長さ等の説明変数というわけです。

なんとなくイメージはつかんでいただけたでしょうか?

では、次回は実際にコンピュータに推定させる部分をやってみましょう。

ここまで読んでいただきありがとうございました。




不備、質問等ありましたら以下までお気軽にお願いします。
shun.nakamu@gmail.com

Facebook

2011年12月22日木曜日

mixiカイハツコンテストに参加してきました。



















こんにちは。 

techGaragetokyoの笹川です。 
今回初めての投稿になります。

僕の自己紹介はfacebookとかtwitterを見て頂けると分かると思います。 


さて今日は12月16~18日とtechgarageメンバー5人で参加してきたmixiで開催されたmixiカイハツコンテストについてイベントの様子と感じたことを書きたいと思います。


概要
まずmixiカイハツコンテストとは?
mixiカイハツコンテストとはmixiのAPIを使い、~キャンパスライフに革命を。学生開発者求ム。~ というテーマで
学生20人ぐらいが参加し、実質1日半で企画から開発まで行ってしまうというイベントです。
ちなみに女性は見事に1人もいませんでしたw

詳細:http://everevo.com/event/492


開発の様子












techGarageでも以前2日間でアプリリリースしようぜーというハッカソンイベントを福岡と東京で開催致しましたが、今回はmixiのグラフAPIなどを利用しiPhoneアプリだけでなく、Androidアプリ、webアプリも開発するチームもありました。 

チューターとして
mixiでエンジニアとして最前線で活躍している方々や、
M-WARPの野村さんも参加し学生の開発のサポートをして下さりました。
企画側のチューターとして25日間で100万ダウンロードを達成したDECOPICを運営している
コミュニティーファクトリーの松本龍祐さんも参加して下さり、学生だけでなく、チューターの方も一緒になりレッドブルを飲みながらガリガリコードを書いた2日間でした。

下記は途中経過の様子です。






















チームはそれぞれ開発できる言語、開発したいプロダクトをもとに7チームに分けられました。
2日目の夜は全チームmixiオフィスで泊まりハッカソンらしくmixiさんのレッドブルの差し出しなどもあり徹夜で開発するチームがほとんどでした。 












彼も同じtechGarageとして参加したメンバーの山本です。 
彼のチームは女性をターゲットにしたmixiアプリ帳というマイミク同士
プリクラを共有しプリクラ帳を作成できるアプリを開発していました。 



最終日は審査員といて、
TechCrunch Japanの西田様、TechWaveの湯川様、 
Samurai Incubate Inc.の榊原様、株式会社ミクシィなど豪華メンバーの方々にご参加して頂きました。

1チーム7分のプレゼンを行い、そこでアプリの説明をデモで行いました。

結果発表
まず3位は先ほど説明したmixiアプリ帳を開発したtechGarageメンバーの 404 NOT FOUNDです。












2位チーム、POST GETで、夜と朝で使う時間によってアプリがかわり一日1回だけ夜自分の願いを星に乗せて願う事ができる。
ロマンチックなiPhoneアプリです。 このチームは開発だけでなくデザインや音楽も全てチームで作り2日間で開発したとは思えないほどクオリティーの高いプロダクトでした。













1位はなんと2人チームのチームねこせんです。 このチームは学生をターゲットにしたブルートゥースを利用したグループチャットアプリを開発しました。 このアプリの面白いところは校内でwifi環境がないところでもどこでもいつでもチャットができるようにとブルートゥースを採用し、たったの2日で開発した点です。














イベントの最後には参加者皆で仲良く集合写真












mixiカイハツコンテストで感じたこと

今回のmixiカイハツコンテストで感じ点は「これからのエンジニアの姿」です。これは今までのように開発ができるだけではなく、企画も、プレゼンも全て含めこなしてしまうオールマイティーのエンジニアです。 今回のハッカソンではこの僕が感じたこれからのエンジニアの方がとても多い印象を受け、力の差を感じました。
参加者のの多くはプログラミングを学校で専攻し、プログラミング歴も長く、とにかく開発することが大好きといった学生がとても多く、アウトプットした最終的なプロダクトの質もかなり高かったです。さらに僕が驚いたのは参加者のプレゼンテーションスキルがかなり高かったことです。エンジニアの学生を集めたイベントではないような印象を受け、これから求められるエンジニアはtechGarageでも掲げているような自ら考えて、物づくりができる一人前のエンジニアだと改めて再認識することができ、自分自身に危機感を感じることができました。


2011年12月11日日曜日

techGarage決起会&ハッカソン


先週の12月3,4日に、techGarageの決起会としてハッカソンを開催しました!


techGarageは東京と福岡の2カ所にラボがあるため、このハッカソンも東京・福岡で同時開催となり、お互いの様子をUstreamSkypeで中継しながら開発を行いました。


<<ハッカソン開催概要>>

目的:techGarage決起会、techGarageとしての実績を増やす

目標:2日間でiPhoneアプリを開発する

参加者:東京3チーム、福岡3チーム(ゲスト参加者もいました)


今回は、東京側のハッカソンの様子をお伝えしたいと思います。


開発に入る前に、Titaniumの勉強会を開催しました。講師には、㈱アールラーニングCTOの小澤さんを招き、約2時間Titaniumについて学びます。今回はTitaniumを初めて触る参加者もいましたが、すぐに動かせるようになっていました。


開発風景です。みなさん真剣ながらも、ところどころでギークな会話で盛り上がっていました!基本的にはチームに分かれて開発していますが、チームを超えた技術交流も見られ、オープンに開発に打ち込んでいました。


福岡のラボとつないで、2日間の成果をプレゼンしました。どのチームもデモとスライドを用意しています。


福岡チームの発表を聞いているところです。画面越しに熱意が伝わってきました!質疑応答はSkypeを通して行っています。


発表後に、投票により優勝チームを決めました。写真は見事優勝したチームのみなさんです!


総括

今回、東京側のハッカソンは、非常に盛り上がりました!techGarageの結束はさらに強くなり、ゲスト参加者にも楽しんでもらう事ができたようです!!


が、


残念ながら今回は2日間で完成まで行くチームがでませんでした。

しかし、近いうちにリリースすることを目指し、各チームで開発を継続するようです。

ということで、開発の進捗については後日報告いたします!


以上で東京側ハッカソンのレポートを終わります。

今後もどんどん情報発信していきますので、乞うご期待!