Contenu connexe
Similaire à 機械学習を利用したちょっとリッチな検索
Similaire à 機械学習を利用したちょっとリッチな検索 (20)
機械学習を利用したちょっとリッチな検索
- 15. 1. 分類するラベル(カテゴリ)を決める
l まずは1つのタスクに関してラベルを考える
– 例例:年年齢→ "-‐‑‒19", "20-‐‑‒29", "30-‐‑‒39", "40-‐‑‒49", "50-‐‑‒", "ボット"
l ラベルを考えるときのポイント
– MECE: Mutually Exclusive and Collectively Exhaustive
u 注:マルチラベル分類だと話が少し変わるが今⽇日はスキップ
– 論論理理的に分類する意味があるラベルを定義する
u 全然関係のないラベルをごちゃ混ぜにしない
‒ ⼀一度度に多くの事をせずに、別のタスクとして分離離する
15
- 20. 3. 教師データを作る
l データを前処理理する(1つあたりの量量を調整するなど)
– 例例:ツイートだと、タスクによっては1個1個が短すぎる事がある
u 直近のツイートを何個か結合するなどで対処
l 正解が分かるデータに対してラベル付け(アノテーション)を⾏行行う
– この段階ではデータの形は割とどういう⾵風でもOK
u 元のデータと正解がペアになって管理理されていることが重要
20
JSON:
{
"label": "20-29",
"tweet": {生のデータ}
}
CSV 1:
20-29,"{CSVで正しくエスケープされたtweetのJSON}"
CSV 2:
20-29,ユーザ名,テキスト,…その他必要なフィールド…
- 23. 4. 学習する
l ツールやライブラリによって使い⽅方は異異なる
– ⼀一般には「特徴ベクトル(feature vector)」とラベルのペアを⼊入⼒力力する
23
データ
モデル
分類に必要な情報を持つ
機械学習
アルゴリズム
…
ラベル
FV
…
ラベル
例例: libsvmの⼊入⼒力力フォーマット
<label> <特徴1>:<重み1> <特徴2>:<重み2> …
<label> <特徴1>:<重み1> <特徴2>:<重み2> …
1⾏行行1データ。疎ベクトル。
- 24. 4. 学習する:特徴抽出
l ⽣生のデータを機械学習のアルゴリズムが扱える情報に変える
– 意味のある情報だけを抜き取って特徴(素性)のベクトル(列列)を作る
– ⾃自然⾔言語の場合はbag-‐‑‒of-‐‑‒wordsと⾔言うものを⽤用いることが多い
– 特徴: 形態素、n-‐‑‒gram、etc
– 重み: 出現頻度度(tf)、tf-‐‑‒idf、log tf、0/1(1回以上出現したら1)、etc
l Jubatusだと設定に書いておけば特徴抽出もセットで⾯面倒を⾒見見てくれる
– クライアントからは⽣生データをそのまま投げる感じ
24
{
"特徴1": 重み1,
"特徴2": 重み2,
…
}
例: {
"今日": 2,
"です": 9,
…
}
例: libsvm形式
# 今日=>1、です=>2とした上で
labelHoge 1:2 2:9 …