自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程

  • 博客(1289)
  • 资源 (4)
  • 收藏
  • 关注

原创 【因果推断python】56_The Difference-in-Differences 2

从图中可以很清楚地看出,右侧的反事实应该是一条以 10 为界的直线,但它却是一条向下倾斜的直线,因为它在作为对照的早期治疗组中看到的就是这条直线。通过观察这个项,我们可以发现,如果效应的大小随时间的推移而增加(就像我们的例子一样),我们就会产生向下的偏差;如果效应的大小随时间的推移而减少,我们就会产生向上的偏差。由于我们的治疗时间不同,早期治疗单位被用作晚期治疗单位的对照,这导致模型估算出非常奇怪的反事实趋势。然后,我们可以将这一列作为一个类别,这样我们的模型就能估算出相对于治疗的每个阶段的预期安装次数。

2024-06-25 01:03:39 603

转载 【Linux备忘速查8】磁盘、逻辑卷和故障修复

2024-06-25 01:03:09 30

转载 【Linux备忘速查7】系统管理

2024-06-25 01:03:02 20

原创 【因果推断python】54_效应异质性和非线性带来的挑战2

在这一区域,根据我们为市场营销所做的相同论证,治疗那些在感染 COVID19 后死亡概率较高的人群是有意义的,而这些人群正是我们之前提到的群体。B,估计收入较低的客户。在这种转换后的数据中,"A 对价格上涨的敏感度低于 B "的说法就更有意义了,因为它现在不取决于我们在曲线上所处的位置。例如,在上面的例子中,尽管客户 B 看起来对价格上涨不那么敏感,但你不知道如果你给这个细分市场分配超过 10BRL 的更高价格,情况是否还会如此。事实上,这是一个在商业中不断出现的问题,尤其是在治疗是连续变量的情况下。

2024-06-24 21:59:56 1073

原创 【因果推断python】53_效应异质性和非线性带来的挑战1

由于缺乏基本事实,在单位层面预测治疗效果极为困难。因为我们只能观察到一个潜在结果 T(t),我们无法直接估计它。相反,我们必须依靠目标变换(也可以看作是设计巧妙的损失函数)来估计条件治疗效果,但只能是期望值。但这并不是唯一的挑战。由于治疗效果非常不稳定,其估计值通常会有相当大的噪声。这对于我们想根据治疗效果来划分治疗单位的应用(比如我们想进行个性化治疗分配)来说,会产生巨大的实际影响。现在我们将看到,有时如果我们不直接估算 CATE,而是关注另一个通常方差较小的替代目标,就能获得更好的治疗效果分割。

2024-06-24 21:59:51 1203

转载 【Linux备忘速查6】文件系统和文件查找

2024-06-24 21:59:36 24

转载 【Linux备忘速查5】Vim文本编辑器

2024-06-24 21:59:33 23

原创 【因果推断python】51_去偏/正交机器学习3

例如,假设您在上面的例子中发现对某位顾客的处理效应为 2,这意味着如果您将折扣提高 1 个单位,您对该顾客的销售额就会增加 2 个单位。在治疗效果为 2 时,打 20 折是合理的,但在治疗效果为 0.5 时,打 20 折就不再有利可图了。例如,让我们假设一个非常简单的数据生成过程(DGP),其中 discont 对销售额的影响是非线性的,但却是通过平方根函数产生的。这意味着,是的,非参数双 ML 会发现随着治疗量的增加,治疗效果会变小。但是,不,它不会发现非线性治疗效果,而是局部线性治疗效果。

2024-06-23 00:29:29 875

原创 【因果推断python】52_去偏/正交机器学习4

我们将通过以下方法获得这些残差:首先,对所有处理模型进行预测(请记住,我们在训练步骤中使用了 5 倍交叉预测),然后将 5 个模型的预测平均为一个单一预测,最后从使用该模型集合预测的价格中减去我们之前生成的反事实价格。所以,这就是我们要做的。这样就更容易看出,当我们提高价格时,有些单位的销售量会急剧下降,而有些单位则不会。首先,让我们从传统的双重/偏差-ML 方案开始,在这种方案中,我们有治疗和结果的残差版本。首先,也是最重要的一点是,当所有 ML 技术被天真地应用于因果推理时,都会遇到同样的问题:偏差。

