何が選ばれたかという情報から評価関数推定2

Description
1. What you choose indicates what you value 2 chen(@yuno_miyako) 2. 前回の復習:問題設定 k個の選択肢から1つが選ばれた…

Please download to get full document.

View again

of 20
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Information
Category:

Data & Analytics

Publish on:

Views: 8 | Pages: 20

Extension: PDF | Download: 0

Share
Transcript
  • 1. What you choose indicates what you value 2 chen(@yuno_miyako)
  • 2. 前回の復習:問題設定 k個の選択肢から1つが選ばれた 選択肢はn次元の特徴量を持っている このデータを使って、選択者の評価関数を推 定したい。
  • 3. 問題設定の具体例 選択肢は3つ 特徴量は
 4次元 犬 猫 オオカミ かわいさ 6pt 8pt 2pt つよさ 6pt 2pt 10pt 人懐っこ さ 9pt 5pt 1pt 価格 8pt 8pt 2pt
  • 4. 評価関数 選択者の評価関数は、重みベクトルをw、特 徴量ベクトルをxとすると次のような線形な関 数を仮定する。 f(x) = wT x
  • 5. 行列Yの定義 選択された特徴量をx*として、他のi番目の候 補の特徴量との差を次のようにyとして定義す る。 yi = x* xi このyを集めたものを行列Yとする。
  • 6. いかに解いたか? 行列Yと重みベクトルwの積が必ず正になるこ とを利用して、以下のような線形計画問題に 落とし込んだ(rはランダムな方向ベクトル) rT w ! max subject to w1 + w2 + · · · + wn = 1Yw 0
  • 7. 問題点 束縛条件 Yw 0 が非常に厳しい 例えば、選択者はn次元で評価したのに
 (n-1)次元だとwを想定して計算すると、
 この束縛条件を満たすwはゼロベクトルになっ てしまう
  • 8. 具体例 選択者が価格も 評価項目にして いたのに、 解析者が価格を 考えていなかっ た場合、 評価関数の推測 値は0になって しまう。 犬 猫 オオカミ かわいさ 6pt 8pt 2pt つよさ 6pt 2pt 10pt 人懐っこ さ 9pt 5pt 1pt 価格 8pt 8pt 2pt
  • 9. 問題点 選択者が捉えている次元を把握するのは現実 的に難しい ときどき評価関数以外の気まぐれの選択が混 じっても評価関数がゼロになってしまう まったく使い物にならない
  • 10. 条件を緩めよう 1 - Ywの値を x = x*のときなるべく1に近づき x ≠ x*のときなるべく1よりも小さくなる そんなwを見つける
  • 11. 目的関数を作る 選ばれた選択肢は1、選ばれなかった選択肢が -1となる正解データtと1 - Ywの差が最も小さ くなるようにすればいい。 よって目的関数は、 L(w) = KX k=1 (tk 1 + wT yk )2
  • 12. wを求める この目的関数を最小化するwを求めれば、 選択者の評価関数を推測することができる。
  • 13. Rで実際にやってみる 条件設定 w = c(0.5 , 0.3 , 0 , 0.1 , 0.1) 次元 = length(w) 品数 = 5 繰り返し = 30 Y = matrix(0 , ncol = 次元 , nrow = 品数 * 繰り返し) t = rep(0 , 繰り返し * 品数)
  • 14. for(k in 1 : 繰り返し){ X = matrix(runif(次元 * 品数) , ncol = 次元 , nrow = 品数) #ランダムな特徴量を持つ品物を行列にまとめる 価値 = X %*% w #積をとって価値を算出する ind = which.max(価値) #価値が最も高いものが選ばれる x_star = X[ind , ]#x*を作る for(i in 1 : 品数){ Y[i + (k - 1) * 品数 , ] = t(x_star) - X[i , ] #行列Yを作る t[i + (k -1)*品数] = ifelse(i == ind , 1 , -1 ) #正解データを作る } }
  • 15. #目的関数Lを定義する L = function(w){ sum( (t + Y %*%w - 1))^2 ) } #初期点rを決めて最適化関数optimでwを求める r = runif(次元) op = optim(r , L) wp = op$par
  • 16. いざ検証 count = 0 試行回数 = 10000 for(i in 1 : 試行回数){ X = matrix(runif(次元 * 品数) , ncol = 次元 , nrow = 品数) if(which.max(X %*% w) == which.max(X %*% wp)){ count = count + 1 } } (正答率 = count / 試行回数)
  • 17. 正答率:90.4パーセント
  • 18. 特徴量をひとつ見落としても 欠陥 = 2 #2個目の特徴量を見落とすことにする for(k in 1 : 繰り返し){ X = matrix(runif(次元 * 品数) , ncol = 次元 , nrow = 品数) 価値 = X %*% w ind = which.max(価値) x_star = X[ind , - 欠陥] #解析者はひとつ次元を見落とす for(i in 1 : 品数){ Y[i + (k - 1) * 品数 , ] = t(x_star) - X[i , -欠陥] t[i + (k -1)*品数] = ifelse(i == ind , 1 , -1 ) } }
  • 19. 正答率: 64.21パーセント
  • 20. 少し使い物になった
  • Similar documents
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks
    SAVE OUR EARTH

    We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

    More details...

    Sign Now!

    We are very appreciated for your Prompt Action!

    x