聚类

阿里巴巴暑期实习面试-算法岗位(机器学习)2018-03-28

﹥>﹥吖頭↗ 提交于 2020-05-04 06:45:17
一面是电面,包括电话交流与在线编程,持续时间72分钟,知识点以及涉及到的知识点如下: 在零星地说一些其他的感悟: 1、面试的过程其实也是一个学习的过程,这次面我的这个面试官人很好,虽然我热别菜,但是他还是很耐心,在一步步引导我,最后和他交流学习方法我也受益匪浅。所以每次笔试面试,都一定要进行总结,不能在同样的石头上摔两次。还有就是平时一定能多学就多学,比如有一次笔试回来,才发现我不会的那个题目恰好是《剑指offer》最后一道题,我还没来得及看 2、校招和实习更看重基础和态度,我问面试官“机器学习岗位是不是对leetcode上的算法题要求不高?”他回到说其实不是的,让我写一个聚类算法,熟悉的话几十行带马就写完了,如果真的写算法题,难度其实还是不小的。另外就是刷题本质上是个态度问题,你的同学们都在刷题你不刷,其实从一个侧面说明你态度不认真。但是归根到底,“编程水平”是个硬指标,必须加强练习,即使是做算法,也是需要写一些后台内容的,所以不必把“算法”和“后端”看的太分开。归根结底,编程需要多练习。 3、简历上的每个字你都要烂熟于心,项目经历宜深宜精不宜杂。比如面试官就问了我和公开课一起做的项目,问到了一句“反向传播算法训练神经网络时,为什么要用梯度校验”,这是我在公开课上学到的技巧,但是并没有熟练掌握,也没有解释清楚 4、“熟能生巧”,在线写代码时面试官只是让我用c++写一个k

论文阅读