2024-06-23 00:29:24 1137

转载 【Linux备忘速查4】权限管理

2024-06-23 00:28:50 27

转载 【Linux备忘速查3】文件与目录管理

2024-06-23 00:28:44 19

转载 【Linux备忘速查2】帮助命令

2024-06-22 23:01:45 23

转载 【Linux备忘速查1】Linux基础知识

2024-06-22 22:59:44 22

原创 【因果推断python】50_去偏/正交机器学习2

现在来看看过度拟合 M 的问题,注意它对 T 方差的解释将超过它应该解释的方差。因此,处理残差的方差会小于其应有的方差。这就好比几乎每个人的待遇都是一样的。如果每个人的治疗水平都相同,那么就很难估计不同治疗水平下的情况。另外,当 T是 X 的确定性函数时,也会出现这种情况,这意味着违反了正向性。我们的想法是,ML 模型具有超强的灵活性,因此在估计 Y和 T残差,同时仍然保持 FWL 风格的正交化。这意味着我们不必对协变量 X与结果 Y或协变因素与治疗之间的关系作出任何参数假设,以获得正确的治疗效果。

2024-06-22 11:43:26 1117

原创 【因果推断python】49_去偏/正交机器学习1

这篇论文叫做《治疗和因果参数的双重机器学习》(Double Machine Learning for Treatment and Causal Parameters),写这篇论文的人可真不少: 维克托-切尔诺茹科夫、丹尼斯-切特维里科夫、梅尔特-德米雷尔、埃斯特-杜夫洛(顺便说一下,杜夫洛与阿比吉特-班纳吉和迈克尔-克雷默 "因其减轻全球贫困的实验方法 "而获得了 2019 年经济学诺贝尔奖)、克里斯蒂安-汉森、惠特尼-纽威和詹姆斯-罗宾斯。我们可以直观地解释它们的工作原理,但它们似乎不是很通用。

2024-06-22 11:43:20 944

原创 【因果推断python】47_元学习1

元学习器是一种利用现成的预测机器学习方法来解决我们迄今为止一直在研究的相同问题的简单方法:估计CATE。同样,它们都不是最好的,每一个都有自己的弱点。通常,你只需要尝试许多不同的东西,看看什么最有效。之前,我们看到了如何转换结果变量Y以便我们可以将其插入预测模型中,并获得条件平均治疗效果(CATE)估计。这在我们不能治疗所有人并且需要对治疗进行优先排序的情况下非常有用,例如,当你想提供折扣但预算有限时。简单回顾一下,我们现在感兴趣的是发现治疗效果的异质性,即确定单位对治疗的不同反应。

2024-06-21 00:13:44 976

原创 【因果推断python】48_元学习2

T-learner试图通过强迫学习者首先拆分来解决完全放弃治疗的问题。我们将使用每个治疗变量一个模型,而不是使用单个模型。在二进制的情况下,我们只需要估计两个模型(因此命名为T):然后,在预测时,我们可以对每个治疗进行反事实预测,并得到CATE,如下所示。这是T-learner的示意图现在,理论已经讲够了。让我们把它编码起来。T-learner 在该数据集上的表现也不错。测试结果与使用 S-learner 时的结果差别不大。也许是因为处理的效果不是很弱。

2024-06-21 00:13:37 911

原创 【因果推断python】46_估计量2

我们尽最大努力提出该方法的连续版本,甚至最终得出了一些似乎可行的方法,但到目前为止,还没有可靠的理论框架来支持它。在那里,我们的任务是估计价格的需求弹性,以便我们可以更好地设定冰淇淋价格以优化我们的收入。再一次,我们用上面看到的公式转换我们的训练目标。也就是说,当干预效果随干预本身而变化时,我们可能会错误地认为单位具有相同的干预反应曲线,因为它们对干预的反应相同,但实际上它们只是接受了不同的干预量。事实上,它确实如此,我们可以通过一个类似的证明来证明它为什么起作用,就像我们在二进制案例中所做的那样。

2024-06-20 22:31:47 939

原创 【因果推断python】45_估计量1

