Python 训练数据并获得每个特征的权重

Python 训练数据并获得每个特征的权重,python,machine-learning,recommendation-engine,recommender-systems,Python,Machine Learning,Recommendation Engine,Recommender Systems,我们正在开发一个推荐系统,我发现属性本身可能是向量 因此,目前,该公司已经有了向用户列出推荐列表的功能,但他们使用的每个功能的权重是手动定义的。因此,我们决定先对数据进行训练,然后使用机器学习的方法获得权重。然后得到用户的反馈,作为下一步推荐预测的标签 是否有理想的方法来获得每个功能的最佳权重?比如网格搜索,梯度下降 我认为我们不能将值作为向量的特征平坦化(sklearn:one hot encoding或pandas:get_dummies)。因为我想得到特征的权重,而不是子特征值1,子特征值

我们正在开发一个推荐系统,我发现属性本身可能是向量

因此,目前,该公司已经有了向用户列出推荐列表的功能,但他们使用的每个功能的权重是手动定义的。因此,我们决定先对数据进行训练,然后使用机器学习的方法获得权重。然后得到用户的反馈,作为下一步推荐预测的标签

  • 是否有理想的方法来获得每个功能的最佳权重?比如网格搜索,梯度下降

  • 我认为我们不能将值作为向量的特征平坦化(sklearn:one hot encoding或pandas:get_dummies)。因为我想得到特征的权重,而不是子特征值1,子特征值2。 所以,平坦在这里不起作用,我必须试着改变距离来做吗?但是如何将它们结合在一起(改变距离函数和使用网格搜索)


  • 可以使用神经网络(反向传播)获得特征权重。如果您想避免使用NN,可以使用单个感知器。 (说明是)是一个应用于文本分类的单一感知器算法的示例,您需要根据自己的特点对其进行调整。

    了解推荐系统的基础知识。希望您能找到相关信息

    你可以参观这个。是的,有一些算法,比如网格搜索,可以帮助找到最佳权重矩阵

    网格搜索意味着您拥有一组模型(它们的参数值彼此不同,位于网格上)。你要做的是训练每个模型,并使用交叉验证对其进行评估。然后选择表现最好的一个

    举一个具体的例子,如果你使用支持向量机,你可以对gamma和C使用不同的值。例如,你可以有一个网格,其中(gamma,C)的值如下:(1,1),(0.1,1),(1,10),(0.1,10)。这是一个网格,因为它就像是gamma的[1,0.1]和C的[1,10]的乘积。网格搜索基本上会为这四对(gamma,C)值中的每一对训练一个SVM,然后使用交叉验证对其进行评估,并选择表现最好的一个

    对于梯度下降: 该过程的第一步要求将训练数据集的顺序随机化。这是为了混淆对系数进行更新的顺序。由于系数在每次训练实例后都会更新,因此更新会到处都是噪声,相应的成本函数也会随之更新。通过混合系数更新的顺序,它利用了这种随机行走,避免了分心或卡住。 对于非常大的训练数据集,使用随机梯度下降可以更快地进行学习,通常您只需要通过数据集进行少量的传递,就可以获得一组好的或足够好的系数,例如,通过数据集进行1到10次传递

    因此,据我所知,有一种完美的方法。这基本上取决于很多事情。正如您可能知道的,这对于算法应用程序SVM、决策树、随机森林都是一样的,它们都根据情况给出了变化

    关于第二个问题,我不知道它想表达什么。 希望这有帮助