一曲冷凌霜 提交于 2020-05-04 04:37:40
本文是我在阅读 Amazon 工程师 2003 年发表的论文 Item-to-Item Collaborative Filtering 时记录的笔记。 介绍 Amazon.com 的推荐系统所面对的挑战: 海量商品+海量用户 实时推荐,半秒内做出响应,且生成可靠的推荐结果 新用户的信息很少,老用户有大量的信息 用户的信息是易变的,用户在短时间内产生的交互信息,就能改变用户的特征,推荐系统需要快速地对用户特征的改变做出反应。 传统的 CF 算法,不能满足实时性要求,这里提出 item-to-item collaborative filtering 算法,它的计算量独立于用户数量和商品数量,可以在海量数据的场景下,实时地产生高质量的推荐。 推荐算法 传统的协同过滤 传统的协同过滤算法将用户表示为一个长度为 $n$ 的向量 $v$,N 是系统中物品的个数,$v_i$ 代表用户有没有购买过商品 $i$ 或者对商品 $i$ 的评分。 根据用户向量,可以为每个用户找到一组相似的用户,相似用户购买过或评价高的物品,就可以推荐给该用户。用户的相似度可以通过用户向量间夹角的余弦值来度量: $$ \operatorname{similarity}(\vec{A}, \vec{B})=\cos (\vec{A}, \vec{B})=\frac{\vec{A} \bullet \vec{B}}{|\vec

Paper Reading:个性化推荐系统的研究进展

被刻印的时光 ゝ 提交于 2020-05-04 03:32:29
论文:个性化推荐系统的研究进展 发表时间:2009 发表作者:刘建国,周涛,汪秉宏 论文链接: 论文链接 本文发表在2009,对经典个性化推荐算法做了基本的介绍,是非常好的一篇中文推荐系统方面的文章。 个性化推荐系统通过建立用户与信息产品之间的二元关系 , 利用已有的选择过程或相似性关系挖掘每个用户潜在感兴趣的对象 , 进而进行个性化推荐, 其 <font color=red>本质就是信息过滤</font> 。 事实上, 它是目前解决信息过载问题最有效的工具 。文中根据推荐算法的不同, 分别介绍了 协同过滤系统 , 基于内容的推荐系统 , 混合推荐系统 , 以及当时兴起的 基于用户—产品二部图网络结构 的推荐系统。并结合这些推荐系统的特点以及存在的缺陷, 提出了改进的方法和未来可能的若干研究方向。 一个完整的推荐系统由 3 个部分组成:收集用户信息的行为记录模块, 分析用户喜好的模型分析模块和推荐算法模块 。行为记录模块负责记录用户的喜好行为, 例如问答 、 评分 、 购买、 下载、 浏览等。模型分析模块的功能能够对用户的行为记录进行分析, 建立合适的模型来描述用户的喜好信息 。最后是推荐算法模块 , 利用后台的推荐算法, 实时地从产品集合中筛选出用户感兴趣的产品进行推荐 。其中 , 推荐算法模块是推荐系统中最为核心的部分。 协同过滤系统

(数据科学学习手札79)基于geopandas的空间数据分析——深入浅出分层设色

|▌冷眼眸甩不掉的悲伤 提交于 2020-05-02 17:24:11
本文对应代码和数据已上传至我的 Github 仓库 https://github.com/CNFeffery/DataScienceStudyNotes 1 简介   通过前面的文章,我们已经对 geopandas 中的 数据结构 、 坐标参考系 、 文件IO 以及 基础可视化 有了较为深入的学习,其中在 基础可视化 那篇文章中我们提到了分层设色地图,可以对与多边形关联的数值属性进行分层,并分别映射不同的填充颜色,但只是开了个头举了个简单的例子,实际数据可视化过程中的分层设色有一套策略方法。   作为 基于geopandas的空间数据分析 系列文章的第五篇,通过本文你将会学习到基于 geopandas 和机器学习的 分层设色 。 2 基于geopandas的分层设色    地区分布图 ( Choropleth maps ,又叫面量图)作为可能是最常见的一种地理可视化方法,其核心是对某个与矢量面关联的数值序列进行有意义的分层,并为这些分层选择合适美观的色彩,最后完成对地图的着色,优点是美观且直观,即使对地理信息一窍不通的人,也能通过颜色区分出不同面之间的同质性与异质性: <center><img src="https://img2020.cnblogs.com/blog/1344061/202003/1344061-20200309014947606-680390211.png"

【java虚拟机】几种内存溢出及解决方案

China☆狼群 提交于 2020-05-02 15:35:19
作者:平凡希 地址:https://www.cnblogs.com/xiaoxi/p/7406903.html 1.JVM Heap(堆)溢出:java.lang.OutOfMemoryError: Java heap space JVM在启动的时候会自动设置JVM Heap的值, 可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap的大小是Young Generation 和Tenured Generaion 之和。在JVM中如果98%的时间是用于GC,且可用的Heap size 不足2%的时候将抛出此异常信息。 解决方法:手动设置JVM Heap(堆)的大小。 Java堆用于储存对象实例。当需要为对象实例分配内存,而堆的内存占用又已经达到-Xmx设置的最大值。将会抛出OutOfMemoryError异常。例子如下: package com.demo.test; import java.util.ArrayList; import java.util.List; /** * VM Args: -Xms5m -Xmx5m */ public class HeapOOM { public static void main(String[] args) { int count = 0; List<Object> list = new ArrayList

你不得不了解的人工智能基础知识

心不动则不痛 提交于 2020-05-02 08:03:11
你不得不了解的人工智能基础知识 1.什么是人工智能? 首先我们利用传统的软件和人工智能进行比较,就容易使大家更容易理解。 (1) 传统软件 VS 人工智能 传统软件是[基于规则]的,需要人为的设定条件,并且告诉计算机符合这个条件后该做什么。 人工智能则是机器从[特定]大量数据中总结规律,归纳出某些[特定知识],然后将这种知识应用到特定的场景中去解决实际问题。 然而,当前的人工智能知其然,但不知所以然。 也正是因为归纳逻辑,所以需要依赖大量的数据。数据越多,归纳出来的经验越具有普适性。 而我们在探寻AI的边界时,我们可以简单粗暴的把AI分成3个级别: 2.图灵测试 图灵测试的提出是因为图灵在思考一个问题: 机器能否思考? 并且图像相信是可以制作出会思考的机器,于是就在想第二个问题: 如何判断机器能否思考? 于是就有了图灵测试。 那么什么是图灵测试呢? 让一个人坐在电脑前,跟另一边用键盘进行对话,如果这个人分不清跟自己对话的是一个人还是一个机器,那么这个对话机器就通过了图灵测试并具备人工智能。 3.什么是算法? 算法简单来说,就是 解决问题的手段,并且是批量化解决问题的手段。 比如你想要木头桌子,那么制造桌子的工厂就是“一套算法”。提供(输入)木头,就会得到(输出)桌子。 关于算法,有3点需要注意: 1.没有某种算法是万能的。 2.算法没有高级和低级之分。 3

(数据科学学习手札16)K-modes聚类法的简介&Python与R的实现

情到浓时终转凉″ 提交于 2020-05-02 03:14:18
我们之前经常提起的K-means算法虽然比较经典,但其有不少的局限,为了改变K-means对异常值的敏感情况,我们介绍了K-medoids算法,而为了解决K-means只能处理数值型数据的情况,本篇便对K-means的变种算法——K-modes进行简介及Python、R的实现: K-modes是数据挖掘中针对分类属性型数据进行聚类采用的方法,其算法思想比较简单,时间复杂度也比K-means、K-medoids低,大致思想如下: 假设有N个样本,共有M个属性,均为离散的,对于聚类数目标K: step1:随机确定k个聚类中心C1,C2...Ck,Ci是长度为M的向量,Ci=[C1i,C2i,...,CMi] step2:对于样本xj(j=1,2,...,N),分别比较其与k个中心之间的距离(这里的距离为不同属性值的个数,假如x1=[1,2,1,3],C1=[1,2,3,4]x1=[1,2,1,3],C1=[1,2,3,4],那么x1与C1之间的距离为2) step3:将xj划分到距离最小的簇,在全部的样本都被划分完毕之后,重新确定簇中心,向量Ci中的每一个分量都更新为簇i中的众数 step4:重复步骤二和三,直到总距离(各个簇中样本与各自簇中心距离之和)不再降低,返回最后的聚类结果 下面对一个简单的小例子在Python与R中的K-modes聚类过程为例进行说明: Python

(数据科学学习手札11)K-means聚类法的原理简介&Python与R实现

大城市里の小女人 提交于 2020-05-02 02:23:24
kmeans法(K均值法)是麦奎因提出的,这种算法的基本思想是将每一个样本分配给最靠近中心(均值)的类中,具体的算法至少包括以下三个步骤:   1.将所有的样品分成k个初始类;   2.通过欧氏距离将某个样品划入离中心最近的类中,并对获得样品与失去样品的类重新计算中心坐标;   3.重复步骤2,直到所有的样品都不能在分类为止 kmeans法与系统聚类法一样,都是以距离的远近亲疏为标准进行聚类的。但是两者的不同之处也很明显:系统聚类对不同的类数产生一系列的聚类结果,而K均值法只能产生指定类数的聚类结果。具体类数的确定,离不开实践经验的积累。有时也可借助系统聚类法,以一部分样本(简单随机抽样)为对象进行聚类,其结果作为K均值法确定类数的参考。 kmeans算法以k为参数,把n个对象分为k个聚类,以使聚类内具有较高的相似度,而聚类间的相似度较低。相似度的计算是根据一个聚类中对象的均值来进行的。kmeans算法的处理流程如下:随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各个聚类中心的距离将其赋给最近的簇;重新计算每个簇的平均值作为聚类中心进行聚类。这个过程不断重复,直到准则函数收敛,得到最终需要的k个类,算法结束;准则函数通常采用最小平方误差准则: 关于k具体数值的选择,在实际工作大多数是根据需求来主观定(如衣服应该设计几种尺码)

16种常用的数据统计分析方法汇总

倾然丶 夕夏残阳落幕 提交于 2020-05-01 16:38:34
经常会有朋友问到一个朋友,数据分析常用的分析方法有哪些,我需要学习哪个等等之类的问题,今天数据分析精选给大家整理了十六种常用的数据分析方法,供大家参考学习。 ( 注:这些统计分析方法基本都是统计学的方法,统计学专业的同学对此应该都非常熟悉 ) 一、描述统计 描述性统计是指运用制表和分类,图形以及计筠概括性数据来描述数据的集中趋势、离散趋势、偏度、峰度。 1、缺失值填充:常用方法:剔除法、均值法、最小邻居法、比率回归法、决策树法。 2、正态性检验:很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。常用方法:非参数检验的K-量检验、P-P图、Q-Q图、W检验、动差法。 二、假设检验 1、参数检验 参数检验是在已知总体分布的条件下(一股要求总体服从正态分布)对一些主要的参数(如均值、百分数、方差、相关系数等)进行的检验 。 1)U验 使用条件:当样本含量n较大时,样本值符合正态分布 2)T检验 使用条件:当样本含量n较小时,样本值符合正态分布 A 单样本t检验:推断该样本来自的总体均数μ与已知的某一总体均数μ0 (常为理论值或标准值)有无差别; B 配对样本t检验:当总体均数未知时,且两个样本可以配对,同对中的两者在可能会影响处理效果的各种条件方面扱为相似; C 两独立样本t检验:无法找到在各方面极为相似的两样本作配对比较时使用。 2、非参数检验