到目前为止,我们已经了解了如何在干预不是随机分配的情况下对我们的数据进行纠偏,这会导致混淆偏差。这有助于我们解决因果推理中的识别问题。换句话说,一旦单位是可交换的,或者,就可以学习干预效果。但我们还远远没有完成。识别意味着我们可以找到平均的干预效果。换句话说,我们知道一种干预的平均效果。当然,这很有用,因为它可以帮助我们决定是否应该真正实施干预。但我们想要的不止这些。我们想知道是否存在对干预反应更好或更差的单位亚组。这应该允许一个更好的策略,我们只对那些将从中受益的人进行干预。

2024-06-20 22:31:41 1424

原创 【因果推断python】44_评估因果模型2

一开始它有这种奇怪的行为,累积弹性增加远离平均值,但随后它达到了一个点,我们可以处理大约 75% 的单位,同时保持几乎为 0 的相当不错的弹性。理想的曲线将在 Y 轴上从高处开始,然后非常缓慢地下降到平均弹性,这表示我们可以处理高百分比的单位,同时仍保持高于平均弹性。一旦我们有了理论上的随机曲线,我们就可以将其用作基准,并将我们的其他模型与它进行比较。不过,这是一条复杂的曲线,难以理解。换句话说,如果一个模型擅长对弹性进行排序,那么在前 k个样本中观察到的弹性应该高于在前 k+a 个样本中观察到的弹性。

2024-06-19 22:04:50 1056

原创 【因果推断python】43_评估因果模型1

你的模型的质量必须建立在比漂亮的理论更具体的东西上。看到预测与实际发生的情况相符,这让人放心。在工业界中应用这些技术时,我们会一次又一次地被问到为什么我们的模型更好,为什么要在生产中替换当前的模型,或者为什么它不会惨遭失败。不是一个确定的模型,但它在实践中有效,并且很具体,我希望它能够从类似于机器学习的训练-测试范式中进行因果推理。请记住,就好像每个实体都有潜在的,用从干预到结果的估计线的斜率表示的反应,但我们无法衡量它。不幸的是,在因果推理的情况下,我们如何实现像训练-测试范式这样的东西并不明显。

2024-06-19 22:04:42 1319

原创 【因果推断python】42_异质干预效应2

对于每一天,我们都知道是否是工作日,制作冰淇淋的成本是多少(您可以将成本视为质量的代表)以及当天的平均温度。然后,我们有我们的干预手段、价格和我们的结果,即售出的冰淇淋数量。最后,通过我们的弹性预测,我们可以根据我们认为实体对干预的反应程度对它们进行分组。在上面的例子中,这是一个相当简单的预测,即我们为每个人预测常数值 β1^�1^。这无助于我们根据实体对干预的反应程度对实体进行分组的任务,因为每个人都得到相同的弹性预测。我们已经同意我们需要预测 δYiδTi������,遗憾的是这是不可观察的。

2024-06-18 00:14:38 900

原创 【因果推断python】41_异质干预效应1

在上一章中,我们简要介绍了机器学习模型。ML 模型是用于我所说的预测的工具,或者更专业地说,是估计条件期望函数 E[Y|X]。换句话说,当您想从已知输入 X (如英语句子、本月销售、大脑扫描图像)映射到最初未知但定义明确的输出 Y(如日语句子、下个月的销售额或癌症诊断)。因此,如果 ML 处理预测或估计 E[Y|X],为了使其有用,您必须将您想用 ML 解决的任何问题框定为预测问题,即估计 E[Y|X] 是关键。我们在上一章中介绍了这样一个例子。

2024-06-18 00:14:33 1123

原创 【因果推断python】40_预测模型3

在我们疯狂地研究这个盈利能力问题之前,让我们先尝试一些简单的东西。80%的收益与20%的努力的东西。他们经常创造奇迹,令人惊讶的是,大多数数据科学家都忘记了它们。那么,我们能做的最简单的事情是什么呢?当然,。与其弄清楚哪些客户是有利可图的,不如与每个人做生意,并希望有利可图的客户比补偿无利润的客户更多。为了检查这是否是一个好主意,我们可以看到客户的平均净值。如果结果是积极的,这意味着,平均而言,我们将在客户身上赚钱。当然,会有盈利和无利可图的,但平均而言,如果我们有足够的客户,我们就会赚钱。

