دليل: شجرة القرار الحساسة من حيث التكلفة للتصنيف غير المتوازن (مع الكود والرابط)

المؤلف: جيسون براونلي

ترجمة: تشن تشاو

التدقيق اللغوي: فنغ يو

هذا المقال عن 3500 كلمة ، اقترح القراءة 10+ دقائق

تقدم هذه الورقة خوارزمية شجرة القرار الحساسة من حيث التكلفة في التصنيف غير المتوازن.

تعتبر خوارزمية شجرة القرار فعالة في التصنيف المتوازن ، لكنها لا تعمل بشكل جيد في مجموعات البيانات غير المتوازنة.

نقطة تقسيم شجرة القرار هي أن تكون قادرة على تقسيم جميع الحالات إلى مجموعتين مع الحد الأدنى من الارتباك. عندما تهيمن على مجموعتين على التوالي مثيلات إحدى الفئات ، فإن المعايير المستخدمة لتحديد إعداد نقطة الانقسام معقولة ، وفي الواقع ، سيتم تجاهل الحالات في بضع فئات.

يمكن حل هذه المشكلة عن طريق تعديل معايير تقييم النقاط المقسمة ومراعاة أهمية كل فئة ، وعادةً ما تشير إلى نقاط التقسيم الموزونة أو أشجار القرار المرجحة.

في هذا الدليل ، سترى شجرة قرارات مرجحة للتصنيف غير المتوازن.

بعد دراسة هذا الدليل ، ستعرف:

  • كيف لا تدعم خوارزمية شجرة القرار القياسية التصنيف غير المتوازن.
  • عند اختيار نقطة الانقسام ، كيف تزن خوارزمية شجرة القرار خطأ النموذج حسب أوزان الفئة.
  • كيفية تكوين أوزان الفصل في خوارزمية شجرة القرار وكيفية إجراء بحث الشبكة لتكوينات مختلفة لوزن الصف.

خوارزمية SMOTE ، تصنيف فئة واحدة ، تعليم حساس للتكلفة ، تحول عتبة ، وأكثر من ذلك ، يرجى البحث في كتابي الجديد ، الذي يحتوي على 30 برنامجًا تعليميًا خطوة بخطوة وكود مصدر Python الكامل.

رابط كتاب جديد:

https://machinelearningmastery.com/cost-sensitive-decision-trees-for-imbalanced-classification/

حسنًا ، لنبدأ.

كيفية تنفيذ شجرة القرارات المرجحة للتصنيف غير المتوازن

تصوير بوني مورلاند ، بعض الحقوق محفوظة.

نظرة عامة على الدليل

ينقسم هذا الدليل إلى أربعة أجزاء وهي:

1. مجموعة بيانات تصنيف غير متوازنة

2. شجرة قرارات التصنيف غير المتوازنة

ثالثًا ، استخدام أشجار القرار المرجحة في Scikit-Learn

4. بحث شبكة شجرة القرار المرجحة

1. مجموعة بيانات تصنيف غير متوازنة

قبل أن نبدأ الغوص في تصحيح القرار لتصنيف الخلل ، نحدد أولاً مجموعة بيانات الخلل.

يمكننا ان نستخدم دالة make_classification () لتحديد مجموعة بيانات تصنيف اصطناعية غير متوازنة من فئتين. سنولد 10000 حالة ، حيث تكون نسبة الأقلية إلى فئة الأغلبية 1: 100.

دالة make_classification ():

https://machinelearningmastery.com/cost-sensitive-decision-trees-for-imbalanced-classification/

... # تعريف مجموعة البيانات ، y = تصنيف_المواصفات (n_samples = 10000، n_features = 2، n_redundant = 0، n_clusters_per_class = 1، الأوزان =، flip_y = 0، random_state = 3)

بمجرد إنشائها ، يمكننا تلخيص توزيع الفئات للتحقق من أن مجموعة البيانات التي تم إنشاؤها هي ما نتوقعه.

... # لخص عداد توزيع الفصل = عداد (ص) طباعة (عداد)

أخيرًا ، يمكننا إنشاء مخطط مبعثر للمثيلات وتلوينها وفقًا لتصنيفات الصف لمساعدتنا على فهم التحديات التي يواجهها تصنيف المثيلات في مجموعة البيانات هذه.

... # مخطط مبعثر الأمثلة حسب الفئة labelfor label ، _ في counter.items (): row_ix = حيث (y == label) pyplot.scatter (X، X، label = str (label)) pyplot.legend () pyplot.show ()

