SOLG System Blog

すごいwebマーケティングをしている、とあるアパレルメーカーの広告メールを分析してみた

2013年08月10日

こんにちは、とーやまです。昨日、「しずおか”おまち”で夏祭り」イベントサイトをオープンしましたよ!ぜひご参加下さいね。
さてさて、先日、入門機械学習 読書会@静岡 4回目に行ってきました。
勉強会の前にみんなで集まってお昼ご飯食べたり、おみやげもらったり、和やかな勉強会です。

すごいwebマーケティングをしている、とあるアパレルメーカーの広告メールを分析してみた


 ↑こちらは、清水のB級グルメ、もつカレー。夜の打ち上げでいただきました。うまー。
 
「機械学習」って何か、ということを簡単にお伝えしますと、
それはまさに バイオハザードの「レッド・クイーン」であり、
ターミネーターの「スカイネット」であり、
手塚治虫の火の鳥に出てくるロボットたちであります。
コンピュータに情報を集めて分析させることで、何らかの規則性や判断基準などを抽出していこうとすることで、アルゴリズム(算数の証明問題を解くような感じ)を発展させていくこと。集合知とか、統計とかに関係が深いです。

この勉強会に参加して、はや4回目が終わりました。
そろそろ何かできるだろってことで、ずーっと仕事でやりたいなと思ってた自社webサービスに送られるメールの分析をすることにしました。
ただその内容はブログでは書けないので、試しに某アパレルメーカーさんからのメールで実験してみることにしましたよ。
このメーカーの会員になっていると、メール受信やらポップアップ通知やら来ます。靴下を頂いたこともあります。ありがとうございます。
そのメールを、いったい何時に受信しているか?をRを使ってまとめてみよう。きっと、マーケティングに最適な時間に送信されているはずなので、参考にさせていただきますね。ホクホク。
 

1.受信したメールのリストを取得

2.RStudioでリストを読み込む

3.とりあえず受信時刻をグラフ化

4.もそっと見やすい形に変更


 
1. 受信したメールのリストを取得
わたしはthunderbirdを使ってるので、アドオンでImportExportToolsを追加して、あとは右クリック > フォルダ内のすべてのメッセージをエクスポート > インデックスのみ(CSV)を選ぶだけで、受信メールのリストが出力できます。
かんたん。
ただ、この企業からのだけが欲しかったから、まずはメールをフォルダ分けして、そのフォルダの受信リストを出力しました(ImportExportToolsでフィルタをかけようとしてもうまくいかなかった)。あ、当然だけどUTF-8で出力されますー。
 
さて、取得できたら、欲しいのは時間だけなので、リストの受信日時の列だけのリストに加工しました。
 
できあがったのはこんな感じのリスト。
f:id:harumakiyukko:20130623120634p:plain
なんだかすでに答えが見えてる気がしますが、とりあえずRを自分なりに動かすことが大事だと思うのでこのまま突き進みます。
 
2. Rstudioでリストを読み込む
リスト読み込みます。
mail.gu <- read.delim('GU_20130623-0641.csv',sep=",",stringsAsFactors=FALSE,header=TRUE,na.strings="")
はい。で、日付と時刻の列を作ってみました。
maildate <- strsplit(mail.gu$DATA," ")
maildate <- matrix(unlist(maildate),ncol=2, byrow=TRUE)
mail.gu <- transform(mail.gu,DATE=maildate[,1])
mail.gu <- transform(mail.gu,TIME=maildate[,2])
よし。ここまでで、データはこんな感じになりましたん。
f:id:harumakiyukko:20130623121424p:plain
 
3. とりあえず受信時刻をグラフ化
グラフ化します。
ggplot(mail.gu,aes(x=TIME))+geom_histogram(binwidth=1)
その結果。
f:id:harumakiyukko:20130623121721p:plain
むう、もうちょっと見やすくせねばね。
 
4. もそっと見やすいかたちに変更
何時台に受信してるかがとりあえず集計できればいいかな?ってことで、TIME列から「時」だけ取り出そうと思ったんですけど、
mailtime <- strsplit(mail.gu$TIME,":")
これだけだとエラーが出ました。
Error in strsplit(mail.gu$TIME, ":") : non-character argument
え〜。ちゃんとTIMEを文字として処理してくれないのかな?ってことで
mailtime <- strsplit(paste(mail.gu$TIME,""),":")
これでうまくいきました。
(※ここでエラーが出なかった方は、この行を無視していただいたらうまく動くようです。)
あとはこんな感じ。
mailtime <- matrix(unlist(mailtime),ncol=2, byrow=TRUE)
mail.gu <- transform(mail.gu,HOUR=mailtime[,1])
ggplot(mail.gu,aes(x=HOUR))+geom_histogram(binwidth=1)
はい。結果がこれ。
f:id:harumakiyukko:20130623122410p:plain
なんかまだイマイチじゃん。なんで最後に8がでてるんだろ?
って調べたら、ggplotが勝手に文字列ソートしてくれれるらしいです。そこで、reorderを使うようにしました。
mailhournum <- as.numeric(as.character(mail.gu$HOUR))
mail.gu <- transform(mail.gu,HOUR_NUM=mailhournum)
ggplot(mail.gu,aes(x=reorder(HOUR,HOUR_NUM)))+geom_histogram(binwidth=1)
ここのコード、もっと短くできるかも。
それで、これが結果。
f:id:harumakiyukko:20130623122737p:plain
できた〜!
ふー。よかった。何曜日にたくさん来るかとかも調べたいですね。答えはわかってる気がしますけど。
そういうわけで、いつも粘り強く教えてくださる講師のみなさま、ありがとうございます。次回は掛川で7/27に開催予定、楽しみです。
 
参考書はこちら

 

 参考にしたサイト
http://rfunction.com/archives/1499
http://www.okada.jp.org/RWiki/?R%A4%CE%CA%B8%BB%FA%CE%F3%BD%E8%CD%FD%B4%D8%BF%F4#i846e199
http://d.hatena.ne.jp/triadsou/20110701/1309496186
 

同じカテゴリー(システム制作)の記事画像
憧れの月額課金サービスモデル(レビュー)。
非デザイナーでも困らない!Bootstrapのページが誰でも簡単につくれるジェネレーター5つ
AWS summit Tokyo 2015に行ってきました!
フロントエンドエンジニアを目指して
怪しげだったものが世界を作る
来年のアクセス目標を上手に立てたい!
同じカテゴリー(システム制作)の記事
 MEANと私(出会い編) (2016-01-29 20:00)
 [Rails]Railsのバージョンを上げたことでspatial_adapterが使用できなくなりました (2016-01-14 23:03)
 [Rails] テーブル無しのモデルでお問い合わせフォームをつくる(その1?) (2015-12-31 02:06)
 憧れの月額課金サービスモデル(レビュー)。 (2015-12-04 18:33)
 非デザイナーでも困らない!Bootstrapのページが誰でも簡単につくれるジェネレーター5つ (2015-07-13 07:26)
 AWS summit Tokyo 2015に行ってきました! (2015-06-10 11:54)

Posted by iA SEチーム at 15:04│Comments(0)システム制作R機械学習ネタ
上の画像に書かれている文字を入力して下さい
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

PageTop

削除
すごいwebマーケティングをしている、とあるアパレルメーカーの広告メールを分析してみた
    コメント(0)