Categories
不学无术

[WIP 20151111]iCrowd: An Adaptive Crowdsourcing Framework 第二部分:算法

Fan, J., Li, G., Ooi, B. C., Tan, K. L., & Feng, J. (2015, May). iCrowd: An Adaptive Crowdsourcing Framework. InProceedings of the 2015 ACM SIGMOD International Conference on Management of Data (pp. 1015-1030). ACM.

转载本文请注明来自http://boweihe.me/?p=1661
翻论文翻到一篇新鲜的货,赶紧拿出来分享,如果不发帖我想是没有兴趣能精读啦~为了督促自己,所以就写了这篇东西。
目前来说应该是分三个部分:

  1. 基本思路及框架
  2. 算法(努力中, 本篇)
  3. 实验(努力中)

准确率估计(对应章节3)

基本思路是考虑微任务之间的“相似性”,因为文章第6章的实验结果表明,参与者在相似领域的准确率是有可比性的(尽管领域差距变大以后可比性变差)。藉此,如果我们观察到某个参与者w正确作答了某些问题,我们可推断她也能胜任相似领域的一些问题。
111 112
打个比方,给定一组已经全局完成的微任务,包括那些qualification microtasks(Fig4. t1, t2, t3)以及那些已经达成共识的任务(t6, 在任务数量k=3时);同时给定一参与者w1。那么所谓的准确率估计问题就是想计算出参与者w1对于那些待分配给他的问题(如t4, t7)的回答准确率。

基于图的估计模型(Graph-Based Estimation Model)

基于图的估计模型,其主要思路就是利用微任务在图中的相似度(边的权值)估计某些问题作答的准确度:如果对于某些已经全局完成的微任务能拿到观测的准确率qw,我们就能据此推测图中相连的其他微任务(节点)的准确率。以Fig.3为例,给定参与者w已回答问题的准确度,比如正确回答了t2,错误回答t3,那我们可以预测w在作答与t2相似的问题(如图中的t7, t8, t9)会有相对较高的准确率,而作答与t3类似问题(如t10, t11, t12)时准确率就会相对较低。
然而,照上述方法算出这么个估计值是不实际的,因为估计出的准确率pw既要保证每组相邻节点算出的准确度的局部相似性(local similarity),又要保证所属子图准确度的全局相似性(global similarity)。此外,pw还要和观察准确率qw有一致性:估计出来的值不能和观测值有很大偏差。下面给出问题的形式化描述方法,方便起见,113
114 115
引理1. 公式(2)的解为如下形式
20151111144848
引理2. 基于公式(4)的迭代算法能够算出公式(3)中的最优解p*
证明:见引文[35]
2015111114493320151111145807
算法1如下图:
iCrowd_algoritum1
 

Categories
不学无术

iCrowd: An Adaptive Crowdsourcing Framework 第一部分:基本思路及框架

Fan, J., Li, G., Ooi, B. C., Tan, K. L., & Feng, J. (2015, May). iCrowd: An Adaptive Crowdsourcing Framework. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data (pp. 1015-1030). ACM.

转载本文请注明来自http://boweihe.me/?p=1661
翻论文翻到一篇新鲜的货,赶紧拿出来分享,如果不发帖我想是没有兴趣能精读啦~为了督促自己,所以就写了这篇东西。
目前来说应该是分三个部分:

  1. 基本思路及框架(本篇)
  2. 算法(努力中)
  3. 实验(努力中)

一句话概括

iCrowd能实时地通过评估参与者完成任务的成绩来估计他作答的准确性,并且能够借此分析出他擅长作答的领域。

问题描述(对应章节2.1)

iCrowd_01
iCrowd_02

iCrowd框架(对应章节2.2)

iCrowd_03

Categories
生活琐碎

便宜vs.好货 iPad mini / iPhone手机壳选购经验 —— 血的教训

便宜到底有没有好货呢?
最近几次买东西的结果告诉我,便宜可能有好货,但是需要经历好多次失败才能淘到好货。
文章里我不会隐藏任何品牌/店铺名,但我也无意做广告,因为提到的牌子是在太多了。