دمج هذه الرموز معًا لإنشاء أمثلة كاملة لمجموعات البيانات الاصطناعية وأمثلة رسم.

# إنشاء ورسم مجموعة بيانات تصنيف اصطناعية غير متوازنة من مجموعات الاستيراد flip_y = 0، random_state = 3) # تلخيص توزيع الفصل = عداد (y) طباعة (عداد) # مخطط مبعثر من الأمثلة حسب فئة labelfor ، _ في counter.items (): row_ix = حيث (y == label) pyplot. مبعثر (X ، X ، label = str (label)) pyplot.legend () pyplot.show ()

سيؤدي تشغيل هذا المثال أولاً إلى إنشاء مجموعة بيانات ثم تلخيص توزيع الفئات.

يمكننا أن نرى أن توزيع مجموعة البيانات هذه قريب من 1: 100. هناك أقل بقليل من 10000 حالة في فئة الأغلبية ، و 100 حالة في فئة الأقلية.

عداد ({0: 9900 ، 1: 100})

بعد ذلك ، هناك مخطط مبعثر لمجموعة البيانات ، والذي يُظهر عددًا كبيرًا من مثيلات فئة الأغلبية (الزرقاء) وعددًا صغيرًا من مثيلات فئة الأقلية (البرتقالية) ، مع تداخل قيم بضع فئات.

مخطط مبعثر لمجموعة بيانات من فئتين مع عدم توازن فئة 1: 100

بعد ذلك ، يمكننا احتواء نموذج شجرة قرار قياسي في مجموعة البيانات هذه. يمكن استخدام شجرة القرار في مجموعة أدوات التعلم والتعلم مصنف شجرة القرار انشاء.

مصنف شجرة القرار:

https://machinelearningmastery.com/cost-sensitive-decision-trees-for-imbalanced-classification/

... # عرِّف modelmodel = DecisionTreeClassifier ()

سنستخدم التحقق المتكرر المتكرر لتقييم هذا النموذج ، أي ما مجموعه ثلاثة مكررات التحقق المتقاطع من 10 مستويات . سيتم الحصول على أداء النموذج من قبل منطقة ROC تحت المنحنى (ROC AUC) في جميع التكرارات ومتوسط جميع الطبقات.

التحقق المتقاطع من 10 مستويات:

https://machinelearningmastery.com/k-fold-cross-validation/

... # تعريف إجراءات التقييم = RepeatedStratifiedKFold (n_splits = 10، n_repeats = 3، random_state = 1) # rating modelscores = cross_val_score (model، X، y، scoring = 'roc_auc'، cv = cv، n_jobs = -1) # تلخيص بصمة الأداء ("متوسط ROC AUC: .3f" متوسط (النتائج))

فيما يلي مثال كامل على تحديد وتقييم نموذج شجرة قرارات معياري بشأن مشكلة تصنيف غير متوازنة.

 أشجار القرار هي نماذج فعالة لمهام التصنيف الثنائية ، على الرغم من أنها ليست فعالة في مشاكل التصنيف غير المتوازنة.

# احتواء شجرة القرار على مجموعة بيانات تصنيف غير متوازنة من الاستيراد غير المعنى من sklearn.datasets import make_classificationfrom sklearn.model_selection import cross_val_scorefrom sklearn.model_selection import RepeatedStratifiedKFoldfrom sklearn.tree الاستيراد DecificationTree class # y، d = = 0، n_clusters_per_class = 1، الأوزان =، flip_y = 0، random_state = 3) # معرف modelmodel = DecisionTreeClassifier () # معرف إجراءات التقييم = RepeatedStratifiedKFold (n_splits = 10، n_repeats = 3، random_sate = 1) # تقييم نماذج_الكروس = () نموذج ، X ، y ، تسجيل = 'roc_auc' ، cv = cv ، n_jobs = -1) # تلخيص بصمة الأداء ('متوسط ROC AUC: .3f' متوسط (درجات))

قم بتشغيل هذا المثال لتقييم أداء نموذج شجرة القرار القياسي حول مجموعات البيانات غير المتوازنة وتقديم تقرير إلى ROC AUC.

قد تختلف نتائجك المحددة بناءً على العشوائية الكامنة في خوارزمية التعلم. حاول تشغيله عدة مرات.

 يمكننا أن نرى أن هذا النموذج يمكن أن يحقق ROC AUC أكبر من 0.5 ، ومتوسط القيمة 0.746.

يعني ROC AUC: 0.746