2024-06-17 01:15:40 743

原创 【因果推断python】39_预测模型2

出于我们的意图和目的,我们可以将ML视为一种进行预测的强力方法。为了使其正常工作,你需要一些带有标签的数据或你所预测的基本事实。然后,您可以根据该数据训练 ML 模型,并使用它来在基本事实尚未知的情况下进行预测。下图举例说明了典型的机器学习流程。首先,您需要知道基本事实(此处为net_value)的数据。然后,您训练一个 ML 模型,该模型将使用特征(在本例中为区域、收入和年龄)来预测net_value。此训练或估计步骤将生成一个机器学习模型,当您还没有真正的net_value时,该模型可用于预测。

2024-06-17 01:15:35 936

原创 【因果推断python】38_预测模型1

之前的部分涵盖了因果推理的核心。那里的技术是众所周知和成熟的。他们经受住了时间的考验。第一部分建立了我们可以依赖的坚实基础。用更专业的术语来说,第一部分侧重于定义什么是因果推理,哪些偏差会阻止相关性成为因果关系,调整这些偏差的多种方法(回归、匹配和倾向得分)和规范识别策略(工具变量、双重差分 和 断点回归)。总之,第一部分重点介绍了我们用来确定平均干预效果的标准技术。当我们进入第二部分时,事情会变得有点不稳定。我们将介绍因果推理文献的最新发展、它与机器学习的关系以及行业中的应用。

2024-06-16 01:11:47 1042

原创 【因果推断python】37_断点回归3

关于教育对收入的影响,经济学有两种主要观点。第一个是广为人知的论点,即教育增加了人力资本,提高了生产力,从而提高了收入。从这个观点来看,教育实际上会让你变得更好。另一种观点认为,教育只是一种信号机制。它只是让您完成所有这些艰巨的测试和学术任务。如果你能做到,它就向市场表明你是一名优秀的员工。这样,教育不会让你更有效率。它只会告诉市场你一直以来的生产力。这里重要的是文凭。如果你有它,你会得到更多的报酬。我们将此称为,因为过去文凭是用羊皮印刷的。为了检验这一假设,

2024-06-16 01:11:43 794

原创 【因果推断python】36_断点回归2

RDD 依赖的关键假设是阈值处潜在结果的平滑性。用比较正式地表述来说,当运行变量从右侧和左侧接近阈值时,潜在结果的极限应该是相同的。如果这是真的,我们可以在阈值处找到因果关系从其本身意义来说,这是一种局部平均干预效果(LATE),因为我们只能在阈值处知道它。在这种情况下,我们可以将 RDD 视为局部随机试验。对于那些处于阈值附近的人来说,干预可能会采取任何一种方式,有些人可能低于门槛,有些人则可能超过了门槛。在我们的示例中,在同一时间点,有些人刚刚超过 21 岁,有些人刚刚低于 21 岁。

2024-06-15 18:03:59 1042

原创 【因果推断python】35_断点回归1

我们不会停下来想太多,但大自然的平滑程度令人印象深刻。没有先发芽就不能种树,不能从一个地方传送到另一个地方,伤口需要时间来愈合。即使在社交领域,顺畅似乎也是常态。您无法在一天内发展业务,建立财富需要一致性和辛勤工作,并且需要数年才能了解线性回归的工作原理。在正常情况下,大自然非常有凝聚力,不会跳来跳去。当智慧和动物的灵魂被抱在一起时,它们就不会分离。-道德经,老子。这意味着并且通常是人为的情况。

2024-06-15 18:03:55 970

原创 【因果推断python】33_合成控制3

由于有 3 个单位和只有 2 个属性要匹配,因此有多个确定性的解决方案可以解决这个问题,但一个不错的解决方案是将第一个控件乘以 2.25,将第二个控件乘以 -2,然后将两者相加。如果我们现在绘制合成控制的结果,我们会得到一个更平滑的趋势。假设您有下表中的数据,并被要求构建一个合成控制,以使用控制单元的任何线性组合来重现处理过的单元。现在,为了获得合成控制,我们可以将这些权重乘以状态,就像我们之前使用回归权重所做的那样。有了手头的合成控制,我们可以将干预效果估计为干预结果与合成控制结果之间的差距。

