决策树

决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。
决策树方法最早产生于上世纪60年代,到70年代末。由J Ross Quinlan提出了ID3算法,此算法的目的在于减少树的深度。但是忽略了叶子数目的研究。C4.5算法在ID3算法的基础上进行了改进,对于预测变量的缺值处理、剪枝技术、派生规则等方面作了较大改进,既适合于分类问题,又适合于回归问题。
决策树算法构造决策树来发现数据中蕴涵的分类规则.如何构造精度高、规模小的决策树是决策树算法的核心内容。决策树构造可以分两步进行。第一步,决策树的生成:由训练样本集生成决策树的过程。一般情况下,训练样本数据集是根据实际需要有历史的、有一定综合程度的,用于数据分析处理的数据集。第二步,决策树的剪枝:决策树的剪枝是对上一阶段生成的决策树进行检验、校正和修下的过程,主要是用新的样本数据集(称为测试数据集)中的数据校验决策树生成过程中产生的初步规则,将那些影响预衡准确性的分枝剪除。
目标:根据给定的训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。决策树学习本质上是从训练数据集中归纳出一组分类规则。能对训练数据进行正确分类的决策树可能有多个,可能没有。在选择决策树时,应选择一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力;而且选择的条件概率模型应该不仅对训练数据有很好的拟合,而且对未知数据有很好的预测。 [1]
损失函数:通常是正则化的极大似然函数
策略:是以损失函数为目标函数的最小化
因为从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中决策树学习通常采用启发式方法,近似求解这一最优化问题,得到的决策树是次最优(sub-optimal)的。
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。包含特征选择、决策树的生成和决策树的剪枝过程。
决策树算法的优点如下:
(1)分类精度高;
(2)生成的模式简单;
(3)对噪声数据有很好的健壮性。
因而是目前应用最为广泛的归纳推理算法之一,在数据挖掘中受到研究者的广泛关注
基本思想L
1)树以代表训练样本的单个结点开始。
2)如果样本都在同一个类.则该结点成为树叶,并用该类标记。
3)否则,算法选择最有分类能力的属性作为决策树的当前结点.
4)根据当前决策结点属性取值的不同,将训练样本数据集tlI分为若干子集,每个取值形成一个分枝,有几个取值形成几个分枝。匀针对上一步得到的一个子集,重复进行先前步骤,递4’I形成每个划分样本上的决策树。一旦一个属性出现在一个结点上,就不必在该结点的任何后代考虑它。
5)递归划分步骤仅当下列条件之一成立时停止:
①给定结点的所有样本属于同一类。
②没有剩余属性可以用来进一步划分样本.在这种情况下.使用多数表决,将给定的结点转换成树叶,并以样本中元组个数最多的类别作为类别标记,同时也可以存放该结点样本的类别分布,
③如果某一分枝tc,没有满足该分支中已有分类的样本,则以样本的多数类创建一个树叶。 [

词向量

词向量(Word embedding),又叫Word嵌入式自然语言处理(NLP)中的一组语言建模和特征学习技术的统称,其中来自词汇表的单词或短语被映射到实数的向量。 从概念上讲,它涉及从每个单词一维的空间到具有更低维度的连续向量空间的数学嵌入。
生成这种映射的方法包括神经网络,单词共生矩阵的降维,概率模型,可解释的知识库方法,和术语的显式表示 单词出现的背景。
当用作底层输入表示时,单词和短语嵌入已经被证明可以提高NLP任务的性能,例如语法分析和情感分析。
思想向量是单词嵌入到整个句子甚至文档的扩展。一些研究人员希望这些可以提高机器翻译的质量。
为什么需要词向量?
众所周知,不管是机器学习还是深度学习本质上都是对数字的数字,Word Embedding(词嵌入)做的事情就是将单词映射到向量空间里,并用向量来表示
一个简单的对比
One-hot Vector
对应的词所在的位置设为1,其他为0;
例如:King, Queen, Man and Woman这句里面Queen对应的向量就是[0,1,0,0]
不足:难以发现词之间的关系,以及难以捕捉句法(结构)和语义(意思)之间的关系
Word2Vec
基本思想是把每个词表征为K维的实数向量(每个实数都对应着一个特征,可以是和其他单词之间的联系),将相似的单词分组映射到向量空间的不同部分。也就是Word2Vec能在没有人为干涉下学习到单词之间的关系。
举个最经典的例子:
king- man + woman = queen
实际上的处理是:从king提取了maleness的含义,加上了woman具有的femaleness的意思,最后答案就是queen.
借助表格来理解就是:
animal pet
dog -0.4 0.02
lion 0.2 0.35
比如,animal那一列表示的就是左边的词与animal这个概念的相关性
https://www.cnblogs.com/MartinLwx/p/10005520.html

百度自然语言处理接口

词法分析 分词、词性标注、专名识别
依存句法分析 自动分析文本中的依存句法结构信息
词向量表示 查询词汇的词向量,实现文本的可计算
DNN语言模型 判断一句话是否符合语言表达习惯
词义相似度 计算两个给定词语的语义相似度
短文本相似度 判断两个文本的语义相似度
中文分词 切分出连续文本中的基本词汇序列(已合并到词法分析接口)
词性标注 为自然语言文本中的每个词汇赋予词性(已合并到词法分析接口)

BAT等技术官方博客

1. 美团技术团队博客: 地址: http://tech.meituan.com/
2. 腾讯社交用户体验设计(ISUX) 地址:http://isux.tencent.com/
3. 京东设计中心 地址:http://jdc.jd.com
4. QQ游戏设计中心 地址:http://gdc.qq.com
5. 百度搜索用户体验中心 地址:http://ued.baidu.com/
6. 一淘UX 地址:http://ux.etao.com
7. 腾讯CDC 地址:http://cdc.tencent.com
8. 腾讯ISUX 地址:http://isux.tencent.com
9. 腾讯MXD移动互联网设计中心 地址:http://mxd.tencent.com
10. UXDC 2011体验设计峰会 地址:http://www.uxdc.org
11. 视觉同盟 地址:http://www.visionunion.com
12. Tencent TG ideas 地址:http://tgideas.qq.com
13. Tencent AlloyTeam 地址:http://www.alloyteam.com
14. QQ客户端团队博客 地址:http://impd.tencent.com/
15. 阿里巴巴(中文站)UED 地址:http://www.aliued.cn
16. 支付宝官方Blog 地址:http://blog.alipay.com (不过进去是支付宝)
17. Taobao UED 地址:http://ued.taobao.com/blog/
18. 阿里巴巴国际站UED 地址:http://www.aliued.com
19. 百度MUX 地址:http://mux.baidu.com
20. 微博UDC 地址:http://udc.weibo.com
21. 搜狗UED 地址:http://ued.sogou.com
22. 搜狐MUED 地址:http://mued.sohu.com
23. 搜狐畅游VC地址:http://vc.changyou.com/index.shtml
24. 网易用户体验设计中心 地址:http://uedc.163.com/
国内外的技术博客
我也列举一些我收藏的,也经常会看的博客(排序不分先后)。
Facebook
网址:https://code.facebook.com
博客上会介绍一些Facebook在Android、iOS、前端、后端以及硬件技术遇到的问题,也包括一些他们团队研究的新技术,比如fresco等等。我最感兴趣的是他们在技术上遇到的一些问题,然后他们是怎么解决的
Square
网址:http://square.github.io/
Square应该是业界开源项目最多的公司之一了,它的github主页上列举了好多开源项目,一个做Android的如果没用过Square的开源库的话,要么你非常非常牛逼,要么你真的不关心开源项目
美团
网址:http://tech.meituan.com/
从它的博客可以看到美团大概是从2013开慢慢写的,大概是因为2013后美团不断扩大,也慢慢积累了很多技术(踩了很多坑),博客上会写各种技术的:Android、iOS、前端、运维、机器学习等等~
阿里
网址:阿里聚安全
抱歉我没有找到阿里公开的技术博客站点,之前我在阿里的时候,我在内网看到,公司内部会有很多人分享自己遇到的问题以及解决方法,公开的博客,我还没有发现
微信移动团队
这个应该没有博客,只有微信公众号:WeMobileDev
貌似也是最近才开的,博客文章的质量非常高,每一篇基本都是微信移动团队经验的总结,详细介绍了他们遇到的困难以及如何解决的。比如:提升Android客户端会话速度提升70%背后的故事、Android微信只能心跳方案、Android拆分与加载Dex的多种方案等等
每一篇都会具体到技术的细节,真正的解决每一个问题,非常赞这样的技术团队
腾讯的Bugly
网址:http://bugly.qq.com/blog/
Bugly的博客会介绍一些Android和iOS开发过程中帮助我们性能分析的方法,比如如何衡量一个App的卡顿情况呢?Bugly的博客告诉你,使用Choreographer.FrameCallback这个工具。还有很多其他的性能分析的技巧
转自:
https://www.cnblogs.com/jhj117/p/5144630.html

996又如何休息

休息,光靠睡觉就行?错!
对于体力劳动者来说,睡眠的确是一种比较有效的休息方式,它能有效地放松我们的身体;
但脑力劳动者在一天可以睡满8小时的情况下,还是觉得非常累、非常疲惫的话,那就不是因为“缺觉”了。
脑力劳动者的大脑皮层经常处于高度兴奋状态,而身体肌肉却处于低兴奋状态,如果想要好好放松的话,最好试试“转移”自己的注意力,而不是去床上睡一觉。
脑力劳动者,得学会让大脑休息
我们睡觉的时候,大脑不能休息,那怎么样才能让大脑休息一下呢?
大脑不同的区域掌管我们不同的活动,虽然不可能让大脑完全“关机”,但是改变一下活动的内容,让大脑的一个区域休息,另一个区域开始运转,这样就能达到放松的效果。
周一到周五在办公室坐了5天,每天都想着企划案、报表,到了周六、周日就可以去参加一些活动,像是打一小时篮球,上上烘焙课,做做十字绣,浇浇花,逗弄逗弄宠物,都能帮助我们放松大脑,这比“睡一天”可好用多了。

基于规则的中文地址分词与匹配方法

研究背景及意义

随着地理信息系统(GIS)的不断发展和其在各行业的广泛应用,人们对信息共享
的要求也越来越迫切。例如在城市管网、交通导航、工商管理、公共卫生、灾害管理等
领域,地理信息系统作为信息共享的平台,其应用越来越广泛。城市各行业的数据库都
保存着大量和地理位置有关的非空间数据。但是这些行业建设的 GIS 系统并没有足够的
空间位置数据进行支撑,因为地址数据并不能够批量、准确地转化为空间化的信息。这
些数据大多都没有空间位置坐标,无法对应到电子地图上,也就无法进行空间分析和管
理决策。
地址匹配技术正是这一问题的解决方法。地址匹配技术就是把自然语言描述的地理
位置信息转换成地理坐标的过程。通过地址匹配技术,可以把城市各个行业的非空间
信息数据进行空间化,进而运用到 GIS 实际应用中,实现信息的集成与数据共享。
GIS    例如,百度地图
引入一些地址组成的基本概念:
(1)地址串:就是一般的地址,日常的通信地址。例如:青岛市黄岛区前湾港路 579 号。
(2)地址要素:组成地址串的若干词组,如上面的地址就是由 4 个地址要素组成的,分别是“青岛市”、“黄岛区”、“前湾港路”和“579 号”,每个地址要素相对独立。
(3)地址通名:顾名思义,就是地址要素中通用的那些字段。例如:地址要素 “黄岛区”中“区”为地址通名, “前湾港路”中“路”为地址通名。
(4)地址专名:例如:“黄岛区”中“黄岛”为地址专名。地址要素中去掉地址通名后剩余的部分就称为地址专名。
 
Key technologies on Address matching
 
 
Standard address model
 
标准地址模型举例
中文分词方法:
1.基于字典的分词方法
1)正向最大匹配法
2)逆向最大匹配法
3)最少切分词方法
4)逐词遍历法
2.基于理解的分词方法
3.基于统计的分词方法

