【データ分析】単純で未熟な僕がナイーブベイズ法をする
子どもが散った桜を集めて空に舞いあげる.
家族づれが目立つ町もそろそろ新学期.
まだまだまだ,こちらの続き
【データ分析】スプレッドシートからYahoo API(形態素解析)を使う
【データ分析】Yahoo API(形態素解析)でaikoとBUMP OF CHICKENを比較してみる
【データ分析】今日も今日とてテキストマイニング(形態素解析?)
ここまでの復習
テキストの分析をしたいと思い,いろいろと準備を進めてきた.
まずはスプレッドシートで形態素解析ができるようにYahoo APIを使えるようにする.
【データ分析】スプレッドシートからYahoo API(形態素解析)を使う
次にWeb上から歌詞を取得して,実際にYahoo APIを使用して取得した歌詞を単語にばらして,単語ごとの頻出度出してみる.aikoとBUMP OF CHICKENで比較してみるととても面白い.
【データ分析】Yahoo API(形態素解析)でaikoとBUMP OF CHICKENを比較してみる
単語同士の関連を確認するために,2個の連続する単語(2-gram?)を集計した.
【データ分析】今日も今日とてテキストマイニング(形態素解析?)
ここまでスプレッドシート,GAS(Google Apps Script),Yahoo APIの環境で行っている.
【下準備】まずはナイーブベイズ法をやってみる
取得しているデータの概要は以下になる.
はじめに学習データと正解データとで分ける.全部で曲数が390曲なので,学習データ360曲,正解データ30曲にランダムで分ける.
(ランダムの分け方は乱数を振り,ソートして分けた)
学習データ360曲のサマリーは以下になる.
【分析実施】まずはナイーブベイズ法をやってみる
ナイーブベイズ法に関しては以下のサイトを参考に行った.
ナイーブベイズ分類器の計算方法を具体例でわかりやすく解説します。
今回はちょっとしたテストなので,文字数(700文字以上かそうでないか)を変数にして行う.変数は1つだけ.
学習データに1曲あたりの文字数が
(426.6 + 620.2) / 2 = 523.4
文字以上の曲にフラグ("1")をつける.実際の学習データのイメージは以下になる.
1.学習データの概要,2.学習データ(フラグ付き)より,aiko,BUMP OF CHICKENの事前確率と尤度が出る.
・事前確率(学習データのうちの各アーティストの割合),
・尤度(aikoかつフラグがついている割合,BUMPかつフラグがついている割合)
具体的には以下のようになる.
【分析結果】まずはナイーブベイズ法をやってみる
正解データを使用して実際に分類してみる.
・学習データと同様に文字数でフラグをつける.
・事前確率×尤度(フラグが立っていれば)を行い,aiko(またはBUMP OF CHICKEN)である確率を出す.
・aikoとBUMP OF CHICKENの確率を比較して大きい方が予測になる
実際の集計イメージは以下になる.
実際に正誤を確認すると以下になる.
正解率はなんと93.33%
(もちろんこれだけではほぼ偶然)
思うこと
もう少しデータハンドリングを柔軟にできるといいかなと思う.
可視化やうまく軸を切るなどすれば複雑な分析をしなくてもある程度分類できるような気がする.
(世の中のデータ分析でも同じようなことが言えるのかな?)
そのトライアンドエラーをするためにもデータをもっと柔軟に扱えたらなと思う.
(PythonやR,Juliaなんかを使えばいいだけなのかもしれない)
終わりに
少しづつだけど,一旦のゴールが見えてきた.
(正しくできているのかは不安だが)
ただ,ロジスティック回帰もやりたいからまだまだ長い.
無料のスプレッドシートの環境で簡単なデータ分析が体験できるので,個人的にはオススメ.
(ロジスティック回帰もスプレッドシートでやる)
あんまり需要ないのかな.
PCとスマホ,wifiだけを持って全国をのんびり旅したい.