2024-06-14 16:28:57 777

原创 【因果推断python】34_合成控制4

由于我们的样本量非常小(39),因此在确定我们的结果是否具有统计学意义时,我们必须更加聪明,而不仅仅是由于随机运气。由于我们只有一个处理过的单元,这意味着对于每个单元,我们假装它是处理过的,而其他的是对照。这个想法是,对于实际上没有得到干预的州,一旦我们假装它们是,我们将无法找到任何显著的干预效果。对于加州来说,这就是干预效果。也就是说,我们假设未处理的单位实际上是处理过的并计算了它们的效果。如果我们想检验加利福尼亚的效应低于零的单方面假设,我们可以将 P 值估计为加利福尼亚的效应大于所有估计效应的倍数。

2024-06-14 16:28:49 803

原创 【因果推断python】31_合成控制1

在经济方面,我们会说卷烟的需求对价格没有弹性,增加税收只是以吸烟者为代价增加政府收入的一种方式。但是请注意,这里的样本量是 4,这也是我们 Diff-in-Diff 模型中的参数数量。“它的主要作用是对加利福尼亚州内销售的烟草卷烟征收每包 25 美分的州消费税,对雪茄和嚼烟等其他商业烟草产品的零售征收大致相当的消费税。相反,我们可以将自己的组合打造为多个未经处理的单元的组合,从而创建有效的合成控制。这是我们的数据的样子。如果我们绘制加州和其他州的卷烟销售量,这就是我们会得到的。(每包卷烟的人均销售额)。

2024-06-13 21:08:03 1011

原创 【因果推断python】32_合成控制2

为了估计综合控制的治疗效果,我们将尝试构建一个类似于干预期之前的治疗单元的“假单元”。然后,我们将看到这个“假单位”在干预后的表现。合成控制和它所模仿的单位之间的区别在于治疗效果。要使用线性回归做到这一点,我们将使用 OLS 找到权重。我们将最小化干预前期间供体池中单位的加权平均值与治疗单位之间的平方距离。为此,我们需要的第一件事是将单位(在我们的例子中为状态)转换为列,将时间转换为行。由于我们有 2 个功能, 和 ,我们将它们堆叠在一起,就像我们在上图中所做的那样。我们将建立一个在干预前看起来很像加利福尼

2024-06-13 21:07:46 848

原创 【因果推断python】30_双重差分1

从事营销工作时,互联网广告是一个很棒的途径。不是因为它非常有效(尽管确实如此),而是因为很容易知道它是否有效。通过在线营销,您可以了解哪些客户看到了广告,并且您可以使用 cookie 跟踪他们,看看他们是否最终出现在您的目标网页上或点击了某个下载按钮。您还可以使用机器学习来寻找与您的客户非常相似的潜在客户,并仅向他们展示广告。从这个意义上说,在线营销非常精确:您只针对您想要的人,您可以查看他们是否按照您的意愿做出反应。但并不是每个人都容易受到网络营销的影响。

2024-06-12 00:40:51 2010

原创 【因果推断python】29_面板数据和固定效应3

为了扩展我们对固定效应模型如何工作的直觉,让我们稍微转向另一个例子。假设您在一家大型科技公司工作,并且您想估计广告牌营销活动对应用内购买的影响。当您查看过去的数据时,您会发现营销部门倾向于花费更多的钱在购买水平较低的城市放置广告牌。这是有道理的吧?如果销售额猛增,他们就不需要做很多广告了。如果您在此数据上运行回归模型,看起来营销成本较高会导致应用内购买减少,但这只是因为营销投资偏向于低支出地区。对因果推理了解很多后,您决定运行一个固定效应模型,将城市标识作为虚拟变量添加到您的模型中。

2024-06-12 00:40:45 632

原创 【因果推断python】28_面板数据和固定效应2

