Redian新闻
>
紧急求救: SMOTE-NC 处理categorical data for unbalanced class!!!
avatar
紧急求救: SMOTE-NC 处理categorical data for unbalanced class!!!# DataSciences - 数据科学
d*v
1
思想开放、文化提升,人类的自由意志越发开放。从曾经的媒妁之言、包办婚姻,到如
今的恋爱自由、不婚主义,婚姻不再成为固定的捆绑,而是一种个人选择。但是,放之
古代,结婚不仅是关乎个人,更关系到家族颜面,甚至连“政府机关”都要出面解决“
剩男剩女”的问题。
寿命短、人口少是古时候面临的重要问题。没有人种地就没有粮吃,没有人当兵就无法
稳定国土,所以“不婚主义”和“丁克家庭”在古代中国是万万不允许的。按照《礼记
》记载,男女的适婚年龄通常在男子二十岁、女子十五岁,但实际上,历朝历代并非按
照这样的规定,通常男子十五六岁、女子十三四岁就已经准备结婚了。
不过当时可没有互联网,也没有那么多的相亲节目供大家搜索单身男女的信息,所以媒
婆就成了热度最高的信息来源。有“国营”的媒人称之为“官媒”,也有“民营”的媒
人称之为“私媒”。私媒比较好理解,就是单纯的保媒拉线,影视剧中常见的媒婆大多
是这样的角色。
但官媒就有点让“剩男剩女”瑟瑟发抖了,所谓官媒可就不是相互介绍那么简单了。他
们所做的并非是中介工作,而是“强制逼婚”。如果看到有二十岁的男孩或十七岁的女
孩还没出嫁,就立马找到条件相似的人家进行分配。
虽然看起来男女双方都被逼婚,但大多数“剩男”还是比较渴望这一点的,甚至有些人
争相给官家送聘礼,希望解决自己的对象问题。毕竟当时社会,男人三妻四妾的行为非
常普遍,所谓“饱汉子难知饿汉子饥”,大户人家左拥右抱,但普通百姓就要面对男女
比例不对等的现实。如此一来二去,“抢媳妇”就成了单身男子较为热衷的项目。
其实早期的中国对婚姻问题还是比较开放的,甚至秦汉时节每年还有给单身男女“联谊
”的节日和场所。只不过封建礼数和社会结构最终将生育问题放在了婚姻之前。因此在
很多朝代中,官府还是选择以强硬态度帮助人们成家。甚至在南北朝时期,婚姻已经与
法律捆绑,如果女子到了应当出嫁的年龄还是单身,不仅是脸面问题,家人甚至要被抓
avatar
f*6
2
SMOTE只能处理continuous data, 对于categorical data 要用SMOTE-NC,google了很
多就是没有找到相关可行的code。希望好心人能share 一下。
谢谢!!
avatar
E*e
3
这个我做过。你需要知道怎么计算category 变量的距离。好像有篇文章,就是原作者
的一篇介绍SMOTE文章谈到这个怎么处理categorical变量。
但是这个SMOTE对于实际问题也许效果不好。学校里做作也许能灌两篇文章。

:SMOTE只能处理continuous data, 对于categorical data 要用SMOTE-NC,google了很
:多就是没有找到相关可行的code。希望好心人能share 一下。
avatar
f*6
4
是machine learning的课程项目。
我们的数据是unbalanced,大部分是continuous, 只有少数几列是categorical的,因为
我们要用到logistic regression, svm, 所以把categorical都转化为dummy variable,
结果在用SMOTE的时候这些dummy cariable都变成0到1之间的数据。
现在两个问题:
1)原本的class组成是10700 class-1, 1450 class-0;用完SMOTE, 数据变成 5500
class-1, 4100 calss-0; 这些categorical的数据不能单独拿出来呀? 本身SMOTE用的
就是点到点之间的距离来cluster这些点的;
2)现在想死马当活马来用,想把 《0.5 的归于0;》=0.5的归为1。

了很

【在 E**********e 的大作中提到】
: 这个我做过。你需要知道怎么计算category 变量的距离。好像有篇文章,就是原作者
: 的一篇介绍SMOTE文章谈到这个怎么处理categorical变量。
: 但是这个SMOTE对于实际问题也许效果不好。学校里做作也许能灌两篇文章。
:
: :SMOTE只能处理continuous data, 对于categorical data 要用SMOTE-NC,google了很
: :多就是没有找到相关可行的code。希望好心人能share 一下。

avatar
x*t
5
原paper里讲了一种实现:
Populate the synthetic sample: The continuous features of the new synthetic
minority
class sample are created using the same approach of SMOTE as described
earlier. The
nominal feature is given the value occurring in the majority of the k-
nearest neighbors
如果已经做了dummy variable,SMOTE之后出来0 到 1之间的值,那就应该把最大的变1
,其他全部归零。

