機械学習するな機会学習しろ - データサイエンスLT祭り 2夜目
-
Upload
cancolle -
Category
Engineering
-
view
1.056 -
download
4
Transcript of 機械学習するな機会学習しろ - データサイエンスLT祭り 2夜目
機械学習するな機会学習しろデータサイエンスLT祭り 2夜目@Y社
@wonder_zone
機械学習するな機会学習しろデータサイエンスLT祭り 2夜目@Y社
@wonder_zone
あんた誰なん?
私です
•かんこれ(缶これ)• @wonder_zone•研究室にて磔の刑にされたM2•学部:統計屋さん修士:アルゴリズム屋さん
•趣味:ビリヤード、音楽鑑賞、アニメ•推し:三森すずこ
ところで
僕の友人達が 近、こんなことを口にします
彼女欲しい…
俺ってなんで彼女いない歴=年齢なんだろ…
こじらせてますね
しかし、ちゃっかりしてる彼らはこんなお誘いをし
てくれます
「○○日空いてる?合コン行こうぜ」
それに対する僕の反応
いやあ忙しいからパスだわー(やべえ研究の進捗出さねえと)
【以前の彼ら】
「これからの時代は機械学習だよっ!」
だが彼らも現実を見るようになった・・・
仮に行くとして
そりゃ成果を出したい
でも、僕は聖徳太子ではないのでn人の話など
きけん
もっと言うと1人くらいしか話がわからん!
ってことで、 適化された環境がほしい
ていうか自分にあった相手をその場で機械的に判断してほしい
あるよ
マッチングアルゴリズム
イメージ
1. 参加する2. 相性占いと称してデータを入力する3. アルゴリズムで良いマッチングを算出4. その通りに席替え5. たぶん仲良くなれる
イメージ
1. 参加する2. 相性占いと称してデータを入力する3. アルゴリズムで良いマッチングを算出4. その通りに席替え5. たぶん仲良くなれる
マッチングアルゴリズム
• 2つの集合の要素の全てが「幸せ」となるマッチングとなるような組み合わせ(=安定マッチング)を発見するアルゴリズム
• よく聞く応用先• 研修医配属における研修医と病院の組み合わせ• 研究室配属における学生と研究室の組み合わせ
• ただし、研究室配属は謎の面接によって決めるパターンもあるので全ての機関が行っているとは断言できません
もう少しドヤ顔で語りたいなら
• 大マッチング問題の定義• 入力:二部グラフ• 出力:サイズが 大のマッチング※サイズ=マッチングの個数
•安定マッチング問題の定義• 入力:二部グラフ+各点の相手に対する好みの順• 出力:安定的なマッチング※安定ではない=互いに現在の相手より好ましい組が
存在(ブロッキングペアが存在)
二部グラフ
言われてもわからんと思うので良いマッチングが一撃でわかる図
どちらが良いマッチングですか?
どちらが良いマッチングですか?
↑こっち
これは良いマッチングですか?
1
2
3
a
b
c
1太郎くん「僕はb子のほうが好きなんだ!」b子さん「私は2助くんより1太郎くんの方が好き」
これは良いマッチングですか?
1
2
3
a
b
c
1太郎くん「僕はb子のほうが好きなんだ!」b子さん「私は2助くんより1太郎くんの方が好き」
ブロッキングペア(1,b)
これは良いマッチングですか?
1
2
3
a
b
c
ブロッキングペアを含まないマッチング
この業界で超有名なやつ
Gale-ShapleyAlgorithm
Gale-Shapley Algorithm
• Gale氏とShapley氏が提案したのでその名前から• Gale,David,andLloydS.Shapley."Collegeadmissionsandthestabilityofmarriage."TheAmericanMathematicalMonthly 69.1(1962):9-15.•日本でも研修医配属の時に使われているらしい(公益財団法人医療研修推進財団のHPより)
この功績を讃えてShapley氏は89歳にしてノーベル経済学賞受賞(2012)
※Gale氏は2008年に死去
ちなみにShapley氏は今年3月に死去…
悲しい
実際のアルゴリズムの流れ
1. 初期値は男性・女性ともに独身2. 独身の男性𝑚がいる限り、以下の操作を繰り返す
3. 現在のペアの集合を安定マッチングとする(おわり)
男性𝑚はまだ告白していない女性の中で も好きな女性𝑤に告白1. 女性𝑤が独身なら男性𝑚をキープ2. 女性𝑤が独身でない(キープ相手𝑚#がいる)場合
•𝑤にとって𝑚が現在のキープ𝑚#よりも好みならば𝑚#を捨てて𝑚をキープとする
•𝑤にとって𝑚よりも現在のキープ𝑚#が好みならば𝑚からの告白を断る
実際のアルゴリズムの流れ
1. 初期値は男性・女性ともに独身2. 独身の男性𝑚がいる限り、以下の操作を繰り返す
3. 現在のペアの集合を安定マッチングとする(おわり)
男性𝑚はまだ告白していない女性の中で も好きな女性𝑤に告白1. 女性𝑤が独身なら男性𝑚をキープ2. 女性𝑤が独身でない(キープ相手𝑚#がいる)場合
•𝑤にとって𝑚が現在のキープ𝑚#よりも好みならば𝑚#を捨てて𝑚をキープとする
•𝑤にとって𝑚よりも現在のキープ𝑚#が好みならば𝑚からの告白を断る
実際のアルゴリズムの流れ
1. 初期値は男性・女性ともに独身2. 独身の男性𝑚がいる限り、以下の操作を繰り返す
3. 現在のペアの集合を安定マッチングとする(おわり)
男性𝑚はまだ告白していない女性の中で も好きな女性𝑤に告白1. 女性𝑤が独身なら男性𝑚をキープ2. 女性𝑤が独身でない(キープ相手𝑚#がいる)場合
•𝑤にとって𝑚が現在のキープ𝑚#よりも好みならば𝑚#を捨てて𝑚をキープとする
•𝑤にとって𝑚よりも現在のキープ𝑚#が好みならば𝑚からの告白を断る
実際のアルゴリズムの流れ
1. 初期値は男性・女性ともに独身2. 独身の男性𝑚がいる限り、以下の操作を繰り返す
3. 現在のペアの集合を安定マッチングとする(おわり)
男性𝑚はまだ告白していない女性の中で も好きな女性𝑤に告白1. 女性𝑤が独身なら男性𝑚をキープ2. 女性𝑤が独身でない(キープ相手𝑚#がいる)場合
•𝑤にとって𝑚が現在のキープ𝑚#よりも好みならば𝑚#を捨てて𝑚をキープとする
•𝑤にとって𝑚よりも現在のキープ𝑚#が好みならば𝑚からの告白を断る
実際のアルゴリズムの流れ
1. 初期値は男性・女性ともに独身2. 独身の男性𝑚がいる限り、以下の操作を繰り返す
3. 現在のペアの集合を安定マッチングとする(おわり)
男性𝑚はまだ告白していない女性の中で も好きな女性𝑤に告白1. 女性𝑤が独身なら男性𝑚をキープ2. 女性𝑤が独身でない(キープ相手𝑚#がいる)場合
•𝑤にとって𝑚が現在のキープ𝑚#よりも好みならば𝑚#を捨てて𝑚をキープとする
•𝑤にとって𝑚よりも現在のキープ𝑚#が好みならば𝑚からの告白を断る
実際のアルゴリズムの流れ
1. 初期値は男性・女性ともに独身2. 独身の男性𝑚がいる限り、以下の操作を繰り返す
3. 現在のペアの集合を安定マッチングとする(おわり)
男性𝑚はまだ告白していない女性の中で も好きな女性𝑤に告白1. 女性𝑤が独身なら男性𝑚をキープ2. 女性𝑤が独身でない(キープ相手𝑚#がいる)場合
•𝑤にとって𝑚が現在のキープ𝑚#よりも好みならば𝑚#を捨てて𝑚をキープとする
•𝑤にとって𝑚よりも現在のキープ𝑚#が好みならば𝑚からの告白を断る
実際のアルゴリズムの流れ
1. 初期値は男性・女性ともに独身2. 独身の男性𝑚がいる限り、以下の操作を繰り返す
3. 現在のペアの集合を安定マッチングとする(おわり)
男性𝑚はまだ告白していない女性の中で も好きな女性𝑤に告白1. 女性𝑤が独身なら男性𝑚をキープ2. 女性𝑤が独身でない(キープ相手𝑚#がいる)場合
•𝑤にとって𝑚が現在のキープ𝑚#よりも好みならば𝑚#を捨てて𝑚をキープとする
•𝑤にとって𝑚よりも現在のキープ𝑚#が好みならば𝑚からの告白を断る
実際のアルゴリズムの流れ
1. 初期値は男性・女性ともに独身2. 独身の男性𝑚がいる限り、以下の操作を繰り返す
3. 現在のペアの集合を安定マッチングとする(おわり)
男性𝑚はまだ告白していない女性の中で も好きな女性𝑤に告白1. 女性𝑤が独身なら男性𝑚をキープ2. 女性𝑤が独身でない(キープ相手𝑚#がいる)場合
•𝑤にとって𝑚が現在のキープ𝑚#よりも好みならば𝑚#を捨てて𝑚をキープとする
•𝑤にとって𝑚よりも現在のキープ𝑚#が好みならば𝑚からの告白を断る
実際のアルゴリズムの流れ
1. 初期値は男性・女性ともに独身2. 独身の男性𝑚がいる限り、以下の操作を繰り返す
3. 現在のペアの集合を安定マッチングとする(おわり)
男性𝑚はまだ告白していない女性の中で も好きな女性𝑤に告白1. 女性𝑤が独身なら男性𝑚をキープ2. 女性𝑤が独身でない(キープ相手𝑚#がいる)場合
•𝑤にとって𝑚が現在のキープ𝑚#よりも好みならば𝑚#を捨てて𝑚をキープとする
•𝑤にとって𝑚よりも現在のキープ𝑚#が好みならば𝑚からの告白を断る
補足
•先ほどの説明は男性の希望を優先したもの•女性の希望を優先した場合、結果が変わることも(非対称性)
• 𝑂(𝑛')※ 𝑛は男性 or女性の数•非対称性の問題については提案手法もいくつかあるが今回は省略
現実はそんなに甘くない!
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
>
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
☓
☓
振られたー
バイバーイ
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
☓
☓
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
☓
☓
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
☓
☓ >
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
☓
☓
☓
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
☓
☓
☓ >
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
☓
☓
☓☓
☓
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
☓
☓
☓☓
☓
実際の流れ
1 2 3C A B XC B A YA C B Z
1 2 3A X Y ZB Z X YC Z Y X
男性 女性
☓
☓
☓☓
☓
シミュレーションしよう
•以下の擬似データを用いてマッチング•男性陣僕の周りで彼女欲しがってそうな人々を想定したデータ
•女性陣以前知り合った彼氏欲しがってる人々を想定したデータ
こんなんパッケージとかないやろ
フルスクラッチやなあ
と思ったらあったよRに
matchingR
Install.packages(“matchingR”)
Rはいいぞ
実際に行う操作
•男女のプロフィールのデータセットとそれぞれ互いのプロフィールに対し求める条件を作り、1項目につき、条件を満たしてたらスコアに+1点•満たす数が多ければ多いほどスコアは上がる•現実はどの方がいいか迷う状態もあるので同一のスコアがおるのもありとする
プロフィールのデータ内容
• 男性は• 身長(cm)• 趣味の平凡度(0– 5)• 交際経験人数• 稼ぐ意欲があるか(あり =1,なし =0)• 眼鏡をかけているか(あり =1,なし =0)
• 女性は• 身長(cm)• 趣味の平凡度(0– 5)• 交際経験人数• おしゃべりが得意か(得意 =1,そうでもない =0)• 眼鏡をかけているか(あり =1,なし =0)
ß0-(平凡度)-5à有無言わさず0
データセット(男性編)
•男性1(Gさん)• 173cm,趣味:1,交際経験人数:1,稼ぎ:1,眼鏡:1
•男性2(Cさん)• 171cm,趣味:2,交際経験人数:1,稼ぎ:1,眼鏡:1
•男性3(Tさん)• 175cm,趣味:0,交際経験人数:0,稼ぎ:1,眼鏡:1
•男性4(Hさん)• 180cm,趣味:1,交際経験人数:1,稼ぎ:0,眼鏡:0
•男性5(Sさん)• 164cm,趣味:0,交際経験人数:0,稼ぎ:0,眼鏡:0
データセット(女性編)
•女性1(A子さん)• 160cm,趣味: 5,交際経験人数:5,話:1,眼鏡:0
•女性2(B美さん)• 152cm,趣味:4,交際経験人数:2,話:1,眼鏡:0
•女性3(C里さん)• 155cm,趣味:0,交際経験人数:0,話:0,眼鏡:1
•女性4(D央さん)• 146cm,趣味:1,交際経験人数:1,話:0,眼鏡:1
•女性5(E華さん)• 158cm,趣味:4,交際経験人数:3,話:0,眼鏡:0
相手に求める条件(男性編)
• ↑ =以上,↓ =以下• 男性1(Gさん)
• 157cm↑,趣味:2↑,交際経験人数: 0,話:1,眼鏡:0
• 男性2(Cさん)• 158cm↓,趣味:0↑,交際経験人数: 3↓,話:0,眼鏡:0↑
• 男性3(Tさん)• 160cm↑,趣味:1↑,交際経験人数:0,話:1,眼鏡:0↑
• 男性4(Hさん)• 150cm↑,趣味:1↓,交際経験人数:1↓,話:0,眼鏡:0↑
• 男性5(Sさん)• 164cm,趣味:0,交際経験人数:0,話:0,眼鏡:1
相手に求める条件(女性編)
• ↑ =以上,↓ =以下• 女性1(A子さん)
• 170cm↑,趣味: 2↑,交際経験人数:1↑,稼ぎ:1,眼鏡:0↑
• 女性2(B美さん)• 170cm↑,趣味:1,交際経験人数:1↑,稼ぎ:1,眼鏡:1
• 女性3(C里さん)• 160cm↑,趣味:2↑,交際経験人数:0↑,稼ぎ:1,眼鏡:0↑
• 女性4(D央さん)• 165cm↑,趣味:1↑,交際経験人数:3↓,稼ぎ:0,眼鏡:0↑
• 女性5(E華さん)• 160cm↓,趣味:1↑,交際経験人数:2↓,稼ぎ:1,眼鏡:0↑
結果
結果
matching$proposals[,1]
[1,]2[2,]4[3,]1[4,]5[5,]3
(Gさん,B美さん)(Cさん,D央さん)(Tさん,A子さん)(Hさん,E華さん)(Sさん,C里さん)
今後の課題
•合コンに参加する•実行する
• 1人勝ちするタイプのやつは消し去る
こんなんもどうです?
\おしまい/