يوفر هذا خط أساس للمقارنة بين أي تحسين خوارزمية شجرة القرار القياسية.

2. شجرة قرارات التصنيف غير المتوازنة

تسمى أيضًا خوارزمية شجرة القرار شجرة التصنيف والانحدار (CART) ، بما في ذلك أمثلة على الشجرة الممتدة والتصنيف من مجموعة التدريب.

شجرة التصنيف والانحدار:

https://machinelearningmastery.com/classification-and-regression-trees-for-machine-learning/

يمكن استخدام الشجرة لفصل مجموعة التدريب ، ويمكن أن تصل المثيلات إلى عقد الأوراق من خلال نقاط القرار الخاصة بالشجرة وأن يتم إرفاقها بتسميات الفصل.

يمكن بناء الشجرة باستخدام قيم المتغيرات في مجموعة البيانات لفصل مجموعة التدريب. في كل نقطة ، يؤدي فصل البيانات إلى اختيار مجموعة المثيلات الأكثر نقاء (الأقل اختلاطًا) بأكثر الطرق جشعًا.

هنا ، نقاء يعني أن الحالات مفصولة بحتة ، والطبقة التي تتكون من أمثلة تحتوي فقط على صفر وواحد فقط هي أنقى ، والفئة المختلطة 50-50 هي الأكثر نجسة. عادةً ما يتم حساب النقاوة الشائعة من خلال شوائب جيني ، على الرغم من أنه يمكن أيضًا حسابها من خلال إنتروبي المعلومات.

انتروبيا المعلومات:

https://machinelearningmastery.com/information-gain-and-mutual-information/

يتضمن قياس النقاوة حساب احتمالية إساءة تصنيف مثيل لفئة معينة. يتضمن حساب هذه الاحتمالات تلخيص عدد مثيلات كل فئة في كل مجموعة.

 يمكن تحديث معايير الفصل ليس فقط للنظر في نقاء الفصل ، ولكن أيضًا لتقدير أهمية كل فئة.

"الغرض من إدخالنا لأشجار القرارات الحساسة من حيث التكلفة هو تصحيح الوزن المتناسب مع فقدان التصنيف الخاطئ لمثيل ..."

- "طريقة ترجيح المثال لإدخال أشجار القرار الحساسة للخسارة" ، 2002

https://machinelearningmastery.com/cost-sensitive-decision-trees-for-imbalanced-classification/

يمكن تحقيق ذلك عن طريق استبدال عدد مثيلات كل مجموعة بمجموع مرجح ، حيث يتم استخدام المعامل للمجموع المرجح.

يتم تعيين أوزان أكبر لفئات أكثر أهمية ، ويتم تعيين أوزان أصغر لفئات أقل أهمية.

  • وزن صغير: وهي أقل أهمية لنقاء العقدة ولها تأثير أقل.
  • وزن كبير: هو أكثر أهمية للعقدة نقاء ولها تأثير أعلى.

 يمكن تعيين أوزان صغيرة لمعظم الفئات ، والتي يمكن أن تزيد (تنقص) درجة نقاء العقدة ، وإلا فإن هذه العقدة

قد يبدو أن الفرز ليس جيدًا. قد يؤدي ذلك إلى تصنيف المزيد من الحالات من فئة الأغلبية إلى فئة الأقلية والتكيف بشكل أفضل مع الحالات في فئة الأقلية.

"يتم تعيين أوزان أعلى لمثيلات الفئة ذات التكاليف الخاطئة الأعلى."

- "التعلم من مجموعات البيانات غير المتوازنة" ، 2018 ، صفحة 71

https://machinelearningmastery.com/cost-sensitive-decision-trees-for-imbalanced-classification/

ولهذا السبب ، يُطلق على هذا التعديل في خوارزمية شجرة القرار شجرة قرارات مرجحة أو شجرة قرارات مرجحة أو شجرة قرارات حساسة للتكلفة.

 يعد تصحيح حساب نقطة الفصل هو الأكثر شيوعًا ، على الرغم من وجود العديد من خوارزميات بناء شجرة قرار التصحيح للتكيف بشكل أفضل مع دراسة اختلال التوازن الطبقي.

 ثالثًا ، استخدام أشجار القرار المرجحة في Scikit-Learn

توفر مجموعة أدوات التعلم الآلي Scikit-Learn Python طريقة تنفيذ لخوارزمية شجرة القرار التي تدعم ترجيح الفصل الدراسي.