iPad Mini 2 壳子

因为年初买了个iPad mini2,这东西需要个东西架着,所以一直就在找最合适的壳子。至今买了一共5款壳子,价格从20到200都有,我就来列举一下各自的优缺点及问题。

a)8.8元杂牌壳

ipad_mini_case1
特点:正面是仿皮的,反面是塑料壳(不透明材质)
这个壳子买来多久就闲置了,因为有色差!老子想买正红色的,结果寄来了个粉粉哒,我一大老爷们怎么用。

b)23.06元精品国货

ipad_mini_case2
这个是仿苹果的SmartCover的壳,但是因为做工不大好,有些地方没到位
特点:外观仿的很像,是可以分离的款式(SmartCover+一个后壳),但是磁铁实在不够,老板第一次寄来的壳根本无法唤醒休眠,跟老板交流之后二话不说又寄了一个面壳儿过来,可是还是老样子…我也就放弃跟老板联系了

c)SmartCover (不知道是原装还是高仿)

ipad_mini_case3
这个壳子用了好几个月,最近才被换下去。买了红色的,真的很好看,使用也很方便,磁铁吸力足
价值70
有两个缺点:1.不能竖着支起来;2.如果不配个高仿后盖的话,有很小的几率面壳会掉下来…我遇到过一次

d)moshi的壳

ipad_mini_case4
这家保护壳最近才发现,看他iphone的壳做的不咋地,但是做ipad壳还可以。因为需要将板子竖着放,所以买了这个。价值220大洋,真是大出血
用了一个礼拜,总算琢磨透了三种折叠方式,感觉自己脑子越来越不行了。感觉这个就是用到现在最好的壳啦~缺点就是比smartcover稍微厚了一点,但是做工比较好,在横靠竖靠的位置有防滑脚垫。

e)在新加坡买的来自中国的杂牌壳

ipad_mini_case5
为了解决smartcover我买过一个廉价的壳,恩,在新加坡买的,但是很显然还是中国货。这个壳子是我买过最烂的壳子,没有之一。特点是:前面的壳太薄而且磁性太弱,后面的壳太后,颜色太恶心。买来用了五分钟后悔了,尼玛这个钱能吃两顿饭了呢!

iPhone 6/6s 壳子

我在淘宝、日本亚马逊买过一共十来个iphone 6/6s的壳子,感觉自己丧心病狂了!因为种类繁多,所以鄙人贴心地将他们分个类介绍吧…

a)TPU软壳

他们是软壳,号称TPU或者类似材料制造,便宜的我见过3块钱包邮的,一般的20左右,贵的90..
此类壳子的特点就是,能做到比较薄的厚度(0.2mm~0.4mm或许),但是因为材料问题,没办法坚持很长时间。手上油比较多的话,大约2~3个月这个壳子就会发黄,然后会变松…

b)塑料硬壳A(透明)

透明的塑料硬壳,廉价的几块钱,贵的像AirJacket一样200不到一点。硬质塑料做薄很不容易,所以越薄的越贵。
AirJacket本人买过3个(呵呵哒),第一个是Clear全透明的,但是上面因为加了坑爹的号称防刮涂层的东西,用了1个月以后后面涂层掉皮了!跟掉漆一样…然后买了第二个,是磨砂的,还是日本亚马逊原装进口,结果发现这批货开模有问题,壳子会晃动(0.5mm),也闲置了。第三个是最近买的,黑色透明的壳子,用起来感觉还不错,但是最终还是觉得有点厚,被我用某个廉价壳子代替了。顺便一提,因为是硬质壳而且这货的开孔太细致了,导致拆卸壳的时候如果方法不对很容易把壳子弄破!
便宜的壳子就厚一些了,但是处理得好的话也很棒。我推荐这款,http://www.amazon.co.jp/gp/product/B00N8JX8UO?psc=1&redirect=true&ref_=oh_aui_search_detailpage 是的只要450日元(约合25元人民币),这款厚度大概有0.5mm左右(不算薄),但是开孔很讲究,需要按键的地方开孔很舒服,按键的部位你完全感觉不到壳的厚度。之所以说便宜也有好货,也是因为这个。目前在换下来的ip6上服役,感觉良好。