如果我们为它们中的每一个添加一个 dummy,我们最终会得到 100 万列,这可能不是一个好主意。现在,如果我们按年份计算平均值,我们会得到完全相同的结果。此外,我们需要取消教育。如果我们相信固定效应消除了所有遗漏的变量偏差,那么这个模型告诉我们婚姻使男人的工资增加了 11%。要运行我们的固定效应模型,首先,让我们获取平均数据。这意味着,如果我们得到面板中每个人的平均值,我们基本上是在对其他变量进行个体虚拟回归。因此,您不能包含任何随时间保持不变的变量,因为它们将是虚拟变量的线性组合,并且模型不会运行。

2024-06-11 21:15:05 950

原创 【因果推断python】27_面板数据和固定效应1

倾向得分、线性回归和匹配等方法非常擅长控制非随机数据中的混淆现象,但它们依赖于一个关键假设:控制后无混淆简而言之,它们要求所有混淆因素都是已知的和可测量的,这样我们才能以它们为条件并使处理尽可能随机。一个主要问题是有时我们根本无法衡量混淆因素。例如,拿一个经典的劳动经济学问题来计算婚姻对男性收入的影响。经济学中众所周知的事实是,已婚男性的收入高于单身男性。但是,尚不清楚这种关系是否是因果关系。可能是受过更多教育的男性更有可能结婚,也更有可能从事高收入工作,这意味着教育是婚姻对收入影响的一个混淆因素。对于这个

2024-06-11 21:14:58 768

原创 【因果推断python】26_双重稳健估计1

为了了解这是如何工作的,让我们考虑一下心态实验。这是一项在美国公立高中进行的随机研究,旨在发现成长心态的影响。它的工作方式是学校邀请学生参加一个研讨会,向他们灌输一种成长的心态。然后,他们跟踪学生在大学期间的表现,并衡量他们在学业上的表现。为了保护学生的隐私,这项研究的真实数据没有公开。但是,我们有一个与 Athey 和 Wager 提供的统计属性相同的模拟数据集,因此我们将改为使用这个数据来进行分析。双重稳健估计是一种将倾向得分和线性回归相结合的方法,您不必依赖它们中的任何一种。

2024-06-10 22:33:45 1090

原创 【因果推断python】25_倾向得分3

如果接受干预的人的倾向得分为 0.9,而未经干预的人的最大倾向得分为 0.7,那么我们将没有任何未经干预的人与倾向得分为 0.9 的个体进行比较。然而,有一种可能,我们最终得到一个样本,其中学校 A 的每个人都接受了干预,导致该学校的倾向得分为 1,这将导致无限方差。正如我们所看到的,我们也得到了 0.38 的 ATE,这更符合我们之前通过倾向得分加权看到的结果。最后,我们研究了一些外推问题,如果我们无法在干预和未干预的倾向得分分布之间有良好的重叠,我们可能会遇到这些问题。如果我们使用它的估计版本,

2024-06-10 22:33:36 766

原创 【因果推断python】24_倾向得分2

这证明我们的偏差确实是正向的,并且控制 X 让我们对成长心态的影响有了更适度的估计。查看下图,我们可以看到没有人的倾向得分为零,即使在倾向得分较低的区域,我们也可以找到接受干预和未接受干预的个体。通过产生权重1/P(X),它创建了每个人都被对待的群体,并通过提供权重1/(1−P(X)),它创建了群体,其中 每个人都没有得到干预。出于同样的原因,另一个术语着眼于未经干预的人,并赋予那些看起来像经过干预的人很高的权重。然而,在实践中,分配干预的机制是未知的,我们需要用对它的估计来替换真实的倾向得分。

2024-06-08 00:24:36 821

人手一份核武器 - Hacking Team 泄露(开源)资料导览手册 _ WooYun知识库.pdf

事先声明本人并不是全栈安全工程师,仅仅是移动安全小菜一枚,所以对泄漏资料的分析难免会有疏忽或着错误,望各位围观的大侠手下留情。 首先来看安全界两大元老对Hacking Team(以下简称HT)被黑这个事件的看法: @tombkeeper: Stuxnet 让公众知道:“原来真有这种事”,Snowden 让公众知道:“原来这种事这么多”,Hacking Team 让公众知道:“原来这种事都正经当买卖干了”

2020-03-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除