AzureMachineLearningで使えるデータを見てみた。

Azure Machine Learning では、
サンプルで使えるデータセット(Saved Datasets)が公開されています。

お試しで使えるので、どんなものがあるかを整理してみました。
(2014/11/20時点)

データ数や項目数がデータによって大きな差があることが、今回の整理で分かりました。
これらを使って、近々遊んでみようと思います。


以下のフォーマットで並べてます。

ID Dataset<データセット名> Row<データ数> Columns<項目数> item1 item2...
1 Adult Census Income Binary Classification Dataset 32561 15 age workclass fnlwgt education education-num marital-status occupation relationship race sex capital-gain capital-loss hours-per-week native-country income
2 Airport Codes Dataset 365 4 airport_id city state name
3 Automobile price data(Raw) 205 26 symboling normalized-losses make fuel-type aspiration num-of-doors body-style drive-wheels engine-location wheel-base length width height curb-weight engine-type num-of-cylinders engine-size fuel-system bore stroke compression-ratio horsepower peak-rpm city-mpg highway-mpg price
4 Bike Rental UCI dataset 17379 17 instant dteday season yr mnth hr holiday weekday workingday weathersit temp atemp hum windspeed casual register cnt
5 Bill Gates RGB Image 25600 5 X Y R G B
6 Blood donation data 748 5 Recency Frequency Monetary Time Class
7 Book Reviews from Amazon 10000 2 Col1 Col2
8 Breast Cancer data 683 10 Class age menopause tumor-size inv-nodes node-caps deg-malig breast breast-quad irradiat
9 Breast Canser Features 102294 118 Col1
10 Breast Cancer Info 102294 12 Col1
11 CRM Appetency Labels Shared 50000 1 Col1
12 CRM Churn Labels Shared 50000 1 Col1
13 CRM Dataset Shared 50000 230 Var1
14 CRM Upselling Labels Shared 50000 1 Col1
15 Energy Efficiency Regression data 768 10 Relative Compactness Surface Area Wall Area Roof Area Overall Height Orientation Glazing Area Glazing Area Distribution Heating Load Cooling Load
16 Flight Delays Data 2719418 14 Year Month DayofMonth DayOfWeek Carrier OriginAirportID DestAirportID CRSDepTime DepDelay DepDel15 CRSArrTime ArrDelay ArrDel15 Cancelled
17 Flight on-time performance(Raw) 504397 18 Year Quarter Month DayofMonth DayOfWeek Carrier OriginAirportID DestAirportID CRSDepTime DepTimeBlk DepDelay DepDel15 CRSArrTime ArrTimeBlk ArrDelay ArrDel15 Cancelled Diverted
18 Forest fires data 517 13 X Y month day FFMC DMC DC ISI temp RH wind rain area
19 German Credit Card UCI dataset 1000 21 Col1
20 IMDB Movie Titles 16614 2 MovieID MovieName
21 Iris Two Class Data 100 5 Class sepal-length sepal-width petal-length petal-width
22 Movie Ratings 227472 4 UserID MovieID Rating Timestamp
23 Movie Tweets 170285 8 Scraping Time Tweet ID User ID Movie ID Rating Retweet Count Favorite Count Time Zone
24 MPG data for various automobiles 392 9 MPG Cyl Displacement Horsepower Weight Acceleration Year CountryCode Model
25 Named Entity Recognition Sample Articles 2 1 Col1
26 Pima Indians Diabetes Binary Classification dataset 768 9 Number of times pregnant Plasma glucose concentration a 2 hours in an oral glucose tolerance test Diastolic blood pressure(mmHg) Triceps skin fold thickness(mm) 2-Hour serum insulin(muU/ml) Body mass index(weight in kg/(height in m)^2) Diabetes pedigree function Age(years) Class variable(0 or 1)
27 Restaurant customer data 138 19 userID latitude longitude smoker drink_level dress_preference ambience transport marital_status hijos birth_year interest personality religion activity color weight budget height
28 Restaurant feature data 130 21 placeID latitude longitude the_geom_meter name address city state country fax zip alcohol smoking_area dress_code accessibility price url Rambience franchise area other_services
29 Restaurant ratings 1161 3 userID placeID rating
30 Sample Named Entity Recognition Articles - - cannot visualize
31 Steel Annealing multi-class dataset 798 39 family product-type steel carbon hardness temper_rolling condition formability strength non-ageing surface-finish surface-quality enamelability bc bf bt bw/me bl m chrom phos cbond marvi exptl ferro corr blue/bright/varn/clean lustre jurofm s p shape thick width len oil bore packing classes
32 Telescope data 19020 11 fLength fWidth fSize fConc fConcl fAsym fM3Long fM3Trans fAlpha fDist Class
33 Time series Dataset 126 2 time N1725
34 Weather Dataset 406516 26 AirportID Year Month Day Time TimeZone SkyCondition Visibility WeatherType DryBulbFarenheit DryBulbCelsius WetBulbFarenheit WetBulbCelsius DewPointFarenheit DewPointCelsius RelativeHumidity WindSpeed WindDirection ValueForWindCharacter StationPressure PressureTendency PressureChange SeaLevelPressure RecodeType HourlyPrecip Altimeter
35 Wikipedia SP 500 Dataset 466 3 Title Category Text


表のうまい書き方が分からない…

10/4(土)「とちぎテストの会議03」に参加してきました。

通称「とてか」で知られる「とちぎテストの会議」に参加してきました。
とてか自体は3回目、自分は初参加です。

宇都宮なので、お昼は「みんみん」本店で焼き・水・揚げ餃子。
f:id:toshimana:20141004113726j:plain

夜も帰る前に「宇都宮餃子館」で健太餃子とチーズ餃子。
f:id:toshimana:20141004211641j:plain

拍手システム

発表時間の管理の仕方がとても素晴らしかったです。
プロジェクタを使って、講演時間のタイマーを全員に見えるようにしてあって、
タイマーが0になると、(講演の途中でも)観客が拍手して、強制終了するシステムでした。

このシステムは「講演が打ち切られても、嫌な雰囲気にならない」ところが素晴らしいと思いました。
進行時間はしっかり守られるし、拍手によって終わった感が出てくる、
他で見たことないようなやり方でした。

基調講演(湯本剛さん)「「いかす!」のために大事だと思う4つのこと」

スライドはこちら

「ゆもつよメソッド」で知られる湯本さんのお話。
自身で培ったテスト分析技法をさらに研究するために大学に入るとか、
その生き様だけで十分に「いかす!」人。

ちなみに、とても面白いTシャツを着てました。
あなたがそんなことを言ったら日本に「テストができる」人はほとんど居ないでしょう…

招待講演(中島滋さん)「忍者式テストをやってみた」

[20141007]スライド追加。


栃木の@m_sekiさん発祥の「忍者式テスト」の実践事例紹介。

忍者式テストは@nemorineさんが調べてくれています。

話を伺って、手動テストの有り方について再考させられました。
これまでは、以下のように「手動テストは自動テストの下位互換」に近いものだと考えていました。

  • あらゆる手動テストは自動化可能である。
  • 手動テストは自動テストに比べて初期コストは安い
  • ランニングコストは自動テストの方が遥かに安い

しかし、テストを[Checking]と[Testing]の観点で見ると、
そもそも得意分野が異なるのだということが分かりました。

  • 自動テストは既知の不具合がないかを検証する[Checking]を得意とする
  • 手動テストは未知の不具合を発見する[Testing]を得意とする

今はざっくりとした理解ですが、この辺りは整理できると面白いかも。
「探索的テスト」とかは手動でやるものなので、今更か、って感じですけど。


あと、スライド内で自分が困っているGUI設計のデザインパターンについて記載してありました。
全部はメモれなかったので、スライドが公開されると嬉しいですね。

「いかすツイートパネルディスカッション aka いかついぱねる」

ツイートから議論したい話題を取り上げて全員で議論する、これまた他で見ない試みで面白かったです。
回帰テストと殺虫剤のパラドックス」の話が面白かったです。

そして、@goyokiさん…お疲れ様です…

ワールドカフェ「とてかタイマーについて」