c)塑料硬壳(PC材质,半透明)

PC材质的壳以前是廉价产物,现在好像大头牌(ozaki)经过各种包装把它也搞到了90块钱一个,我是没买过这么贵的。这类材质比较有韧性,然后可以做的很薄,甚至超越TPU可以变成最薄的壳,手感也不错。这类壳子因为材质的关系,全是半透明磨砂的,有各种颜色的磨砂。不论什么价位,他们都有个小缺点:有点脆,略微容易破。
最便宜:3元左右(我买过9毛9包邮的!),磨砂较为粗糙,开孔粗糙(有时候因为奇怪的开孔导致数据线插不紧),倒角粗糙。但是如果碰到天猫那种混销量混好评的店限时折扣的话,可以考虑购买,这种一般过几天会涨到20左右。
中档:20元出头。目前用的benks的壳,28元一只(貌似两只8折什么的)。开孔还不错,数据线、耳机插进去没有问题,厚薄适合。唯一不确定的是不知道什么时候会破,拆的时候要格外小心。
高档:79元?我反正没用过
 
 

Categories
软件

卸载小米随身WiFi云优盘

小米Wifi还“附送”云优盘,默默地帮你安装,真是有点不要脸。关键是还在“我的电脑”里头加快捷方式,怎么这么无耻啊!
其实这个是金快盘的东西,可以单独删除的!
请找到以下目录【64位系统】C:\Program Files (x86)\XiaoMi\MiWiFi\kuaipan【32位系统】C:\Program Files\XiaoMi\MiWiFi\kuaipan;看到里面有个叫uninstall的可执行文件,点击它,卸载云优盘(其实就是金山快盘)吧!

Categories
生活琐碎

哦,人生感悟

最有价值的东西往往最容易被忽略。
The most important thing is always the most overlooked one.

不要钱的东西往往是最贵的。

Categories
爪机爪机

Upadte your Lumia 535 to WindowsPhone 8.1 GDR2

是的,确实有一个GDR2可以升级,不是Win10,而是Win8.1.并且开启方法也相当简单
wp_8.1_gdr2_Lumia535

  1. 去应用市场,搜索一个叫“Windows预览体验”(Windows Insider)的应用,这个是微软官方出的,给大家升级成预览版Win10用的
    Install the Windows Insider app via your official App Store
  2. 下载安装完后,打开它,然后各种确认,开始选择更新版本
    Open the Insider app and accept the T&Cs
  3. 你会看到有3个可选项(至少在15年10月4日是这样的),第一个是Slow,第二个是Fast,第三个又是Slow
    You’ll see three available choices, like .. Slow- Fast- Slow. Select the “Slow” one on the bottom!
  4. 请点选第三个Slow并确认,如果你选了正确的话,程序只会稍加设置,而并不像前两个Win10升级一样要求你重启
    If you make the right choice, the phone will NOT restart.
  5. 进入手机设置,搜索更新,然后稍等3~5分钟,你会发现,真有那么个Win8.1的更新在等着,就是它了!
    Go to Settings and check for updates. You will see a 8.1.xxxx update available and that’s it!

 

Categories
生活琐碎

iTunes/AppStore切换香港区指南(下载Tumblr?嘿嘿)

转载请注明来自http://boweihe.me/?p=1626
随着越来越多的App被莫名其妙地移出大陆市场,是时候找一种方法切换到HK区了。目前iTunes更换国家/地区需要当地的信用卡或者其他支付方式,这个阻挡了一大部分人前行的脚步。不过,方法总是有的。
大致分为下面几步:

  1. 注册一个香港的虚拟信用卡;
  2. 更改iTunes的国家/地区;

注册HK区虚拟信用卡