توفر خوارزمية شجرة القرار معلمات class_weight التي يمكن تحديدها كمعلمات نموذجية مفرطة. class_weight هو قاموس يحدد كل تسمية فئة (على سبيل المثال ، 0 و 1) ووزن حساب نقاء مجموعة الفصل في شجرة القرار عند تطبيقه على النموذج المجهز.

 على سبيل المثال ، يمكن تحديد وزن 1 إلى 1 لكل فئة 0 و 1 على النحو التالي:

... # تعريف modelweights = {0: 1.0، 1: 1.0} model = DecisionTreeClassifier (class_weight = weights)

يمكن تحديد أوزان الفصل بعدة طرق ، على سبيل المثال:

  • الخبرة الميدانية: عازما على التحدث مع خبراء الموضوع ؛
  • مساعد: محدد بواسطة البحث بالمعلمات الفائقة مثل بحث الشبكة ؛
  • ارشادي: استخدم أفضل الممارسات العامة لتحديد.

أفضل ممارسة لاستخدام ترجيح الفصل هي استخدام معكوس توزيع الفصل مع مجموعة التدريب.

على سبيل المثال ، توزيع فئة مجموعة الاختبار هو فئة أقلية: نسبة أغلبية فئة 1: 100. هذه النسبة المتبادلة هي 1 أغلبية و 100 أقلية. على سبيل المثال:

... # تعريف modelweights = {0: 1.0، 1: 100.0} model = DecisionTreeClassifier (class_weight = weights)

يمكننا أيضًا استخدام الدرجات لتحديد نفس النسبة والحصول على نفس النتيجة. على سبيل المثال:

... # تعريف modelweights = {0: 0.01، 1: 1.0} model = DecisionTreeClassifier (class_weight = weights)

يمكن تعيين مجريات الأمور بشكل مباشر عن طريق تعيين class_weight إلى "متوازن". على سبيل المثال:

... # تحديد النموذج = DecisionTreeClassifier (class_weight = "متوازن")

يمكننا تقييم خوارزمية شجرة القرار المرجحة بالفئة باستخدام إجراء التقييم المحدد في القسم السابق.

 نتوقع أن يكون أداء إصدار شجرة القرار المرجحة للفئة أفضل من خوارزمية شجرة القرار القياسية دون ترجيح الفئة.

المثال الكامل على النحو التالي:

# شجرة قرارات ذات وزن فئة على مجموعة بيانات تصنيف غير متوازنة من استيراد numpy يعني من استيراد sklearn.datetsets make_classificationfrom sklearn.model_selection import cross_val_scorefrom sklearn.model_selection import RepeatedStratifiedKFoldfrom sklearn.tree استيراد DeccTreeClassifier # d = n_redundant = 0، n_clusters_per_class = 1، الأوزان =، flip_y = 0، random_state = 3) # معرف modelmodel = DecisionTreeClassifier (class_weight ='وازن ') # معرف إجراءات التقييم = متكرر StratifiedKFold (n_splits = 10، n_repeats = 3، عشوائي) # rating modelscores = cross_val_score (model، X، y، scoring = 'roc_auc'، cv = cv، n_jobs = -1) # تلخيص بصمة الأداء ('متوسط ROC AUC: .3f' متوسط (النتائج))

قم بتشغيل هذا المثال لإعداد مجموعة بيانات تصنيف اصطناعية غير متوازنة ، ثم استخدم التحقق المتكرر المتكرر لتقييم النسخة الموزونة لفئة من خوارزمية شجرة القرار.

 قد تتأثر نتائجك بعشوائية الخوارزمية ، حاول تشغيلها عدة مرات.

 تم الإبلاغ عن متوسط درجة ROC AUC ، مما أدى إلى درجة أفضل من النسخة غير المرجحة من خوارزمية شجرة القرار: 0.759 إلى 0.746.

يعني ROC AUC: 0.759

 4. بحث شبكة شجرة القرار المرجحة

وزن الصف باستخدام النسبة العكسية لمجموعة التدريب هو نوع من الاستدلال.

 قد يؤدي استخدام أوزان الفصل المختلفة إلى أداء أفضل ، والذي يعتمد أيضًا كثيرًا على اختيار مقاييس أداء نموذج التقييم.

في هذا الجزء ، سنجري سلسلة من البحث في الشبكة لأنواع مختلفة من الأوزان لشجرة القرار المرجحة واستكشاف النتائج التي يمكن أن تحصل على أفضل ROC AUC.