K-means聚类算法及python代码实现

坚强是说给别人听的谎言 提交于 2020-05-01 13:47:13
K-means 聚类算法( 事先数据并没有类别之分!所有的数据都是一样的 ) 1、概述 K-means 算法是 集简单和经典于一身的 基于距离的聚类算法 采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。 该算法认为类簇是由距离靠近的对象组成的,因此把得到 紧凑且独立的簇作为最终目标。 2、核心思想 通过 迭代 寻找 k 个 类簇 的一种划分方案,使得用这 k 个 类簇 的均值来代表相应各类样本时所得的总体误差最小。 k 个聚类具有以下特点: 各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开 。 k-means 算法的基础是 最小误差平方和准则 , 其代价函数是: 式中, μc(i) 表示第 i 个聚类的均值。 各 类簇 内的样本越相似,其与该类均值间的误差平方越小,对所有类所得到的误差平方求和,即可验证分为 k 类时,各聚类是否是最优的。 上式的代价函数无法用解析的方法最小化,只能有迭代的方法。 3、算法步骤图解 下图展示了对 n 个样本点进行 K-means 聚类的效果,这里 k 取 2 。 4、算法实现步骤 k-means 算法是将样本聚类成 k 个簇( cluster ),其中 k 是用户给定的 ,其求解过程非常直观简单,具体算法描述如下: 1) 随机选取 k 个聚类质心点 2) 重复下面过程直到收敛 { 对于每一个样例 i ,计算其应该属于的类: