【Kaggle】#2 感情分析・株価分析

2週間ぶりにデータ分析の勉強をする気になった。
今日やったことをまとめる。
※内容が正しいかどうかは保証できません。間違っていたら教えて下さい。

■概要
世論の感情の浮き沈みと株価の変動には関連があるという前提で、
直近3日間のITライフハック記事の感情変動と株価の変動から、4日目の株価を予測するモデルを作成。

■流れ
1.ITライフハック記事読込>日ごとのPN値計算>(日付ーPN値)の一覧作成
2.株価データ読み込み>日ごとの株価終値計算>(日付ー株価終値)の一覧作成
3.1.と2.を内部結合>(日付ーPN値ー株価終値)の一覧作成
4.3をトレーニングデータとテストデータに分ける
5.PN値・株価終値それぞれで3日間の変動を算出
6.K近傍法により学習・予測
7.K近傍法のハイパーパラメータn_neighborsを1~10まで変化させ、どの値が最も精度が良いか検討

■K近傍法とは?
・学習用データセットが100個あるとする。
・未知のデータの結果を予測したい場合、学習済みデータ100個のうち、このデータと最も似ているk個のデータの結果の平均や多数決から結果を予測をする。
・kがハイパーパラメータのn_neighbors。
・この値が大きすぎると、精度は悪くなると予想 
※「似ている」とは
・このデータセットは、特徴量がA,Bの2種類あるとする。
・A,Bの値が最も近いということ

■重要なコード
▼k近傍法モデルの学習・予測・精度算出
・トレーニングデータ:train_feature_arr、train_label_arr
・テストデータ:test_feature_arr, test_label_arr
・ハイパーパラメータの範囲:1-10
--
k_list = [i for i in range(1, 11)]
accuracy = []
for k in k_list:
    model = KNeighborsClassifier(n_neighbors=k)
    model.fit(train_feature_arr, train_label_arr )
    accuracy.append(model.score(test_feature_arr, test_label_arr ))
--

■最も精度の良いn_neighborsの値
1だった。n_neighborsが大きくなるにつれて精度が下がった。


■文章から感情を判断する
・ここでいう感情はPositive/Negativeのこと。
・PN値という数値で表す。
・PN値とは、「うれしい」などの+の感情のとき1、「悲しい」などーの感情のとき-1、どちらでもないとき0を表すようなもの。
・「形態素解析」をすることで、このPN値を算出できる。


■形態素解析
・「形態素」とは、言葉の最小単位のこと。
・例えば、「僕と踊りましょう。」を形態素に分割すると、僕と/踊りましょう になる。

▼形態素解析の流れ
1.形態素に分割
 「僕と踊りましょう。」>僕と/踊りましょう
2.品詞に分け、品詞のタグ付けをする。
 品詞わけ:踊り/ましょう
 タグ付け:「踊り」:動詞 「ましょう」:助動詞
3.活用形は原形に
 「踊り」>「踊る」 「ましょう」>「ます」
4.PN値を判定する。「極性辞書」を使う。
 踊る:1
 ます:0
5.一語ずつPN値を算出したら、記事全体で平均をとる

▼極性辞書
・極性辞書にはいろいろ種類がある。今回は「IPA辞書」を使った。
・IPA辞書はMeCabを使って以下のように定義する
 m = MeCab.Tagger('')
・使う時はこんな感じ(「text」が形態素解析されてPN値を返す)
 parsed = m.parse(text)  


今日はここまで。

この記事が気に入ったらサポートをしてみませんか?