??xml version="1.0" encoding="utf-8" standalone="yes"?> 2?建造者模?Builder Pattern) 3?原型模式(Prototype Pattern) 4?工厂Ҏ模式(Factory Method Pattern) 子类?/p> 5?单例模式(Singleton Pattern) l构型模?Structural Pattern) 些类可以一起工作?/p> 7?桥接模式(Bridge Pattern) 8?l合模式(Composite Pattern) 性?/p> 9?装饰模式(Decorator Pattern) 10?外观模式(Facade Pattern) 加容易用?/p> 11?享元模式(Flyweight Pattern) 12?代理模式(Proxy Pattern) 行ؓ型模?Behavioral Pattern) 沿着q条链传递该hQ直到有一个对象处理它?/p> 14?命o模式(Command Pattern) 及支持可取消的操作?/p> 15?解释器模?Interpreter Pattern) 16?q代器模?Iterator Pattern) 17?中介者模?Mediator Pattern) 且可以独立地改变它们之间的交互?/p> 18?备忘录模?Memento Pattern) 象恢复到保存的状态?/p> 19?观察者模?Observer Pattern) 自动h?/p> 20?状态模?State Pattern) 21?{略模式(Strategy Pattern) 它的客户?/p> 22?模板Ҏ模式(Template Method Pattern) 法的l构卛_重定义该法的某些特定步骤?/p> 23?讉K者模?Visitor Pattern) 素的新操作?/p> 对于单的多元数据Q最常见的可视化Ҏ是散点图QscatterplotQ。比如,对于二维数据Q通常的方法就把它们直接画成二l坐标上的一pd点,从而可以看出数据变化趋ѝ对于更高维的数据,一U方法是把数据的每种属性用不同的图形,颜色Q纹理等Q表C在二维坐标上。比如下面的图是?a >www.gapminder.org生成的,用来昄了世界上国家的胦富和人均寿命的关pR横轴是人均收入Q纵轴是q_寿命Q每个国家表CZ个圆Q圆的大表C国的人口Q圆的颜色对应于所在的区域。这样一张图表达了一个国家的4个属性。左边的图是Z1980q的数据Q而右边的图是Z2009q的数据。图中那个大大的U圆是我们中国Q我们可以很直观的看30q中国的发展q是很给力!|站上还能生成动画,演示各个圆的位置变换Q像中国那么大的圆还能动那么快,也是独一无二的?/p> 对于有更多属性的数据Q用上面的方法就往往不能昄了。常见的Ҏ是用散点囄阵(scatterplot matrixQ,如果数据有Nl_N个属性)Q所有的属性两两组合就生成N x N个二l散点图。把q些图排列成N x N的矩c这样可以观察Q意两个属性间的关pR比如下面这张图显CZ汽R的主要属性间的散点图?】。其中MPG代表了汽车的油耗(每加仑a能开的旅E)Q从N我们看出Q发动机马力大MPG小QR重MPG小Q年龄越大MPG小Q等{? ?】M. O. Ward. Xmdvtool: Integrating multiple methods for visualizing multivariate data. In Proceedings of IEEE Conference on Visualization, 1994. 散点囑֏以很好的昄量属性的数据。但是,即用散点图矩阵也无法解军_性更多的情况Q而且每个图只能昄2个属性间的联p,多个属性间的关pdƈ不是?直观。这U局限性主要来自将数据投媄在了二维直角坐标pM。h们提Zpd的方法来解决q个局限性,而其中最著名的是1981qAlfred Inselberg 提出的^行坐标系QParallel CoordinatesQ。这U方法把各个属性表C成一pd的^行的_l成一个^行坐标系Q每条数据就表示成这个坐标系里的一条直Uѝ比如我们有q样一 l数? 可以方便的表C成q样的^行坐? q坐标pȝ优势在于发现大规模数据间的属性联pR比如再回到前面的汽车的数据Q用q坐标可以表示成??img alt="" src="https://lh3.googleusercontent.com/KfvqDuK0W293UbOjnyxpj5jEaeaJiTUkH4P3k1kgO2fiLVC1DrwDilznywKrSzcqGVBjRTKQTOp-eaO2Magmc84R9OiImEK_NI1Kmq7hdVMScOex9w" width="573" /> 再回到我们前面第一个例子,虽然看上d历和收入成反比,但是如果我们有更多的数据Q像汽R的例子一Pq坐标也可以给我们更清楚显C收入和学历Q年龄等{的关系Q所以还在读高学位的朋友先不要灰心啊?/p> ?】M. O. Ward. Xmdvtool: Integrating multiple methods for visualizing multivariate data. In Proceedings of IEEE Conference on Visualization, 1994. 作ؓ多元数据可视化的主要两种ҎQ散点图和^行坐标各有优~点。散点图通常只能昄两个属性间的联p,但是每条数据都表C成一个点Q从而减了ȝ像素?量和视觉复杂度;q坐标能显C多个属性间的联p,但是每条数据Q多条属性)表示成一条线Q增加了像素的数量,当数据量很大的时候,复杂度就大大增加Q而无法显C数据间的联pR?009q北大的袁晓如教授在IEEE VisWeek 上发表了文章?】,提出了一U技术将两种Ҏl合在一块。基本的x是在q坐标里的轴之间显C散点图Q从而原来在^行坐标里看不清的数据势用散点图表示。像下面的左图显C的是^行坐标图Q而右囄合了散点图?/p> 在两个^行u之间L点图的基本思\是把双的u旋{90图,q样与左边的形成直角坐标p,散点囄l制和解M׃传统的一致。画散点囄区域中原来的直线变成I过散点囄曲线Q这样保持了原来q坐标里的q接关系Q也支持通过U来q行数据{选的功能。这U新的技术也用到了前面所说的汽R数据的例子,有兴的话找q篇论文Md?/p> ??Xiaoru Yuan, et al. Scattering Points in Parallel Coordinates. IEEE Transactions on Visualzation and Computer Graphics, November/December 2009 (vol. 15 no. 6) 在科学计可视化的时候,看到了这blogQ文章讲解得非常好!作者也是非常牛的!Ҏ转蝲到此Q?/p> 大家可以去顶一下这个blog 全文转蝲如下Q?/p> 又是一个赛季……看到很多不知名的ID开始在OJ上的出头Q看C前我们传l意义上觉得可能是“弱校”的一些学校也开始奋P真的很ؓ他们感到高兴Q尤其是天|大学Q看到天大已l可以在没有RoBa的情况下也能力压其他的名校拿到学校名ơ第三,真的q是有很多感慨的? H然很感慨,像ikki最后一句,q一切都是似水流q。。?/p> 在Arena上有他的个h比赛记录Q看C那句logo:Never underestimate or just rely on your potential.是对自己的忠告!加aQ或许,某一天当ikki看到自己的这ȝq能Ȁq某些人前q行的时候,他或怹会感叹一句,似水年吧。。。?/p> q张囄是经典啊Q两U黄色的E度是一LQ给人的感觉非常不一栗。。?/p> 人的视锥对光的感觉是实质上是q样一个积分。。?/p> 我们所看到的RGBQ当然不仅仅是RQ是很多不同频率的光的合结构,而且仅仅由RQGQB不能构成整个的色彩空间。。。其实这是一个必ӞCIE的色彩空间很昄不是一个严格的三角形,所以看不全是应该的。。。当Ӟ我们的全彩打华ͼ当然也做不到每一U彩色都打印出来Q是一个非怸规则的区域。?/p> 孔雀的尾巴ؓ什么五颜六Ԍ色彩斑斓。。不要天真的以ؓ用不同颜色材质就可以模拟。。?/p> {案Q?Iridescence。。。我不清楚汉语应该怎么译q个词。。干涉?。。?/p> ׃半透明表皮的表层厚度不同,Q这个类g肥皂泡的五颜六色Q。。所以出C面这U情c?/p> OKQ暂时到此结束?/p>
1?抽象工厂模式(Abstract Factory Pattern)
介绍
提供一个创Zpd相关或相互依赖对象的接口Q而无需指定它们具体的类?/p>
介绍
一个复杂对象的构徏与它的表C分,使得同样的构E可以创Z同的表示?/p>
介绍
用原型实例指定创建对象的U类Qƈ且通过拯q个原型来创建新的对象?/p>
介绍
定义一个用于创建对象的接口Q让子类军_哪一个类实例化。Factory Method使一个类的实例化延迟到其
介绍
保证一个类仅有一个实例,q提供一个访问它的全局讉K炏V?/p>
6?适配器模?Adapter Pattern)
介绍
一个类的接口{换成客户希望的另外一个接口。Adapter模式使得原本׃接口不兼容而不能一起工作的?/p>
介绍
抽象部分与它的实现部分分离Q它们都可以独立地变化?/p>
介绍
对象组合成树Şl构以表C“部?整体”的层次l构。它使得客户对单个对象和复合对象的用具有一?/p>
介绍
动态地l一个对象添加一些额外的职责。就扩展功能而言Q它比生成子cL式更为灵zR?/p>
介绍
为子pȝ中的一l接口提供一个一致的界面QFacade模式定义了一个高层接口,q个接口使得q一子系l更
介绍
q用׃n技术有效地支持大量l粒度的对象?/p>
介绍
为其他对象提供一个代理以控制对这个对象的讉K?/p>
13?责Q链模?Chain of Responsibility Pattern)
介绍
除请求的发送者和接收者之间耦合Q而多个对象都有Z处理q个h。将q些对象q成一条链Qƈ
介绍
一个请求封装ؓ一个对象,从而你可用不同的h对客戯行参数化Q对h排队或记录请求日志,?/p>
介绍
l定一个语aQ定义它的文法的一U表C,q定义一个解释器, 该解释器使用该表C来解释语言中的句子?/p>
介绍
提供一U方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示?/p>
介绍
用一个中介对象来装一pd的对象交互。中介者各对象不需要显式地怺引用Q从而其耦合松散Q?/p>
介绍
在不破坏装性的前提下,捕获一个对象的内部状态,q在该对象之外保存这个状态。这样以后就可将该对
介绍
定义对象间的一U一对多的依赖关p?以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知q?/p>
介绍
允许一个对象在其内部状态改变时改变它的行ؓ。对象看hg修改了它所属的cR?/p>
介绍
定义一pd的算法,把它们一个个装hQƈ且它们可相互替换。本模式使得法的变化可独立于?/p>
介绍
定义一个操作中的算法的骨架Q而将一些步骤gq到子类中。Template Method使得子类可以不改变一个算
介绍
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的cȝ前提下定义作用于q些?/p>
多个属性间的联pL散点图要清晰。比如可以清楚看出来Cylinder多的车,MPG相对,但是马力大;Cylinder的车,MPG相对大,但是马力 。在q坐标里,我们q可以方便的q行交互式删选数据,方便观察Q比如下面的图,我们可以看一下,Cylinders多,MPG,马力大的车的其他属性怎么栗?img alt="" src="https://lh4.googleusercontent.com/eM4jWPIOVrpMJf8Ccvx88DpJdPD4J69A1SpX187e7HKWcPnWykQjidEWV3cWpk-iRFo3gDP7KbyzLNCXvmchEAnuka5DsEQFaTaQXH_Rxug99cvJEA" width="578" />
当数据过多的时候,q坐标p里的线׃很多Q数据间的联pd看不清楚了,像下面的左图。一U解x法是把线L半透明Q这样主要的U的势׃随着U的数目的增加而清晎ͼ像下面的叛_?】。当数据很大的时候,主要的趋势的分析通常是数据的分析的第一步?
??Chad Jones, et al. An Integrated Exploration Approach to Visualizing Multivariate Particle Data. Computing in Science & Engineering, Volume 10, Number 4, July/August, 2008, pp. 20-29
]]>
于是Q作为stycW下?quot;a notorious martyr of acm/icpc"Q怀忉|?ơRegional?
1) Shanghai 2004
上来全场第一个Submit了C - The Counting ProblemQ没有看数据规模暴力了一下,没有M悬念的TLE掉了Q然后开始搞H - Tian Ji - The Horse
RacingQ看了一眼题目就说是最大匹配,开始拍匚wQ又没算复杂度,匚w匹完之后发现又TLE了……最搞笑的事情是我当时还写了个Hopcraft-Karp匚w……后来发现说可以最优匹?..当然Q也TLE了…?
最后我在比赛场上几乎就是无所事事Q凭着我们队长jwise的神勇发挥在最后一个小旉住全场N多气球但是我们没有气球的压力Q把那两个题目过?.最后一分钟我好像是在贪心J - Jamie's Contact GroupQ后来才知道那个题目是个|络?
W一ơ比赛L很难忘,不过现在回想h除了反应出来自己׃没什么其他可以说的?
2) Beijing 2005
一个暑假在POJ上割?00+题目之后发现很多题目好像可以写一写了Q这有了自qBeijing Regional之行。我如果没有记错q场比赛是ACRushW一ơ出道acm/icpcQ开?分钟ACRushq掉了E ?Holiday
HotelQ全场震惊,后来大家发现q是一个菜题纷UACQ我好像是在10分钟q是15分钟q掉了这个题目。在q个时候ACRushq掉了G ?Desert
KingQ?5分钟Q过?个,大家qU得G也是个菜题,然后开始看GQ我也不例外……不q看着看着我先以ؓG可以贪心Q后来想了想Q我不记得有没有交程序验证了Q,反正q不掉,后来H然惌v来这个题目好像在SRbGa的黑书上有写cM的……所以拿出黑书,扑ֈ“最优比率生成树?
Q现场学法Q现掉了……好像那个题目还有一点点卡常数因子,因ؓ是稠密图所以Kruskalq不掉,好像焦哥当时是被卡在了这里?
q了两个题目之后队友发现了A ?Angle and Squares是个弱题Q写了一下过了,中间好像q以为忘Csin和cos是弧度制的调了很久……然后就是比较顺利的用匹配过掉了C ?Purifying MachineQ当?题的时候自q的以为快要出U了Q因为好像还有两个小时?
然后是痛苦?个小时了Q先是看C我觉得最有希望过的D ?Finding TreasureQ明昑ְ是一个高斯消元嘛Q但是怎么都过不去……怎么写也q不去,虽然后来我知道更单的做法是随Z点,但是高斯消元也是可过的……但是我是q不厠Z…B ?Get Luffy
Out是个2SATQ但是我不懂2SAT……所以看着队友眼睁睁的贪心了很久,很久很久……后来传闻说q个题目数据弱,搜搜也过了……其他题目我q题目都没看…?
3) Hangzhou 2005
在Beijing拿了个第七,宋老师当时q对我们队寄予厚望说争取在杭州出U,我也真以为我们能圆个Final梦,很开心的M杭州Q这ơ比赛HQMQZYQYSY好像是一队,q且很顺利的他们切掉了ACRush…?
上来很顺利的切了A ?AuctionQ然后看到B ?Bridge发现不会那个U分Q看到C -
Cell我一下就开心了Q说我KAOq不是个LCA么,拿出例程开始敲Q敲完发现RE了,时FTQ以为数l开了数据不合法,所以测试了很久很久很久……甚臛_最后自己开始写了一个测试机开始生成数据,在自己机器上试发现也RE了……那个时候想到原来是stack
overflow…我问队友会不会把递归攚w递归Q得到的{案是不会……当时我q道这个题目,完全知道问题在哪里,知道该怎么做,但是不可能过了……当然了Q后来我知道那个题目对应于白色括号定理,可以直接DFS……但是还是要写非递归的DFSQ我q是q不掉,所以死在了DFS上?
B发现不可做之后我开始翻手头的大学数学书Q在大学数学书上扑ֈ了一个类似的式子Q把那个抛物UK度积分积出来了,记得当时的judgeq有点卡常数Q不q幸好,B ?Bridgeq了。当时的情况我记得我的判断是?可以出线Q所以只能拼题数了,把I ?
Instructions丢给what20Qwhat20看了看告诉我是贪心,他肯定能q,我就没管了,后来发现怎么写也不过怎么写也不过Q到最后比赛还?0分钟l束我看了一下题目我说KAOq不是个最短\么,删掉他的支离破碎的程序开始重写……但是来不及了……在最后比赛结束的时候,我的E序?
像刚刚写Z可以compile的雏形,but that’s definitely too late.
说说G ?GeneratorQ这个题目是具体数学上的原题Q我的队友猜Z一个公式,我口了一下说好像和答案差的远……根本没试…?题,l束了杭州之行,q铜牌都没有?
赛后Savior跟我说的一句话Q我C天都记得。因为我们在北京的名ơ说不定你该q气好还能出U,所以Savior_“Final见啦……?q一句话成ؓ我永q的伤,无限D但是永远q不厠Z…后来,我们q确实扎扎实实的Z从Beijing拿名额出U做了一番争取,Beijing一开始给了非?
的名额Q我想M取这个名额,发信l李文新老师和黄金熊Q北大的李文新老师qؓ
我们争取名额Q最后帮我们排名前面一位的USTC争取CQ我们没有……还记得当时USTC在POJ的BBS上说谢谢李老师Q李老师说不用写我,要谢谢Ikki……哎Q虽然看到USTC的兄弟出U也不错Q但是好ҎZ人做了个嫁裳…?
4) Beijing 2006
2006q_我准备出国了Q在准备GRE和GRE SUB……所以我其实基本没做什么准备,但是q次l到了JiangYY同学和FreeDian同学Q当时我感觉q是南大q几q能l出的最强队了,所以对Final也充满了好的YY?
q记得JiangYY同学跟我_“拿金牌和出U哪个意义更大,我们昄要出U쀦…”好吧,那就出线吧,清华的比赛,赛前那一天晚上朱泽园同学跑来告诉我们说明天你们不要紧张,我们赛前试题q套题目很简单,你们的实力应该能做出7题……我在这个时候开玩笑跟JiangYY_如果明天
考^面图最大流你会做不QJYY说当然懂Q我全懂Q不是Dijkstra么……我说你会做好Q反正我是不懂…?
比赛的时候FreeDian先告诉我E ?Guess是贪心,q速的q了EQ当时的速度好像差一点就是全场第一个过E的,然后发现H ?
Ruler明显可做Q但是我不知道怎么做,当时先猜了一个猜惻I发现猜想不对Q后来搜Q发现那个数据规模搜肯定时了,所以我问JiangYY 同学怎么做,我说“JiangYY你不是还写过如何搜烦的文章么……你搜一个。”JiangYY同学说毛……我搜不出……后来实在没办法了,我开始加随机
化的剪枝和一些小的优化,q且拿一个暴力的搜烦和那个随机化的优化在不停的对拍,{到Ҏ那个优化后版本能全过了,我就交?
Zq个题目我写了N个贪心版 + 一个暴力版 + N个改q优化版 + 数据生成Ҏ器,当我q了之后我兴奋不Ԍ但是l细一看,咦,我好像交错程序把那个暴力版交上去了,我KAOQ原来这个题目数据弱Q暴力搜索就能过……当时要杀人的心都有了?
差点忘了本次比赛最戏剧性的场景了,JiangYY同学题目,M一下告诉我说“昊哥,真的出^面图最大流了。”我说那好啊Q你不是会做么……JiangYY同学_“会个毛Q我q道DijkstraQ不知道怎么Dijkstra。”我KAO当时我在Z心都凉了Q然后YY同学在不停的徏模怎么Dijks
tra……一会告诉我要三ơ,一会告诉我?ơ,一会告诉我?2ơDijkstra……这是B ?Animal Run的悲惨遭遇?
后来YY同学Q自UCؓq了USACO所有Gold Contest图论题,图论王子的YY同学Q开始搞G ?What a Special
GraphQ然后一会告诉我要收~一下花做DFS啥的……后来我说不对…幸好我没被qh住开始敲G……赛后和Bamboo的一句话QBamboo _“我们判断一个队Q有没有前途,是看他在不在搞GQ如果在搞,没前途了……”G是个论文题,不可做的…当然了Q这套题目我当时在赛Z好像?
都看了的QA ?Robot有点x但是不会QI ?A Funny Stone Game太像DP了,但是也不会……都不会@_@
2题,再一ơ结束了Q结束了我本U生涯的acm/icpc?
5) Seoul 2007
阴差阳错的来CHKUST之后Q可以出国比赛,Seoul和Danang也成Z人生acm/icpc的绝响,最后的两个W四也让我永q对Final说了声再见。其实Seoul的失败,可以说死在我的手上,B ?
Editor是一个非常弱的最长公共子串的题目Q串长小?000Q明显DP嘛,不知道我当时大脑Z么抽{了Q开始写Suffix ArrayQ而且q是写的是线性时间的Suffix
ArrayQ写完之后发现自己很久没写后~数组了,q不MQ调不过样例Q这个时候细l一x把B用近乎暴力的方式q了……这个时候在旉上我们已l浪费将q一个小时了Q后来发现如果我们把q一个小时节U在|时上,每个题目都少了不的旉Q我们应该就W三名出U了……第三名
也是7题,|时比我们好一点,比我们少?23分钟的罚Ӟ如果我们q道题目没有按照我YY的方式做Q就……应该是W三了吧Q?
当然Q现实没有如果,而且我那两个队友当时q问我说是不是可以DP的样子,我直接斩钉截铁的说“不可以Q”ƈ且告诉他们这个是后缀数组l典题,他们听完׃说话开始Q我YY的写了…?
我犯的第二宗|就是那个I ?Turtle GraphicsQ当时我q完一遍题目看到I ?Turtle
Graphics之后我顿时就惛_了CERCq是NEERC一道也是这U走水^竖直方向乱搞的题目,那个题目我好像不会,时心理阴媄产生了,当队友问我这个题目可做否Q我直接一句话“这个题目我以前好像看过Q不会做Q你们别看了……”从始至l,那道I没有被我们过……后来发现是个弱
题?
Q自作孽Q不可活?
6) Danang 2007
其实Danang赛区我对自己的表Cq是满意的了Q主要是题目太RPQ同LC ?Prime k-tupleQ某队Miller-Rabinpq,我Miller-RabinTLEQD ?The longest constant
gameQ这ơ确实实是要上后缀数组了,很可惜我只带了O(nlogn)版本的,发现居然卡这个logn的常敎ͼ后来实在没办法ؕ搞了O(n) 的后~数组才过QE ?Lazy SusanQ这个题目我和Math Guy现场推了好久的规律,最后搞出来的时候真的是非常兴奋QJ –Space
BeaconQ这个题目是我最怕写的题目,陈琛敢于上手Qƈ且在最后WA的时候我l他现场写数据生成器暴力ҎQ在最?分钟的时候过掉这个题目,PH的一声咆哮YesQ全Zؓ我们的鼓掌……虽然最后由于种U原因诡异的被Rejudge了一个题目排名掉CW四Q但是第一ơ,让我感觉在赛?
上似乎没有遗憾。在4时板的时候我也第一ơ看CHong Kong University of Science and Technology居然站在当时的第一位上Q离Final的梦Q当时让我感觉是q么q?
q么多次Q其实合作最愉快的还是在HKUSTQ尽队员的实力不是特别强,但是他们肯配合我肯ؓ我做事情想题目,一直坚持不攑ּ的精我也一直可以看到……真的很希望能和他们一L在Final的赛Z?
只是可惜Q这一切都已经是似水流q?/p>
EM法可用于很多问题的框架Q其中需要估计一l描q概率分布的参数Q只l定了由此生的全部数据中能观察到的一部分Q?/p>
EM法是一UP代算法,它由基本的两个步骤组成:
E stepQ估计期望步?/p>
使用寚w变量的现有估计来计算log极大似然
M step: 最大化期望步骤
计算一个对隐变量更好的估计Q其最大化log似然函数寚w变量Y的期望。用新计的隐变量参C替之前的寚w变量的估计,q行下一步的q代Q?/p>
观测数据Q观到的随机变量X的IIDhQ?/p>
~失数据Q未观测到的隐含变量(隐变?Y的|
完整数据Q?包含观测到的随机变量X和未观测到的随机变量Y的数据,Z=(X,Y)
似然函数Q?似然函数的几U写?
log似然函数为:
E stepQ用寚w变量的现有估?img alt="\boldsymbol\theta^{(t)}" src="http://upload.wikimedia.org/math/c/d/5/cd50a7515b9fdfb7102bb2da1634f8cc.png" />计算隐变量Y的期?/p>
其中需要用到贝叶斯公式Q?/p>
M stepQ最大化期望Q获得对隐变量更好的估计
l基中的表述是这样子Q?/p>
Given a statistical model consisting of a set of observed data, a set of unobserved latent data or missing values Y, and a vector of unknown parameters
, along with a likelihood function
, the maximum likelihood estimate (MLE) of the unknown parameters is determined by the marginal likelihood of the observed data
However, this quantity is often intractable.
The EM algorithm seeks to find the MLE of the marginal likelihood by iteratively applying the following two steps:
Note that in typical models to which EM is applied:
However, it is possible to apply EM to other sorts of models.
The motivation is as follows. If we know the value of the parameters , we can usually find the value of the latent variables Y by maximizing the log-likelihood over all possible values of Y, either simply by iterating over Y or through an algorithm such as the Viterbi algorithm for hidden Markov models. Conversely, if we know the value of the latent variables Y, we can find an estimate of the parameters
fairly easily, typically by simply grouping the observed data points according to the value of the associated latent variable and averaging the values, or some function of the values, of the points in each group. This suggests an iterative algorithm, in the case where both
and Y are unknown:
The algorithm as just described will in fact work, and is commonly called hard EM. The K-means algorithm is an example of this class of algorithms.
However, we can do somewhat better by, rather than making a hard choice for Y given the current parameter values and averaging only over the set of data points associated with a particular value of Y, instead determining the probability of each possible value of Y for each data point, and then using the probabilities associated with a particular value of Y to compute a weighted average over the entire set of data points. The resulting algorithm is commonly called soft EM, and is the type of algorithm normally associated with EM. The counts used to compute these weighted averages are called soft counts (as opposed to the hard counts used in a hard-EM-type algorithm such as K-means). The probabilities computed for Y areposterior probabilities and are what is computed in the E-step. The soft counts used to compute new parameter values are what is computed in the M-step.
ȝQ?/p>
EM is frequently used for data clustering in machine learning and computer vision.
EM会收敛到局部极_但不能保证收敛到全局最优?/p>
EM对初值比较敏感,通常需要一个好的,快速的初始化过E?/p>
q是我的Machine Learning评Q先ȝ到这里, 下面的工作是做一个GM_EM的ȝQ多l高斯密度估计!
Given a set of observations (x1, x2, ? xn), where each observation is a d-dimensional real vector, k-means clustering aims to partition the n observations into k sets (k < n) S = {S1, S2, ? Sk} so as to minimize the within-cluster sum of squares (WCSS):
where μi is the mean of points in Si.
Regarding computational complexity, the k-means clustering problem is:
Thus, a variety of heuristic algorithms are generally used.
所以注意到Algorithm是一个典型的NP问题Q所以通常我们L使用的是启发式方法?/p>
The most common algorithm uses an iterative refinement technique.最常用的一个技巧是q代求精?/p>
Due to its ubiquity it is often called the k-means algorithm; it is also referred to as , particularly in the computer science community.
Given an initial set of k means m1(1),?mk(1), which may be specified randomly or by some heuristic, the algorithm proceeds by alternating between two steps:[8]
The algorithm is deemed to have converged when the assignments no longer change.
整个法的流E就是如上图所C?/p>
As it is a heuristic algorithm, there is no guarantee that it will converge to the global optimum, and the result may depend on the initial clusters. As the algorithm is usually very fast, it is common to run it multiple times with different starting conditions. However, in the worst case, k-means can be very slow to converge: in particular it has been shown that there exist certain point sets, even in 2 dimensions, on whichk-means takes exponential time, that is 2Ω(n), to converge[9][10]. These point sets do not seem to arise in practice: this is corroborated by the fact that the smoothed running time of k-means is polynomial[11].
最坏的旉复杂度是O(2Ω(n)),但是在实践中Q一般表现是一个多式法?/strong>
The "assignment" step is also referred to as expectation step, the "update step" as maximization step, making this algorithm a variant of the generalized expectation-maximization algorithm.
k-means clustering result for the Iris flower data set and actual species visualized using ELKI. Cluster means are marked using larger, semi-transparent symbols.
k-means clustering and EM clustering on an artificial dataset ("mouse"). The tendency of k-means to produce equi-sized clusters leads to bad results, while EM benefits from the Gaussian distribution present in the data set
The two key features of k-means which make it efficient are often regarded as its biggest drawbacks:
A key limitation of k-means is its cluster model. The concept is based on spherical clusters that are separable in a way so that the mean value converges towards the cluster center. The clusters are expected to be of similar size, so that the assignment to the nearest cluster center is the correct assignment. When for example applying k-means with a value of k = 3 onto the well-known Iris flower data set, the result often fails to separate the three Iris species contained in the data set. With k = 2, the two visible clusters (one containing two species) will be discovered, whereas withk = 3 one of the two clusters will be split into two even parts. In fact, k = 2 is more appropriate for this data set, despite the data set containing 3 classes. As with any other clustering algorithm, the k-means result relies on the data set to satisfy the assumptions made by the clustering algorithms. It works very well on some data sets, while failing miserably on others.
The result of k-means can also be seen as the Voronoi cells of the cluster means. Since data is split halfway between cluster means, this can lead to suboptimal splits as can be seen in the "mouse" example. The Gaussian models used by the Expectation-maximization algorithm (which can be seen as a generalization of k-means) are more flexible here by having both variances and covariances. The EM result is thus able to accommodate clusters of variable size much better than k-means as well as correlated clusters (not in this example).
q篇是概念介l篇Q以后出代码和一个K均g化的论文
Fast Hierarchical Clustering Algorithm Using Locality-Sensitive Hashing
const int MAX_LEN = 128;
const int MAX_LINE = 20;
int main(int argc, char* argv[])
{
char str[MAX_LEN] = "1";
char tmp_str[MAX_LEN] = "";
char buf[MAX_LEN] = "";
printf("%s\n",str);
for (int line = 1;line <= MAX_LINE;++line)
{
strcpy(tmp_str,str);
str[0] = '\0';
for (int i=0;tmp_str[i] != 0;++i)
{
char ch = tmp_str[i];
int count = 1;
for (;tmp_str[i+1] == tmp_str[i];++i)
{
++count;
}
sprintf(buf,"%d%c",count,ch);
strcat(str,buf);
}
printf("%s\n",str);
}
return 0;
}
3Q?#160; 分别才要U性表、二叉^衡树和哈希表存储数据Q请分析它们各有什么优劣?Q?0分)
W二?法与程序设计(40分)
1Q?#160; 有一串首q的珠子Qdm颗,每颗珠子都有自己的颜Ԍ全部颜色d有nQn<=10Q种。现在要在里面截取一D,要求包含所有不同的颜色Qƈ且长度越短越好。求如何截取?
误l描qC的算法思\Q如需要,可给Z代码来辅助描qͼQƈ分析其时间复杂度和空间复杂度。(20分)
2Q?#160; 设计一个strnumcmp函数Q对比普通的strcmp函数Q差别在于,当字W串中遇到数字时Q以数字大小为准。对于只有其中一个字W串为数字的情况Q仍然沿用原来的strcmp方式?Q?0分)
举例?
strnumcmp的判定结果:”abc?lt;”abc#?lt;”abc1?lt;”abc2?lt;”abc10?lt;”abcd?
一般的strcmp的判定结果:”abc?lt;”abc#?lt;”abc1?lt;”abc10?lt;”abc2?lt;”abcd?
要求Q请l出完整代码Q在辑ֈ目标的情况下量高效Q简z?
W三?pȝ设计题(30分)
在大规模数据处理中经怼用到大规模字典。现需要处理一个词搭配的字典。条件ؓQ?
1Q?#160; 字典中存在的Ҏ两个词的搭配Q例如:字典中有“今天”和“晚上”是两个词,那么它们l成的搭配ؓ“今天|晚上”和“晚上|今天?
2Q?#160; 词的集合很大Q约?0万量U?
3Q?#160; 一个词q不会和其他所有词搭配Q通常只会和不过1万个其他此搭?
4Q?#160; 对字典的使用L作很大,通常每秒有上千次hQ几乎没有写入需求?
误计一个字典服务系l,当请求是两个词的搭配Ӟ能够快速返回搭配的相关信息。请使用可能少的资源,q估出需要用的机器资源?/p>
n个顾客在q酒店之前,都会把自q帽子l前台服务员保管。每个顾客在dӞ前台服务员又会随机地挑选一个帽子给他。问Q最l,能拿到自己帽子的֮们期望数是多?/p>
首先从简单情况入手,对于n=2 n=3 很容易求?l果res=1Q?
对于n>=4,我们严格的用概率Ҏ来推g下!
首先定义P(n)Z努利N信的问题的答案?
P_n=n!\sum_{i=2}^{n}\frac{(-1)^i}{i!}
然后对于n个h中i个h匚w正确q个事g的数目是C(n,i)P(i)
d有nQ中事gQ?^nU情况,Q可以把人看成是10Ԍ拿到自己帽子的ؓ1Q?
所?{案是
Qn-iQ?C(n,i)P(i) /n!求和
整理一下是
\sum_{i=2}^{n-1}\frac{n-i}{(n-i)!}\sum_{j=2}^{i}\frac{(-1)^j}{j!}+\frac{1}{(n-1)!}
W一ơ课
计算机图形表C的集中ҎQ?/p>
采样的方?像素)和基于Object based 我以前没注意他们的区别,事实的确是这样子Q区别就是随着囑փ的放大,Object Based 不会q
它还ȝ了一U是Functional Q这个就是我们传说的矢量图,轮廓是FunctionQ然后填充一些简单的颜色Q?下图是一个著名的分Ş图。?/p>
在文章的最后,作者指ZQ我们的眼睛q不感知强度|例如图中的AB 他们的图像灰度是相同的。?/p>
然后看一下书Q感觉挺好的。。哈?#160; !_!~~
记录一下拿C台新机器之后必装?Python lgQ基本上都是通过 setup.py 安装?/p>
当然Q还?CouchDBXQredis (via MacPorts)Qmemcached (via MacPorts) ?GAE SDK?/p>
一位Machine Learning的postgraduateȝ的,恩,好好玩!
Re:
http://hello-math.appspot.com/python-component
当遇到实际问题,我们应当怎么做!
当抽象成一个数学问题时候,我们应该思考的方式是:
观察的时候,我们需要做是什么!