Tribuo هي مكتبة للتعلم الآلي في Java توفر تصنيفًا متعدد الفئات، والانحدار، والتجميع، والكشف عن الشذوذ، والتصنيف متعدد التصنيفات. يوفر Tribuo تطبيقات لخوارزميات ML الشائعة ويغلف أيضًا المكتبات الأخرى لتوفير واجهة موحدة. يحتوي Tribuo على كافة التعليمات البرمجية اللازمة لتحميل البيانات وتمييزها وتحويلها. بالإضافة إلى ذلك، فهو يتضمن فئات التقييم لجميع أنواع التنبؤ المدعومة. تتم قيادة عملية التطوير بواسطة مجموعة أبحاث التعلم الآلي التابعة لشركة Oracle Labs؛ نحن نرحب بمساهمات المجتمع.
جميع المدربين قابلين للتكوين باستخدام نظام التكوين OLCUT. يتيح ذلك للمستخدم تحديد المدرب في ملف xml أو json وبناء النماذج بشكل متكرر. يمكن العثور على أمثلة التكوينات لكل من المدربين المتوفرين في مجلد التكوين الخاص بكل حزمة. يمكن أيضًا كتابة ملفات التكوين هذه بتنسيق json أو edn باستخدام تبعية تكوين OLCUT المناسبة. النماذج ومجموعات البيانات قابلة للتسلسل باستخدام تسلسل Java.
تشتمل جميع النماذج والتقييمات على كائن مصدر قابل للتسلسل يسجل وقت إنشاء النموذج أو التقييم، وهوية البيانات وأي تحويلات مطبقة عليها، بالإضافة إلى المعلمات الفائقة للمدرب. وفي حالة التقييمات، تتضمن معلومات المصدر أيضًا النموذج المحدد المستخدم. يمكن استخراج معلومات المصدر بتنسيق JSON، أو إجراء تسلسل لها مباشرةً باستخدام تسلسل Java. بالنسبة لعمليات نشر الإنتاج، يمكن تنقيح معلومات المصدر واستبدالها بتجزئة لتوفير تتبع النموذج من خلال نظام خارجي. يمكن تصدير العديد من نماذج Tribuo بتنسيق ONNX لنشرها بلغات أو منصات أو خدمات سحابية أخرى.
يعمل Tribuo على Java 8+، ونقوم باختبار إصدارات Java LTS بالإضافة إلى الإصدار الأخير. Tribuo نفسها عبارة عن مكتبة Java خالصة ومدعومة على جميع منصات Java؛ ومع ذلك، فإن بعض واجهاتنا تتطلب تعليمات برمجية أصلية وبالتالي لا يتم دعمها إلا عندما يكون هناك دعم للمكتبة الأصلية. نحن نختبر بنيات x86_64 على أنظمة التشغيل Windows 10 وmacOS وLinux (RHEL/OL/CentOS 7+)، حيث إنها منصات مدعومة للمكتبات الأصلية التي نتفاعل معها. إذا كنت مهتمًا بمنصة أخرى وترغب في استخدام إحدى واجهات المكتبات الأصلية (ONNX Runtime، وTensorFlow، وXGBoost)، فإننا نوصي بالتواصل مع مطوري تلك المكتبات. لاحظ أن بطاقة النموذج وحزم إعادة الإنتاج تتطلب Java 17، وعلى هذا النحو فهي ليست جزءًا من نشر tribuo-all
Maven Central.
يمكن العثور على دفاتر الملاحظات التعليمية، بما في ذلك أمثلة التصنيف، والتجميع، والانحدار، واكتشاف الشذوذ، وTensorFlow، وتصنيف المستندات، وتحميل البيانات العمودية، والعمل مع النماذج المدربة خارجيًا، ونظام التكوين، في البرامج التعليمية. تستخدم هذه البرامج نواة الكمبيوتر المحمول IJava Jupyter، وتعمل مع Java 10+، باستثناء البرامج التعليمية لبطاقة النموذج وقابلية التكرار التي تتطلب Java 17. لتحويل كود البرامج التعليمية مرة أخرى إلى Java 8، في معظم الحالات، استبدل الكلمة الأساسية var
بالأنواع المناسبة. .
يتضمن Tribuo تطبيقات العديد من الخوارزميات المناسبة لمجموعة واسعة من مهام التنبؤ:
خوارزمية | تطبيق | ملحوظات |
---|---|---|
التعبئة | تريبو | يمكن استخدام أي مدرب Tribuo كمتعلم أساسي |
غابة عشوائية | تريبو | لكل من التصنيف والانحدار |
أشجار اضافية | تريبو | لكل من التصنيف والانحدار |
ك-ن | تريبو | يتضمن خيارات للعديد من الواجهات الخلفية المتوازية، بالإضافة إلى واجهة خلفية مترابطة واحدة |
الشبكات العصبية | TensorFlow | تدريب شبكة عصبية في TensorFlow عبر غلاف Tribuo. يمكن نشر النماذج باستخدام واجهة ONNX أو واجهة TF |
تستخدم المجموعات وK-NN وظيفة مركبة لإنتاج مخرجاتها. تعد هذه المجمعات مخصصة لمهمة التنبؤ، لكن تطبيقات المجموعة وK-NN لا تحدد المهام. نحن نقدم أدوات دمج التصويت والمتوسط للتصنيف متعدد الفئات والتصنيف متعدد الملصقات ومهام الانحدار.
لدى Tribuo تطبيقات أو واجهات من أجل:
خوارزمية | تطبيق | ملحوظات |
---|---|---|
النماذج الخطية | تريبو | يستخدم SGD ويسمح بأي محسن التدرج |
آلات التخصيم | تريبو | يستخدم SGD ويسمح بأي محسن التدرج |
عربة التسوق | تريبو | |
SVM-SGD | تريبو | تنفيذ خوارزمية بيجاسوس |
Adaboost.SAMME | تريبو | يمكن استخدام أي مدرب تصنيف Tribuo كمتعلم أساسي |
متعدد الحدود ساذج بايز | تريبو | |
النماذج الخطية المنتظمة | LibLinear | |
SVM | LibSVM أو LibLinear | LibLinear يدعم فقط SVMs الخطية |
التدرج المعزز أشجار القرار | XGBoost |
توفر Tribuo أيضًا سلسلة خطية CRF لمهام تصنيف التسلسل. يتم تدريب CRF هذا عبر SGD باستخدام أي من أدوات تحسين التدرج في Tribuo.
لدى Tribuo مجموعة من خوارزميات اختيار الميزات النظرية للمعلومات والتي يمكن تطبيقها على مهام التصنيف. يتم فصل مدخلات الميزات تلقائيًا في صناديق متساوية العرض. يتضمن ذلك في الوقت الحالي تطبيقات تعظيم المعلومات المتبادلة (MIM)، وتعظيم المعلومات المتبادلة المشروطة (CMIM)، والحد الأدنى من التكرار الأقصى للملاءمة (mRMR)، والمعلومات المتبادلة المشتركة (JMI).
لشرح تنبؤات المصنف، يوجد تطبيق لخوارزمية LIME. يسمح تطبيق Tribuo بخلط البيانات النصية والجدولية، إلى جانب استخدام أي نموذج متفرق كشرح (على سبيل المثال، أشجار الانحدار، واللاسو، وما إلى ذلك)، إلا أنه لا يدعم الصور.
تعد خوارزميات الانحدار الخاصة بـ Tribuo متعددة الأبعاد بشكل افتراضي. يتم تغليف التطبيقات أحادية البعد لإنتاج مخرجات متعددة الأبعاد.
خوارزمية | تطبيق | ملحوظات |
---|---|---|
النماذج الخطية | تريبو | يستخدم SGD ويسمح بأي محسن التدرج |
آلات التخصيم | تريبو | يستخدم SGD ويسمح بأي محسن التدرج |
عربة التسوق | تريبو | |
لاسو | تريبو | باستخدام خوارزمية LARS |
شبكة مرنة | تريبو | باستخدام خوارزمية النسب الإحداثي |
النماذج الخطية المنتظمة | LibLinear | |
SVM | LibSVM أو LibLinear | LibLinear يدعم فقط SVMs الخطية |
التدرج المعزز أشجار القرار | XGBoost |
يتضمن Tribuo بنية أساسية للتجميع ويوفر أيضًا تطبيقين لخوارزمية التجميع. نتوقع تنفيذ خوارزميات إضافية بمرور الوقت.
خوارزمية | تطبيق | ملحوظات |
---|---|---|
HDBSCAN* | تريبو | خوارزمية قائمة على الكثافة تكتشف المجموعات والقيم المتطرفة |
وسائل K | تريبو | يتضمن كلا من الواجهات الخلفية المتسلسلة والمتوازية، وخوارزمية التهيئة K-Means++ |
تقدم Tribuo البنية التحتية لمهام الكشف عن الحالات الشاذة. نتوقع إضافة تطبيقات جديدة مع مرور الوقت.
خوارزمية | تطبيق | ملحوظات |
---|---|---|
SVM من فئة واحدة | ليبسفم | |
SVM خطي من فئة واحدة | LibLinear |
توفر Tribuo بنية تحتية للتصنيف متعدد التصنيفات، إلى جانب غلاف يحول أيًا من خوارزميات التصنيف متعددة الفئات الخاصة بـ Tribuo إلى خوارزمية تصنيف متعددة التصنيفات. نتوقع إضافة المزيد من التطبيقات المحددة متعددة التصنيفات بمرور الوقت.
خوارزمية | تطبيق | ملحوظات |
---|---|---|
غلاف مستقل | تريبو | يحول خوارزمية تصنيف متعددة الفئات إلى خوارزمية متعددة التصنيفات عن طريق إنتاج مصنف منفصل لكل تصنيف |
سلاسل التصنيف | تريبو | يوفر سلاسل مصنفة ومجموعات سلسلة مصنفات عشوائية باستخدام أي من خوارزميات التصنيف متعددة الفئات الخاصة بـ Tribuo |
النماذج الخطية | تريبو | يستخدم SGD ويسمح بأي محسن التدرج |
آلات التخصيم | تريبو | يستخدم SGD ويسمح بأي محسن التدرج |
بالإضافة إلى تطبيقاتنا الخاصة لخوارزميات التعلم الآلي، توفر Tribuo أيضًا واجهة مشتركة لأدوات ML الشائعة على JVM. إذا كنت مهتمًا بالمساهمة في واجهة جديدة، فافتح إصدار GitHub، ويمكننا مناقشة كيفية ملاءمتها لـ Tribuo.
حاليا لدينا واجهات ل:
الثنائيات متاحة على Maven Central، باستخدام groupId org.tribuo
. لسحب جميع مكونات Tribuo المتوافقة مع Java 8، بما في ذلك روابط TensorFlow وONNX Runtime وXGBoost (وهي مكتبات أصلية)، استخدم:
مخضرم:
< dependency >
< groupId >org.tribuo</ groupId >
< artifactId >tribuo-all</ artifactId >
< version >4.3.1</ version >
< type >pom</ type >
</ dependency >
أو من جرادل:
implementation ( " org.tribuo:tribuo-all:4.3.1@pom " ) {
transitive = true // for build.gradle (i.e., Groovy)
// isTransitive = true // for build.gradle.kts (i.e., Kotlin)
}
إن تبعية tribuo-all
هي بوم التي تعتمد على جميع مشاريع Tribuo الفرعية باستثناء بطاقة النموذج ومشاريع الاستنساخ التي تتطلب Java 17.
معظم Tribuo عبارة عن لغة Java خالصة وبالتالي فهي مشتركة بين الأنظمة الأساسية، إلا أن بعض الواجهات ترتبط بالمكتبات التي تستخدم التعليمات البرمجية الأصلية. تعمل هذه الواجهات (TensorFlow وONNX Runtime وXGBoost) فقط على الأنظمة الأساسية المدعومة للثنائيات المنشورة المعنية، وليس لدى Tribuo أي سيطرة على الثنائيات التي يتم توفيرها. إذا كنت بحاجة إلى دعم لمنصة معينة، تواصل مع القائمين على تلك المشاريع. اعتبارًا من الإصدار 4.1، توفر هذه الحزم الأصلية جميعها ثنائيات x86_64 لأنظمة التشغيل Windows وmacOS وLinux. من الممكن أيضًا تجميع كل حزمة لنظام التشغيل macOS ARM64 (أي Apple Silicon)، على الرغم من عدم توفر ثنائيات على Maven Central لتلك المنصة الخاصة بـ TensorFlow أو XGBoost. اعتبارًا من الإصدار 4.3، يعتمد Tribuo الآن على إصدار ONNX Runtime الذي يتضمن دعمًا لمنصات macOS ARM64 وLinux aarch64. عند التطوير على منصة ARM، يمكنك تحديد ملف تعريف arm
في pom.xml
الخاص بـ Tribuo لتعطيل اختبارات المكتبة الأصلية.
يتم نشر الجرار الفردية لكل وحدة Tribuo. يفضل الاعتماد فقط على الوحدات اللازمة للمشروع المحدد. وهذا يمنع التعليمات البرمجية الخاصة بك من سحب التبعيات الكبيرة بشكل غير ضروري مثل TensorFlow.
يستخدم Tribuo Apache Maven v3.5 أو أعلى للبناء. Tribuo متوافق مع Java 8+، ونحن نختبر إصدارات Java LTS بالإضافة إلى الإصدار الأحدث. للبناء، ما عليك سوى تشغيل mvn clean package
. يجب أن تكون جميع تبعيات Tribuo متاحة على Maven Central. يرجى تقديم مشكلة للمشكلات المتعلقة بالبناء إذا كنت تواجه مشكلة (على الرغم من التحقق مما إذا كنت تفتقد إعدادات الوكيل لـ Maven أولاً، لأن هذا سبب شائع لفشل البناء، وخارج عن سيطرتنا). لاحظ أنه إذا كنت تقوم بالإنشاء باستخدام Java 16 أو إصدار أقدم، فسيتم تعطيل بطاقة النموذج وحزم إعادة الإنتاج.
يحدث التطوير في الفرع main
، الذي يحتوي على رقم إصدار إصدار Tribuo التالي مع ملحق "-SNAPSHOT" به. سيتم وضع علامة على إصدارات Tribuo الرئيسية والثانوية على الفرع main
، ثم سيكون لها فرع يسمى vA.BX-release-branch
(للإصدار vA.B.0
) متفرع من التزام الإصدار الموسوم لأي إصدارات نقطة (على سبيل المثال، vA.B.1
و vA.B.2
وما إلى ذلك) بعد هذا الإصدار الرئيسي/الثانوي. تم وضع علامة على إصدارات النقاط هذه في فرع الإصدار المحدد، على سبيل المثال، تم وضع علامة v4.0.2
على v4.0.X-release-branch
.
نحن نرحب بالمساهمات! راجع إرشادات المساهمة الخاصة بنا.
لدينا قائمة بريدية للمناقشة [email protected]، مؤرشفة هنا. نحن ندرس خيارات مختلفة للدردشة في الوقت الفعلي، يمكنك التحقق مرة أخرى في المستقبل. بالنسبة لتقارير الأخطاء أو طلبات الميزات أو المشكلات الأخرى، يرجى تقديم مشكلة Github.
يرجى الرجوع إلى دليل الأمان الخاص بعملية الكشف عن الثغرات الأمنية المسؤولة.
Tribuo مرخص بموجب ترخيص Apache 2.0.