在人工智能的自然语言处理(NLP)领域也会用到中文分词技术。

正向最大匹配法:
它的基本思想是:首先创建一个用于自动分词的中文词典,可以得知词典中的最长词条的汉字个数,假设个数为 n。然后,取待切分句子的前 n 个字符作为匹配字段,在分词词典中进行字段的查询匹配。如果词典中有这样的字段,则匹配成功。这样,由 n个字符组成的字段被切分出来,作为一个词。如果词典中不存在这样的字段,则匹配失败,将字段末尾去一个汉字,剩下的 n-1 个字符作为新的字段,再进行匹配,如此重复,直到匹配成功为止。
例如句子“我们是中华人民共和国的公民”,假设字典的最长词长为 7,它的正向最
大匹配法的分词流程如下表 所示。
 
分词过程实例
Process of segmentation
标准数据库的创建:
建立地址标准数据库系统是地址匹配的前提工作,需要将采集的城市地址按照确定
的标准地址模型进行标准化。
在创建的标准地址库中,分别存储地址的行政区划部分和详细街道地址部分。
 
中文地址的组成复杂多样,对比标准地址模型,可能存在地址表达不完整、残缺的情况。(设定:1道路名,2门牌号,3住宅小区,4楼牌号,5建筑物。)例如地址址武汉市青山区工业一路21号,是1(道路名)+2(门牌号)的模式,没有3、4、5三种地址要素。因此需要定义规则以便于后面地址匹配的进行。如下表所示。
 
 
 
 
地址匹配规则树
Geocoding rule tree
 
