尼玛 是有多无聊,搞了个windows还去玩主从,鄙视之!!!
不多说了,小白玩Redis主动求喷。。。哈哈。。。
主的默认配置,
从:主的原本拷贝一份
1,改端口将默认的6379改为6380
# Accept connections on the specified port, default is 6379
port 6380
2,# slaveof <masterip> <masterport>
slaveof localhost 6379
使用tinyxml,需要在工程中包含其源码,并在头文件建立引用关系。下面是一个简单的例子,按照层次关系打印出xml文件。
#include "stdafx.h" #include "targetver.h" #include "tinystr.h" #include "SystemCommon.h" #include "tinyxml.h" void ParseXML(TiXmlElement *Element); int _tmain(int argc, _TCHAR* argv[]) { char c[2048] = "<!-- This is a comment -->" "<?xml version=\"1.0\" encoding=\"utf-8\"?>" "<Class name=\"计算机软件班\">计算机" "<Students>" "<student name=\"张三\" studentNo=\"13031001\" sex=\"男\" age=\"22\">" "<phone>88208888</phone>" "<ET name=\"de\" ground = \"ground\">on the ground</ET>" "<et name = \"et name\" ball = \"ball\"/>" "<address>西安市太白南路二号</address>" "</student>" "<student name=\"李四\" studentNo=\"13031002\" sex=\"男\" age=\"20\">" "<phone>88206666</phone>" "<address>西安市光华路</address>" "</student>" "</Students>" "</Class>"; TiXmlDocument *myDocument = new TiXmlDocument(); //假设文件名是xml.xml myDocument->LoadFile("xml.xml",TIXML_ENCODING_UTF8); //myDocument->Parse(c, 0,TIXML_ENCODING_UNKNOWN); TiXmlElement *rootElement = myDocument->RootElement(); while(rootElement) { ParseXML(rootElement); rootElement = rootElement->NextSiblingElement(); } delete myDocument; cout<<"----------------END-----------------"<<endl; return 0; } void PrintTree(int c) { if(c <= 0) return ; while(c) { cout<<" "; --c; } return; } //调用 tinyxml 解析 xml void ParseXML(TiXmlElement *pElement) { static int i= 0; PrintTree(i); cout<<pElement->Value()<<" "; const char * str = NULL; if(str = pElement->GetText()) cout<<" "<<str<<endl; else cout<<endl; TiXmlAttribute* attributeOfStudent = pElement->FirstAttribute(); while(attributeOfStudent) { PrintTree(i); std::cout << attributeOfStudent->Name() << " : " << attributeOfStudent->Value()<<std::endl; attributeOfStudent = attributeOfStudent->Next(); } TiXmlElement* ChildElement = pElement->FirstChildElement(); while(NULL != ChildElement) { i++; ParseXML(ChildElement); i--; ChildElement = ChildElement->NextSiblingElement(); } }
<?xml version="1.0" encoding="utf-8"?>
<!-- This is a comment -->
<Class name="Class of SoftWare">
<Students>
<student name="LiLei" studentNo="13031001" sex="Man" age="22">
<phone>88208888</phone>
<ET name="de" ground = "ground">on the ground
<et name = "et name" ball = "ball"/>
</ET>
<address>Road1</address>
</student>
<student name="LiSi" studentNo="13031002" sex="Man" age="20">
<phone>88206666</phone>
<address>Road2</address>
</student>
</Students>
<Teatcher>few teatchers
</Teatcher>
</Class>
Netflix 在网上举办了一个挑战赛,奖励100万美元向全世界选手提出一套电影的推荐系统,RMSE比当前系统小10%的最优秀的那支队伍将获得该奖项。
但是如何评价一个更好的推荐系统?What do we mean by better?
在Netflix Prize, 对系统的性能评价使用了用户对电影的实际评分与推荐系统对每部电影预测评分之间的RMSE。如果说我们希望向人们展示他们可能对某部电影会有多喜欢,那RMSE越小自然越好。然而,这很可能不是我们想要的。用户实际关注的很可能是他们最喜欢的top-K部电影,至于他们不喜欢的电影,误差大一些无所谓。
chen_1st在他的博客中举了个例子,假定训练集中某用户有10个评分为5的商品,1000个评分为1的商品。在以RSME为优化目标时,这1010个商品是同等重要的,因此,算法会花费更大的精力去保证评分为1的商品的预测值尽量准确,相比之下,评分为5的商品被忽视了。而对于Top-K推荐来说,算法实际上应该尽量保证评分为5的商品的预测的准确性,评分为1的商品的预测结果是无关紧要的。
用RMSE做目标,预测的是用户对每个商品感兴趣的程度,而以Recall或者Precision为目标,预测的是用户最感兴趣的商品有哪些,这是两个完全不同的目标,为优化RMSE而设计的算法不见得适用于top-n推荐。在CofiRank等文献中,也有相关讨论。
相似地,在Web检索中,用户期望相关结果尽可能排在前面,因而往往以precision作为评价指标。而在专利检索中,用户期望尽可能多地返回相关结果,因而recall更合适的评价指标。搜索引擎不关心所有的文本估计的误差是否都很小,它只关心Top-K条结果是否十分准确。
在论文《The Relationship Between Precision-Recall and ROC Curves》中,作者把chen_1st例子中的数据集叫做highly-skewed dataset。作者在文中表明,对于二分类问题,ROC曲线可以比accuracy更好地评价算法的效果,然而在highly-skewed dataset上,ROC曲线会得到overly optimistic performance。而此时Precision-Recall曲线则能更好地反映这种数据集下的算法性能。
Reference
1.http://cacm.acm.org/blogs/blog-cacm/22925-what-is-a-good-recommendation-algorithm/fulltext
2.http://hi.baidu.com/chen_1st/item/741319e9a83c61a52f140b9e
3.The Relationship Between Precision-Recall and ROC Curves
------------------------------
jiang1st2010