用户画像用到哪些算法

决策树

1、决策树,是一种分类算法和回归算法(这里只介绍分类算法)

2、决策树算法的构建分为3个部分:特征的选择,决策树的生成,决策树的剪枝;(主要参考李航的《统计学习方法》第五章

    a、特征的选择----选择使信息增益最大的特征;即选择一个分类特征必须是分类确定性更高,此特征才是更好的;

    b、决策树的生成---ID3,C4.5算法,此时用迭代的方式构建决策树;注意此时的决策树,因为每次选的都是局部最优解,所以是过拟合的;

    c、决策树的剪枝---决策树剪枝是为了防止过拟合,根据全局cost function ,如果剪掉一个数支,cost function 会变小,那么剪掉这个树枝;

线性回归算法

回归的目的是预测数值型的目标值。最直接的办法是依据输入写出一个目标值的计算公式,该公式就是所谓的回归方程(regression equation)。求回归方程中的回归系数的过程就是回归。
线性回归(linear regression)意味着可以将输入项分别乘以一些常量,再将结果加起来得到输出。
线性回归的一个问题是有可能出现欠拟合现象,因为它求的是具有最小均方误差的无偏估计。为了降低预测的均方误差,可以在估计中引入一些偏差,其中一个方法是局部加权线性回归(Locally Weighted Linear Regression, LWLR)。如果数据的特征比样本点还多,也就是说输入数据的矩阵X不是满秩矩阵,非满秩矩阵在求逆时会出现问题。为了解决这个问题,可以使用岭回归(ridge regression)、lasso法、前向逐步回归。
岭回归:在矩阵XTX上加一个λI从而使得矩阵非奇异,进而能对XTX+λI求逆。其中矩阵I是一个m*m的单位矩阵,对角线上元素全为1,其他元素全为0。而λ

是一个用户定义的数值。在这种情况下,回归系数的计算公式将变成:

w^=(XTX+λI)1XTy

岭回归最先用来处理特征数多余样本数的情况,现在也用于在估计中加入偏差,从而得到更好的估计。这里通过引入 λ来限制了所有w之和,通过引入该惩罚项,能够减少不重要的参数,这个技术在统计学中也叫做缩减(shrinkage)。
一旦发现模型和测量值之间存在差异,就说出现了误差。当考虑模型中的“噪声”或者说误差时,必须考虑其来源。训练误差和测试误差由三个部分组成:偏差、测量误差和随机噪声。

方差是可以度量的。取出两组随机样本集并拟合,得到两组回归系数。两组回归系数之间的差异大小就是模型方差大小的反映

树回归算法

CART(Classification And Regression Trees,分类回归树)
回归树:假设叶节点是常数值,这种策略认为数据中的复杂关系可以用树结构来概括。为成功构建以分段常数为叶节点的树,需要度量出数据的一致性。数据集的混乱度即平方误差的总值(总方差=均方差*样本个数)。
模型树:把叶节点设定为分段线性(piecewise linear)函数。

通过降低决策树的复杂度来避免过拟合的过程称为剪枝(pruning)。

Kmeans算法

1.确定聚类个数K 

2.选定K个D维向量作为初始类中心 

3.对每个样本计算与聚类中心的距离,选择最近的作为该样本所属的类 

4.在同一类内部,重新计算聚类中心(几何重心) 不断迭代,直到收敛:

(损失函数为此就是Kmeans算法(其实是默认了我们样布服从均值为μ,方差为某固定值的K个高斯分布,混合高斯分布),如果(x-μ)不是平方,而只是绝对值那就是Kmedian算法,混合拉普拉斯分布)每个样本到聚类中心的距离之和或平方和不再有很大变化。对损失函数求导,用户画像用到哪些算法_第1张图片,可以看到其实我们更新聚类中心的时候,就是按照梯度的方向更新的。由于损失函数有局部极小值点,所以它是初值敏感的,取不同的初值可能落在不同的极小值点。

轮廓系数(silhouetee)可以对聚类结果有效性进行验证。python中有该方法,metrics.silhouetee_score。越接近1聚的越好,越接近-1聚的越不好。适用于球形聚类的情况。

缺点:1.对初始聚类中心敏感,缓解方案是多初始化几遍,选取损失函数小的。2.必须提前指定K值(指定的不好可能得到局部最优解),缓解方法,多选取几个K值,grid search选取几个指标评价效果情况3.属于硬聚类,每个样本点只能属于一类 4.对异常值免疫能力差,可以通过一些调整(不取均值点,取均值最近的样本点)5.对团状数据点区分度好,对于带状不好(谱聚类或特征映射)。尽管它有这么多缺点,但是它仍然应用广泛,因为它速度快,并且可以并行化处理。

优点:速度快,适合发现球形聚类,可发现离群点

缺失值问题:离散的特征:将缺失的作为单独一类,90%缺失去掉连续的特征:其他变量对这个变量回归,做填补;样本平均值填补;中位数填补。

对于初始点选择的问题,有升级的算法Kmeans++,每次选取新的中心点时,有权重的选取(权重为距离上个中心店的距离),

cls = KMeans(n_clusters=4, init='k-means++',random_state=0)不给出随机种子 每次聚类结果会不一样
另外,想要收敛速度进一步加快,可以使用Mini-BatchKmeans,也就是求梯度的时候用的是随机梯度下降的方法,而不是批量梯度下降。
sklearn.cluster.MiniBatchKMeans


你可能感兴趣的:(用户画像,算法)