对于存在语义歧义的模糊地址,可以利用栈存储所有歧义情况,并构建一棵歧义地址树,按照深度优先原则遍历该树,直至查询到满足规则的地址记录为止。当查询失败时,可以读取栈中上一层的歧义地址继续查询。虽然一定程度上加大了查询的复杂度,但可以比较好的应对歧义模糊地址的匹配问题。
 
例如,地址“江汉墨水湖东侧12号楼B座301室”,首先,行政区划部分应该是“江汉区”,缺少地址通名“区”;“墨水湖”表述有歧义,可能是墨水湖路,也可能是墨水湖小区;另外,“东侧、B座301室”为多余信息,应该去掉。以此地址为例,算法的具体步骤如下:
1)判断字符串中是否存在行政区划。通过搜索标准地址库中行政区划表,查找到“江汉”一词与记录“江汉区”模糊匹配,将其分割出来。
2)对剩余字符串“墨水湖东侧12号楼B座301室”进行地址分词匹配。通过匹配规则树,限定了搜索字段为1(道路名)、3(住宅小区名)、5(建筑物)。调用最大正向匹配算法,查询到“墨水湖”分别与1墨水湖路和3墨水湖小区两个字段模糊匹配,因此产生语义歧义。并将1与3先后入栈,栈顶为3,故先将“墨水湖”匹配到3,查询规则库,没有满足条件的规则,故对“东侧12号楼B座301室”继续进行分词匹配。通过规则树,3后面只有4。继续调用最大匹配算法,在标准地址库中的4字段中查询剩余子串 “东侧12号楼B座301室”,无匹配结果。