سنحاول الأوزان التالية للفئتين 0 و 1:

  • الفئة 0: 100 ، الفئة 1: 1 ؛
  • الفئة 0:10 ، الفئة 1: 1 ؛
  • الفئة 0: 1 ، الفئة 1: 1 ؛
  • الفئة 0: 1 ، الفئة 1: 100.

معلمات بحث الشبكة هذه التي يمكن تعريفها على أنها فئة GridSearchCV هي كما يلي:

فئة GridSearchCV:

https://machinelearningmastery.com/cost-sensitive-decision-trees-for-imbalanced-classification/

... # تعريف التوازن الشبكي = param_grid = dict (class_weight = توازن)

يمكننا استخدام التحقق المتكرر المتكرر لإجراء بحث شبكي على هذه المعلمات واستخدام ROC AUC لتقدير أداء النموذج:

... # تعريف إجراءات التقييم = RepeatedStratifiedKFold (n_splits = 10، n_repeats = 3، random_state = 1) # معرف شبكة البحث = GridSearchCV (المُقدر = النموذج ، param_grid = param_grid ، n_jobs = -1 ، cv = cv ، تسجيل = 'roc_auc ')

بمجرد التنفيذ ، يمكننا تلخيص أفضل تكوين ، وجميع النتائج هي كما يلي:

... # أبلغ عن أفضل طبعة للتكوين ("الأفضل: f باستخدام s" (grid_result.best_score_، grid_result.best_params _)) # أبلغ عن جميع التهيئات يعني = grid_result.cv_results_stds = grid_result.cv_results_params = grid_results.forv ، متوسط في zip (يعني ، stds ، params): طباعة (" f ( f) مع: r" (يعني ، stdev ، param))

المثال التالي هو خوارزمية شجرة القرار على مجموعة بيانات غير متوازنة ، والتي تقوم بإجراء بحث شبكي على خمسة أوزان مختلفة للفئة.

قد نتوقع أن تكون أوزان الدرجة التجريبية أفضل تكوين.

# أوزان فئة بحث الشبكة مع شجرة القرار لتصنيف عدم التوازن من الاستيراد غير المقصد من sklearn.datasets استيراد make_classificationfrom sklearn.model_selection استيراد GridSearchCVf من sklearn.model_selection استيراد RepeatedStratifiedKFoldfrom sklearn.tree استيراد Dec DecTreeTreeClassifier # توليد yat n_redundant = 0، n_clusters_per_class = 1، الأوزان =، flip_y = 0، random_state = 3) # معرف modelmodel = DecisionTreeClassifier () # عرّف شبكة الموازنة = param_grid = dict (class_weight = Balance) # معرف إجراءات التقييم = re_SplatitsKpold (n_splits = = 3، random_state = 1) # معرف شبكة البحث = GridSearchCV (Estimator = model، param_grid = param_grid، n_jobs = -1، cv = cv، scoring = 'roc_auc') # تنفيذ بحث الشبكة grid_result = grid.fit (X، y ) # الإبلاغ عن أفضل بصمة تهيئة ("الأفضل: f باستخدام s" (grid_result.best_score_، grid_result.best_params _)) # تقرير عن جميع عمليات التهيئة يعني = grid_result.cv_results_stds = grid_result.cv_results_params = grid_result.cv_results_for يعني ، stdev ، المعلمة في zip (يعني ، stds ، معلمات): طباعة (" f ( f) مع: r" (يعني ، stdev ، معلمة))

يستخدم تشغيل هذا المثال التحقق المتكرر من الطبقة k لتقييم كل وزن للفصل والإبلاغ عن أفضل تكوين ومتوسط درجة ROC AUC المرتبطة بها.

 قد تتغير النتائج مع عشوائية خوارزمية التعلم ، حاول تشغيل عدة مرات أخرى.

في هذه الحالة ، يمكننا أن نرى أغلبية 1: 100: يمكن أن تحقق بعض أوزان القياس أفضل نتيجة ROC. هذا يطابق التكوين الإرشادي العام.

قد يكون من المثير للاهتمام استكشاف أوزان الفصل الأكثر صرامة لمعرفة تأثيرها على متوسط درجة ROC AUC.

