پیشنهادهای مبتنی بر محتوا

1 دقیقه |  2020/11/05

ما می‌توانیم دو ویژگی را معرفی کنیم، $x_{1}$ و $x_{2}$ که نشان می‌دهند یک فیلم چه اندازه داستان عاشقانه یا چه اندازه صحنه اکشن دارد(در مقیاس 1-0).

یک روش این است که می‌توانیم از رگرسیون خطی برای هر کاربر استفاده کنیم. برای هر کاربر j، پارامتر $\theta ^{(j)} \in \mathbb{R}^{3}$ را یاد بگیرید.

کاربر j را به طوریکه فیلم i را با $(\theta ^{(j)})^{T}x^{(i)}$ ستاره امتیازدهی می‌کند، پیش‌بینی کنید.

  • $\theta ^ {(j)}$ = بردار پارامتر برای کاربر j

  • $x ^ {(i)}$ = بردار ویژگی برای فیلم i

برای کاربر j و فیلم i، امتیازدهی پیش‌بینی شده: $(\theta ^{(j)})^{T}(x^{(i)})$

  • $m^{(j)}$ = تعداد فیلم‌هایی که توسط کاربر j امتیازدهی شده‌اند

برای یادگیری $\theta^{(j)}$ از روش زیر استفاده می‌کنیم:

$$min_{\theta ^{(j)}}= \frac{1}{2}\sum_{i:r(i,j)=1}((\theta ^{(j)})^{T}(x^{(i)}) - y^{(i,j)})^{2} + \frac{\lambda }{2}\sum_{k=1}^{n}(\theta _{k}^{(j)})^{2}$$

این همان رگرسیون خطی است. مبنای اولین جمع‌ انتخاب همه iها به گونه‌ای است که $r(i,j) = 1$.

برای به دست آوردن پارامترها برای تمام کاربران، از روش زیر استفاده می‌کنیم:

$$min_{\theta ^{(1)}, …,\theta ^{(n^{u })}} = \frac{1}{2}\sum_{j=1}^{n_{u }}\sum_{i:r(i,j)=1}^{}((\theta ^{(j)})^{T}(x^{(i)}) - y^{(i,j)})^{2} + \frac{\lambda }{2}\sum_{j=1}^{n_{u }}\sum_{k=1}^{n}(\theta _{k}^{(j)})^{2}$$

می‌توانیم بروزرسانی گرادیان کاهشی رگرسیون خطی را با استفاده از تابع هزینه بالا، اعمال کنیم.

تنها تفاوت واقعی این است که ثابت $\frac{1}{m}$ را حذف کردیم.