故重新选取栈顶元素,将“墨水湖”匹配到1,查询规则库无满足的规则,故继续分词匹配。查询规则树并确定备选字段为2、3、4、5。搜寻字符串“东侧12号楼B座301室”,查找到“12号楼”,与4字段有一条匹配记录,将该词记入分词结果词组。此时查询规则库,找到规则三满足条件。分词匹配算法完成。
运算结果:对于模糊地址“江汉墨水湖东侧12号楼B座301室”,分词结果为“墨水湖、12号楼”,在标准地址库中找到了地址记录“墨水湖东路15号12号楼”。
 

Java实现正向最大匹配算法的分词算法

package com.demo;
import java.io.*;
import java.util.ArrayList;
/**
 * 正向最大匹配算法的分词算法.
 */
public class MM {
    String Maxlen;
    ArrayList<String> dict;
    String s;
    String subs;
    String result = "";
    public MM() {
        dict = new ArrayList<String>();
        dict.add("山西");
        dict.add("大同");
        dict.add("云冈");
        dict.add("校西街");
        dict.add("小区");
    }
    //最大正向匹配算法
    public String MMwork(int len, String sen) {
        while (sen.length() != 1) {
            while (true) {
                if (len < sen.length()) {
                    s = sen.substring(0, len);
                } else {
                    len = sen.length();
                    s = sen.substring(0, len);
                }
                if (dict.contains(s) || len == 1) {
                    result = result + s + "/";
                    break;
                } else {
                    len = len - 1;
                }
            }
            sen = sen.substring(len);
            len = 3;
        }
        result = result + sen + "/";
        return result;
    }
    public static void main(String[] args) {
        MM mm = new MM();
        System.out.println(mm.MMwork(3,"山西省大同市云冈区校西街201号"));
    }
}