講演時間を管理する「とてかタイマー」を2日前に改修したけど、動作が不安で機能も付け加えたい。じゃあ前日はどうしよう、というテーマでグループに分かれて議論しました。
「機能追加の前に、最低限で動くものを用意しよう」とか「当日を想定したリハーサルは必ずやろう」とかが実際のケースでも使える対策ですね。

まとめ

仙台から栃木なら日帰りでも十分行き来できるので、
ちょっとした小旅行気分で、けど新しい気付きも沢山得られて、
とても楽しい一日になりました。
とてか自体は3回目ですが、やるたびに進化しているとのことなので、
次回も楽しみな勉強会でした。

Rでtmパッケージがインストールできなかった時の対処法

最近は「入門 機械学習」を読んでます。

入門 機械学習

入門 機械学習

その中で、text miningのパッケージであるtmのインストールで躓いたので、解決策をメモ

問題1

インストールできなかった原因は、tmパッケージで要求するRのバージョンが、インストールされていたRのバージョンよりも高かったことでした。

  • tmパッケージが要求するRのバージョン:≧3.1.0
  • インストールされていたRのバージョン:3.0.2

ubuntuの標準aptリポジトリを使うと、3.0.2しかインストールできなかったので、どうにかしてRのバージョンを3.1.0以上にする必要がありました。

解決1

参考にしたWebページ:
Ubuntu で R バージョン 3.1.0 のインストール

ほぼそのまま使わせていただきました。

export RELEASE=`lsb_release -sc`
sudo add-apt-repository --yes "deb http://cran.md.tsukuba.ac.jp/bin/linux/ubuntu ${RELEASE}/" 

これで、最新のバージョンのR用リポジトリが登録できました。

問題2

apt-get updateにて、GPGエラーが発生。
GPGエラーって何だろうと調べてみると、
「公開鍵がないため、登録したリポジトリが利用できない」ってことらしいです。

解決2

参考にしたWebページ:
Linux: apt-get 時の GPG error (NO_PUBKEY) の解決例

これもほぼそのまま使わせて頂きました。

gpg --keyserver subkeys.pgp.net --recv-keys 51716619E084DAB9
gpg -a --export 51716619E084DAB9 | sudo apt-key add -

1行目で鍵サーバから公開鍵を取得、
2行目でaptの公開鍵リストに追加、という処理、のはず。

おわりに

最後に以下のコマンドを実行して、完了。

sudo apt-get update
sudo apt-get upgrade
R

Rコマンド実行時に出てくるバージョンが3.1.0以上になっていればOK。

R version 3.1.1 (2014-07-10) -- "Sock it to Me"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

これで、サンプルが動かせる!はず!

Microsoft Azure Machine Learningのサンプルを動かしてみる。「5.Predict over new data」

Microsoft Azure Machine Learningのサンプルを動かしてみる。」の5回です。

Azure Machine Learningのサンプルを動かしていきます。
[Create your first experiment in Azure Machine Learning Studio]
http://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-create-experiment/#step-5-predict-over-new-data

第1回、2回、3回、4回はこちら。

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「1.Get Data」

http://toshimana.hatenablog.com/entry/2014/08/09/005803

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「2.Pre-process data」

http://toshimana.hatenablog.com/entry/2014/08/11/113416

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「3.Define, extract and enrich features」

http://toshimana.hatenablog.com/entry/2014/08/12/185342

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「4.Choose and apply a learning algorithm」

前半http://toshimana.hatenablog.com/entry/2014/08/13/202847
後半http://toshimana.hatenablog.com/entry/2014/08/14/164432

1.点数化の準備をする。

1-1.「Score Model」を用意します。

f:id:toshimana:20140814181638j:plain

1-2.「Train Model」の"Trained model(ブロック下部の小丸)"と「Score Model」の"Trained model(ブロック上部左側の小丸)"を接続します。

f:id:toshimana:20140814182011j:plain

1-3.「Split」の"Results Dataset1(ボックス下部左側の小丸)"と「Score Model」の"Dataset(ブロック上部右側の小丸)"を接続します。

