macでn-gram作成する(手っ取り早く)
仕事で手っ取り早くn-gramが欲しくて、
pythonもまだ設定してないmacだったので、困っていたら、
このサイトを見つけて助かりました。
http://jarp.does.notwork.org/diary/201504a.html
このままだとmacで上手く行かなかったので、
下の通り、インストールしたら動きました。
http://www.absolute-keitarou.net/blog/?p=586
n-gramで分割して、数えた結果だけ眺めても楽しいので、
機械学習の初心者向けだと思ったので、
簡単に出来る方法をまとめてみました。
シェル芸も言語処理100本ノックも、
前から気になってる単語なので、そろそろ挑戦したいです。
macでn-gram作成する(手っ取り早く)
仕事で手っ取り早くn-gramが欲しくて、
pythonもまだ設定してないmacだったので、困っていたら、
このサイトを見つけて助かりました。
http://jarp.does.notwork.org/diary/201504a.html
このままだとmacで上手く行かなかったので、
下の通り、インストールしたら動きました。
http://www.absolute-keitarou.net/blog/?p=586
n-gramで分割して、数えた結果だけ眺めても楽しいので、
機械学習の初心者向けだと思ったので、
簡単に出来る方法をまとめてみました。
シェル芸も言語処理100本ノックも、
前から気になってる単語なので、そろそろ挑戦したいです。
【QlikView】クリア選択条件機能
Microsoft Azure Machine Learnig (ML) のサンプルの、Recommender Systemの中身
Microsoft Azure Machine Learnig (ML) のサンプルの、
Recommender Systemの中身
仕事で読んだので、まとめました。
一応 Microsoft Azure MLの初心者向けです。
■サンプルを開くところまで■
ぐぐれ。
■データセット3つ■
・Restaurant ratings
・Restaurant customer data
・Restaurant feature data
データセットの中身は、データセットのアイコンの下の丸を右クリック→Visualize を選択すると見られます。
左上にカラム数と、列数が表示されています。
Restaurant customer dataには、19項目、138人分のデータが入っているようです。
■前処理■
Restaurant customer dataと、Restaurant feature dataには、
レコメンドと関係のないデータも入っていますので、
Project columnsを使って、必要なカラムだけを抜き出しています。
Project columnsを選択した状態で、右のProperties(畳まれている場合は、上の<マークをクリック)を開きます。
Selected columnsに、選択したカラムが表示されます。
変更したい時は、Launch column selectorボタンで、変更画面が表示されます。
Restaurant ratingsは、Splitに繋がっています。
データを、学習用、計算用、評価用と分けてくれています。
■学習■
Train Matchbox Recommenderです。
Helpのページを見ますと、
(Propertiesの一番下の(more..)をクリックすると、Helpのページが開きます。)
Ratingのデータと、ユーザのデータと、アイテムのデータを入力すると、
学習後のデータを出力するそうです。
パラメータは2つです。
Matchboxの論文を見ると、
Number of traitsは、特性ベクトルの数、
Number of recommendation algorithm iterationsは、この特性ベクトルの計算を何回繰り返すか、です。
特性ベクトルの数が、Restaurant customer dataと、Restaurant feature dataのカラム数より少なくないと動かないです。
特性ベクトルの計算回数も、答えが収束する計算なので、より多く繰り返せばいい結果が出るような気がしますが、
答えが変わらなくなってきたら、いい感じのところで止めてください。
■計算■
Score Matchbox Recommenderです。
Module parametersで、計算したいことを選択してください。
ふつう、みなさんの目的のデータは、これのoutputだと思います。
API化するときは、アイコンの下の丸を右クリックし、
Set as Publish Outputを選択します。変なマークがつきます。
■評価■
Evaluate Recommender です。
最後に、計算したデータが正しいか、
Restaurant ratingsをSplitで分けて、
計算したデータを、実際のRestaurant ratingsのデータで答え合わせしています。
Visualizeを開くと、MAEとRMSEが見られます。
どちらの値も、小さいほうがより正確だったということです。
ただ、統計のデータなので、あまりあてになりません。
レコメンドに限らず、
用途によっては許されない間違い(健康診断で病人を見落とすとか)があると思いますので、
結果の指標だけ見ずに、Score Matchbox Recommenderの結果とか、細かいところを見たほうがよいです。
メモ)気が向いたら、図を入れる
azure ml でローカルのファイルのアップロードの方法
画面が見つけにくいので。
azure ml でローカルの、csvファイル等のアップロードの方法です。
モデルを作成する画面の、
下の黒い帯の、左にある”+NEW”をクリックします。
新しいメニューが開きますので、
“DATASET”→”FROM LOCAL FILE”を選択します。
アップロードするファイルの選択画面が、現れます。
ファイルのタイプとかいい感じに選んで、OKを押せばアップロード完了です。
【QlikView】複数のテーブルやファイルからデータを取り込む時の便利技
QlikViewは、複数のテーブルやファイルからデータを取り込んでも、
カラム名を同じにすれば、自動で関連付けてくれます。
さらに、LEFT JOINを使うと、一方の表を優先してデータを取り込むことができます。
「一方の表を優先してデータを取り込む」とは、
たとえば、売上表に会員番号をもとに顧客表の氏名を結合する場合などです。
売上表に会員番号が無い顧客の名前は取り込みません。
売上表:
商品名 |
会員no |
リンゴ |
001 |
バナナ |
002 |
みかん |
003 |
顧客表:
会員番号 |
氏名 |
001 |
山田 |
002 |
鈴木 |
003 |
佐藤 |
004 |
山下 |
上のようなテーブルがあったとして、LEFT JOINを使わない場合、ロードスクリプトは以下のように書きます。
CSVファイルを使う人は、SQL SELECT~;のところをLOAD ~に置き換えて考えてください。
売上表:
SELECT
商品名,
会員no AS 会員番号
FROM売上表;
顧客表:
SELECT
会員番号,
氏名
FROM顧客表;
データは以下のようになっています。
商品名 |
会員番号 |
氏名 |
リンゴ |
001 |
山田 |
バナナ |
002 |
鈴木 |
みかん |
003 |
佐藤 |
- |
004 |
山下 |
何にも購入していない004山下さんが、データに入っています。
購入した人の詳しいデータが知りたかっただけなら、
004山下さんは、この場合邪魔なデータになってしまいます。
ちなみに、システムテーブルで見ると、こうなっています。
$Field |
売上表 |
顧客表 |
会員番号 |
会員番号 |
会員番号 |
商品名 |
商品名 |
- |
氏名 |
- |
氏名 |
そこで、LEFT JOIN を使います。
前のテーブルとデータを結合し、
結合できないデータ(この場合、購入履歴に番号が無い004山下さん)は、
取り込まずに、捨ててしまいます。
売上表:
SELECT
商品名,
会員no AS 会員番号
FROM売上表;
LEFT JOIN (売上表)
SELECT
会員番号,
氏名
FROM顧客表;
商品名 |
会員番号 |
氏名 |
リンゴ |
001 |
山田 |
バナナ |
002 |
鈴木 |
みかん |
003 |
佐藤 |
システムテーブルで見ると、こうなっています。
$Field |
売上表 |
会員番号 |
会員番号 |
商品番号 |
商品番号 |
氏名 |
氏名 |
ちなみに、売上表のほうのデータは消えません。
売上表の会員番号が、未記入だったり、ありえない番号でも、売上表のほうのデータは減らずに、
氏名のところは空欄でデータが保存されます。
商品名 |
会員番号 |
氏名 |
リンゴ |
001 |
山田 |
バナナ |
002 |
鈴木 |
みかん |
003 |
佐藤 |
もも |
005 |
<![if !supportLists]>- <![endif]> (空) |
これでデータが減るので、QlikViewが軽くなるかも!