矩阵分解
MF(矩阵分解)算法概述
在之前我们介绍了协调过滤算法,但由于协调过滤存在以下问题:
协调过滤处理稀疏矩阵的能力较弱
协调过滤中,相似度矩阵维护难度大(物品和用户数量都比较大)
协调过滤算法的头部效应强
为了解决这些问题,我们提出了矩阵分解算法。其解决问题的大致思路是:希望为每个用户和物品生成一个隐向量,将用户和物品定位到隐向量的表示空间上,距离相近的用户和物品表面兴趣特点接近,应该把距离相近的视频推荐给目标用户。下面举例说明:
如上图所示,左边是一个用户物品的共现矩阵,我们利用矩阵分解把矩阵分成了3∗5(令k=5)3*5(令k=5)3∗5(令k=5),和5(k)∗35(k)*35(k)∗3的两个矩阵相乘,我们可以从图中看出,两个矩阵的行和列的标签是一样的,我们用隐向量给每个用户和每首音乐都打上标签,如果这个人喜欢小清新的歌,那么就应该给他推荐符合小清新风格的音乐。
然而在实际应用中要注意:
这里的隐向量是不可解释的,并不是如上图所示可以给用户和物品打上具体的标签,这是需要模型自己去学习的。
隐向量个数k决定了隐向量的表达能力的强弱,k越大,表达的信息就越强,用户的兴趣和物品的 ...
线性回归
1.一元线性回归
1.1.问题引入
根据不同房屋尺寸,预测出房子可以卖多少钱。所做任务就是通过给的数据集构建一个模型。
显然这是一个回归问题,根据之前的数据预测出一个准确的输出值。
为了描述这个回归问题,标记如下:
给出的数据集被称为训练集
用m表示训练集中实列的数量
用x表示输入变量/特征
用y表示输出变量/目标变量
(x,y)表示训练集中的实列
(x(i),y(i))代表第i个观察实列
h代表学习算法的解决方案或函数也称为假设(hypothesis)
在本例中,h表示一个函数,输入时房屋尺寸的大小,h根据输入的x的值来得出y的值。故假设hθ(x)=θ0+θ1xh_{\theta}(x)=\theta_{0}+\theta_{1}xhθ(x)=θ0+θ1x,应为只含有一个特征/输入变量,因此这样的问题叫做单变量线性回归问题(一元线性回归)。
1.2.代价函数
在线性回归中,最常用的是==均方误差==,其具体形式为:
J(θ0,θ1)=12m∑i=1m((^y(i))−y(i))2=12m∑i=1m(hθ(x(i))−y(i))2J(\theta_{0},\theta_{1 ...
逻辑回归
1.sigmoid函数
在逻辑回归中,我们引入了一个函数,sigmoid函数。
y=11+e−xy=\frac{1}{1+e^{-x}}
y=1+e−x1
该函数有一个很好的特性就是在实轴域上y的取值在(0,1),且有很好的对称性,对极大值和极小值不敏感(因为在取向无论是正无穷还是负无穷的时候函数的y几乎很稳定)。由于sigmoid函数的值域在(0,1)之间,这正好可以表示一个概率值,令P(Y=1∣X)=11+e−θx+bP(Y=1 |X)=\frac{1}{1+e^{-\theta{x}+b}}P(Y=1∣X)=1+e−θx+b1其中,θ,x\theta ,xθ,x为向量。
上式表示在给定x的值后,预测y=1的概率。所以有假设函数
hθ(x)=11+e−θx+bh_{\theta}(x)=\frac{1}{1+e^{-\theta{x}+b}}
hθ(x)=1+e−θx+b1
当Y=1时,P(Y=1)=11+e−θx+b=hθ(x)P(Y=1)=\frac{1}{1+e^{-\theta{x}+b}}=h_{\theta}(x)P(Y=1)=1+e−θx+b1=hθ(x ...
集成学习
1.集成学习
集成学习是一种“博采众长”的思想,他通过构建并结合多个机器学习模型来完成学习任务。假如我们通过训练得到了两个学习器,一个学习器准确率为90%,另一个只有60%,但是对于某一些样本,60%的那个学习器的表现可能会比90%的那个好一些。所以集成学习就是组合多个分类器,最后得到一个更好的分类器。对于训练集,通过训练若干个个体学习器,通过一定的结合策略,最终形成一个强学习器,以达到博采众长的目的。
集成学习算法:
1.个体学习器之间不存在强依赖关系,装袋(bagging)
2.随机森林(Random Forest)
3.个体学习器之间存在强依赖关系,提升(boosting)
4.Stacking
2.bagging
bagging也叫做bootstrap aggregating,是在原始数据集选择S次后得到S个新数据集的一种技术。是一种又放回的抽样。对于m个样本的原始数据集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,这样采集m次,最终可得到m个样本的采样集,
bagging的学习如下图所示:
代码:
1234567from sklearn import neig ...
聚类
聚类是一种无监督学习。与分类不同的是,分类的数据集都是有标签的已经指明了该样本是哪一类,而对于聚类其数据集样本是没有标签的,需要我们根据特征对这些数据进行聚类。
K-Means算法是一种无监督学习的聚类方法。
1.K-Means算法
算法接受参数K,然后将事先输入的n个数据对象划分成K个聚类以便使得所获得得聚类满足:同一聚类中得对象相似的较高,而不同聚类中的对象相似度较小。
算法思想:以空间中K个点为中心进行聚类,对著靠近他们得对象归类。通过迭代的方法,逐次更新聚类中心得值,直至得到最好的聚类结果。
K—MEANS算法步骤:
1.先从没有标签得元素集合A中随机取k个元素,作为k个子集各自的重心
2.分别计算剩下得元素到k个子集重心得距离(这里的距离也可以使用欧氏距离),根据距离将这些元素分别划归到最近的子集。
3.根据聚类得结果,重新计算重心((重心得计算方法是计算子集中所有元素各个维度得算数平均数)
4.将集合A中全部元素按照新的重心然后在重新聚类。
5.重复第4步,直到聚类结果不再发生改变。
举例:
以上边得数据为例,给定k=2,假设第一次我们选取得重心为(1,1)(2,1),分 ...
K近邻算法(kNN)
1.k近邻算法
k近邻学习(K-Nearest Neighbor,简称KNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其距离最近的k个样本,然后通过这k个邻居样本来进行预测,那种类别的邻居数量多,这个测试样本就被认为是那个类别的。与“投票”较为类似。下图是一个KNN的二分类问题的一个实列,可以看出k的取值不同,测试样本的分类也会不同,但都是基于他的邻居的投票的出的。
下面给出KNN算法的步骤:
① 计算未知样本与所有已知样本实列的距离。
②对距离从小到大进行排序
③选择出最近的k个已知实列
④这k个实列邻居进行投票,哪一个类别的票数多就认为k是那个类别的
其中计算的距离一般为欧氏距离(欧几里得距离):
如图所示的欧几里得距离为:(x2−x1)2+(y2−y1)2\sqrt{(x_{2}-x_{1})^{2}+(y_{2}-y_{1})^{2}}(x2−x1)2+(y2−y1)2。
算法的缺点为:①算法复杂度较高,需要计算所有已知样本与要分类样本的距离。
②当样本分布不平衡时,比如其中一类样本过大(实列数量过多)占主导时 ...