f:id:toshimana:20140814182319j:plain

2.点数化を行う。

2-1.処理を実行します。

f:id:toshimana:20140814210304j:plain

3.評価する。

3-1.「Evaluate Model」を用意します。

f:id:toshimana:20140814204110j:plain

3-2.「Score Model」の"Scored dataset(ブロック下部の小丸)"と「Evaluate Model」の"Scored dataset(ブロック上部左側の小丸)"を接続します。

f:id:toshimana:20140814205017j:plain

3-3.処理を実行します。

f:id:toshimana:20140814205503j:plain

終わりに

一通り、サンプルの手順を追いましたが、中身については基本触れませんでした。*1
今は平行して本を読んで勉強している最中なので、機械学習に対する理解度が増したら、補足していきたいと考えています。

パターン認識と機械学習 上

パターン認識と機械学習 上

*1:機械学習が分からないから仕方がないね!

Microsoft Azure Machine Learningのサンプルを動かしてみる。「4.Choose and apply a learning algorithm」後半

Microsoft Azure Machine Learningのサンプルを動かしてみる。」の4回の後半です。

Azure Machine Learningのサンプルを動かしていきます。
[Create your first experiment in Azure Machine Learning Studio]
http://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-create-experiment/#step-4-choose-and-apply-a-learning-algorithm

第1回、2回、3回、4回はこちら。

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「1.Get Data」

http://toshimana.hatenablog.com/entry/2014/08/09/005803

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「2.Pre-process data」

http://toshimana.hatenablog.com/entry/2014/08/11/113416

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「3.Define, extract and enrich features」

http://toshimana.hatenablog.com/entry/2014/08/12/185342

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「4.Choose and apply a learning algorithm」前半

http://toshimana.hatenablog.com/entry/2014/08/13/202847

1.学習アルゴリズムのパラメータを調整する。

1-1.「Two-Class Boosted Decision Tree」を選択します。

f:id:toshimana:20140814154247j:plain

1-2.「Maximum number of leaves per tree」や「Number of trees constructe」、「Minimum number of training instances required to form a leaf parameter」の値を調整します。

f:id:toshimana:20140814154756j:plain

1-3.処理を実行します。

f:id:toshimana:20140813201123j:plain

2.訓練モデルを用意します。

2-1.「Train Model」を用意します。

f:id:toshimana:20140814160128j:plain

2-2.「Two-Class Boosted Decision Tree」と「Train Model」の"Untrained model(ボックス上部左側の小丸)"を接続します。

f:id:toshimana:20140814160418j:plain

2-3.「Split」の"Results Dataset1(ボックス下部左側の小丸)"と「Train Model」の"Dataset(ボックス上部右側の小丸)"を接続します。

f:id:toshimana:20140814161243j:plain

2-4.「Cross Validate Model」の「column selector」を表示します。

f:id:toshimana:20140814181048j:plain

2-5."Include", "column names"と設定し,入力項に"price"を入力します。

f:id:toshimana:20140813200858j:plain

2-6.右下のチェックボタンを押します。

f:id:toshimana:20140813201011j:plain

2-7.処理を実行します。

f:id:toshimana:20140814181321j:plain

終わりに

第4回は前後半に分けた記事になっています。*1

次回「サンプルを動かしてみる。」は最後になります。

*1:前半記事を書いた時点で、後半部分が残っていることに気づいていませんでした。

Microsoft Azure Machine Learningのサンプルを動かしてみる。「4.Choose and apply a learning algorithm」前半

この連載ももう終盤ですね。
引き続き、Azure Machine Learningのサンプルを動かしていきます。
[Create your first experiment in Azure Machine Learning Studio]
http://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-create-experiment/#step-4-choose-and-apply-a-learning-algorithm

第1回、2回、3回はこちら。

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「1.Get Data」

http://toshimana.hatenablog.com/entry/2014/08/09/005803

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「2.Pre-process data」

http://toshimana.hatenablog.com/entry/2014/08/11/113416

  • Microsoft Azure Machine Learningのサンプルを動かしてみる。「3.Define, extract and enrich features」

