<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[haidixipan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/haidixipan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; haidixipan]]></copyright><item><title><![CDATA[算法中的小技巧trick汇总]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/122580381</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/122580381</guid><author>haidixipan</author><pubDate>Wed, 19 Jan 2022 16:15:30 +0800</pubDate><description><![CDATA[1. 数字&amp;（数字-1）可以将数字的二进制表现形式去掉最低一位的“1”

2.数组下标，可以被利用起来进行复杂度位O(n）的排序，前提是要排序的数字要在一定范围内，且空间复杂度没有要求

3.判断一个单项链表是否有环，可以设计双指针便利整个链表，一个步进1，一个步进2，二者如果二者相遇，那么就可以证明有环，否则一直到结束都没有相遇则证明无环

证明：步进1的假设位小A，步进2的假设为小B，小B先跑进环（跑进后就一直在环里循环了），如果小B跑了N步，后小A进环，则他俩能否相遇呢？答案是肯定的，小B跑的]]></description><category></category></item><item><title><![CDATA[关于卷积的思考]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/121270606</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/121270606</guid><author>haidixipan</author><pubDate>Thu, 11 Nov 2021 16:29:29 +0800</pubDate><description><![CDATA[经常看人工智能相关书籍介绍卷积。

上来给如下面一行公式



然后在给出下面一段代码



怎么看怎么不觉得这段代码和上面的公式有任何联系。

实际上公式一般给出的是时域上的卷积，代码给出的是频域上的乘积。作者可能连这层意思还没搞懂。

时域与频域经过傅里叶变换可以相互转换，所以二者本质上是一个东西，而处理的数据不很相同。对于深度学习计算说，不管是图像、文本、还是音频，我们容易拿到的是他们的离散数据信息，而其本质上属于频域数据（非连续）因此，在做卷积时对应的也是频域乘积操作。

这个过程本质上是对数据进行]]></description><category></category></item><item><title><![CDATA[38.leetcode38 Count and Say]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/107044614</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/107044614</guid><author>haidixipan</author><pubDate>Tue, 30 Jun 2020 16:13:34 +0800</pubDate><description><![CDATA[本题难度为easy,给了5个字符串，根据规律推测出后续行数的字符，题目要求输入行数返回当行字符。答案里面讲输入行数分成了3类，

1.如果为0返回空字符

2.如果小于等于5直接返回已有字符

3.大于5后开始每行按照规律计算，直到输入行数并返回值

38.Count and Say

Easy

12839542Add to ListShare

The count-and-say sequence is the sequence of integers with the first five term.]]></description><category></category></item><item><title><![CDATA[25.leetcode 25  Reverse Nodes in k-Group]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/106784273</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/106784273</guid><author>haidixipan</author><pubDate>Tue, 16 Jun 2020 11:46:41 +0800</pubDate><description><![CDATA[本题是一个hard链表翻转问题，关键点如下：

1.子链表翻转，需要有一个头节点指引返回结果的head

2.题目有空间要求，合适的做法是先计数再做子链表翻转

代码如下：


# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class So]]></description><category></category></item><item><title><![CDATA[37.Sudoku Solver]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/106691633</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/106691633</guid><author>haidixipan</author><pubDate>Thu, 11 Jun 2020 17:02:24 +0800</pubDate><description><![CDATA[这道题是一道数独结题，是36题的延伸。

考点一：需要有三个集合分别存储每行、每列、每个小九宫格已经存在的数字供后续判断是否要填充

考点二：判断有效性，需要有一个函数判断填充的数字是否有效，影响范围只有上述三个字典，因此需要遍历0~9，找到和三个字典里的数字不冲突的第一个数字即可。（找到第一个合适的就可以，不用考虑是否会对其他位置的数字有影响）

考点三：提升性能学会使用递归

上代码：

import collections
class Solution(object):
  def solveSu..]]></description><category></category></item><item><title><![CDATA[LEETCODE刷题榜]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/106659761</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/106659761</guid><author>haidixipan</author><pubDate>Wed, 10 Jun 2020 10:14:33 +0800</pubDate><description><![CDATA[2.leetcode2 Add Two Numbers链表相加

3.leetcode3 Longest Substring Without Repeating Characters

4.leetcode4 Median of Two Sorted Arrays

5.leetcode 5. Longest Palindromic Substring最长回文子串6.leetcode

6. ZigZag Conversion

7.leetcode 7. Reverse Integer

8.leetco]]></description><category></category></item><item><title><![CDATA[20.推荐召回算法之k近邻算法：局部敏感哈希、kdtree、balltree算法分析与比较]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/84956916</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/84956916</guid><author>haidixipan</author><pubDate>Sat, 29 Dec 2018 18:01:44 +0800</pubDate><description><![CDATA[推荐系统里面临的比较大的问题是1.召回 2.排序。召回是从百万、千万甚至上亿的候选中找到用户可能喜欢的商品（可以不那么精细），排序一般是设计怎样排序才能使点击率更高。

考虑一个新闻推荐场景，假设一个用户曾经看过美妆、育儿、明星类的新闻，怎样在ta下一刷中把用户可能感兴趣的找到并推给用户呢？

比较简单的做法是，将每条新闻分一个类（如体育、美妆、育儿、八卦、明星、电影），根据分类将候选召回再排序。...]]></description><category></category></item><item><title><![CDATA[19.有哪些文本表示模型，他们各有什么优缺点]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/84775492</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/84775492</guid><author>haidixipan</author><pubDate>Tue, 04 Dec 2018 13:58:33 +0800</pubDate><description><![CDATA[1.词袋模型/N-gram

每篇文章表示成一个N维向量，每一维度表示一个单词，值为这个词对这篇文章的重要程度，计算公式为：

TF-IDF(t,d) = TF(t,d)*IDF(t)

其中，TF(t,d)为单词t在文档d中出现的频率，IDF(t) = log(文章总数/(包含单词t的文章总数+1)) ，IDF公式可理解为如果一个词出现的文章数越多那么说明它越是一个通用词，通用词对文档内容贡献度...]]></description><category></category></item><item><title><![CDATA[18.如何验证求目标函数梯度功能的正确性]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/84400668</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/84400668</guid><author>haidixipan</author><pubDate>Fri, 23 Nov 2018 18:04:20 +0800</pubDate><description><![CDATA[给定优化问题：

,假设已经用代码上线了求目标函数值和求目标哈桉树梯度的功能，请问，如何利用求目标函数值的功能来验证求目标函数梯度的功能是否正确？

根据梯度的定义，目标函数的梯度向量为：，其中每一个元素为目标函数(优化函数)对这一模型参数求的偏导数。

回顾一下偏导数的定义：

 ，即函数L(\theta )在这点的斜率，ei为维度与\theta 一样的向量，只有在i这个维度为1，其余为0。

...]]></description><category></category></item><item><title><![CDATA[17.LDA与word2vec区别]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/84299039</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/84299039</guid><author>haidixipan</author><pubDate>Wed, 21 Nov 2018 19:46:41 +0800</pubDate><description><![CDATA[LDA涉及到的数据知识不是一般的多，这里不做详细阐述，可参考如下博客：https://blog.youkuaiyun.com/v_july_v/article/details/41209515

总的来说LDA与word2vec区别如下：

区别
			LDA
			word2vec
		输出
			文档-主题概率分布矩阵和主题-词概率分布矩阵
			词对应的词向量
		训练方法
			利用文档中单词的贡献关...]]></description><category></category></item><item><title><![CDATA[16.Word2Vec是如何工作的]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/84234277</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/84234277</guid><author>haidixipan</author><pubDate>Mon, 19 Nov 2018 11:48:32 +0800</pubDate><description><![CDATA[Word2Vec是一种比较常用的词嵌入模型，它实际是一种浅层的神经网络，有两种网络结构，分别是CBOW和skip-gram.CBOW的目标是根据上下文出现的词语来预测当前词的生成概率；而skip-gram是根据当前词来预测上下文中各词的生成概率，看起来两种网络结构是互为镜像的，如下图。



    由上图，两种网络模型都可以表示成输入层、映射层与输出层。w(t)为当前词，w(t-2)、w(t-1...]]></description><category></category></item><item><title><![CDATA[15.xgboost步长如何设定]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/84135836</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/84135836</guid><author>haidixipan</author><pubDate>Fri, 16 Nov 2018 11:33:53 +0800</pubDate><description><![CDATA[xgboost的步长即是parameter里的eta(learning rate),官方对它的定义如下：

eta [default=0.3, alias: learning_rate]

Step size shrinkage used in update to prevents overfitting. After each boosting step, we can directly get...]]></description><category></category></item><item><title><![CDATA[14:回归类问题阈值如何确定]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/84073516</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/84073516</guid><author>haidixipan</author><pubDate>Wed, 14 Nov 2018 20:33:19 +0800</pubDate><description><![CDATA[ 在用逻辑回归做潜在用户挖掘时,阀值(Z)的选取是一个头疼的问题。取太高，查全率虽然高了，但是查询条件过于严格，挖掘出的潜在用户过少。取的太低，资源浪费的太多。对于一般的营销而言，这个问题很好解决，只要按照预算，从高往下选取就可以了。但对于其他没有预算约束的情况就比较麻烦。
希望下面的公式可以给予一些启发
Z=Ln（(qc)/(QC)）
q-发生显性结果的先验概率，比如信用卡用户发生违约的以往概率...]]></description><category></category></item><item><title><![CDATA[13.解决样本不均衡问题]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/83824339</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/83824339</guid><author>haidixipan</author><pubDate>Wed, 07 Nov 2018 16:05:02 +0800</pubDate><description><![CDATA[实际工作中经常遇到样本不均衡问题，比如某P2P平台预测用户信誉，1为信誉良好，0为有违约记录，样本采集下来为1的样本占绝大多数（比如90%），此时如果你用分类模型，目标函数是准确率，那么即使你全部预测为1，那么准确率也为90%，会极大的影响模型效果。

因此在我们在训练模型之前，先要处理样本均衡的问题，总结方法如下：

1.上下采样：上采样为增加小众样本数量（一份数据复制多份），下采样为减少大众样...]]></description><category></category></item><item><title><![CDATA[9:极大似然估计]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/83584166</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/83584166</guid><author>haidixipan</author><pubDate>Wed, 31 Oct 2018 15:03:38 +0800</pubDate><description><![CDATA[极大似然估计，也叫最大似然估计，是参数估计的一种方法，一般用来推测数据分布函数相关参数。

极大似然估计步骤：

1.先假设数据属于某一分布（正太分布、泊松分布等），得到概率分布函数

2.对概率分布函数求导，另导数等于0（若有多处为0，选另样本点概率最大的参数），根据样本点数据，求参数值

为什么叫似然：对于无法穷举的问题，可根据样本数据估计实际分布，不是真实但近似真实

 

以下参考wiki...]]></description><category></category></item><item><title><![CDATA[8.softmax]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/83509136</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/83509136</guid><author>haidixipan</author><pubDate>Mon, 29 Oct 2018 17:12:33 +0800</pubDate><description><![CDATA[softmax为归一化函数，形式如下：

                                                  for j = 1, …, K.

如上式，softmax将元素限制在（0，1）范围内，特点是会凸显最大值并抑制远低于最大值的元素

 

Python使用numpy计算的示例代码:


import numpy as np
z = np.array([1....]]></description><category></category></item><item><title><![CDATA[6.随机森林,GBDT,Adaboost]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/83411469</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/83411469</guid><author>haidixipan</author><pubDate>Fri, 26 Oct 2018 11:20:34 +0800</pubDate><description><![CDATA[参考链接：https://blog.youkuaiyun.com/lyf52010/article/details/79822382

1.随机森林，属于bagging的一种（bagging与boosting的区别见：https://blog.youkuaiyun.com/haidixipan/article/details/83105932），即

     1）从样本中有放回的采样

     2) 从特征中随机选取...]]></description><category></category></item><item><title><![CDATA[6.LSTM]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/83344834</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/83344834</guid><author>haidixipan</author><pubDate>Wed, 24 Oct 2018 15:41:10 +0800</pubDate><description><![CDATA[LSTM(Long short-term memory)与RNN不同的是，在处理文本信息时，后者对间隔比较长的文本之间的关联处理的不够好，而LSTM网络相对RNN可以记住大段文本的有用信息。

LSTM构成：

1.遗忘门：首先决定丢弃哪些不重要的信息

2.输入门：决定要保留哪些新的信息

3.输出门：决定输出的状态

LSTM详细的介绍如下文（转自：http://colah.github.io...]]></description><category></category></item><item><title><![CDATA[5.RNN原理]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/83311486</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/83311486</guid><author>haidixipan</author><pubDate>Tue, 23 Oct 2018 20:33:58 +0800</pubDate><description><![CDATA[一.RNN 循环神经网络(RNN, Recurrent Neural Networks) 参考链接：https://blog.youkuaiyun.com/heyongluoyao8/article/details/48636251

构成：输入层，隐藏层（多个），输出层

特点：

1.隐藏层间的节点是可以互联的(包括自己和自己互联)

2.输出层可以作为隐藏层的输入

3.隐藏层可以跨层连接

用途：

...]]></description><category></category></item><item><title><![CDATA[3.ROC，准确率、召回率]]></title><link>https://blog.youkuaiyun.com/haidixipan/article/details/83275508</link><guid>https://blog.youkuaiyun.com/haidixipan/article/details/83275508</guid><author>haidixipan</author><pubDate>Mon, 22 Oct 2018 17:38:33 +0800</pubDate><description><![CDATA[ROC曲线一般用于分类问题，衡量分类模型好坏的一个指标

首先对样本进行如下划分


			 
			
			
			预测真
			
			
			预测假
			
		
			实际真
			
			
			TP（True Positive）
			
			
			FN(False Negative)
			
		
			实际假
			
			
			FP(False Positive)
			
	...]]></description><category></category></item></channel></rss>