易票连旗下的全球付提供了仅供网上消费用的虚拟万事达卡,笔者亲测开卡地区是香港的。但请注意认准地址https://www.globalcash.hk/,不要误入国内版的易票连http://www.epaylinks.cn,因为我发现国内版的拿不到卡号…不知道为什么:)

  1. 点击网址进入https://www.globalcash.hk/
  2. 点击右下角的小字,免费获取账号
    globalpay_register_1
  3. 按照网页提示一步步注册,可能需要充值100RMB,这是入门费么?反正100RMB会显示在你的余额里的,可以当余额使用
  4. 注册搞定后就进入管理页面了,如果有绑定手机的话可以用手机号登录,或者使用你的卡号也能登录,登录密码是你设置的6位数密码
  5. 进入后,可以看到你的基本信息,如下图。点击红色圈位置的详细信息,就能看到你信用卡的详细信息了QQ截图20150926174405
  6. 下图是详细信息页面。有人可能要问账单地址是什么,这个卡的一个好处是,账单地址可以乱写,应该是卡号+CVC+名字对就给付钱QQ截图20150926174428
  7. 注册卡的问题基本完成

将iTunes(AppStore)账户改至HK区

此过程可以在手机/电脑的iTunes客户端操作,下面只演示电脑iTunes如何操作改区

  1. 首先当然是打开iTunes了
  2. 点击软件上方右侧你的名字,选择“账户信息”iTunes Change Region-1
  3. 在弹出的对话框中输入你的(用户名/)密码
  4. 点击“更改国家或地区”iTunes Change Region-2
  5. 选择“香港”(中国香港特别行政区),然后填写信用卡信息
    1. 姓名、信用卡号、安全码(CVC)、信用卡有效期、电话:填写你申请到的虚拟信用卡上的信息
    2. 地址相关的街道等,请自己随便填一个
  6. 点击继续,应该就搞定啦!
Categories
生活琐碎

Singapore!

终于是有去别的国家生活的经历了,虽然只有3个多月。
新加坡一切都还不错,像是个法律极其严明的国家。路上没有乞丐,也没有吃东西的人,没有乱丢的垃圾。
但是蔬菜特别稀有的感觉,大家都不爱在家烧饭,然后餐馆里的菜都是肉啊之类的,有东南亚各地的风味,但是吃久了还是会觉得华人餐馆的东西最合胃口。其实觉得泰国菜也不错啦, 咖喱啊什么的,然后有点酸酸味道的辣酱,但是就是没蔬菜啊~
整个国家目测是没有人种地了,什么新鲜蔬果似乎都是进口的,菜跟肉差不多价钱。室内各种空调,而且开得都比较凉快,但是奇葩的是办公室在非上班时间空调都无法手动打开,差点被闷死。
SUTD的校园里WiFi覆盖充足,但是每个终端限速下载5M上传10M,有点捉急。人肉翻墙的好处是不怎么需要VPN之类的了,除非偶尔连接国内的网站速度慢。
先这样吧,还是不错的体验!

Categories
木有技术

Windows10 无法远程桌面连接 问题排查

遇到了很奇怪的事情,Win10底下竟然用内网都无法远程连接,只是显示“无法连接到主机”
经过各种搜,找到了办法,解决了问题。

1.(可选)用有线\无线网络,请开启网络发现

参考教程http://www.xitongzhijia.net/xtjc/20141216/32673.html,把你现在连的网络类型改成专用网络
如果这不是家庭网络或者企业内部网,请还是不要这样改

2.(必须)防火墙设置

Windows10自带的防火墙规则似乎禁用了远程桌面连接,至少在我的电脑上是这样的
开始菜单搜索“防火墙”,选择第二项:Windows防火墙
Windows10-Firewall
 
然后点击左侧的“允许应用或功能通过Windows防火墙”
Win10-Firewall-2
 
