参考资料: https://blog.youkuaiyun.com/u013382288/article/details/80417681
https://blog.youkuaiyun.com/wypersist/article/details/80114709 (海量数据处理问题)
-
怎么做恶意刷单检测
分类问题用机器学习方法建模解决,我想到的特征有:
1)商家特征:商家历史销量、信用、产品类别、发货快递公司等
2)用户行为特征:用户信用、下单量、转化率、下单路径、浏览店铺行为、支付账号
3)环境特征(主要是避免机器刷单):地区、ip、手机型号等
4)异常检测:ip地址经常变动、经常清空cookie信息、账号近期交易成功率上升等
5)评论文本检测:刷单的评论文本可能套路较为一致,计算与已标注评论文本的相似度作为特征
6)图片相似度检测:同理,刷单可能重复利用图片进行评论 -
选个讲下原理吧 K-Means算法及改进,遇到异常值怎么办?评估算法的指标有哪些?
1)k-means原理
2)改进:
a. kmeans++:初始随机点选择尽可能远,避免陷入局部解。方法是n+1个中心点选择时,对于离前n个点选择到的概率更大
b. mini batch kmeans:每次只用一个子集做重入类并找到类心(提高训练速度)
c. ISODATA:对于难以确定k的时候,使用该方法。思路是当类下的样本小时,剔除;类下样本数量多时,拆分
d. kernel kmeans:kmeans用欧氏距离计算相似度,也可以使用kernel映射到高维空间再聚类
3)遇到异常值
a. 有条件的话使用密度聚类或者一些软聚类的方式先聚类,剔除异常值。不过本来用kmeans就是为了快,这么做有些南辕北辙了
b. 局部异常因子LOF:如果点p的密度明显小于其邻域点的密度,那么点p可能是异常值(参考:https://blog.youkuaiyun.com/wangyibo0201/article/details/51705966)
c. 多元高斯分布异常点检测
d. 使用PCA或自动编码机进行异常点检测:使用降维后的维度作为新的特征空间,其降维结果可以认为剔除了异常值的影响(因为过程是保留使投影后方差最大的投影方向)
e. isolation forest:基本思路是建立树模型,一个节点所在的树深度越低,说明将其从样本空间划分出去越容易,因此越可能是异常值。是一种无监督的方法,随机选择n个sumsampe,随机选择一个特征一个值。(参考:https://blog.youkuaiyun.com/u013709270/article/details/73436588)
f. winsorize:对于简单的,可以对单一维度做上下截取
4)评估聚类算法的指标:
参考链接: https://blog.youkuaiyun.com/qq_36064669/article/details/82586582
http://www.cnblogs.com/hxsyl/p/5091179.html
a. 外部法(基于有标注):Jaccard系数、纯度
b. 内部法(无标注):内平方和WSS和外平方和BSS
c. 此外还要考虑到算法的时间空间复杂度、聚类稳定性等 -
数据预处理过程有哪些?
1)缺失值处理:删、插
2)异常值处理
3)特征转换:时间特征sin化表示
4)标准化:最大最小标准化、z标准化等
5)归一化:对于文本或评分特征,不同样本之间可能有整体上的差异,如a文本共20个词,b文本30000个词,b文本中各个维度上的频次都很可能远远高于a文本
6)离散化:onehot、分箱等 -
随机森林原理?有哪些随机方法?
1)随机森林原理:通过构造多个决策树,做bagging以提高泛化能力
2)subsample(有放回抽样)、subfeature、低维空间投影(特征做组合,参考林轩田的《机器学习基石》) -
PCA
1)主成分分析是一种降维的方法
2)思想是将样本从原来的特征空间转化到新的特征空间,并且样本在新特征空间坐标轴上的投影方差尽可能大,这样就能涵盖样本最主要的信息
3)方法:
a. 特征归一化
b. 求样本特征的协方差矩阵A
c. 求A的特征值和特征向量,即AX=λX
d. 将特征值从大到小排列,选择topK,对应的特征向量就是新的坐标轴(采用最大方差理论解释,参考:https://blog.youkuaiyun.com/huang1024rui/article/details/46662195)
4)PCA也可以看成激活函数为线性函数的自动编码机(参考林轩田的《机器学习基石》第13课,深度学习) -
hive?spark?sql? nlp?
1)Hive允许使用类SQL语句在hadoop集群上进行读、写、管理等操作
2)Spark是一种与hadoop相似的开源集群计算环境,将数据集缓存在分布式内存中的计算平台,每轮迭代不需要读取磁盘的IO操作,从而答复降低了单轮迭代时间
理解Hadoop和Mapreduce的区别:https://blog.youkuaiyun.com/forward__/article/details/78770466 -
数据库与数据仓库的区别
1)简单理解下数据仓库是多个数据库以一种方式组织起来
2)数据库强调范式,尽可能减少冗余
3)数据仓库强调查询分析的速度,优化读取操作,主要目的是快速做大量数据的查询
4)数据仓库定期写入新数据,但不覆盖原有数据,而是给数据加上时间戳标签
5)数据库采用行存储,数据仓库一般采用列存储
6)数据仓库的特征是面向主题、集成、相对稳定、反映历史变化,存储数历史数据;数据库是面向事务的,存储在线交易数据
7)数据仓库的两个基本元素是维表和事实表,维是看待问题的角度ÿ