机器学习中比较实用的是推荐引擎和分类算法
分类算法-k近邻 能有效的提高图片识别的成功率。
还有可以作为垃圾邮件的过滤器。
----------------
推荐引擎
基于用户 GenericUserBasedRecommender
相似度+ 邻域
相似度 UserSimilarity
实现的算法有
PearsonCorrelationSimilarity -- 皮尔逊
EuclideanDistanceSimilarity -- 欧式距离
TanimotoCoefficientSimilarity -- 谷本系数
邻域 UserNeighborhood
实现的算法
NearestNUserNeighbordhood -- 近邻
ThresholdUserNeighborhood -- 基于阀值
基于物品 GenericItemBasedRecommender
只要考虑相似度 接口为 ItemSimilarity
实现算法和基于用户的一样
基于模型
Slope-One
Slopeone算法不同于前面提到的基于相似度的算法,他计算简单快速,对新用户推荐效果不错,数据更新和扩展性都很不错,预测能达到和基于相似度的算法差不多的效果,很适合在实际项目中使用。
基本原理:
用户 |
对itema打分 |
对itemb打分 |
X |
3 |
4 |
Y |
2 |
4 |
Z |
4 |
? |
用户Z对itemb的打分可能是多少呢? Slope one算法认为:所有用户对事物A对itemb的打分平均差值是:((3 - 4) + (2 - 4)) / 2 = -1.5,也就是说人们对itemb的打分一般比事物A的打分要高1.5,于是Slope one算法就猜测Z对itemb的打分是4 + 1.5 = 5.5
分布式
物品之间的共现矩阵 和基于物品的ItemSimilarity (也是放到一个矩阵中)很相似。
只是这个矩阵太大无法放在一台机器上, 按行来切分
类似于 物品X/物品i:次数i, 物品j:次数j, 物品k:次数k
最后乘以该用户的评分向量, 得到最后的结果。
实现相当复杂 可以直接在hadoop平台中调用RecommenderJob 来运行。
----------------------
mahout--使用
pyhton--原理
回归 -- 计算预测值
场景 销售量预测
线性回归 Y=4*X1+18*X2 4和18 是回归系数
非线性回归(多项式) Y=4*X1/18*X2
回归的目标是找到最佳拟合线
过拟合现象 - 考虑了太多的噪声
关联分析 -- Apriopri
有点像推荐算法中的物物共现矩阵
P(尿布)=4/5 P(尿布,葡萄酒)=3/5
P(葡萄酒|尿布)=P(尿布,葡萄酒)/P(尿布)=3/4
当物品成千上万时,想找到支持度大于0.8的物物关系,遍历的做法会非常的慢。
Apriopri原理
如果一个项集是非频繁的, 那么它所有的子项集也是非频繁的。
FP-growth 频繁项集
场景 搜索引擎自动补全查询词项, 找出经常在一起出现的词对 (共现词)
支持向量机
二类分类器, 当用其解决多类问题时, 则需要额外的方法对其扩展。
支持向量,就是离分割超平面最近的那些点。
SMO计算最大化支持向量