相似性度量

推荐算法初探

丶灬走出姿态 提交于 2019-12-01 05:02:22
1. 推荐算法简介 0x1:关于推荐的几个小故事 在开始讨论抽象具体的算法和公式之前,笔者希望先通过几个小故事,来帮助读者朋友建立一个对推荐算法的感性理解。同时我们也可以更好地体会到在现实复杂世界中,推荐是一项非常复杂的事情,现在的最新的推荐算法可能只模拟了其中30%不到的程度。 1. 150年前美国西部小镇的生活情形 假想150年前一个美国小镇的生活情形,大家都互相认识: 百货店某天进了一批布料,店员注意到这批布料中某个特定毛边的样式很可能会引起Clancey夫人的高度兴趣,因为他知道Clancey夫人喜欢亮花纹样,于是他在心里记着等Clancey夫人下次光顾时将该布料拿给她看看。 Chow Winkler告诉酒吧老板Wilson先生,他考虑将多余的雷明顿(Renmington)来福枪出售,Wilson先生将这则消息告诉Bud Barclay,因为他知道Bud正在寻求一把好枪。 Valquez警长及其下属知道Lee Pye是需要重点留意的对象,因为Lee Pye喜欢喝酒,并且性格暴躁、身体强壮 100年前的小镇生活都与 人和人之间的联系 有关。人们知道你的喜好、健康和婚姻状况。不管是好是坏,大家得到的都是 个性化的体验 。那时,这种高度个性化的社区生活占据了当时世界上的大部分角落。 请注意,这里每个人都对其他 每个人的个性和近期情况 非常了解

《机器学习》西瓜书第九章聚类

寵の児 提交于 2019-12-01 01:48:36
无监督学习:允许我们在对结果无法预知时接近问题,在“无监督学习”中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。 9.1 聚类任务 常见的无监督学习任务:聚类、密度估计、异常检测等。 聚类试图将数据集中的样本划分为若干个通常是不相交的 子集 ,每个子集称为一个“簇”。 聚类算法:聚类算法吧族群或数据点分割为一系列的组,使得相同簇的数据点比其他簇的点更接近。分隔具有相似性状的组,分配到簇中。 聚类既能作为一个单独过程,用于寻找数据的内在分布结构,也可作为分类等其他学习任务的前驱过程。 9.2 性能度量 聚类性能度量亦称“有效性指标”,与监督学习中的性能度量作用相似。 什么样的聚类结果比较好呢:“物以类聚”,我们希望聚类结果的“簇内相似度”高且“簇间相似度”低。 聚类性能度量大致有两类:一类是将 来源: https://www.cnblogs.com/ttzz/p/11646660.html

学习笔记(二)数据挖掘概念与技术

时间秒杀一切 提交于 2019-11-26 14:59:03
1中心趋势度量:均值(mean)、中位数、众数 截尾均值:丢掉高低极端值后的均值 加权算术均值(加权平均): 中位数(median)是有序数据的中间值,对于非对称数据是数据中心更好的度量。 用插值法计算中位数的近似值: median= 其中 是中位数区间的下界,N是整个数据集中值的个数, 是低于中位数区间的所有区间的频率和, 是中位数区间的频率,而width是中位数区间的宽度。 众数(mode):集合中出现最频繁的值,可以对定性和定量属性确定众数。(可能出现多个众数) 对于适度倾斜(非对称)的单峰数值数据,有经验关系: ,就是说如果均值和中位数已知,则适度倾斜的单峰频率曲线的众数容易近似计算。 中列数(midrange):是数据集的最大和最小值的平均值 。具有完全对称的数据分布的单峰频率曲线中,均值、中位数、众数相同 2度量数据散布:极差、四分位数、方差、标准差和四分位数极差 (1)极差:最大值与最小值之差。分位数:取自数据分布的每隔一定间隔上的点,把数据划分成 基本上 大小相等的连贯集合。2-分位数对应于中位数,4-分位数是3个数据点,把数据划分成4个相等的部分。第1和3个四分位数之间的距离是散布的一种简单度量,给出数据中间一半所覆盖的范围称为四分位数极差(IQR)=Q3-Q1 (2)五数概括、盒图与离群点 识别可疑离群点的通常规则是,挑选落在第三个四分位数之上或者Q1之下至少1

机器学习各种相似性度量及Python实现

一个人想着一个人 提交于 2019-11-26 02:11:49
转自: https://blog.csdn.net/u010412858/article/details/60467382 在做很多研究问题时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。 1、欧式距离 # 1) given two data points, calculate the euclidean distance between them def get_distance(data1, data2): points = zip(data1, data2) diffs_squared_distance = [pow(a - b, 2) for (a, b) in points] return math.sqrt(sum(diffs_squared_distance)) 2、余弦相似度 def cosin_distance(vector1, vector2): dot_product = 0.0 normA = 0.0 normB = 0.0 for a, b in zip(vector1, vector2): dot_product += a * b normA += a ** 2 normB += b ** 2