http://toshimana.hatenablog.com/entry/2014/08/12/185342


今回は機会学習の学習アルゴリズムを設定します。
いよいよ何をしているのか分からなくなってます。
が、サンプルを動作させる手順だけは整理しておきます*1

1.データを分割する。

1-1.「Split」を用意します。

f:id:toshimana:20140813183922j:plain

1-2.末尾に接続されている「Metadata Editor」と「Split」を接続します。

f:id:toshimana:20140813184105j:plain

1-3.「Properties」-「Split」-「Fraction of rows in the first output dataset」を0.75に設定します。

f:id:toshimana:20140813193918j:plain

2.学習アルゴリズムを選択する。

2-1.「Two-Class Boosted Decision Tree」を用意します。

このブロックは「Split」と接続しません。ここでは「Split」の隣に配置しています。
f:id:toshimana:20140813194325j:plain

3.学習アルゴリズムを評価する。

3-1.「Cross Validate Model」を用意します。

f:id:toshimana:20140813194824j:plain

3-2.「Two-Class Boosted Decision Tree」と「Cross Validate Model」の"Untrained model(ボックス上部左側の小丸)"を接続します。

f:id:toshimana:20140813195406j:plain

3-3.「Split」の"Results Dataset1(ボックス下部左側の小丸)"と「Cross Validate Model」の"Dataset(ボックス上部右側の小丸)"を接続します。

f:id:toshimana:20140813200023j:plain

3-4.「Cross Validate Model」の「column selector」を表示します。

f:id:toshimana:20140813200729j:plain

3-5."Include", "column names"と設定し,入力項に"price"を入力します。

f:id:toshimana:20140813200858j:plain

3-6.右下のチェックボタンを押します。

f:id:toshimana:20140813201011j:plain

4.処理を実行する。

4-1.画面下の「Run」ボタンを押します。

f:id:toshimana:20140813201123j:plain

4-2.処理が実施されます。

f:id:toshimana:20140813201255j:plain

4-3.処理が終了するまで待ちます。

処理が終了すると、画面右上に「Finished running」が表示されます。
f:id:toshimana:20140813201349j:plain

5.結果を確認する。

「Cross Validate Model」の"Scored Result(ボックス下部左側の小丸)"

f:id:toshimana:20140813201924j:plain

「Cross Validate Model」の"Evaluation results by fold(ボックス下部右側の小丸)"

f:id:toshimana:20140813201931j:plain

終わりに

一通りサンプル動作の手順をまとめた後に、
やっていることを整理したいと思います。

*1:機械学習が分かる人がサンプルを試してみて、内容をまとめると良いと思います

プログラマのコードレビューと学生マジシャンの手順見せの関連について

ソニックガーデンさんの「コードレビュー7つの秘訣」と自分の大学時代のマジックサークルにおける「手順見せ」のポイントについて、私が感じた関連について書いていきます。

はじめに

8/11(月)に受けたSonicGarden Studyを聞いて思ったことを書いてあります。

「いつまでクソコードを書き続けるの? 〜出来るプログラマだけが知っているコードレビュー7つの秘訣〜 - SonicGarden Study #11」
http://sonicgarden.doorkeeper.jp/events/13229?utm_campaign=event_13229_10033&utm_medium=email&utm_source=registered_message

以下、上記受講後に書いた記事です。
「2014/8/11(月) 「SonicGarden Study #11いつまでクソコードを書き続けるの? 〜出来るプログラマだけが知っているコードレビュー7つの秘訣〜」に参加しました。」
http://toshimana.hatenablog.com/entry/2014/08/11/234145

最初は「へぇーそうなんだ」と思ってみていましたが、話が進んでいくと、何か昔似たことをやったことがあるな…と既視感がありました。
そう、自分が大学で所属していたマジックサークルの「手順見せ」におけるポイントと「コードレビュー7つの秘訣」がそっくりだったんだよ!!*1

というわけで、あまり関係がなさそうな、プログラマのコードレビューと学生マジシャンの手順見せについて、ソニックガーデンさんの「コードレビュー7つの秘訣」をベースに関連性をまとめてみました。

手順見せとは?