variable,

【在 f*******6 的大作中提到】
: 是machine learning的课程项目。
: 我们的数据是unbalanced,大部分是continuous, 只有少数几列是categorical的,因为
: 我们要用到logistic regression, svm, 所以把categorical都转化为dummy variable,
: 结果在用SMOTE的时候这些dummy cariable都变成0到1之间的数据。
: 现在两个问题:
: 1)原本的class组成是10700 class-1, 1450 class-0;用完SMOTE, 数据变成 5500
: class-1, 4100 calss-0; 这些categorical的数据不能单独拿出来呀? 本身SMOTE用的
: 就是点到点之间的距离来cluster这些点的;
: 2)现在想死马当活马来用,想把 《0.5 的归于0;》=0.5的归为1。
:

avatar
m*r
6
hi, 有答案了吗 ? 我以前碰到过一样的问题,一直没有合适的方法。具体说,就是美
国50个州,怎么把州变成数字,让机器算?
想不到smote这么牛b的算法,也束手无策 . 我以为这种问题早就解决了。

【在 f*******6 的大作中提到】
: SMOTE只能处理continuous data, 对于categorical data 要用SMOTE-NC,google了很
: 多就是没有找到相关可行的code。希望好心人能share 一下。
: 谢谢!!

avatar
f*6
7
在没有把categorical data 变成 dummy variable的时候,用WEKA 能够生成出具体的
哪一个州。但是WEKA,R studio 产生的结果不同。weka只是double minority class,
保持majority class. 但是R studio 能够产生基本45%,55%的两个classes. 不知道哪
个是对的。

【在 m******r 的大作中提到】
: hi, 有答案了吗 ? 我以前碰到过一样的问题,一直没有合适的方法。具体说,就是美
: 国50个州,怎么把州变成数字,让机器算?
: 想不到smote这么牛b的算法,也束手无策 . 我以为这种问题早就解决了。

avatar
E*e
8
SMOTE 不复杂啊。你读原作者的文章,你可以CODE 出来的啊。当然原作者的终极版有
优化。
我同时用R 和 PYTHON code 了。但是最终实际效果在risk model 上表现不好。实际上
我也不看好这个方法。
至于CATEGORICAL 变量,可以算距离的,不需要处理成DUMMY 变量。然后用最近铃算法
,取majority vote.

:在没有把categorical data 变成 dummy variable的时候,用WEKA 能够生成出具体的
:哪一个州。但是WEKA,R studio 产生的结果不同。weka只是double minority class
, 保持majority class. 但是R studio 能够产生基本45%,55%的两个classes. 不知道
哪个是对的。
avatar
m*r
9
思路有些乱, 说写具体的吧, 比如你的数据集有地区这个变量,该变量有四个level,
分别是东南西北。 你要建模型,甭管什么模型,能说说smote能把东南西北变成数字
吗??

,

【在 f*******6 的大作中提到】
: 在没有把categorical data 变成 dummy variable的时候,用WEKA 能够生成出具体的
: 哪一个州。但是WEKA,R studio 产生的结果不同。weka只是double minority class,
: 保持majority class. 但是R studio 能够产生基本45%,55%的两个classes. 不知道哪
: 个是对的。

avatar
m*r
10
hi, 请问有现成的什么包 什么函数干这个吗? 谢谢。
民科,看不懂文章。
还是我上面那个具体例子,四个地区,东南西北中,请问如何转化成数字呢? 就算按
你说的算距离,比如把东南应该结合在一起,西北应该结合在一起,那也没法变成数字
啊。 当然这是你可以上dummy, 我觉得这只是个权宜之计。 不是通用方法。

体的
class

【在 E**********e 的大作中提到】
: SMOTE 不复杂啊。你读原作者的文章,你可以CODE 出来的啊。当然原作者的终极版有
: 优化。
: 我同时用R 和 PYTHON code 了。但是最终实际效果在risk model 上表现不好。实际上
: 我也不看好这个方法。
: 至于CATEGORICAL 变量,可以算距离的,不需要处理成DUMMY 变量。然后用最近铃算法
: ,取majority vote.
:
: :在没有把categorical data 变成 dummy variable的时候,用WEKA 能够生成出具体的
: :哪一个州。但是WEKA,R studio 产生的结果不同。weka只是double minority class
: , 保持majority class. 但是R studio 能够产生基本45%,55%的两个classes. 不知道

avatar
f*6
11
我有一个州的变量,总共10个不同的州。
我后面有个回复,没有变成DUMMY VARIABLE的时候,SMOTE是变成具体的州了,这个是
我后面又尝试的方法。
一开始的问题是:变成DUMMY VARIABLE后用SMOTE,州出来的不是0,1而是0-1之间的数
据。

