怎么做恶意刷单检测?
a. 选取特征利用机器学习方法做分类。
特征: 结合商家特征和环境特征做商家恶意刷单分类预测,结合用户行为特征和环境特征做用户恶意刷单分类预测。
1)商家特征:商家历史销量、信用、产品类别、发货快递公司等。
2)用户行为特征:用户信用、下单量、下单路径、浏览店铺行为、支付账号。
3)环境特征(主要是避免机器刷单):地区、ip、手机型号等。
注:构造特征。刷单的评论文本可能套路较为一致,计算与已标注评论文本的相似度作为特征。
机器学习方法: 决策树, 感知机, 逻辑回归, 支持向量机, 随机森林
b. 异常检测:ip地址经常变动(固定时间内变动次数)、账号近期交易成功率上升(固定时间内交易成功率)------利用箱型图进行结构化检测。
机器学习中的异常检测手段:
1)总体来讲,异常检测问题可以概括为两类:一是对结构化数据的异常检测,二是对非结构化数据(通过对图像目标检测,识别出异常点)的异常检测。
2)对结构化数据的异常检测的解决思想主要是通过找出与正常数据集差异较大的离群点,把离群点作为异常点。常常面临的问题有二:一是需要定义一个清晰的决策边界,从而界定正常点与异常点;二是维数灾难及交叉指标计算之间的高频计算性能瓶颈。
3)结构化的数据的异常检测手段:图形位置分布(箱型图), 统计方法检测(切比雪夫不等式的方法能够有效地划分出三个类别,包括正常数据、异常数据、未知数据)+距离检测(距离位置检测有一个非常强的假设:正常的数据都比较集中,有较多的邻居,而异常数据都特立独行。未知数据的簇里面寻找出与正常数据更不相似的,或者和异常数据更相似的数据就可以了。)
K-means算法
a. k-means原理: 随机选择k个中心点,把每个数据点分配到离它最近的中心点,重新计算每个簇的质心,直到质心不发生变化。
b. 改进:
1) kmeans++:初始随机点选择尽可能远,避免陷入局部解。
2 ) ISODATA:对于难以确定k的时候,使用该方法。思路是当类下的样本小时,剔除;类下样本数量多时,拆分。
3 )kernel kmeans:kmeans用欧氏距离计算相似度,也可以使用kernel映射到高维空间再聚类。
c. 遇到异常值:
1 )局部异常因子LOF:如果点p的密度明显小于其邻域点的密度,那么点p可能是异常值.。
2 ) 使用PCA或自动编码机进行异常点检测:使用降维后的维度作为新的特征空间,其降维结果可以认为剔除了异常值的影响(因为过程是保留使投影后方差最大的投影方向)。
3 ) winsorize:对于简单的,可以对单一维度做上下截取。
d. 评估聚类算法的指标:
1 ) 外部法(基于有标注):Jaccard系数、纯度
2 ) 内部法(无标注):内平方和WSS和外平方和BSS
3 ) 此外还要考虑到算法的时间空间复杂度、聚类稳定性等
e. k-means算法的问题: 对异常值和初值敏感。当有异常值是,质心可能就会离大多数点比较远。比如1,2,3,4,100五个样本,均值是22,这样类别中心就离样本较远,这时选取中位数做为质心是更好的选择,这就是k-Mediods(k-中值)聚类算法。同时k-means是初值敏感的,即当选取不同的初始值时分类结果可能不同。
f. K值的选择
1)这个真的没有确定的做法,分几类主要取决于个人的经验与感觉,通常的做法是多尝试几个K值,看分成几类的结果更好解释,更符合分析目的等。
2)对于难以确定k的时候,使用ISODATA,思路是当类下的样本小时,剔除;类下样本数量多时,拆分。
3)手肘法,当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数。
4)使用轮廓系数(silhouette coefficient)来确定,选择使系数较大所对应的k值
kmeans最优k值的确定方法-手肘法和轮廓系数法:https://www.jianshu.com/p/335b376174d4
g.初始的K个质心怎么选?
最常用的方法是随机选,初始质心的选取对最终聚类结果有影响,因此算法一定要多执行几次,哪个结果更reasonable,就用哪个结果。 当然也有一些优化的方法,第一种是选择彼此距离最远的点,具体来说就是先选第一个点,然后选离第一个点最远的当第二个点,然后选第三个点,第三个点到第一、第二两点的距离之和最小,以此类推。第二种是先根据其他聚类算法(如层次聚类)得到聚类结果,从结果中每个分类选一个点。
h. 层次聚类算法思想:
1 )将每个对象归为一类,共得到N类,每类仅包含一个对象。类与类之间的距离就是它们包含的对象之间的距离。
2)找到最接近的两个类并合并成一类,于是总的类数少了一个。
3)重新计算新的类与所有旧类之间的距离。
4)重复第2步和第3步,直到最后合并一个类为止。
根据步骤3的不同,可将层次聚类方法分为几类:single-linkage,complete-linkage,average-linkage等。
i .K-means算法为什么在每次迭代更新时使用各簇中样本点的平均值为聚类中心
要想使损失函数(平方误差)最小,聚类中心要为各簇中样本点的平均值。
https://blog.csdn.net/weiyongle1996/article/details/77925325
j. K-Means会不会陷入一直选质心的过程,永远停不下来?
不会,有数学证明K-Means一定会收敛,大致思路是利用SSE的概念(也就是误差平方和),即每个点到自身所归属质心的距离的平方和,这个平方和是一个函数,然后能够证明这个函数是可以最终收敛的函数。
k. 判断每个点归属哪个质心的距离怎么算?
欧几里得聚类,余弦相似度
歌手大赛,三个评委给三个歌手打分,第一个评委的打分(10,8,9) 第二个评委的打分(4,3,2),第三个评委的打分(8,9,10)
如果采用余弦相似度来看每个评委的差异,虽然每个评委对同一个选手的评分不一样,但第一、第二两个评委对这四位歌手实力的排序是一样的,只是第二个评委对满分有更高的评判标准,说明第一、第二个评委对音乐的品味上是一致的。 因此,用余弦相似度来看,第一、第二个评委为一类人,第三个评委为另外一类。 如果采用欧氏距离, 第一和第三个评委的欧氏距离更近,就分成一类人了,但其实不太合理,因为他们对于四位选手的排名都是完全颠倒的。
l. k-means聚类需要考虑单位一致
1)min-max标准化(离差标准化):对原始数据进行线性变换,是结果落到【0,1】区间,转换方法为 X’=(X-min)/(max-min),其中max为样本数据最大值,min为样本数据最小值。
2)z-score标准化(标准差标准化):处理后的数据符合标准正态分布(均值为0,方差为1),转换公式:X减去均值,再除以标准差
m. 关于离群值?
答:离群值就是远离整体的,非常异常、非常特殊的数据点,在聚类之前应该将这些“极大”“极小”之类的离群数据都去掉,否则会对于聚类的结果有影响。但是,离群值往往自身就很有分析的价值,可以把离群值单独作为一类来分析。
o. 用SPSS作出的K-Means聚类结果,包含ANOVA(单因素方差分析),是什么意思?
简单说就是判断用于聚类的变量是否对于聚类结果有贡献,方差分析检验结果越显著的变量,说明对聚类结果越有影响。对于不显著的变量,可以考虑从模型中剔除。
p. 业务专家的作用非常大,主要体现在聚类变量的选择和对于聚类结果的解读。