ここでは、自分が所属していたマジックサークルの手順見せについて簡単に説明します。
ここでの手順見せとは、「年に1度の発表会のために、発表会演者が他の部員に自分の手順を披露して、意見をもらうこと」を指します。
発表会は12月ですが、そのために1年かけて準備を行います。演者は初期は2週に一度手順見せを行いますが、8月以降は1週に一度手順見せを行います。

「コードレビュー7つの秘訣」

ソニックガーデンさんの「コードレビュー7つの秘訣」は、以下になります。

  1. レビューの観点を明確にすること
  2. 我が身に返ることを恐れずに指摘すること
  3. 何故悪いコードなのかを論理的に説明すること
  4. 良いコードについて共通認識を持つこと
  5. 小さい単位でレビューを繰り返すこと
  6. 指摘は素直な気持ちで受け入れること
  7. 指摘は人格否定でないことを理解すること

「コードレビュー7つの秘訣」とマジシャンの手順見せの関係

1.レビューの観点を明確にすること

手順見せの時期によって観点が変わります。序盤は演技の方向性について、中盤は演技構成について、終盤は細かい技術や表現についてなどについて指摘します。
おそらく、納品がない開発をしているソニックガーデンさんはあまり細かい指摘はしないと思いますが、手順見せは納品相当である発表会の時点で最高の演技を届けるように指導することから、細かい指摘を行うという差はあるかと思います。

2.我が身に返ることを恐れずに指摘すること

マジックの舞台は"理想を表現するところ"なので、指摘する側も自分ができないような指摘をする場合があります。その場合は、指摘して終わりではなく、どうすればその理想に近づけるかをしっかり議論します。

3.何故悪いコードなのかを論理的に説明すること

マジックの舞台としてやってはいけないことは共通認識として部員みんなが持っています。なので、「やってはいけない事に抵触している」という指摘は、受ける側も素直に受け止めます。

4.良いコードについて共通認識を持つこと

みんな過去に発表会に出た人の演技を見ているので、憧れるような演技について共通認識ができています。指摘をする際にも、「xxがやった演技を参考にするといい」という指摘はよく出てきます。

5.小さい単位でレビューを繰り返すこと

1週間に一度、部員全体に手順見せを行います。しかし、それとは別に、より小さい手順見せを別途行います。同じ種類のマジックをする人たちで師弟関係があり、発表会に出る予定の弟子は、部員全体の手順見せの前に師匠に手順見せを行います。そうすることで、弟子たちはフィードバックを多く行い、短い期間でマジシャンらしい技術、考え方を身に着けることができます。

6.指摘は素直な気持ちで受け入れること

技術的な指摘については、素直に指摘を受け入れて練習する人の方が伸びる傾向がありました。ただし、感性的な指摘は受けた側が納得できないことも多いです。ここは「コードレビュー7つの秘訣」とは異なり、学生マジックは"変わったことが好まれる"ことから、感性的な部分は我を通すことが望ましいと考えられています。マジシャンにおける"感性的な指摘"は、プログラマにおける"宗教戦争"に相当するかと思います。

7.指摘は人格否定でないことを理解すること

そもそも、指摘として人格否定をすることがほぼなかったように思います。指摘も技術的に具体的なことが多いので、指摘を受けた側が指摘を人格の否定に捉えることもあまりないと思います。手順を良くすることが目的であることを全員で共有できていれば、「人格を否定しても良いものはできない」ことが分かるかと思います。

おわりに

コードレビューのような文化はプログラマ以外の業界でも多く行われているはずです。
8/7(木)にソニックガーデン倉貫さんが仙台で「納品のない受諾開発」について話してくれました。その中で、「絵描きが成長する際も、書いた絵を師匠に見てもらい、良い絵の描き方を学んでいる」という内容の話をしていました。
プログラマに限らず、良いレビューというのは、あらゆるクリエイティブな業界で必要になるものと感じました。
また、ソースレビューがより良い方向に発展するためには、他業種のレビューから発見できそうだと感じています。
いろんなレビュー文化を調べてみると面白いかもしれませんね。

*1:な、なんだってー!!