level,

【在 m******r 的大作中提到】
: 思路有些乱, 说写具体的吧, 比如你的数据集有地区这个变量,该变量有四个level,
: 分别是东南西北。 你要建模型,甭管什么模型,能说说smote能把东南西北变成数字
: 吗??
:
: ,

avatar
f*6
12
“ 至于CATEGORICAL 变量,可以算距离的,不需要处理成DUMMY 变量。然后用最近铃
算法
categorical变量应该不允许单独领出来按照这种最近令算法来吧?整个dataset是有
continouous 和 categorical。
打算用logistic regression, SVM来train model. 想问一下:你在处理mix dataset
的时候,都不需要把categorical变量变成dummy variable吗?
体的
class
avatar
E*e
13
你要了解smote,你必须去看原作者的文章。 原作者用 value distance metric 来算
noncontinuous variable的距离, 然后跟continuouvariable 以起算距离。 这个距离
是用来选出对应某个样品的最近的几个邻居, 然后算出fake的那个样品,么就是每个
变量都有一个新的值, 然后在用majority vote 来制定这个faked的样品是1还是0.
不需要非得把categorical variable 处理成 dummy varaible。 比如50个州, 你用49
个dummy variable? 不麻烦。 你可以group 一些。 然后用log of odds order them
, 如果可以的话。 要是不能order ,但是还是要放进去, 那这能dummy了。 但是如
果不能order 新的group, 那么这个variable 也就不重要, 或者没有预测力。
里边谈到怎么算categorical 变量的距离, 酵素

dataset

【在 f*******6 的大作中提到】
: “ 至于CATEGORICAL 变量,可以算距离的,不需要处理成DUMMY 变量。然后用最近铃
: 算法
: categorical变量应该不允许单独领出来按照这种最近令算法来吧?整个dataset是有
: continouous 和 categorical。
: 打算用logistic regression, SVM来train model. 想问一下:你在处理mix dataset
: 的时候,都不需要把categorical变量变成dummy variable吗?
: 体的
: class

avatar
f*6
14
我又仔细看了那个文章,我眼拙,没有找到categorical 通过 VDM 计算出距离后再与
continuous一起来计算,能帮我找找吗?我想看看如何相加的。谢谢!

49
them

【在 E**********e 的大作中提到】
: 你要了解smote,你必须去看原作者的文章。 原作者用 value distance metric 来算
: noncontinuous variable的距离, 然后跟continuouvariable 以起算距离。 这个距离
: 是用来选出对应某个样品的最近的几个邻居, 然后算出fake的那个样品,么就是每个
: 变量都有一个新的值, 然后在用majority vote 来制定这个faked的样品是1还是0.
: 不需要非得把categorical variable 处理成 dummy varaible。 比如50个州, 你用49
: 个dummy variable? 不麻烦。 你可以group 一些。 然后用log of odds order them
: , 如果可以的话。 要是不能order ,但是还是要放进去, 那这能dummy了。 但是如
: 果不能order 新的group, 那么这个variable 也就不重要, 或者没有预测力。
: 里边谈到怎么算categorical 变量的距离, 酵素
:

avatar
E*e
15
pm你的信箱, 我明天在公司里给你发几个paper。

【在 f*******6 的大作中提到】
: 我又仔细看了那个文章,我眼拙,没有找到categorical 通过 VDM 计算出距离后再与
: continuous一起来计算,能帮我找找吗?我想看看如何相加的。谢谢!
:
: 49
: them

avatar
E*e
16
他的文章没有谈到具体怎么用 VDM, 他说的是 改版的VDM。 你可以搜索这个吗。 有
一个ppt, 里边有pseudo code。 连续变量,就是欧拉距离, 非连续变量,就是 VDM
。 欧拉距离要scale一下, 然后treat equally。
总的来说,你需要通读几篇相关的文章, 自己写code。 据我所知, 没有现成的code
可以用。

【在 f*******6 的大作中提到】
: 我又仔细看了那个文章,我眼拙,没有找到categorical 通过 VDM 计算出距离后再与
: continuous一起来计算,能帮我找找吗?我想看看如何相加的。谢谢!
:
: 49
: them

avatar
f*6
17
[email protected]/* */
谢谢!!

【在 E**********e 的大作中提到】
: pm你的信箱, 我明天在公司里给你发几个paper。
avatar
f*6
18
这次好像其他项目组的人用经纬度一类的可以数字化的东西来划分州。。

【在 m******r 的大作中提到】
: hi, 有答案了吗 ? 我以前碰到过一样的问题,一直没有合适的方法。具体说,就是美
: 国50个州,怎么把州变成数字,让机器算?
: 想不到smote这么牛b的算法,也束手无策 . 我以为这种问题早就解决了。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。