点击弹出窗口右上角的“更改设置”
移到最下面,把“远程桌面”勾上。如果步骤1没有设置的话,记得把“公用”下面的勾也勾上(此项有安全风险,公用网络还是尽量不要允许的好)。
Win10-Enable-Remote-Desktop

Categories
不学无术

宜送小爬虫

最近在看关于爬虫的东西,所以写了点练练手
目前还没竣工,只是到了能返回JSON数据的阶段
参考文献是:http://cuiqingcai.com/1001.html  作者写了一系列的爬虫教程,很实用!
用宜送转运的登录练练手吧,反正最近入了深圳海关坑,哎,。说多了都是泪
主要注意:

  1. 宜送登陆:HTTP头信息,Content-Type: application/x-www-form-urlencoded,不然直接提示登录失败。可能因为登录的人不多,目前没有设置验证码
  2. 获取账户订单信息:页面加载后,是AJAX向服务器二次请求JSON格式的订单信息的,而且发送的请求也是JSON格式来POST的。返回值也是JSON,直接免去了正则匹配啊!
# -*- coding: UTF-8 -*-
__author__ = 'Bowei'
import urllib
import urllib2
import cookielib
import json
class YiCrawler:
    statusCode = {
        'AIRARRDEST': '已到达',
        'DONE': '已完成',
        'CLEAR': '清关中',
        'CONFIRM': '已确认'
    }
    def __init__(self):
        self.userinfo = {'j_username': '',
                         'j_password': ''}
        self.cookie = cookielib.CookieJar()
        self.headers = {'Content-Type': 'application/x-www-form-urlencoded',
                        'Cache-Control': 'no-cache'}
        self.cookie_handler = urllib2.HTTPCookieProcessor(self.cookie)
        self.opener = urllib2.build_opener(self.cookie_handler)
        self.results = []   # 存放查询结果,队列中的元素是字典
    def get_status_str(self, status):
        if self.statusCode.has_key(status):
            return self.statusCode[status]
        else:
            return status
    def set_user_info(self, username, password):
        self.userinfo['j_username'] = username
        self.userinfo['j_password'] = password
    def login(self):
        print 'Login start'
        login_data = urllib.urlencode(self.userinfo)
        url = 'https://www.yi-express.com/login/send'
        request = urllib2.Request(url, login_data, self.headers)
        try:
            response = self.opener.open(request)
            print 'Finished login'
            return response.getcode()
        except urllib2.HTTPError, e:
            print e.code
            return e.code
    def get_page(self, pageNo=1, orderType="", warehouse=""):
        url = 'https://www.yi-express.com/customer/orderSearch'
        order_params = {"pageNo": str(pageNo), "orderNoOrName": "",
                        "warehouse": warehouse, "orderType": orderType,
                        "orderCreateStart": "", "orderCreateEnd": ""}
        request = urllib2.Request(url)
        request.add_header('Content-Type', 'application/json')
        try:
            response = self.opener.open(request, json.dumps(order_params))
            response_decoded = json.loads(response.read())
            for key, value in response_decoded.iteritems():
                # print str(key) + ': ' + str(value)
                if str(key) == 'result':
                    self.results.extend(value)
            return response_decoded['hasNext']
        except urllib2.HTTPError, e:
            print e.code
            return False
    def fetch_all(self):
        # 获取所有页面的数据
        self.results = []
        hasNext = True
        pageCount = 1
        while hasNext:
            hasNext = self.get_page(pageCount)
            pageCount += 1
    def print_results(self):
        print '========= START ==========='
        for item in self.results:
            print 'ID:\t' + item['id']
            print 'TIME:\t' + item['inDateWithFormat']
            print 'PRICE:\t' + str(item['realCost'])
            print 'WEIGHT:\t' + str(item['realWeight'])
            print 'EXP_NAME:\t' + item['expressName']
            print 'STATUS:\t' + self.get_status_str(item['statusCode'])
            print '\n'
if __name__ == '__main__':
    crawler = YiCrawler()
    print crawler.login()
    #crawler.get_page(pageNo=1)
    crawler.fetch_all()
    crawler.print_results()