参考链接:https://blog.csdn.net/yin5627/article/details/78231914

try-with-resource语法糖

JDK7及其之后的资源关闭方式

public static void main(String[] args) {
    FileInputStream inputStream = null;
    try {
        inputStream = new FileInputStream(new File("test"));
        System.out.println(inputStream.read());
    } catch (IOException e) {
        throw new RuntimeException(e.getMessage(), e);
    } finally {
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {
                throw new RuntimeException(e.getMessage(), e);
            }
        }
    }
}
public static void main(String[] args) {
    try (FileInputStream inputStream = new FileInputStream(new File("test"))) {
        System.out.println(inputStream.read());
    } catch (IOException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
}

1、当一个外部资源的句柄对象实现了AutoCloseable接口,JDK7中便可以利用try-with-resource语法更优雅的关闭资源,消除板式代码。
2、try-with-resource时,如果对外部资源的处理和对外部资源的关闭均遭遇了异常,“关闭异常”将被抑制,“处理异常”将被抛出,但“关闭异常”并没有丢失,而是存放在“处理异常”的被抑制的异常列表中。

中风,脑卒中

脑卒中,就是大家常说的中风,是我们国家致死率最高的疾病,在我们身边有700多万卒中病人,其中500多万因卒中残疾,有超过100万人因卒中死亡。
很多人说,得了脑中风非死即残,对也不对,如果能在发病后的【4.5小时】内进行溶栓治疗,就能够让脑部血流恢复正常,抢救脑部缺血和神经元坏死,挽留病人的生命,并且避免残疾!
目前我国计划在2020年前建设2000家卒中中心,覆盖80%的省市和60%以上的县区,并要求在患者入院1小时内完成溶栓。但是令人心痛的事实是,我们国家只有20%的病人在发病3小时内到达急诊,只有2%的病人接受了溶栓治疗。
当发生卒中时,每分钟都会有1900多万个神经元死亡,且难以再生。因此时间就是生命,一旦发病超过4.5小时的黄金时间窗,无论多少金钱都无法挽回病人丧失的功能甚至生命。
接下来的内容请大家谨记:
作为子女我们可以做到的是:
告知父母如何识别脑中风:
很多症状都是卒中的前兆,当老人告诉你有头晕、头痛、乏力等不舒服时,让他做以下三个动作:
【绕口令】:不能清晰吐字
【平举双手】:一侧肢体乏力
【做表情】:伸舌歪斜、眼眉不对称、不能皱眉
当出现以上【任一症状】时,立即拨打120急救电话,⚠️切记不要服用任何【急救药】——如降压药可能会加重脑部缺血,阿司匹林可能会加重脑出血。
如果你的家人有高血压、高血脂、肥胖或吸烟史,请一定要教会他们身体不舒服时用以上三个动作排除脑卒中。
注【卒中中心】(图五),了解离家最近的卒中中心位置,关注方法在图五
了解脑卒中危险因素:
高血压、高血脂、糖尿病、
房颤(年轻人脑卒中的重要原因)
吸烟、缺乏锻炼、肥胖
70%的脑卒中是可以预防的,为了家人和自己的健康,不要忘记定期体检、积极的治疗原发疾病,坚持更健康的生活方式!