الأفضل: 0.752643 باستخدام {'class_weight': {0: 1، 1: 100}} 0.737306 (0.080007) مع: {'class_weight': {0: 100، 1: 1} 0.747306 (0.075298) مع: {'class_weight' : {0: 10، 1: 1}} 0.740606 (0.074948) مع: {'class_weight': {0: 1، 1: 1} 0.747407 (0.068104) مع: {'class_weight': {0: 1، 1: 10}} 0.752643 (0.073195) مع: {'class_weight': {0: 1، 1: 100}}

اقرأ أكثر

إذا كنت ترغب في الحصول على فهم أعمق ، يوفر هذا القسم المزيد من الموارد ذات الصلة.

  • ورقة
  • "طريقة ترجيح لاستيراد أشجار قرارات حساسة للتكلفة" ، 2002. https: //machinelearningmastery.com/cost-sensitive-decision-trees-for-imbalanced-classification/
  • كتب
  • "التعلم من البيانات غير المتوازنة" ، 2018 https://amzn.to/307Xlva
  • "التعلم غير المتوازن: الأساسيات والخوارزميات والتطبيقات" ، 2013 https://amzn.to/32K9K6d
  • API
  • sklearn.utils.class_weight.compute_class_weight API: https://scikit-learn.org/stable/modules/generated/sklearn.utils.class_weight.compute_class_weight.html
  • sklearn.tree.DecisionTreeClassifier API: https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html
  • sklearn.model_selection.GridSearchCV API: https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html

الملخص

في هذا الدليل ، استكشفت أشجار القرارات المرجحة للتصنيف غير المتوازن. على وجه الخصوص ، تعلمت:

  • كيف لا تدعم خوارزمية شجرة القرار القياسية التصنيف غير المتوازن ؛
  • عند اختيار نقطة الانقسام ، كيف تزن خوارزمية شجرة القرار خطأ النموذج حسب أوزان الفئة
  • كيفية تكوين أوزان الفصل في خوارزمية شجرة القرار وكيفية إجراء بحث الشبكة لتكوينات مختلفة لوزن الصف.

العنوان الأصلي:

أشجار القرار الحساسة من حيث التكلفة للتصنيف غير المتوازن

الرابط الأصلي:

https://machinelearningmastery.com/cost-sensitive-decision-trees-for-imbalanced-classification

المحرر: هوانغ جيان

التدقيق اللغوي: يانغ شيويه جون

مقدمة المترجم

تشين تشاو ماجستير في علم النفس التطبيقي ، جامعة بكين. كان الطالب الجامعي مرة في تخصص الكمبيوتر ، ثم تابع دون كلل طريق علم النفس. لقد وجد بشكل متزايد أن تحليل البيانات والبرمجة قد أصبحت من مهارات البقاء الإلزامية ، لذلك يتم بذل كل جهد في الحياة اليومية لتحسين الاتصال وفهم المعرفة ذات الصلة ، ولكن الطريق أمامنا طويل ، وما زلت على الطريق.

-إنهاء-

اتبع منصة WeChat العامة التابعة لـ Tsinghua-Qingdao Data Science Research Institute " فطيرة البيانات THU  "ورقم الأخت" فطيرة البيانات  "احصل على المزيد من فوائد المحاضرات وجودة المحتوى.

"الصغيرة عينة التعلم (التعلم قليل شوت)" 2020 ورقات ورمز

أصدرت منظمة OpenKG الدفعة الثانية من العهد الجديد عشرة والمعرفة أكثر حداثة أطلس قواعد البيانات المفتوحة

العزلة جناح جولات الروبوت القادمة! تسينغهوا إلى الوراء

سباق الكمبري Kechuang متن أول AI الأسهم رقاقة: أكاديمية الصينية للعلوم حاضنة، تأسست أربع سنوات بقيمة 17.5 مليار

يجب أن تكون على بينة من الأسلحة وباء الحجب - انترنت الطبية

"الحرب" الطاعون "متى" ليس وجها لوجه مقابلة مع العالم أقرب ووهان

"مدينة بلادي، بلادي كلمات"، "تشينغداو الأخ الصغير" ليو Zhiyang الأغنية الأصلية "تفوز تشينغداو"

الكاتب ديفيد تاو الاستماع لوجه "ثوب أصفر" علامة الاستفهام: أن سماعة الرأس غير وارد

يهاى مدرب رعاية مرة أخرى - بمساعدة الطاقم الطبي إرسالها إلى خيار البحر

الاعتدال الربيعي والاستماع إلى الموسيقى من نهر يونغدينغ المياه

ذيل أيام الأسبوع خط الحد الرقم حتى الآن بكين الاسبوع المقبل لاستعادة تركز هذه الأقسام على المرور

على استعداد ل"التامور الحب الدافئة،" أكبر نقاط المراقبة بلدة الشارع هايديان التركيز الصف حتى "الضيوف" خدمة يثلج الصدر