首页 > 其他分享 >【机器学习】协同过滤

【机器学习】协同过滤

时间:2023-07-31 15:56:42浏览次数:37  
标签:协同 机器 sum num movies 过滤 np frac ndarray

Collaborative Filtering Recommender Systems

解决相似度问题

概念

准确率 = \(accuracy = \frac{预测正确的样本}{总样本}\)

精确率 = \(precision = \frac{预测成功的正类}{预测的正类}\) 【不能误检】

召回率 = \(recall = \frac{预测成功的正类}{总正类}\) 【不能漏报】

相似度

余弦定理相似度

\[Cosine = \frac{\sum^{n}_{i=1}A_i \times B_i}{\sqrt{\sum^{n}_{i=1}(A_i)^2} \times \sqrt{\sum ^{n}_{i=1}(B_i)^2}} \]

def compute_cos(a, b):
    cos = np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

皮尔逊相关系数

两向量减均指,在计算consline的值

\[sim(i, j) = \frac{\sum_{p\in P}(R_{i, p} - \overline{R_i})R_{j, p} - \overline{R_J}}{\sqrt{\sum_{p\in P}(R_{i, p} - \overline{R_i})^2} \sqrt{\sum_{p\in P}(R_{j, p} - \overline{R_J})^2}} \]

def compute_sim(a, b):
    a = a - np.mean(b)
    b = b - np.mean(b)
    sim = np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

Cost Function

公式

\[J = \frac{1}{2}\sum_{j=0}^{n_u-1} \sum_{i=0}^{n_m-1}r(i,j)*(\mathbf{w}^{(j)} \cdot \mathbf{x}^{(i)} + b^{(j)} - y^{(i,j)})^2 +\text{regularization} \]

代码

# GRADED FUNCTION: cofi_cost_func
# UNQ_C1

def cofi_cost_func(X, W, b, Y, R, lambda_):
    """
    Returns the cost for the content-based filtering
    Args:
      X (ndarray (num_movies,num_features)): matrix of item features
      W (ndarray (num_users,num_features)) : matrix of user parameters
      b (ndarray (1, num_users)            : vector of user parameters
      Y (ndarray (num_movies,num_users)    : matrix of user ratings of movies
      R (ndarray (num_movies,num_users)    : matrix, where R(i, j) = 1 if the i-th movies was rated by the j-th user
      lambda_ (float): regularization parameter
    Returns:
      J (float) : Cost
    """
    nm, nu = Y.shape
    J = 0
    ### START CODE HERE ###  
    for j in range(nu):
        w = W[j, :]
        b_j = b[0, j]
        for i in range(nm):
            x = X[i, :]
            y = Y[i, j]
            r = R[i, j]
            J += r * np.square(np.dot(w, x) + b_j - y)
        
    J += lambda_ * (np.sum(np.square(W)) + np.sum(np.square(X)))
    J /= 2
    print(J)
    ### END CODE HERE ### 

    return J

标签:协同,机器,sum,num,movies,过滤,np,frac,ndarray
From: https://www.cnblogs.com/MrFeng2997/p/17592037.html

相关文章

  • 【机器学习】正则化
    RegularizedCostfunction forregularizedlinearregression数学表达式\[J(\mathbf{w},b)=\frac{1}{2m}\sum\limits_{i=0}^{m-1}(f_{\mathbf{w},b}(\mathbf{x}^{(i)})-y^{(i)})^2+\frac{\lambda}{2m}\sum_{j=0}^{n-1}w_j^2\]\[f_{\mathbf{w},b}(......
  • 【机器学习】决策树
    DecisionTree熵-entropy数学表达式\[H(p_1)=-p_1\text{log}_2(p_1)-(1-p_1)\text{log}_2(1-p_1)\]代码#UNQ_C1#GRADEDFUNCTION:compute_entropydefcompute_entropy(y):"""ComputestheentropyforArgs:y(n......
  • 【机器学习】K-Means
    K-Means找最接近的质心公式\[c^{(i)}:=j\quad\mathrm{that\;minimizes}\quad||x^{(i)}-\mu_j||^2\]其中,范式\(||X||\),其计算公式为\[||X||=\sqrt{x_1^2+x_2^2+\cdots+x_n^2}\]代码#UNQ_C1#GRADEDFUNCTION:find_closest_centroidsdeffind_closest......
  • 工业机器人的形态(非姿态)
    工业机器人的形态当我们描述机器人在空间的一个位姿时,通常使用直角坐标系、工具坐标系或用户坐标系(统称为笛卡尔坐标系)的点。但是同样的一个位姿对于关节坐标系来说可能有多个值。假定当六轴机器人处于零点位置时,各坐标系的值如下表。关节坐标系直角坐标系各轴均为0......
  • 【九】DRF之过滤排序异常
    【一】过滤(Filtering)对于列表数据可能需要根据字段进行过滤我们可以通过添加django-fitlter扩展来增强支持。pipinstalldjango-filter在配置文件中增加过滤后端的设置:INSTALLED_APPS=[...'django_filters',#需要注册应用,]REST_FRAMEWORK={......
  • 【机器学习】多变量线性回归
    LinerRegressionwithMultipleVariable用向量实现的代码,单变量和多变量可以共用多变量线性回归相当于是单变量的扩展,主要还是按照模型假设、构造代价函数和研究代价函数的最小值这样的思路展开。与单变量线性回归不同的是,多变量线性回归还可能涉及到特征缩放的问题,主要原因......
  • 工业机器人坐标系详解(基于六轴串联机器人和SCARA机器人)
    工业机器人的坐标系机器人的坐标系是重中之重,它是理解机器人运动的基础。机器人所有运动的点位都是建立在坐标系的基础之上,所以如果坐标系不理解,那么就很难真实了解机器人是如何运动的。什么是坐标系?我们需要移动机器人来工作,但是如何让机器人移动?当然我们可以单独控制机器人的......
  • 【机器学习】单变量线性回归
    MLintroduction机器学习:从数据中学习,而不依赖于规则下编程的一种算法Goal:\(min_{w,b}(J(w,b))\)-提供一种衡量一组特定参数与训练数据拟合程度的方法SupervisedLearningrightanswer&&x->ylabelcategoriesRegressionClassificationUnsupervisedLearnin......
  • numpy-选择和过滤
    numpy-选择和过滤目录numpy-选择和过滤查找np,where()np.extract()比较数组和单个数字数组和数组过滤单条件过滤多条件过滤查找np,where()1、不带条件返回tuple,第一个值是索引,第二个是空值输入必须是数组,不能是list输入一般是一维,行向量或者列向量都可以2、带条件np.wh......
  • 2023 年 7 月 23 日机器学习发生了什么:OpenAI 的突破性变化、更好的关注和……
    保留网络:大型语言模型转换器的继承者他们引入了一种非常有前途的注意力变体。基本上,他们:抛弃软最大值让每个令牌只关注一个状态向量,而不是所有以前的令牌在每个头上分别做层规范相对于序列维度呈指数衰减注意力,每个头部具有不同的衰减系数这使他们能够有效地在......