推奨システム:コンテンツベースの推奨
20827 ワード
http://blog.csdn.net/pipisorry/article/details/49205589
(パーソナライズ)推奨システム構築の3つの方法:コンテンツベースの推奨content-based、協同フィルタcollaborative filtering、隠語義モデル(LFM、latent factor model)推奨.このブログは主にコンテンツベースの推奨content-basedについて話しています.
コンテンツベースの推奨1 Content-based System
{MMDsにおけるuser-item profile空間に基づくcosin類似度の考え方}
主な思想.
上図はexplictとimpliict情報を併用してItem profilesを構築しており、推奨時には赤色の六角形が推奨される可能性が高い.
ItemモデルItem Profile
itemは、映画のようなfeaturesベクトルが対応するbooleanまたはreal−valuedの数値ベクトルであってもよいfeaturesベクトルとして表される.
ここで異なるfeaturesの数値は一般的にscaleを必要とします.そうしないと、数値が大きいfeaturesはitemモデル全体の表現をdominateします.スケール係数を比較的公平に選択する方法の1つは、各スケール係数を対応する成分の平均値に反比例させることである.もう1つのベクトル成分を縮小変換する方法は、まずベクトルを正規化することであり、すなわち、各成分の平均値を計算し、ベクトルの各成分に対して対応する平均値を減算することである.
記事推奨のitem記述例:Text Features
Profile = set of “important” words in item (document)
TF-IFを使用してテキストフィーチャー抽出を行うため、テキストのprofileはreal vectorであり、thresholdを設定してフィルタします.[Scikit-learn:Feature extractionテキストフィーチャー抽出:TF-IDF(Term frequency*Inverse Doc Frequency)語重み]
UserモデルUser Profileは、ユーザが採点した(または閲覧のようなインタラクティブな)itemのprofilesによってユーザのprofilesを構築する.
ユーザー・モデルを構築する方法:
Simple方式は、ユーザprofileの図示を確立する(ただし、ここではweightは追加されていない):各ベクトルはitem(例えば映画)のベクトル表現である(ベクトル成分はactorであってもよい.そうすれば、分類属性は独熱符号化で表されるか、直接各actorはfeatureで表される)
ユーザprofileの作成例は、ユーザのprofileベクトルとitemベクトルが同じであることに注意する.すなわち、item vecの要素はprofile(e.g actor)であり、user vecの要素もprofile(e.g actor)である.ユーザのprofileは、採点されたitem profileに基づいて作成されます(採点されていないものは使用しません).
ユーティリティマトリックス(utility matrix)はuser-itemマトリックスであり、例えば採点や視聴の有無のbooleanマトリックス[複数のユーザがマトリックスであり、1人のユーザの場合はもちろんベクトルであり、以下の例はいずれも1人のユーザで説明する]であり、ユーザとitemとの間には、効率マトリクスによって接続されています:(もちろん、使いやすいように、効率マトリクスを表示せずに、ユーザが採点した映画データを直接計算することもできます)
例1:Boolen Utility Matrix(simple方式、採点なし、ただし視聴あり)
これは実際には上のsimple方式で、見た映画のitemベクトルを合わせて/Nします.映画のprofileは[(1,0),(1,0),....]です.このようにユーザのprofileは(0.4,0.6)である.
例2:Star Ratings(variant方式、採点あり)
If the utility matrix is not boolean, e.g., ratings 1–5, then we can weight the vectors representing the profiles of items by the utility value.
オリジナル
user rating normalized
実際には2つのステップに分かれています.
まず効用マトリクス効用値を正規化し,項としてベクトルの重みを表す
=》
さらに、アイテムはベクトル加重平均を表します.
=》
=》
各userの寛大さが異なるため、採点の手値が異なり、規格化が必要である.規格化によりスコア1と2は実際にはnegative ratingsであることが分かった.
規格化はitem vecの各属性を規格化することに相当し,この規格化はこの属性のすべてのitemによって行われる.
なお、profileの平均値計算は、ユーザがすべての映画に対して合計スコアを評価する平均値であり、profile Aの計算は、ユーザがスコアを評価するすべての映画の総数ではなく、(0+2)/profile Aが映画に現れる回数である.
この方法の有効な直感的な知識は、Itemのprofileスコアごとに全体的な平均値を減算し、異なるユーザーの寛大さの影響を除去することであり、profileが映画に現れる回数を除いて、個人の平均値を再計算することに相当し、あるprofileに対する好みのプログラムをよりよくフィットさせることである.
Making Predictionsは、高次元ベクトルの類似度計算に適しており、cosin値が大きいほど類似している(このとき角度が小さい)ため、余弦類似度を使用してuser profileとitem profileの類似度を測定することを推奨します.[
距離と類似度の測定方法]
このように,ユーザxを計算するcatlogにおけるすべてのitem iについて類似度計算を行い,ユーザ類似度の高いitemsに推奨する.
皮のblog
評価:コンテンツ推奨に基づくメリットとデメリットpros and cons
メリット
1新しくitemが来ると推薦することができ、その推薦は他のユーザーの採点ではなく、それ自体の特徴に基づいている.協同フィルタリングのfirst-rater問題はありません.
2はあなたのことを意味します.
3相乗フィルタリングは、独特の味のユーザに対して類似のユーザが見つからない可能性があり、コンテンツベースの推奨は依然として推奨される.when we get to collaborative filtering,We need to find similar users.But if the user were very unique or idiosyncratic taste there may not be any other similar users.But the content-based approach, user can very unique tastes as long as we can build item profiles for the items that the user likes.
欠点
ユーザーが何らかのタイプのitemを採点したことがない場合、そのitemは現在かなり人気があるとしても、ユーザーに推薦されません.
コールドスタートの問題:新しいユーザーにはprofileがありません.
[マスデータマイニングMining Massive Datasets(MMDs)week 4-Jure Leskovec courses推奨システムRecommendation System]
皮のblog
コンテンツベースの推奨2 Content Based Recommendations
{Andrew NGマシン学習courseにおけるuser-item profile線形計画に基づく考え方}
線形計画に基づく主な思想
各ユーザのスコア予測を独立した線形回帰問題separate linear regression problemと見なし,すなわち各ユーザjに対してパラメータベクトルを学習しなければならない.θ^j(nがfeaturesの数である次元R=n+1)では、内積によってθj'Xiは、item iに対するuser jのスコアを予測する.
content based recommendations:私たちはすでに異なるitemsのfeaturesを持っていると仮定します.that capture what is the content of these movies,how romantic/action is movie?これでitemsのコンテンツfeaturesを予測しています.
各itemのfeatureベクトルに追加の遮断interceptor feature x 0=1を追加し,n=2はfeatureの数(x 0を除く)である.
線形計画によりAliceのパラメータを求めたとするθ(Aliceに対して評価された各映画はexampleであり、example 0ではx=[0.90]、y=5であり、勾配降下でthetaを求める)、3本目の映画に対するAliceのスコアは4.95(図)と予測される.
最適化アルゴリズムさいてきか:パラメータベクトルぱらめーたべーすθjの推定
Note:定数項目1/mjが削除されました.線形計画と同じようにregularizeではありませんθ0.
Suppose there is only one user and he has rated every movie in the training set. This implies that nu=1 and r(i,j)=1 for every i,j. In this case, the cost function J(θ) is equivalent to the one used for regularized linear regression.
[機械学習Machine Learning-Andrew NG courses]
皮のblog
Reviews復習
規格化の問題
正規化された行列は次のように計算されます.
[[-1.333 -1. 0. 0.333 2. ] [-0.333 0. -1. 1.333 0. ] [ 1.667 1. 1. -1.667 -2. ]]
Content-basedのcosin距離計算問題
Note:距離が小さいほど似ています.
計算された距離行列は、次のようになります.
scale_alpha = 0 scale_alpha = 0.5 scale_alpha = 1 scale_alpha = 2 A B C A B C A B C A B C[[ 0. 0.333 1. ] [[ 0. 0.278 0.711] [[ 0. 0.153 0.383] [[ 0. 0.054 0.135] [ 0.333 0. 0.592] [ 0.278 0. 0.333] [ 0.153 0. 0.15 ] [ 0.054 0. 0.047] [ 1. 0.592 0. ]] [ 0.711 0.333 0. ]] [ 0.383 0.15 0. ]] [ 0.135 0.047 0. ]]
Code:
[マスデータマイニングMining Massive Datasets(MMDs)week 4-Jure Leskovec courses推奨システムRecommendation System]
from:http://blog.csdn.net/pipisorry/article/details/49205589
ref:
(パーソナライズ)推奨システム構築の3つの方法:コンテンツベースの推奨content-based、協同フィルタcollaborative filtering、隠語義モデル(LFM、latent factor model)推奨.このブログは主にコンテンツベースの推奨content-basedについて話しています.
コンテンツベースの推奨1 Content-based System
{MMDsにおけるuser-item profile空間に基づくcosin類似度の考え方}
主な思想.
上図はexplictとimpliict情報を併用してItem profilesを構築しており、推奨時には赤色の六角形が推奨される可能性が高い.
ItemモデルItem Profile
itemは、映画のようなfeaturesベクトルが対応するbooleanまたはreal−valuedの数値ベクトルであってもよいfeaturesベクトルとして表される.
ここで異なるfeaturesの数値は一般的にscaleを必要とします.そうしないと、数値が大きいfeaturesはitemモデル全体の表現をdominateします.スケール係数を比較的公平に選択する方法の1つは、各スケール係数を対応する成分の平均値に反比例させることである.もう1つのベクトル成分を縮小変換する方法は、まずベクトルを正規化することであり、すなわち、各成分の平均値を計算し、ベクトルの各成分に対して対応する平均値を減算することである.
記事推奨のitem記述例:Text Features
Profile = set of “important” words in item (document)
TF-IFを使用してテキストフィーチャー抽出を行うため、テキストのprofileはreal vectorであり、thresholdを設定してフィルタします.[Scikit-learn:Feature extractionテキストフィーチャー抽出:TF-IDF(Term frequency*Inverse Doc Frequency)語重み]
UserモデルUser Profileは、ユーザが採点した(または閲覧のようなインタラクティブな)itemのprofilesによってユーザのprofilesを構築する.
ユーザー・モデルを構築する方法:
Simple方式は、ユーザprofileの図示を確立する(ただし、ここではweightは追加されていない):各ベクトルはitem(例えば映画)のベクトル表現である(ベクトル成分はactorであってもよい.そうすれば、分類属性は独熱符号化で表されるか、直接各actorはfeatureで表される)
ユーザprofileの作成例は、ユーザのprofileベクトルとitemベクトルが同じであることに注意する.すなわち、item vecの要素はprofile(e.g actor)であり、user vecの要素もprofile(e.g actor)である.ユーザのprofileは、採点されたitem profileに基づいて作成されます(採点されていないものは使用しません).
ユーティリティマトリックス(utility matrix)はuser-itemマトリックスであり、例えば採点や視聴の有無のbooleanマトリックス[複数のユーザがマトリックスであり、1人のユーザの場合はもちろんベクトルであり、以下の例はいずれも1人のユーザで説明する]であり、ユーザとitemとの間には、効率マトリクスによって接続されています:(もちろん、使いやすいように、効率マトリクスを表示せずに、ユーザが採点した映画データを直接計算することもできます)
例1:Boolen Utility Matrix(simple方式、採点なし、ただし視聴あり)
これは実際には上のsimple方式で、見た映画のitemベクトルを合わせて/Nします.映画のprofileは[(1,0),(1,0),....]です.このようにユーザのprofileは(0.4,0.6)である.
例2:Star Ratings(variant方式、採点あり)
If the utility matrix is not boolean, e.g., ratings 1–5, then we can weight the vectors representing the profiles of items by the utility value.
オリジナル
user rating normalized
実際には2つのステップに分かれています.
まず効用マトリクス効用値を正規化し,項としてベクトルの重みを表す
=》
さらに、アイテムはベクトル加重平均を表します.
=》
=》
各userの寛大さが異なるため、採点の手値が異なり、規格化が必要である.規格化によりスコア1と2は実際にはnegative ratingsであることが分かった.
規格化はitem vecの各属性を規格化することに相当し,この規格化はこの属性のすべてのitemによって行われる.
なお、profileの平均値計算は、ユーザがすべての映画に対して合計スコアを評価する平均値であり、profile Aの計算は、ユーザがスコアを評価するすべての映画の総数ではなく、(0+2)/profile Aが映画に現れる回数である.
この方法の有効な直感的な知識は、Itemのprofileスコアごとに全体的な平均値を減算し、異なるユーザーの寛大さの影響を除去することであり、profileが映画に現れる回数を除いて、個人の平均値を再計算することに相当し、あるprofileに対する好みのプログラムをよりよくフィットさせることである.
Making Predictionsは、高次元ベクトルの類似度計算に適しており、cosin値が大きいほど類似している(このとき角度が小さい)ため、余弦類似度を使用してuser profileとitem profileの類似度を測定することを推奨します.[
距離と類似度の測定方法]
このように,ユーザxを計算するcatlogにおけるすべてのitem iについて類似度計算を行い,ユーザ類似度の高いitemsに推奨する.
皮のblog
評価:コンテンツ推奨に基づくメリットとデメリットpros and cons
メリット
1新しくitemが来ると推薦することができ、その推薦は他のユーザーの採点ではなく、それ自体の特徴に基づいている.協同フィルタリングのfirst-rater問題はありません.
2はあなたのことを意味します.
3相乗フィルタリングは、独特の味のユーザに対して類似のユーザが見つからない可能性があり、コンテンツベースの推奨は依然として推奨される.when we get to collaborative filtering,We need to find similar users.But if the user were very unique or idiosyncratic taste there may not be any other similar users.But the content-based approach, user can very unique tastes as long as we can build item profiles for the items that the user likes.
欠点
ユーザーが何らかのタイプのitemを採点したことがない場合、そのitemは現在かなり人気があるとしても、ユーザーに推薦されません.
コールドスタートの問題:新しいユーザーにはprofileがありません.
[マスデータマイニングMining Massive Datasets(MMDs)week 4-Jure Leskovec courses推奨システムRecommendation System]
皮のblog
コンテンツベースの推奨2 Content Based Recommendations
{Andrew NGマシン学習courseにおけるuser-item profile線形計画に基づく考え方}
線形計画に基づく主な思想
各ユーザのスコア予測を独立した線形回帰問題separate linear regression problemと見なし,すなわち各ユーザjに対してパラメータベクトルを学習しなければならない.θ^j(nがfeaturesの数である次元R=n+1)では、内積によってθj'Xiは、item iに対するuser jのスコアを予測する.
content based recommendations:私たちはすでに異なるitemsのfeaturesを持っていると仮定します.that capture what is the content of these movies,how romantic/action is movie?これでitemsのコンテンツfeaturesを予測しています.
各itemのfeatureベクトルに追加の遮断interceptor feature x 0=1を追加し,n=2はfeatureの数(x 0を除く)である.
線形計画によりAliceのパラメータを求めたとするθ(Aliceに対して評価された各映画はexampleであり、example 0ではx=[0.90]、y=5であり、勾配降下でthetaを求める)、3本目の映画に対するAliceのスコアは4.95(図)と予測される.
最適化アルゴリズムさいてきか:パラメータベクトルぱらめーたべーすθjの推定
Note:定数項目1/mjが削除されました.線形計画と同じようにregularizeではありませんθ0.
Suppose there is only one user and he has rated every movie in the training set. This implies that nu=1 and r(i,j)=1 for every i,j. In this case, the cost function J(θ) is equivalent to the one used for regularized linear regression.
[機械学習Machine Learning-Andrew NG courses]
皮のblog
Reviews復習
規格化の問題
正規化された行列は次のように計算されます.
[[-1.333 -1. 0. 0.333 2. ] [-0.333 0. -1. 1.333 0. ] [ 1.667 1. 1. -1.667 -2. ]]
Content-basedのcosin距離計算問題
Note:距離が小さいほど似ています.
計算された距離行列は、次のようになります.
scale_alpha = 0 scale_alpha = 0.5 scale_alpha = 1 scale_alpha = 2 A B C A B C A B C A B C[[ 0. 0.333 1. ] [[ 0. 0.278 0.711] [[ 0. 0.153 0.383] [[ 0. 0.054 0.135] [ 0.333 0. 0.592] [ 0.278 0. 0.333] [ 0.153 0. 0.15 ] [ 0.054 0. 0.047] [ 1. 0.592 0. ]] [ 0.711 0.333 0. ]] [ 0.383 0.15 0. ]] [ 0.135 0.047 0. ]]
Code:
import numpy as np
from scipy import spatial
from Utility.PrintOptions import printoptions
def Nomalize(A):
'''
user-item : ,
'''
row_mean = np.mean(A, 1).reshape([len(A), 1]) #
A -= row_mean
col_mean = np.mean(A, 0)
A -= col_mean
with printoptions(precision=3):
print(A)
return A
def CosineDist(A, scale_alpha):
'''
cosin
'''
A[:, -1] *= scale_alpha
cos_dist = spatial.distance.squareform(spatial.distance.pdist(A, metric='cosine'))
with printoptions(precision=3):
print('scale_alpha = %s' % scale_alpha)
print('\tA\t\tB\t\tC')
print(cos_dist)
print()
if __name__ == '__main__':
task = 2
if task == 1:
A = np.array([[1, 2, 3, 4, 5], [2, 3, 2, 5, 3], [5, 5, 5, 3, 2]], dtype=float)
Nomalize(A)
else:
for scale_alpha in [0, 0.5, 1, 2]:
A = np.array([[1, 0, 1, 0, 1, 2], [1, 1, 0, 0, 1, 6], [0, 1, 0, 1, 0, 2]], dtype=float)
CosineDist(A, scale_alpha=scale_alpha)
[マスデータマイニングMining Massive Datasets(MMDs)week 4-Jure Leskovec courses推奨システムRecommendation System]
from:http://blog.csdn.net/pipisorry/article/details/49205589
ref: